Files
wiki/SAP.md
2026-07-22 13:56:58 +00:00

1949 lines
76 KiB
Markdown

---
title: Cap 7
description:
published: true
date: 2026-07-22T13:56:53.663Z
tags:
editor: markdown
dateCreated: 2026-07-22T13:56:53.663Z
---
# Objetos de dados no ABAP Dictionary
> Fonte: `Cap 07.pdf`.
> Conversão para Markdown com limpeza conservadora de cabeçalhos, rodapés e ruídos de OCR.
<!-- Página 1 -->
## Visão geral do capítulo
Neste capítulo, você se familiarizará com as diferentes opções para o mapeamento
de objetos de dados no ABAP Dictionary.
### Objetivos do capítulo
No final deste capítulo, você deverá estar apto a:
- Criar domínios e utilizá-los em elementos de dados
- Definir elementos de dados e utilizá-los como a base para a definição de
objetos de dados em programas ABAP
- Definir estruturas e utilizá-las como a base para a definição de objetos de
dados em programas ABAP
- Definir tabelas internas e utilizá-las como a base para a definição de objetos
de dados em programas ABAP
- Definir estruturas complexas (aninhadas/profundas) e utilizá-las como a base
para a definição de objetos de dados em programas ABAP
- Definir constantes globais com a ajuda de um pool de tipos e utilizá-las em
programas ABAP
- Criar tabelas
- Utilizar o conceito de domínio de dois níveis
- Definir as configurações técnicas de uma tabela
- Criar e utilizar estruturas include
- Descrever tipos de tabela no sistema da SAP, além das tabelas transparentes
- Diferenciar tabelas pool de tabelas cluster l.
- Descrever as vantagens e desvantagens de tabelas pool e cluster
### Conteúdo do capítulo
- Lição: Tipos de dados básicos
- Exercício 7: Categorias de dados básicas
- Exercício 8: Estruturas simples e aninhadas
- Exercício 9: Tipos de tabela (tabelas internas/ITABs)
- Exercício 10: Estruturas profundas
- Lição: Tabelas no ABAP Dictionary
- Exercício 11: Tabelas no ABAP Dictionary
- Lição: Tabelas SAP especiais
<!-- Página 3 -->
## Lição: Tipos de dados básicos
### Visão geral da lição
Nessa lição, você aprende os tipos de dados básicos e sua utilização conjunta.
### Objetivos da lição
No final desta lição, você deverá estar apto a:
- Criar domínios e utilizá-los em elementos de dados
- Definir elementos de dados e utilizá-los como a base para a definição de
objetos de dados em programas ABAP
- Definir estruturas e utilizá-las como a base para a definição de objetos de
dados em programas ABAP
- Definir tabelas internas e utilizá-las como a base para a definição de objetos
de dados em programas ABAP
- Definir estruturas complexas (aninhadas/profundas) e utilizá-las como a base
para a definição de objetos de dados em programas ABAP
- Definir constantes globais com a ajuda de um pool de tipos e utilizá-las em
programas ABAP
Cenário de negócios
Você deveria definir tipos de dados simples e complexos no ABAP Dictionary e
ser capaz de os utilizar em um programa ABAP.
ES”
<!-- Página 4 -->
Tipos de dados
os a ceecm
SAP Ehutonary: Inliial Burcen
**Figura 117: Primeira tela do ABAP Dictionary (SE11)**
Podem ser definidos tipos de dados válidos para vários programas (conhecidos
globalmente) no ABAP Dictionary. Você pode referenciar esses tipos de dados
em cada programa ABAP no sistema da SAP com o suplemento TYPE para as
instruções ABAP correspondentes.
Na primeira tela, as definições correspondentes são definidas utilizando o campo
Tipo de dados. Em Tipo de dados, você pode encontrar os três tipos básicos:
elemento de dados, estrutura e tipo de tabela (tabelas internas - ITAB).
Na verdade, o grupo de tipos é umarelíquia do passado (antes do release 4.5a),
quando ainda não era possível criar tipos de dados complexos globais próprios =
para declarar objetos de dados em ABAP. O grupo de tipos ainda é utilizado para
isso. No futuro, quando você criar um novo tipo de dados complexo global,
você deverá utilizar as opções fornecidas pelas estruturas Dictionary. Além
disso, o grupo de tipos era e é utilizado para a criação de constantes globais. A
utilização de constantes globais também é suportada por ABAP Objects sob a
forma de atributos constantes de uma classe. No entanto, se você quiser efetuar
uma programação não orientada a objetos, somente resta o grupo de tipos para
a definição de uma constante global.
<!-- Página 5 -->
Gerar
Objetos de dados
DATA do TYPE
Elemento de dados
**Figura 118: Tipos de dados no ABAP Dictionary**
Para definir objetos de dados em programas ABAP, você pode utilizar as definições
de tipo acima mencionadas, com exceção do domínio. As setas mostram como
podem essas definições ser utilizadas em conjunto.
De modo ideal, os elementos de dados utilizam domínios para definir suas
características técnicas. Contudo, um programa ABAP não pode acessar domínios
para definir objetos de dados.
Por regra, os elementos de dados obtêm seus tipos de dados de domínios. Esse
“tipo de dados pode também ser derivado de um tipo integrado.
Uma estrutura é composta por componentes que podem ser campos elementares,
tabelas e também estruturas.
A categoria de linha de um tipo de tabela (ITAB) pode ser um tipo estruturado
ou um tipo elementar.
193 SAPÁ
<!-- Página 6 -->
Define os atributos técnicos
Os intervalos de valores podem ser definidos o
DATAwa PIPE
sis
Pspgpssososnonns
Utilização
direta
impossível
**Figura 119: Domínio**
Os domínios são utilizados para administrar centralmente as características
técnicas de objetos de dados. Os domínios não podem ser utilizados diretamente
em programas, tabelas, etc. O tipo de dados "Elemento de dados” (consultar
embaixo) é utilizado aqui como uma ponte entre as características técnicas e os
diferentes tipos de dados/objetos de dados.
As informações técnicas incluem os seguintes pontos:
Formato:
Nas especificações de formato, você irá encontrar o Tipo de dados e o
Número de caracteres que podem ser entrados em um objeto de dados
dependente. Se o formato for numérico, você pode também determinar
- um valor para as Casas decimais.
“O tipo de dados é baseado em 24 tipos integrados. Os tipos de dados
utilizados com mais frequência são explicados embaixo:
CHAR
Cadeia de caracteres
de só
Os campos tipo CHAR podem ter um comprimento máximo
de 255 caracteres em tabelas. Se você quiser utilizar cadeias de
caracteres mais longas em tabelas, deve selecionar o tipo de dados
LCHR. Em estruturas, não existem restrições no que diz respeito
ao comprimento de tais campos.
DATS
<!-- Página 7 -->
q Data
O comprimento para esse tipo de dados foi definido como 8
caracteres. Você pode definir a máscara de saída mediante o perfil
do usuário.
Campo de cálculo ou de montante'com vírgula, sinal +/- e pontos
separadores de milhares.
Um campo DEC só pode ter no máximo 31 caracteres.
NUMC
Cadeia de caracteres que só pode conter números. O comprimento
de um campo desse tipo está restringido a um máximo de 255
caracteres.
Características de saída:
Aqui, o comprimento máximo do campo, incluindo pontos ou vírgulas
decimais, é indicado para a entrada e a saída de valores.
Regra geral, esse valor é calculado automaticamente assim que o
Número de caracteres tiver sido atribuído em Formato. No entanto,
pode ser sobregravado posteriormente. O formato de saída tem um
efeito sobre a saída de telas e de telas de seleção. As indicações dessa
área são utilizadas quando se integra um campo em uma tela. No
entanto, podem ser modificadas no Screen Painter.
Além disso, você pode também definir uma rotina de conversão para
esse domínio. Isto é utilizado para modificar o formato de exibição (por
exemplo, colocar zeros precedentes antes de um número) quando se
converte o conteúdo de um campo de tela do formato de exibição no
formato interno da SAP, e vice-versa, bem como para a saída mediante
a instrução ABAP WRITE. De modo semelhante, você pode também
utilizar essa rotina de conversão para substituir quaisquer conversões
padrão inadequadas.
Para determinados tipos de dados (DEC, FLTP, QUAN e CURR), o
campo de seleção Sinal +/- está disponível para entrada. Se isso estiver
ativado, o primeiro caractere do campo está reservado para o sinal
+/-, em uma tela. De modo correspondente, o comprimento de saída
deveria ser aumentado em 1.
Para tipos de dados baseados em caracteres, você também deveria
determinar se são permitidas Letras minúsculas. Se esse flag não
estiver definido, é possível entrar letras minúsculas no respectivo
campo de entrada, mas essas serão transformadas em letras maiúsculas
assim que a entrada for confirmada pelo usuário (por exemplo, com a
tecla ENTER).
<!-- Página 8 -->
o
Além disso, você pode definir intervalos de valores válidos que são
utilizados para verificações de entrada. Contudo, esse assunto é
explicado mais detalhadamente em outra parte do curso.
Inclui as características
semânticas
ara pesquisa res
**Figura 120: Elemento de dados**
Além de constituírem a ligação entre os domínios e os objetos de dados, os a
elementos de dados também contêm informações semânticas/técnicas sobre os
objetos de dados criados a partir deles.
Os denominadores de campo para o campo de dados podem e deveriam ser
atualizados nos elementos de dados. Esses denominadores de campo (breves,
médios e longos) podem ser exibidos mais tarde em telas e telas de seleção para
explicar o conteúdo do campo.
Em telas de seleção (por exemplo, o comando ABAP PARAMETERS), somente a
versão longa do denominador de campo pode ser retirada do ABAP Dictionary
(no caminho de menu do editor ABAP: Ir para -> Elemento de texto -> Texto de
seleção => Campo de seleção Referência ao ABAP Dictionary ).
,
Se o v é alor do campo for fornecido em uma lista, a entrada do denominador de
campo utilizada para título. Você deve também indicar um Comprimento para
- respectivo denominador de campo. Esse comprimento determina o comprimento
máximo para o denominador de campo. Se você trabalhar para uma empresa
multinacional, pode traduzir os denominadores de campo para outros idiomas
(caminho de menu: 1r para -> Tradução ou a transação SE63). Quando você -
indicar o comprimento, lembre-se que, em outro idioma, o mesmo termo no
denominador de campo pode necessitar de mais letras.
<!-- Página 9 -->
o
Pode ser acrescentada uma ajuda para pesquisa (entradas possíveis) a um elemento
de dados. O assunto da ajuda para pesquisa é tratado com mais detalhe em um dos
últimos capítulos desse curso. As ajudas para pesquisa podem ser integradas em
diferentes níveis.
Por vezes, em diferentes aplicações, é necessário que você entre um valor
particular em várias telas. Para evitar que o usuário tenha de entrar o mesmo
valor várias vezes, é possível atribuir um parâmetro SET/GET ao elemento de
dados. Nesse parâmetro, o valor é transferido quando se sai da tela. Se em uma
tela subsequente existir um campo de entrada baseado no mesmo elemento de
dados, esse valor é lido do parâmetro e entrado no campo de tela. Os parâmetros
SET/GET guardam valor por sessão. Depois de o usuário ter efetuado logoff,
estes valores não são retidos. Para poder utilizar um parâmetro SET/GET, você
deve entrá-lo na tabela TPARA!
Você pode também atribuir um nome padrão ao elemento de dados. Contudo,
isto só é eficaz, se você utilizar o elemento de dados como um componente em
estruturas BAPI. Essas deveriam utilizar o nome padrão para que os nomes de
componentes sejam atribuídos de modo uniforme.
As características técnicas para o elemento de dados são atualizadas na ficha de
registro Tipo de dados. Aqui, você deveria utilizar principalmente domínios
predefinidos para a atribuição de tipo técnica. No entanto, você pode também
definir o elemento de dados mediante a utilização dos mesmos tipos integrados
que são utilizados para definir os domínios. Como um caso especial, você pode
também criar um elemento de dados como um tipo de referência. Aqui, o tipo
referenciado não está restringido ao tipo "ELEMENTO DE DADOS. Pode ser
qualquer outro tipo de referência ou mesmo uma referência genérica a ANY,
OBJECT ou DATA. Uma referência do tipo ANY pode apontar tanto para objetos
como para dados. A definição como uma referência é o mesmo que a declaração
de tipo em um programa ABAP “ TYPES trdt TYPE REF TO data”.
<!-- Página 10 -->
..
DATA wadeep TYPE
**Figura 121: Estruturas**
Uma estrutura é constituída por componentes sob a forma de elementos de dados,
tipos integrados, definições de estrutura de tabelas internas, visões de tabela BD
ou outras definições de estrutura existentes.
Quando os campos de um objeto bidimensional real são também inseridos em uma
estrutura, mediante a inclusão de uma visão ou de tabelas BD, o objeto de dados
que pode ser gerado daqui permanece plano (unidimensional).
É sempre criada uma chamada estrutura profunda quando você utilizou um
tipo de tabela para definir um componente. Apesar de esse componente ser
então bidimensional, os outros componentes na estrutura permanecem planos
(unidimensionais).
EI” 198 os
<!-- Página 11 -->
ABAP Dictionary
'DATA vaadr TYPE address
6a
maadr-street - 'Neurott str.
a de = D-69190'. .
Malidore,
**Figura 122: Utilização de estruturas simples em ABAP**
A forma de estrutura mais simples é o sequenciamento de campos por meio da
utilização de elementos de dados. Isso cria sempre uma chamada estrutura plana.
Um objeto de dados baseado nesse tipo de estrutura é sempre unidimensional
(por oposição aos objetos de dados em forma de tabela bidimensionais). Você
aborda os elementos individuais (componentes) da estrutura utilizando o nome
da estrutura, um hífen e o nome dos componentes.
EI”
<!-- Página 12 -->
ABAP Dictionary
D-so10.
=
**Figura 123: Estrutura aninhada**
Você pode incluir outro objeto estruturado na estrutura e atribuí-lo a um
componente. Esse componente se refere ao objeto estruturado e o novo objeto de
dados é agora descrito como uma estrutura aninhada.
Estruturas como essas podem ser aninhadas umas nas outras de qualquer modo.
<!-- Página 13 -->
DATA itab TYPE...
Elemento
de dados
**Figura 124: Tabelas internas**
Logo que você insere uma tabela interna como um componente de estrutura, essa
se torna uma estrutura profunda.
Você pode definir tabelas internas ou ITABs utilizando uma estrutura de linhas
existente. Tabelas de banco de dados, definições de estrutura, visões, elementos de
dados, definições de tipo diretas ou tipos de tabela existentes podem ser utilizados
como categorias de linha.
Mediante a declaração de uma tabela interna em um programa ABAP, é criado um
array bidimensional na memória principal.
EI”
<!-- Página 14 -->
o
ABAP Dictionary
person.
DATA wa pers TYPE
DATA wa tel LIKE LINE OFwapers-tel
Walter.
“wapers name-firstname =
wapers-náme nai Senwmeizer.
**Figura 125: Estrutura profunda**
Uma estrutura profunda contém, pelo menos, uma tabela. O componente dessa
tabela tem um nome próprio com o qual ele pode ser abordado como uma tabela
interna normal (LOOP AT..., INSERT... INTO TABLE, ...).
Por sua vez, uma tabela interna pode ter uma estrutura profunda como categoria de
linha. Desse modo, você pode criar tipos de dados multidimensionais, uma vez que
- aninhamento de tabelas internas e de estruturas entre si é possível várias vezes.
Atenção: Pelo contrário, as tabelas de banco de dados só podem incluir
estruturas planas.
ST” 202
<!-- Página 15 -->
o
ABAP Dictionary
TYPE-POOL amytp.
TEPES zmytp.
pone
**Figura 126: Grupo de tipos**
Se você quiser definir constantes globais, deve utilizar um grupo de tipos. O nome
do grupo de tipos só pode conter um máximo de cinco caracteres. No grupo de
tipos, você pode definir constantes utilizando a instrução CONSTANTS. Aqui,
você pode utilizar os tipos ABAP predefinidos ou os tipos ABAP Dictionary
globais.
Para poder utilizar os tipos de um grupo de tipos em um programa, declare o
grupo de tipos utilizando a instrução TYPE POOL. partir dessas linhas, você
pode utilizar todas as constantes do grupo de tipos.
A definição de um grupo detipos faz parte da codificação ABAP que você atualiza
no ABAP Dictionary (SE11) ou no editor ABAP (SE38).
Realização:
A primeira instrução do grupo de tipos zmytp é sempre: TYPE-POOL zmytp.
Essa é seguida pela definição de tipo de dados com a instrução TYPES, tal como o
descrito em tipos de dados de programa locais. Além disso, você pode declarar
constantes válidas para vários programas, utilizando a instrução CONSTANTS.
Todos os nomes desses tipos de dados e constantes devem começar pelo nome do
grupo de tipos e por um sublinhado:
zmytp
Em um programa ABAP, os grupos de tipos devem ser declarados com a instrução
seguinte, antes de serem utilizados:
EI”
<!-- Página 16 -->
COOLES 2mybpr
Quando utiliza essa instrução, você pode utilizar todos os tipos de dados e
constantes definidos no grupo de tipos zmytp, no programa. Podem ser utilizados
vários grupos de tipos em um programa.
;
<!-- Página 17 -->
### Exercício 7: Categorias de dados básicas
### Objetivo dos exercícios
No final deste exercício, deverá estar apto a:
, Criar categorias de dados básicas no ABAP Dictionary e utilizá-las em
programas ABAP
Cenário de negócios
Para seu projeto de desenvolvimento, você deveria criar várias categorias de dados
globais às quais os outros membros da equipe do projeto tenham acesso.
#### Tarefa 1:
Criar dois domínios, de modo a que possam ser utilizados mais tarde em elementos
de dados.
1. Chame a transação SE11.
2. Crie um domínio com o nome ZDO10NUM-% na primeira tela do ABAP
Dictionary.
3. O domínio deveria ser criado para elementos de dados que deveriam poder
aceitar números decimais de 10 dígitos. Desses 10 dígitos, 2 deveriam ser
reservados para as casas decimais. Os elementos de dados também deveriam
poder ser utilizados para cálculos empresariais.
4. Grave (como Objeto local) e ative o domínio.
5. Na primeira tela do ABAP Dictionary, crie um domínio com o nome
- .
ZDO30CHAR O domínio deveria poder ter 30 caracteres de texto e,
nos campos de entrada, deveriam ser permitidas letras minúsculas.
6. Grave (como Objeto local) e ative o domínio.
2:
#### Tarefa
Criar vários elementos de dados e utilizar os domínios já definidos para as
características técnicas.
1. Chame a transação SE11.
2. Entre um elemento de dados (ZLASTNAMEYF%) para o sobrenome de uma
e
pessoa utilize um domínio adequado. O elemento de dados deveria poder
conter 30 letras maiúsculas e minúsculas.
3. Entre um elemento de dados (LFIRSTNAMEH$) para o primeiro nome de
uma pessoa e utilize um domínio adequado. O elemento de dados deveria
poder conter 30 letras maiúsculas e minúsculas.
Continua na próxima página
205 ISAPÁ
<!-- Página 18 -->
?
4. Crie um elemento de dados (LASSETSHE) para ativos e utilize um domínio
adequado. O elemento de dados deveria ser utilizado para cálculos
empresariais.
5. Crie um elemento de dados (ZLIABILITIESHK) para passivos e utilize um
domínio adequado. O elemento de dados deveria ser utilizado para cálculos
empresariais.
#### Tarefa 3:
Criar um programa
tl. Crie o programa executável ZBC430 4HDATA ELEMENTS sem “TOP
include”.
2. Crie os seguintes campos de entrada no programa com o comando ABAP
PARAMETERS.
Parâmetro Categoria de dados
pafname ZFIRSFNAMERE
paIname ZLASTNAMEFBR
paactiv ZASSETSHE
paliabs ZLIABILITIESHA
Calcule ativos menos passivos e efetue a saída de todos os parâmetros, bem
como dos resultados do cálculo, em uma lista.
3. Execute o programa e, na tela de seleção, entre os diferentes valores que
você sai em uma lista.
EI”
<!-- Página 19 -->
### Solução 7: Categorias de dados básicas
:
#### Tarefa 1:
Criar dois domínios, de modo a que possam ser utilizados mais tarde em elementos
de dados.
1. Chame a transação SE11.
a) -Nomenu SAP EASY ACCESS, entre se11 no campo de comandos e
ii confirme sua entrada.
E Se você se encontrar em outra transação, deve entrar /n se11 no campo
de comandos e confirmar a entrada.
2. Crie um domínio com o nome ZDO 10NUM & na primeira tela do ABAP
- Dictionary.
a) Selecione o botão de rádio Domínio.
b) Entre o nome do domínio no campo de entrada.
c) Pressione o botão Criar.
3. O domínio deveria ser criado para elementos de dados que deveriam poder
E aceitar números decimais de 10 dígitos. Desses 10 dígitos, 2 deveriam ser
" reservados para as casas decimais. Os elementos de dados também deveriam
- poder ser utilizados para cálculos empresariais.
a) Entre uma descrição significativa para o domínio, no campo Descrição
pe
breve.
b) No campo Categoria de dados, entre o valor DEC ou selecione essa
entrada das entradas possíveis (F4).
c) No campo N- caracteres, entre o valor 10.
d) No campo Casas decimais, entre o valor 2.
e) Selecione o campo de seleção Sina! +/-.
4. Grave (como Objeto local) e ative o domínio.
EN a) Clique em Gravar no topo da tela.
5. Na primeira tela do ABAP Dictionary, crie um domínio com o nome
ZDO 30CHAR%H. O domínio deveria poderter 30 caracteres de texto e,
nos campos de entrada, deveriam ser permitidas letras minúsculas.
- a) Proceda como nas etapas anteriores e defina as características
correspondentes na ficha de registro Definição.
= Continua na próxima página
<!-- Página 20 -->
6. Grave (como Objeto local) e ative o domínio.
a) Clique em Gravar no topo da tela.
#### Tarefa 2:
Criar vários elementos de dados e utilizar os domínios já definidos para as
características técnicas.
io Chame a transação SE11.
a) No menu SAP EASY ACCESS, entre se11 no campo de comandos e
confirme sua entrada.
Se você se encontrar em outra transação, deve entrar /n se11 no campo
de comandos e confirmar sua entrada.
Entre um elemento de dados (ZLLASTNAMEF%) para o sobrenome de uma
pessoa e utilize um domínio adequado. O elemento de dados deveria poder
conter 30 letras maiúsculas e minúsculas.
a) Selecione o botão de rádio Categoria de dados.
da
b) Entre o nome categoria de dados no campo de entrada.
c) Selecione Criar.
d) -No popup que aparece, selecione o botão de rádio Elemento de dados e
confirme a entrada.
Entre uma descrição significativa para o elemento de dados, no campo
Descrição breve.
Na ficha de registro Categoria de dados, em tipo elementar, entre o
domínio relevante que você criou na parte anterior do exercício.
g) Na ficha de registro Denominador de campo, você deve ainda entrar
nomes adequados para seu elemento de dados. Esses nomes aparecem
em telas e telas de seleção (versão longa), por exemplo, para explicar
os campos.
Entre um elemento de dados (ZFIRSTNAMEF%) para o primeiro nome de
uma pessoa e utilize um domínio adequado. O elemento dé dados deveria
poder conter 30 letras maiúsculas e minúsculas.
a) Proçeda do mesmo modo que para o exercício anterior.
Crie um elemento de dados (LASSE TSH) para ativos e utilize um domínio
adequado. O elemento de dados deveria ser utilizado para cálculos
empresariais.
a) Proceda do mesmo modo que para o exercício anterior.
Continua na próxima página
<!-- Página 21 -->
e
5. Crie um elemento de dados (ZLIABILITIESH4) para passivos utilize um
domínio adequado. O elemento de dados deveria ser utilizado para cálculos
empresariais.
a) Proceda do mesmo modo que para o exercício anterior.
#### Tarefa 3:
Criar um programa
1. Crie o programa executável ZBC43044DATA ELEMENTS sem “TOP
include”.
a) Parao criar, utilize a transação SE80 ou SE38.
2. Crie os seguintes campos de entrada no programa com o comando ABAP
PARAMETERS.
Parâmetro Categoria de dados
pafname ZFIRSTNAMERF
pa Iname ZLASTNAMEBR
paactiv ZASSETSHH
paliabs ZLIABILITIESHR
Calcule ativos menos passivos e efetue a saída de todos os parâmetros, bem
como dos resultados do cálculo, em uma lista.
a) Consulte o extrato do texto fonte da solução modelo.
Continua na próxima página
<!-- Página 22 -->
3. Execute o programa e, na tela de seleção, entre os diferentes valores que
você sai em uma lista.
a) Certifique-se que é possível entrar letras maiúsculas e minúsculas
para os nomes, de acordo com as definições nos domínios. Nos dois
campos numéricos, deve ser possível entrar as casas decimais e um
sinal negativo.
Resultado
Extrato do texto fonte: SAPBC430S DATA ELEMENTS
REPORT sapbc430s data elements
- Replace &f by Your Group- Screennumber and uncomment the ABAP-coding
DATA: result TYPE zassetsikt.
PARAMETERS: pafname TYPE zfirstnametkk,
palname TYPE zlastnameikt,
paactiv TYPE zassetstt,
paliabs TYPE zliabilitiesitk.
START-OF-SELECTION.
NEW-LINE.
WRITE: 'Client:', pafname, palname.
result = paactiv - paliabs.
NEW-LINE.
WRITE: 'Finance:', paactiv, paliabs, result.
EI”
<!-- Página 23 -->
### Exercício 8: Estruturas simples e
aninhadas
### Objetivo dos exercícios
No final deste exercício, deverá estar apto a:
- Criar estruturas simples e aninhadas no ABAP Dictionary e utilizá-las em
programas ABAP
Cenário de negócios
De modo a mapear estruturas de dados complexas, você deveria criar uma
estrutura complexa para seu projeto no ABAP Dictionary.
#### Tarefa 1:
Criar estruturas simples que possam ser utilizadas mais tarde em programas ABAP.
1. No ABAP Dictionary, crie uma estrutura LZNAMEHE e inclua os dois
componentes seguintes na estrutura. Utilize os elementos de dados que você
criou em exercícios anteriores para a atribuição detipo.
Componente Tipo de componente Descrição
FIRSTNAME próprio primeiro nome
LASTNAME próprio sobrenome
2. Criea estrutura ZADRESSYA e entre os quatro componentes seguintes:
Componente Tipo de componente Descrição
STREET SEIRBEET Rua
NR SNO Número
ZIP POSTCODE Código postal
CciTY SCRY Local de residência
#### Tarefa 2:
Criar uma estrutura aninhada, para que possa ser utilizada mais tarde em
programas ABAP.
1. Crie uma estrutura ZPERSONHA no ABAP Dictionary.
Continua na próxima página
<!-- Página 24 -->
2. Adicione a estrutura ZADRESS4& como uma estrutura include à estrutura
ZPERSONHH. Além disso, aceite a estrutura ZNAMEYX& na estrutura
ZPERSONH como uma estrutura aninhada, no nome de componente
NAME.
3. Entre um programa ABAP ZBC430-%STRUCT NESTED. Crie um
objeto de dados estruturado (wa person) do tipo ZPERSONHF, nesse
programa. Preencha os componentes desse objeto de dados com quaisquer
dados pessoais e saia esses dados em uma lista.
<!-- Página 25 -->
### Solução 8: Estruturas simples e aninhadas
#### Tarefa 1:
Criar estruturas simples que possam ser utilizadas mais tarde em programas ABAP.
1. No ABAP Dictionary, crie uma estrutura ZNAMEFH e inclua os dois
componentes seguintes na estrutura. Utilize os elementos de dados que você
criou em exercícios anteriores para a atribuição de tipo.
Componente Tipo de componente Descrição
FIRSTNAME próprio primeiro nome
LASTNAME próprio sobrenome
a) Inicie a transação SE11 e entre o nome da estrutura no campo de
entrada Categoria de dados.
b) Selecione Criar e Estrutura no diálogo seguinte.
c) Forneça uma descrição breve e entre os componentes indicados. Ative
a estrutura de modo a que seja conhecida globalmente.
2. Criea estrutura ZADRESSF% e entre os quatro componentes seguintes:
Componente Tipo de componente Descrição
STREET S. STREET Rua
NR SNO Número
GR: POSTCODE Código postal
ELTX SsCLEY Local de residência
a) Proceda do mesmo modo que na parte anterior do exercício.
2:
#### Tarefa
Criar uma estrutura aninhada, para que possa ser utilizada mais tarde em
programas ABAP.
1. Crie uma estrutura ZPERSONHH no ABAP Dictionary.
a) Proceda do mesmo modo que na parte anterior do exercício.
Continua na próxima página
<!-- Página 26 -->
o
2. Adicione a estrutura ZADRESSH$ como uma estrutura include à estrutura
ZPERSONYH&. Além disso, aceite a estrutura ZNAMEFH na estrutura
ZPERSONHH como uma estrutura aninhada, no nome de componente
NAME.
a) Inclua o endereço por meio do menu Processar -> Include ->Inserir
ou, na coluna Componente, escreva a palavra-chave .INCLUDE.
Atenção: O ponto antes da palavra-chave é importante.
Para a segunda estrutura, que você quer aceitar como uma estrutura
profunda, entre qualquer nome de componente (por exemplo, NAME”).
Componente Tipo de componente Descrição
include ZADRESSHH Estrutura de endereço
NAME ZNAMEBR Referente à estrutura
de nomes
Continua na próxima página
<!-- Página 27 -->
:
3. Entre um programa ABAP ZBC430&H4 STRUCT NESTED. Crie um
“objeto de dados estruturado (waperson) do tipo ZPERSONH%, nesse
programa. Preencha os componentes desse objeto de dados com quaisquer
dados pessoais e saia esses dados em uma lista.
a) Consulte o extrato do texto fonte da solução modelo.
Resultado
Extrato do texto fonte: SAPBC430S STRUCT NESTED
REPORT sapbc430s structnested.
- RePplace if by 'y Your ggrouPpp- or screennumber and
- uncomment the ABAP-coding
DATA waperson TYPE zpersonikt.
START-OF-SELECTION.
wa person-name-firstname = 'Harry'.
waperson-name-lastname = 'Potter'.
waperson-street = 'Privet Drive'.
mm
waperson-nr = '3!.
waperson-zip = 'GB-10889'.
wa person-city = 'London'.
WRITE: / wa person-name-firstname ,
waperson-name-lastname
,
waperson-street
,
waperson-nr
,
waperson-zip
,
wa person-city .
EI”
<!-- Página 29 -->
### Exercício 9: Tipos de tabela (tabelas
internas/ITABs)
### Objetivo dos exercícios
No final deste exercício, deverá estar apto a:
- Criar tipos de tabela e utilizá-los em programas ABAP
Cenário de negócios
Para a retenção de dados local, você define um tipo de tabela que mantém os
dados ordenados.
#### Tarefa:
Criar tabelas internas simples com base em uma estrutura existente, de modo a que
possam ser utilizadas mais tarde em programas ABAP.,
1. Crie um tipo de tabela ZIT SFLIGHTHH no ABAP Dictionary. O tipo de
tabela deveria ser baseado na categoria de linha da tabela de banco de dados
SFLIGHT e deveria ser ordenado de acordo com a data do voo (PLDATE).
2. Entre um programa ABAP ZBC430&HITAB SORTED. Nesse programa,
crie um objeto de dados estruturado (wa sflight) do tipo SFLIGHT como
a área de trabalho, e uma tabela interna com base no tipo de tabela que
você acabou de definir. Da tabela SFLIGHT, selecione os dados de uma
companhia aérea (por exemplo, JL”) na área de trabalho e saia esses dados
como uma lista não ordenada.
3. Amplie o programa como se segue. Insira uma linha (comando ABAP
ULINE) na lista. Carregue de novo os mesmos dados por meio do comando
SELECT com busca de array para a tabela interna do tipo ZIT SFLIGH'THE
- saia o conteúdo da tabela, utilizando o comando LOOP, na mesma lista.
Compare a ordem dos dados nos dois extratos da lista.
<!-- Página 30 -->
### Solução 9: Tipos de tabela (tabelas
internas/ITABs)
-
#### Tarefa:
Criar tabelas internas simples com base em uma estrutura existente, de modo a que
possam ser utilizadas mais tarde em programas ABAP.
i
Crie um tipo de tabela ZITSFLIGHTH$ no ABAP Dictionary. O tipo de
tabela deveria ser baseado na categoria de linha da tabela de banco de dados
SFLIGHT e deveria ser ordenado de acordo com a data do voo (FLDATE).
a) Nomenu SAP EASY ACCESS, entre self no campo de comandos e
confirme sua entrada.
Se você se encontrar em outra transação, deve entrar /n se11 no campo
de comandos e confirmar a entrada.
b) Selecione Categoria de dados dos botões de rádio.
da
c) Entre o nome tabela no campo de entrada.
d) Selecione Criar.
e) Na caixa de diálogo subsequente, selecione Tipo de tabela.
f) Atribua uma descrição breve e entre o nome da tabela de banco de
dados no campo da categoria de linha.
g) Mude para a ficha de registro Inicialização e acesso e selecione Tabela
ordenada como o tipo de acesso.
h) Mude para a ficha de registro Chave e selecione Não única como o
tipo de chave.
i) Agora, selecione o componente-chave correspondente de Definição de
chave, Componentes-chave e do botão Selecionar componentes.
3) Ative atabela de modo a que seja conhecida globalmente.
Entre um programa ABAP ZBC430&4ITAB SORTED. Nesse programa,
crie um objeto de dados estruturado (wasflight) do tipo SFLIGH'T como
aárea de trabalho, e uma tabela interna com base no tipo de tabela que
você acabou de definir. Da tabela SFLIGHT, selecione os dados de uma
companhia aérea (por exemplo, "JL?) na área de trabalho e saia esses dados
como uma lista não ordenada.
a) Consulte o extrato do texto fonte da solução modelo.
Continua na próxima página
<!-- Página 31 -->
3. Amplie o programa como se segue. Insira uma linha (comando ABAP
ULINE) na lista. Carregue de novo os mesmos dados por meio do comando
SELECT com busca de array para a tabela interna do tipo ZIT SFLIGHTHA
- saia o conteúdo da tabela, utilizando o comando LOOP, na mesma lista.
Compare a ordem dos dados nos dois extratos da lista.
a) Consulte o extrato do texto fonte da solução modelo.
Resultado
.
Extrato do texto fonte: SAPBC430SITAB SORTED
REPORT SAPBC430S ITAB SORTED.
- -Replace it by Your group- or screennumber and
” --uncomment the ABAP-coding
DATA itflight TYPE zit sflightitf.
DATA wasflight TYPE sflight.
WRITE / 'Printout in tableorder of Database:'.
SELECT - FROM sflight
INTO wasflight
-
WHERE carrid = 'JL'.
WRITE: / wa sflight-carrid,
wa sflight-connid,
wa sflight-fldate,
wa sflight-price,
sflight-curreney,
wa
wa sflight-planetype.
ENDSELECT.
ULINE.
SELECT - FROM sflight
INTO TABLE
itflight
WHERE carrid = 'UJL'.
WRITE / 'Printout in tableorder of sorted ITAB:'.
LOOP AT itflight INTO wasflight.
WRITE: / wa sflight-carrid,
wa sflight-connid,
wa sflight-fldate,
Continua na próxima página
EI”
os 219
<!-- Página 32 -->
wasflight-price,
wa sflight-currency,
wa sflight-planetype.
ENDLOOP.
<!-- Página 33 -->
e
### Exercício 10: Estruturas profundas
### Objetivo dos exercícios
No final deste exercício, deverá estar apto a:
e
Criar estruturas profundas utilizá-las em programas ABAP
Cenário de negócios
Você amplia a estrutura dos dados pessoais para sua equipe de projeto, de tal
modo que pode incorporar uma lista telefônica com qualquer comprimento para
cada empregado.
#### Tarefa:
Criar uma tabela interna com base em um objeto de dados, de modo a que possa
entrar essa tabela em uma estrutura. Utilizar isto em um programa ABAP.
IE Crie um tipo de tabela para uma tabela standard ZITPHONE NUMBERY
no ABAP Dictionary. O tipo de tabela deveria ser baseado na categoria de
linha da estrutura STRPHONE existente.
Amplie sua estrutura existente ZPERSONHH no ABAP Dictionary. O novo
componente deveria receber o nome PHONE ser baseado na tabela interna
ZITPHONE NUMBER.
Crie um programa ABAP ZBC430 STRUCTDEEP. Para tal, copie
sua solução para o programa ZBC430-%STRUCTNESTED ou o
modelo SAPBC430S STRUCT NESTED. Amplie esse programa em uma
área de trabalho para um objeto de dados estruturado (waphone) do tipo
STRPHONE.
Amplie o programa como se segue:
Insira três números de telefone no objeto de dados estruturado waperson e
saia esses dados na mesma lista, utilizando o comando LOOP.
<!-- Página 34 -->
### Solução 10: Estruturas profundas
#### Tarefa:
Criar uma tabela interna com base em um objeto de dados, de modo a que possa
entrar essa tabela em uma estrutura. Utilizar isto em um programa ABAP.
1. Crie um tipo de tabela para uma tabela standard ZITPHONE NUMBERHH
no ABAP Dictionary. O tipo de tabela deveria ser baseado na categoria de
linha da estrutura STRPHONE existente.
a) Em SAP EASY ACCESS, entre se11 no campo de comandos e
confirme sua entrada.
Se você se encontrar em outra transação, deve entrar /n se11 no campo
de comandos e confirmar a entrada.
b) Selecione Categoria de dados dos botões de rádio.
de
c) Entre o nome da tabela no campo entrada.
d) Selecione Criar.
e) Na caixa de diálogo subsequente, selecione Tipo de tabela.
f) Forneça uma descrição breve e entre o nome da estrutura no campo da
categoria de linha.
g) Mude para a ficha de registro Inicialização e acesso e selecione Tabela
standard como o tipo de acesso.
h) Mude para a ficha de registro Chave e selecione Não única como tipo
de chave.
i) Agora selecione Chave standard como uma Definição de chave.
Continua na próxima página
EM” 222
<!-- Página 35 -->
Amplie sua estrutura existente ZPERSONHF eno ABAP Dictionary. O novo
componente deveria receber o nome PHONE ser baseado na tabela interna
ZITPHONE NUMBER.
a) Entre um novo componente com o nome PHONE” em sua estrutura e
indique o tipo de tabela acabado de criar como o tipo de componente.
Compo- Tipo de componente Descrição
nente
“include ZADRESSHH Estrutura de
endereço
NAME ZNAMEBH Referencia a
estrutura de nomes
PHONE ZIT PHONE NUMBER$H Referencia a tabela
de telefones
Crie um programa ABAP ZBC430&% STRUCT DEEP. Para tal, copie
sua solução para o programa ZBC430H4 STRUCT NESTED ou o
modelo SAPBC430S STRUCT NESTED. Amplie esse programa em uma
área de trabalho para um objeto de dados estruturado (waphone) do tipo
STRPHONE.
a) Consulte o extrato do texto fonte da solução modelo.
se
Amplie o programa como segue:
Insira três números de telefone no objeto de dados estruturado wa person e
saia esses dados na mesma lista, utilizando o comando LOOP.
a) Consulte o extrato do texto fonte da solução modelo.
Resultado
Extrato do texto fonte: SAPBC430S STRUCTDEEP
REPORT sapbc430s struct deep.
DATA wa person TYPE zpersontt.
DATA waphone TYPE strphone.
START OP SELECTION:
Pili deep structure with data
wa person-name-firstname = 'Harry'.
waperson-name-lastname = 'Potter'.
Continua na próxima página
os 223
<!-- Página 36 -->
wa person-sibreet - UPrivet Drivel.
3.
wa person=nr =
wa person-zip = 'GB-10889!.
wa person-city = 'London'.
waphone-p type = 'P'!.
waphone-p number = '+31-10-9938990"'.
INSERT waphone INTO TABLE wa person-phone.
waphone-p type = 'F'!.
waphone-p number = '+31-10-9938991"'.
INSERT waphone INTO TABLE waperson-phone.
waphone-p type = 'M'.
waphone-p number = '+31-79-12211433'.
INSERT waphone INTO TABLE waperson-phone.
“Write on East
WRITE: / waperson-name-firstname ,
wa person-name-lastname ,
wa person-street ,
wa person-nr ,
wa person-zip ,
wa person-city
WRITE: / 'Phone-Numbers:'.
LOOP AT waperson-phone INTO waphone.
WRITE: AT 20 waphone-p type,
waphone-p number.
NEW-LINE.
.
ENDLOOP
EX” 224
<!-- Página 37 -->
o
### Resumo da lição
a:
Você agora deve estar apto
Criar domínios e utilizá-los em elementos de dados
Definir elementos de dados e utilizá-los como a base para a definição de
objetos de dados em programas ABAP
Definir estruturas e utilizá-las como a base para a definição de objetos de
dados em programas ABAP
Definir tabelas internas e utilizá-las como a base para a SennRro de objetos
de dados em programas ABAP
Definir estruturas complexas (aninhadas/profundas) e utilizá-las como a base
para a definição de objetos de dados em programas ABAP
Definir constantes globais com a ajuda de um pool de tipos e utilizá-las em
programas ABAP
<!-- Página 38 -->
## Lição: Tabelas no ABAP Dictionary
### Visão geral da lição
### Objetivos da lição
No final desta lição, você deverá estar apto a:
- Criar tabelas
- Utilizar o conceito de domínio de dois níveis
- Definir as configurações técnicas de uma tabela
- Criar e utilizar estruturas include
Cenário de negócios
Você deveria mapear unidades de informação, as chamadas entidades, no banco de
dados para sua empresa.
Tabelas
=
A Linhas
Campos-chave Campos de função
**Figura 127: Tabelas e campos**
A estrutura dos objetos do desenvolvimento de aplicação é mapeada em tabelas no
banco de dados relacional subjacente.
;
<!-- Página 39 -->
Os atributos desses objetos correspondem aos campos da tabela.
Uma tabela é composta por colunas (campos) e linhas (entradas). Tem um
nome e diferentes atributos gerais, tais como classe de entrega e autorização de
atualização.
Um campo tem um nome único e atributos. Pode, por exemplo, ser um
campo-chave.
Uma tabela tem um ou mais campos-chave, a que se chama chave primária.
Os valores desses campos-chave identificam de modo unívoco uma entrada em
tabela.
Você deve indicar uma tabela de referência para os campos que contêm uma
moeda (categoria de dados CURR) ou quantidade (categoria de dados QUAN).
Essa tabela deve conter um campo (campo de referência) com o formato para
códigos de moeda (categoria de dados CUKY) ou o formato para unidades
(categoria de dados UNIT). O campo somente é atribuído ao campo de referência
no momento da execução do programa.
utiliza
**Figura 128: Objetos básicos do ABAP Dictionary**
Os objetos básicos para a definição de dados no ABAP Dictionary são tabelas,
elementos de dados e domínios. O domínio é utilizado para a definição técnica de
um campo de tabela (por exemplo, tipo e comprimento do campo) e o elemento de
dados utilizado para a definição semântica (por exemplo, descrição breve).
Um domínio descreve o intervalo de valores de um campo, mediante sua categoria
de dados e comprimento. O intervalo de valores pode ser limitado, indicando
valores fixos.
<!-- Página 40 -->
Um elemento de dados descreve o significado de um domínio em um determinado
contexto comercial. O elemento de dados contém, principalmente, a ajuda de
campo (documentação F1) e os denominadores de campo na tela.
Um campo não é um objeto independente, sendo antes dependente da tabela. O
campo só pode ser atualizado dentro de uma tabela.
Você pode entrar diretamente a categoria de dados e o número de posições para
um campo. Nesse caso, não é necessário um elemento de dados. Em vez disso,
a categoria de dados e o número de posições são definidos mediante a indicação
de um tipo direto.
Os atributos de categoria de dados de um elemento de dados podem também ser
definidos por meio da indicação de um tipo integrado, onde a categoria de dados
- o número de posições são entrados diretamente.
**Figura 129: Conceito de domínio de dois níveis: exemplo**
O horário de voos está arquivado na tabela SPFLI. Os campos de tabela
AIRPFROM (aeroporto de partida) e AIRPTO (aeroporto de chegada) têm o
mesmo domínio SAIRPID. Os dois campos utilizam o mesmo domínio porque
os dois contêm IDs de aeroporto, tendo, assim, os mesmos atributos técnicos.
Contudo, têm um significado semântico diferente e utilizam elementos de dados
diferentes para documentar isso. O campo AIRPFROM utiliza o elemento de
dados SFROMAIRP e o campo AIRPTO utiliza o elemento de dados S TOAIRP
ES” 228
; 3
<!-- Página 41 -->
ABAP Dictionary
Definição de estrutu
é criado também utilizado para
fisicamente em definir objetos de dados
banco de dados em programas
**Figura 130: Tabelas transparentes e estruturas**
Uma tabela transparente é automaticamente criada no banco de dados ao ser
ativada no ABAP Dictionary. Nesse momento, a descrição independente de banco
de dados da tabela no ABAP Dictionary é convertida na linguagem do sistema
de banco de dados utilizado.
A tabela de banco de dados tem o mesmo nome da tabela do ABAP Dictionary.
Os campos também têm o mesmo nome tanto no banco de dados como no ABAP
Dictionary. As categorias de dados do ABAP Dictionary são convertidos nas
“categorias de dados correspondentes do sistema de banco de dados.
A ordem dos campos no ABAP Dictionary pode ser diferente da ordem dos
campos no banco de dados. Isso permite a você inserir novos campos sem ter de
converter a tabela. Quando você adiciona um novo campo, ajuste a ordem dos
campos, modificando o catálogo de banco de dados (ALTER TABLE). O novo
campo é adicionado à tabela de banco de dados. ,
Os programas ABAP podem acessar uma tabela transparente de dois modos. Um
é acessar os dados contidos na tabela com OPEN SQL (ou EXEC SQL). Com o
outro método, a tabela define um tipo estruturado que é acessado quando são
definidas variáveis (ou tipos mais complexos).
Você também pode criar um tipo estruturado no ABAP Dictionary para o qual não
existe um objeto correspondente no banco de dados. Esses tipos são chamados
estruturas. As estruturas também podem ser utilizadas para definir os tipos de
variáveis.
229 ET”
<!-- Página 42 -->
Estrutura include
**Figura 131: Estruturas include**
Às estruturas podem ser incluídas em tabelas ou em outras estruturas para evitar
definições de estrutura redundantes.
Uma tabela só pode ser incluída como uma tabela completa.
Uma cadeia de includes só pode conter uma tabela de banco de dados. A tabela na
qual você está efetuando inclusões pertence à cadeia de includes. Isso significa
que você não pode incluir uma tabela transparente em outra tabela transparente.
Os includes podem conter outros includes.
As definições de chave externa são geralmente transmitidas do include para a
tabela de inclusão. Os atributos da definição de chave externa são transferidos
do include para a tabela de inclusão, de modo que a chave externa depende da
definição no include.
<!-- Página 43 -->
- Categoria dados -
Em que área física do
banco de dados deve
ser arquivada à tabela?
Categoria tamanho
Quantos registros
contém
provavelmente
a tabela?
Os registros da tabela
devem ser armazenados
Registroemiog
em buffer? É ANN RE Pa? PRA
Registrar em log
modificações dos
registros de dados?
**Figura 132: Configurações técnicas**
Você deve atualizar as configurações técnicas quando define uma tabela
transparente no ABAP Dictionary.
As configurações técnicas são utilizadas para otimizar individualmente os
requisitos de arquivamento e o comportamento de acesso das tabelas de banco
de dados.
As configurações técnicas podem ser utilizadas para definir o modo como
uma tabela deveria ser tratada quando é criada no banco de dados, se a tabela
deveria ser armazenada em buffer e se as modificações das entradas deveriam
ser registradas em log.
A tabela é automaticamente criada no banco de dados ao ser ativada no ABAP
Dictionary. As informações necessárias aqui sobre a área de arquivamento a ser
selecionada (tablespace) e o tamanho de tabela previsto são determinadas das
configurações para a categoria de dados e a categoria de tamanho.
As configurações para o armazenamento em buffer definem se e como a tabela
deveria ser armazenada em buffer.
Você pode definir se as modificações das entradas em tabela deveriam ser
registradas em log.
23187”
<!-- Página 44 -->
**Figura 133: Fragmentação de tabelas no banco de dados**
Especialmente as tabelas que incluem dados de movimento podem ter intervalos
grandes em seu espaço de memória alocado devido ao crescimento rápido ou à
modificação frequente dos conjuntos de dados (inserção e eliminação de registros =
de dados). Essa fragmentação dos dados no disco rígido do servidor de banco de
dados origina sempre problemas de performance repetidos, que não podem ser
eliminados por medidas simples como a criação de um índice.
Os índices fragmentados podem ser desfragmentados simplesmente eliminando-os
- entrando-os de novo. Aqui, o banco de dados calcula de novo o conteúdo e a
estrutura do índice e, sempre que possível, cria o espaço de memória necessário de
uma vez no meio de armazenamento. Enquanto o índice está sendo reestruturado,
as tabelas de banco de dados podem ainda ser utilizadas.
Atenção: Se o índice tiver origem em uma tabela grande (< 100.000
registros de dados), o processo de criação pode demorar vários minutos ou
mesmo horas (para tabelas no ambiente BW). Além disso, apesar de criar
de novo o índice, isto não pode ser utilizado para o acesso ao banco de
dados, pois iria originar uma carga adicional (Full Table Scan - pesquisa
de tabela completa) no banco de dados quando os registros de dados
fossem lidos das respectivas tabelas.
As tabelas fragmentadas devem ser convertidas (consultar Modificações de tabelas
de banco de dados), de modo a reduzir a fragmentação. O sistema da SAP cria
uma nova tabela para isso. Os dados são transferidos para essa tabela. A tabela
<!-- Página 45 -->
antiga é então eliminada, sendo substituída pela nova tabela. Caso essa tabela
cresça muito rapidamente de forma inesperada, deveria ser verificada de novo
antes da conversão das configurações técnicas e, se necessário, ser ajustada.
Atenção: Durante o processo de conversão, o conteúdo da tabela não
pode ser lido nem modificado. O processo de conversão de uma tabela
deve ser executado em um ambiente produtivo com o maior cuidado,
da
uma vez que, dependendo do tamanho tabela, o processo de conversão
pode durar vários minutos ou horas.
=> Tais processos de conversão (para tabelas ou índices) deveriam,
assim, ser executados em alturas com a menor carga.
De modo a evitar ao máximo tais fragmentações desde o início, você seleciona
as tabelas de acordo com o tamanho e a categoria de dados nas configurações
técnicas.
Tabelas no ABAP Dictionary
Dds.mestre DdsOrganizacion:
**Figura 134: Categoria de dados**
A categoria de dados define logicamente a área física do banco de dados (para
ORACLE, o tablespace) na qual sua tabela deveria ser arquivada. Se você
selecionar corretamente a categoria de dados, a tabela será criadaautomaticamente
na área correta do banco de dados quando for ativada no ABAP Dictionary.
As categorias de dados mais importantes são dados mestre, dados de movimento,
dados organizacionais e dados do sistema.
Os dados mestre são dados que só raramente são modificados. Um exemplo de
dados mestre são os dados de um arquivo de endereço, por exemplo, o nome, o
endereço e o número de telefone.
<!-- Página 46 -->
Os dados de movimento são dados que são modificados com frequência. Um x
exemplo é o estoque do material de um depósito, que pode ser modificado depois
de cada pedido.
Os dados organizacionais são dados que são definidos durante o customizing, -,
quando o sistema é instalado e que, depois disso, só raramente são modificados.
As chaves de país são um exemplo.
Os dados do sistema são dados que o próprio sistema da SAP necessita. As fontes
de programa são um exemplo.
São fornecidas aos clientes outras categorias de dados, chamadas categorias
de dados do cliente (USER, USER1). Essas deveriam ser utilizadas para E
desenvolvimentos do cliente. Devem ser alocadas áreas de arquivamento especiais
no banco de dados.
Configurações técnicas
Extent to 2-
inicial extent extent ein
**Figura 135: Categoria de tamanho**
A categoria de tamanho descreve os requisitos de arquivamento previstos para a
tabela no banco de dados.
Quando uma tabela é criada no banco de dados, é reservado um extent inicial. O
tamanho do extent inicial é idêntico para todas as categorias de tamanho. Se, mais
tarde, a tabela necessitar de mais espaço para os dados, serão adicionados extents.
Esses extents adicionais têm um tamanho fixo, determinado pela categoria de
tamanho indicada no ABAP Dictionary.
Você pode selecionar uma categoria de tamanho de O a 4. A cada categoria é
atribuído um tamanho fixo de extent, que depende do sistema de banco de dados
utilizado.
;
<!-- Página 47 -->
A atribuição correta de uma categoria de tamanho assegura que você não cria um
grande número de pequenos extents. Também evita o desperdício de espaço de
memória quando se criam extents demasiado grandes.
p
ABAP Dictionary
Transação
de aplicação
Modificar
um registro
**Figura 136: Registro em log**
Você pode utilizar o registro em log para registrar e arquivar modificações das
entradas de uma tabela.
Para ativar o registro em log, é necessário que o campo correspondente esteja
selecionado nas configurações técnicas. Contudo, o registro em log só é efetuado
se o sistema da SAP tiver sido iniciado com um perfil que contenha o parâmetro
“rec/client”. A simples seleção do flag no. ABAP Dictionary não é suficiente para
acionar o registro em log.
O parâmetro “rec/client” pode ter as seguintes configurações:
rec/client = ALL Todos os mandantes devem ser registrados em
log. ,
rec/client = 000[...] Somente os mandantes indicados devem ser
registrados em log.
rec/client = OFF O registro em log está desativado nesse
sistema.
os 235
<!-- Página 48 -->
As modificações de dados são registradas em log independentemente da
atualização. Você pode exibir os logs com a transação Histórico da tabela (SCU3).
Atenção: O registro em log cria um gargalo no sistema:
- Acesso de escrita adicional para cada modificação das tabelas sendo
registradas em log. :
- Isso pode resultar em situações de bloqueio apesar de os usuários
estarem acessando diferentes tabelas de aplicação!
Resumo
O Todos os dados orientados ao negócio são administrados sob a forma de
tabelas, cuja definição está arquivada no ABAP Dictionary.
- Eutilizado um conceito de domínio de dois níveis para a definição das
tabelas. A definição semântica é implementada com elementos de dados e a
definição técnica é implementada com domínios.
- Os campos de estruturas include podem ser incluídos em tabelas.
- As configurações técnicas de uma tabela definem o modo como a tabela
deveria ser arquivada no banco de dados (tablespace, tamanho de extent) e se
as modificações dos registros de dados deveriam ser registradas em log.
<!-- Página 49 -->
### Exercício 11: Tabelas no ABAP Dictionary
### Objetivo dos exercícios
No final deste exercício, deverá estar apto a:
- Criar tabelas e utilizar o conceito de domínio de dois níveis
- Definir sensatamente as configurações técnicas
- Documentar campos
- Criar e utilizar estruturas include
Cenário de negócios
a
Nesses exercícios, as tabelas do modelo de voo serão ampliadas com
administração de empregados. Essa administração de empregados permite às
companhias aéreas entrar e avaliar dados sobre seus empregados (por exemplo,
nome, número pessoal, salário, departamento, etc.) e sobre atribuições dentro da
organização (departamentos da companhia aérea).
Nesse exercício, serão criadas duas tabelas para os dados dos empregados e os
departamentos da companhia aérea.
Os dados dos empregados são atualizados na tabela ZEMPLOY&%. Os nomes e
endereços dos empregados, bem como seus salários, são arquivados na tabela
ZEMPLOYYHE. A tabela ZDEPMENT$F contém os departamentos da companhia
aérea. Cada departamento pode ser contatado por um número de telefone e de fax.
Essas tabelas serão ampliadas passo a passo nos exercícios seguintes.
#### Tarefa 1:
Criar as duas tabelas transparentes ZEMPLOY&& e ZDEPMENT$A. Definir seus
campos-chave.
Observação: Antes de você poder ativar as tabelas, deve ainda definir
suas configurações técnicas. O procedimento é descrito nas últimas tarefas
dos exercícios. As primeiras tarefas também podem ser solucionadas
sem ativar a tabela.
" São atualizados dados para três companhias aéreas. Uma companhia aérea
tem 20.000 empregados e entre 10 e 30 departamentos. Não armazene em
buffer nem registre em log os dados. O armazenamento em buffer será
discutido nos exercícios do próximo capítulo.
1. Criea tabela ZEMPLOYHA.
Mediante o caminho Ferramentas - ABAP Workbench - Desenvolvimento
- ABAP Dictionary, você vai para a tela de síntese do ABAP Dictionary.
Continua na próxima página
<!-- Página 50 -->
Tabela ZEMPLOYHH
Campo Elemento de Domínio Tipo, Significado
dados com-
pri-
mento
CLIENT S CLIENT CLIENT Mandante
CARRIER SCARRID S CARRID Companhia
aérea
EMPNUM próprio próprio NUMC, Número
10 pessoal
FIRST NAME SFNAME
:
SFNAME Primeiro
nome
LAST NAME S LNAME SLNAME Sobrenome
DEPARTMENT próprio próprio CHAR, Código do
4 departa-
mento
AREA próprio próprio CHAR, Área
SALARY próprio próprio CURR, Salário
Decs.
CURRENCY S CURRCODE |S CURR Moeda
2. Crie atabela ZDEPMENTHA.
Mediante o caminho Ferramentas - ABAP Workbench - Desenvolvimento
- ABAP Dictionary, você vai para a tela de sintese do ABAP Dictionary.
Tabela ZDEPMENTH
Campo Elemento de Domínio Tipo, Descrição
dados
com-
pri-
mento
CLIENT SCLIENT CLIENT Mandante
CARRIER SCARRID |S CARR NM Companhia
aérea
Continua na próxima página
EN” 238
<!-- Página 51 -->
Campo Elemento de Domínio Tipo, Descrição
dados com-
pri-
mento
DEPARTMENT próprio próprio CHAR, Código do
4 ieparta-
mente
TELNR próprio SPHONE CHAR,| Telefone
FAXNR próprio SPHONE CHAR, Fax
3. Documente os campos Número pessoal e Código do departamento.
4. Para ativar a tabela, você deve efetuar agora as configurações técnicas e
atribuir um campo de moeda, caso exista um campo de montante na tabela.
#### Tarefa 2:
Garantir que, nas duas tabelas, estão disponíveis os mesmo campos para o registro
das modificações, adicionando esses campos às duas tabelas com a subestrutura
ZCHANGERA.
Observação: As modificações das tabelas ZEMPLOY &% e
ZDEPMENTH& são críticas e, por isso, devem ser registradas. A transação
de atualização deve anotar quem foi o último modificador de uma entrada
em tabela. Isso pode ser efetuado acrescentando campos para o número
pessoal da última pessoa que modificou a entrada e para a data da última
entrada, para as tabelas ZEMPLOY&% e ZDEPMENTHA.
Em uma aplicação real, a ampliação mencionada acima iria sempre
originar a desativação da atualização da tabela standard para as duas
tabelas. Em vez disso, você iria criar transações de atualização próprias
para a tabela, onde os campos para o registro em log das modificações
seriam preenchidos internamente pelo programa e não diretamente pelo
usuário.
A criação de tais transações ultrapassa a abrangência desse curso. Por
isso, nesse curso, nós assumimos que todos os usuários preenchem
(corretamente) esses campos na rotina de atualização de tabela standard.
1. Crie a estrutura ZCHANGE-f. Crie um novo elemento de dados para o
campo Último modificador,utilizando o domínio que você utilizou para o
número pessoal. Utilize SCHDATE como elemento de dados para a data da
última modificação.
Continua na próxima página
EI”
<!-- Página 52 -->
o
2 Insira ZCHANGEH$ como include nas tabelas ZEMPLOY% e
ZDEPMENTHA.
3. Descubra que ações foram executadas no banco de dados.
na
4. Inicie o programa BC430 CHECK transação SE38.
Observação: O programa BC430 CHECK verifica se suas
soluções estão corretas e preenche as novas tabelas ZEMPLOYH& e
ZDEPMENT&F com dados de amostra necessários para exercícios
posteriores.
<!-- Página 53 -->
### Solução 11: Tabelas no ABAP Dictionary
#### Tarefa 1:
Criar as duas tabelas transparentes ZEMPLOY&% e ZDEPMENTHH. Definir seus
campos-chave.
Observação: Antes de você poder ativar as tabelas, deve ainda definir
suas configurações técnicas. O procedimento é descrito nas últimas tarefas
dos exercícios. As primeiras tarefas também podem ser solucionadas
sem ativar a tabela.
São atualizados dados para três companhias aéreas. Uma companhia aérea
tem 20.000 empregados e entre 10 e 30 departamentos. Não armazene em
buffer nem registre em log os dados. O armazenamento em buffer será
discutido nos exercícios do próximo capítulo.
1. Criea tabela ZEMPLOYHA.
Mediante o caminho Ferramentas - ABAP Workbench - Desenvolvimento
- ABAP Dictionary, você vai para a tela de síntese do ABAP Dictionary.
Tabela ZEMPLOYHH
Campo Elemento de Domínio Tipo, Significado
dados com-
pri-
mento
CLIENTE S CLIENT CLIENT Mandante
CARRIER SCARRID SCARRID Companhia
aérea
EMPNUM próprio próprio NUMC,| Número
10 pessoal
FIRST NAME
SFNAME
SFNAME Primeiro
nome
LAST NAME S LNAME SLNAME Sobrenome
DEPARTMENT próprio próprio CHAR, Código do
4 departa-
mento
Continua na próxima página
<!-- Página 54 -->
Campo Elemento de Domínio Tipo, Significado
dados com-
o
pri-
mento
AREA próprio próprio CHAR, Área
SALARY próprio próprio CURR, Salário
Decs.
CURRENCY SCURRCODE |S CURR Moeda
a) Marque a Tabeia de banco de dados e entre o nome de tabela
ZEMPLOY;% no campo de entrada correspondente. Selecione Criar.
Entre um texto breve na tela de atualização para a tabela.
b) Selecione a classe de entrega A e marque Atualização de tabela
permitida.
Selecione agora a ficha de registro Campos para ir para a tela de
atualização para as definições de campo. Entre os nomes de campo
(não é necessário que esses nomes se encontrem no espaço de nomes
do cliente).
d) Para os campos Mandante, Companhia aérea, Primeiro nome,
Sobrenome e Moeda, você utiliza o elemento de dados indicado,
entrando o nome desse elemento de dados na coluna Tipo de campo.
Grave suas entradas.
e) Crie seus próprios elementos de dados para os campos Número pessoal,
Código do departamento, Área e Salário. Na coluna Tipo de campo, e
entre um nome (2<objeto>f%) para o elemento de dados. Selecione
- nome do elemento de dados. Aparece a definição do elemento de
dados.
-
Entre um texto breve (componente da ajuda F1). Agora, selecione a
e
ficha de registro Denominador de campo arquive aí os textos para os
denominadores de campo.
8) Você também deve atribuir uma descrição técnica (domínio) ao
elemento de dados. Selecione a ficha de registro Definição e entre aí
um nome (Z<objeto>&%) para seu domínio. Se o domínio estiver
predefinido, ative o elemento de dados e volte (utilizando F3) para a
tela de atualização para os campos de tabela. Caso contrário, selecione
- nome de domínio. Aparece a definição de domínio.
Continua na próxima página
<!-- Página 55 -->
h) Aí, você define a descrição breve, o tipo de dados (NUMC, CHAR ou
CURR) e o comprimento do campo. Ative o domínio.
Volte atrás uma tela (utilizando F3) para a definição do elemento de
dados e ative seu elemento de dados.
)) Volte atrás mais uma tela para a definição de campo. Comece de novo
com e) até todos os campos de tabela estarem definidos. Grave sua
tabela.
Hb Defina a tabela de referência e o campo de referência para o campo
e
Salário. Selecione o nome de campo entre as seguintes informações
na caixa de diálogo seguinte:
Campo Valor
Tabela de referência ZEMPLOY Ef
Campo de referência Moeda
D Defina os campos-chave para a tabela ZEMPLOYH, marcando a
coluna Chave à esquerda do nome de campo. Os campos Mandante,
Companhia aérea e Número pessoal identificam de modo unívoco uma
entrada. Por isso, eles devem ser marcados como campos-chave.
Observação: Os campos-chave Mandante, Companhia aérea
- Número pessoal devem existir nessa ordem no início da lista
de campos.
Ative a tabela ZEMPLOY$%. A tela de atualização para as
configurações técnicas aparece automaticamente.
Observação: Uma vez que os conteúdos da tabela
ZEMPLOY&H não são modificados frequentemente, você deve
selecionar a categoria de dados APPLO (dados mestre). O
número previsto de registros na tabela ZEMPLOY&% é 60.000,
por isso, você deve selecionar a categoria de tamanho 2. A
tabela não deve ser armazenada em buffer nem registrada em
log.
Tabela ZEMPLOYHH
Categoria de dados APPLO (dados mestre)
Categoria de tamanho 2
Armazenamento embuffer Não permitido
Registro em log Sem registro em log
Continua na próxima página
<!-- Página 56 -->
Grave as configurações técnicas. Volte para a tela de atualização da
Otabela (F3). A tabela está ativada. |
Crie a tabela ZDEPMENTHZ.
Mediante o caminho Ferramentas - ABAP Workbench - Desenvolvimento
- ABAP Dictionary, você vai para a tela de síntese do ABAP Dictionary.
Tabela ZDEPMENTHE
Campo Elemento de Domínio Tipo, Descrição
dados com-
pri-
mento
CLIENT SCLIENT CLIENT Mandante
CARRIER S CARRID |S CARR Companhia
aérea
DEPARTMENT próprio próprio CHAR,| Código do
4 departa-
mento
TELNR próprio SPHONE CHAR,| Telefone
FAXNR próprio SPHONE CHAR, Fax
a) Marque a Tabela de banco de dados e entre o nome de tabela
ZDEPMENT YE no campo de entrada correspondente. Selecione Criar.
Entre um texto breve na tela de atualização para a tabela.
b) Selecione a classe de entrega A e marque Atualização de tabela
permitida.
c) Selecione agora a ficha de registro Campos para ir para a tela de
atualização para as definições de campo. Entre os nomes de campo
(não é necessário que esses nomes se encontrem no espaço de nomes
do cliente).
d) Para os campos Mandante e Companhia aérea, você utiliza o elemento
de dados indicado, entrando o nome do elemento de dados na coluna
Tipo de campo. Grave suas entradas.
e) Paraos campos Código do departamento, Número de telefone e Número
de fax, você deveria criar seus próprios elementos de dados. Na coluna
Tipo de campo, entre um nome (Z<objeto>k%) para o elemento de
dados. Selecione o nome do elemento de dados. Aparece a definição do
elemento de dados.
Continua na próxima página
<!-- Página 57 -->
Entre um texto breve (componente da ajuda F1). Agora, selecione a
ficha de registro Denominador de campo e arquive aí os textos para os
denominadores de campo.
g) Você também deve atribuir uma descrição técnica (domínio) ao
elemento de dados. Selecione a ficha de registro Definição e entre aí um
nome (Z<objeto>&%) para seu domínio. Caso contrário, selecione o
nome de domínio. Aparece a definição de domínio.
Observação: Se o domínio estiver predefinido, ative o
elemento de dados e volte (utilizando F3) para a tela de
atualização para os campos de tabela.
Aí, defina a descrição breve, o tipo de dados (CHAR) e o comprimento
do campo (30). Ative o domínio. o
Volte atrás uma tela (utilizando F3) para a definição do elemento de
dados e ative seu elemento de dados.
)
Grave sua tabela.
k) Defina os campos-chave para a tabela ZDEPMENT$%, marcando a
coluna Chave à esquerda do nome de campo. Os campos Mandante,
Companhia aérea e Código do departamento identificam de modo
univoco uma entrada. Por isso, eles devem ser marcados como
campos-chave.
D Ative sua tabela e defina as configurações técnicas:
Uma vez que os conteúdos da tabela ZDEPMENT&A não são
modificados frequentemente, você deve selecionar a categoria de dados
APPLO (dados mestre). O número previsto de registros na tabela
ZDEPMENT&F é 90, por isso, você deve selecionar a categoria de
tamanho 0. A tabela não deve ser armazenada em buffer nem registrada
em log.
Tabela ZDEPMENTHE
Campo Valor
Categoria de dádos APPLO (dados mestre)
Categoria de tamanho 0
Armazenamento em buffer Não permitido
Registro em log Sem registro em log
Continua na próxima página
<!-- Página 58 -->
Documente os campos Número pessoal e Código do departamento.
a) Efetue um clique duplo no elemento de dados para ir para a definição
do elemento de dados. Mude para o Modo de modificação com Exibir
<=> Modificar. Selecione Ir para - Documentação.
e
b) Entre um texto para os campos grave suas entradas.
Para ativar a tabela, você deve efetuar agora as configurações técnicas e
atribuir um campo de moeda, caso exista um campo de montante na tabela.
a) Clique em Configurações técnicas.
b) Agora, selecione a Categoria de dados adequada e a Categoria de
tamanho.
c) Grave suas modificações e volte para a visão de campos para a tabela.
d) Você ainda deve atribuir campos de moeda para campos de montante
(como SALARY). Para tal, mude para a ficha de registro Campos de
moeda/quantidade.
Entre o nome da tabela atual no campo Tabela de referência.
No campo Referência, entre o nome do campo que você utilizou para a
moeda.
Continua na próxima página
ET” 246
<!-- Página 59 -->
#### Tarefa 2:
Garantir que, nas duas tabelas, estão disponíveis os mesmo campos para o registro
das modificações, adicionando esses campos às duas tabelas com a subestrutura
ZCHANGEHA.
Observação: As modificações das tabelas ZEMPLOY&H e
ZDEPMENT&H são críticas e, por isso, devem ser registradas. A transação
de atualização deve anotar quem foi o último modificador de uma entrada
em tabela. Isso pode ser efetuado acrescentando campos para o número
pessoal da última pessoa que modificou a entrada e para a data da última
entrada, para as tabelas ZEMPLOY && e ZDEPMENTHA.
Em uma aplicação real, a ampliação mencionada acima iria sempre
originar a desativação da atualização da tabela standard para as duas
tabelas. Em vez disso, você iria criar transações de atualização próprias
para a tabela, onde os campos para o registro em log das modificações
seriam preenchidos internamente pelo programa e não diretamente pelo
usuário.
A criação de tais transações ultrapassa a abrangência desse curso. Por
isso, nesse curso, nós assumimos que todos os usuários preenchem
(corretamente) esses campos na rotina de atualização de tabela standard.
1. Crie a estrutura ZCHANGEHF. Crie um novo elemento de dados para o
campo Último modificador, utilizando o domínio que você utilizou para o
número pessoal. Utilize SCHDATE como elemento de dados para a data da
última modificação.
a) Na primeira tela do ABAP Dictionary, marque Tipo de dados e entre
ZCHANGEf% no campo correspondente. Selecione Criar.
b) Marque Estrutura na caixa de diálogo seguinte.
c) Entre os nomes de campo na coluna Componente e os elementos de
dados correspondentes na coluna Tipo de componente. Crie seu próprio -
elemento de dados para o primeiro campo. Utilize o domínio que você
criou para o número pessoal na tabela ZEMPLOY HA.
d) Crie um campo para o número pessoal e outro para a data da
modificação. Utilize o elemento de dados SCHDATE para o segundo
campo.
e) Ative a estrutura ZCHANGERA.
Continua na próxima página
<!-- Página 60 -->
Insira ZCHANGEF como include nas tabelas ZEMPLOY HE e
ZDEPMENTH.
a) Váparaa tela de atualização para a tabela ZEMPLOY HH.
b) Selecione Novas linhas e coloque o cursor no primeiro campo novo.
c) Selecione Processar - Include - Inserir..
d) Na caixa de diálogo seguinte, entre o nome ZCHANGE + e selecione
Avançar.
e) Ative a tabela ZEMPLOY&%. Efetue as mesmas entradas para inserir a
subestrutura ZCHANGEX na tabela ZDEPMENTHH.
Descubra que ações foram executadas no banco de dados.
a) Você pode exibir as ações que foram efetuadas no banco de dados com
Utilitários - Log de ativação.
na
Inicie o programa BC430 CHECK transação SE38.
Observação: O programa BC430 CHECK verifica se suas
soluções estão corretas e preenche as novas tabelas ZEMPLOY&& e
ZDEPMENTEF com dados de amostra necessários para exercícios
posteriores.
a) Inicie a transação SE38 mediante o campo de entrada. Inicie o
programa BC430 CHECK.
;
<!-- Página 61 -->
### Resumo da lição
a:
Você agora deve estar apto
Criar tabelas
Utilizar o conceito de domínio de dois níveis
- Definir as configurações técnicas de uma tabela
Criar e utilizar estruturas include
<!-- Página 62 -->
## Lição: Tabelas SAP especiais
### Visão geral da lição
Você irá aprender sobre tabelas pool e cluster.
### Objetivos da lição
No final desta lição, você deverá estar apto a:
- Descrever tipos de tabela no sistema da SAP, além das tabelas transparentes
- Diferenciar tabelas pool de tabelas cluster
- Descrever as vantagens e desvantagens de tabelas pool e cluster
Cenário de negócios
Nas verificações de performance de algumas aplicações, você encontrou instruções
select que, aparentemente, acessam tabelas no banco de dados diferentes das
referidas na respectiva codificação ABAP.
Tabelas pool e cluster
ABAP Dictionary (visão lógica)
Visão física
**Figura 137: Síntese dos tipos de tabela BD**
EI”
<!-- Página 63 -->
Além das tabelas transparentes, nas quais a definição no ABAP Dictionary e no
banco de dados é idêntica, existem tabelas pool e cluster no sistema R/3.
As tabelas pool e cluster são caracterizadas pelo fato de várias tabelas, definidas
logicamente no ABAP Dictionary, serem combinadas em uma tabela de banco de
dados física (pool ou cluster de tabelas).
di
Tabela cluster
;
TIMESTAMP PAGELG
Tabela cluster
TABAB
Campos-chave
Tabela cluster TABB
Chave
Campo VARDATA
cluster
PAGNO
Descrição da estrutura
do campo VARDATA
Campos-chave
**Figura 138: Tabelas cluster**
A ideia das tabelas cluster é que você arquiva em uma tabela de banco de dados,
dados funcionalmente dependentes que estão divididos por diferentes tabelas.
Assim, a interseção dos campos-chave das tabelas cluster é criada pela chave do
cluster de tabelas (chave de cluster).
Os dados dependentes de uma chave de cluster são arquivados no campo
VARDATA do cluster de tabelas. Se o campo VARDATA não tiver capacidade
para aceitar todos os dados dependentes, a interface de banco de dados cria um
registro de estouro. A unicidade dentro do cluster de tabelas é pelo
pianndA
campo PAGNO.
O conteúdo do campo VARDATA é comprimido pela interface de banco de
dados. Assim, o campo VARDATA contém uma descrição para a descompressão
de seus dados. Os campos TIMESTAMP e PAGELG contêm lonas de
administração.
EI”
<!-- Página 64 -->
DATALN
Tabela pool
TABNAME VARKEY VARDATA
Chave
**Figura 139: Tabelas pool**
A ideia básica de um pool de tabelas, por oposição aos clusters de tabelas, é o
arquivamento de registros de dados das tabelas definidas no ABAP Dictionary que
não são dependentes entre si. Você quer combinar tabelas R/3 pequenas para
uma tabela de banco de dados.
No exemplo acima, você pode observar que a interseção dos campos-chave de
TABA e TABB está em branco. Apesar disso, os registros de dados de TABA e
TABB estão arquivados no pool de tabelas TABAB.
A chave para um registro de dados do pool de tabelas TABAB é composta
pelos dois campos TABNAME e VARKEY. O campo TABNAME assume o
nome da tabela pool. O campo VARKEY é constituído pela concatenação dos
" campos-chave da tabela pool. Daí resulta a necessidade de os campos-chave de
uma tabela pool deverem ter o tipo €.
No campo VARDATA, os campos não-chave. das tabelas pool são arquivados de
modo não estruturado, de forma comprimida pela interface de banco de dados. O
campo DATALN contém o comprimento do campo VARDATA.
<!-- Página 65 -->
Menos tabelas e campos de tabela
Compactação de dados
& Armazenamento encriptado de dados
& Limitações das funções do banco de dados
g Sem ABAP Native SQL / Sem visões ou ABAP
JOINS / Sem índices secundários / Sem GROUP BY,
ORDER BY, ...
Sem appends de tabela
Para tabelas cluster
& Seleção limitada em campos-chave de cluster
& Para tabelas pool
& Chaves maiores que o necessário
**Figura 140: Descrever as vantagens e desvantagens de tabelas pool e**
cluster
A maior vantagem das tabelas pool e cluster é que os dados podem ser arquivados
de forma comprimida no banco de dados. Isso reduz o espaço de memória
a
necessário, bem como carga de rede.
A combinação de dados de tabela em pools de tabelas ou clusters de tabelas
significa que existem menos tabelas físicas no banco de dados, enquanto que a
compressão significa que existem menos colunas em uma tabela de banco de
dados física. O resultado é que são executadas menosinstruções SQL diferentes.
As tabelas pool e cluster não são arquivadas no banco de dados como tabelas
separadas. Desse modo, a administração se torna mais simples. Com as tabelas
cluster, os dados funcionalmente dependentes são lidos em conjunto, o que resulta
em menos acessos ao banco de dados.
A maior desvantagem é uma restrição das funcionalidades do banco de dados. Os
campos não-chave não podem criar um índice. Não existem índices primários
nem índices em um subconjunto dos campos-chave. Tanto a utilização de visões
de banco de dados ou de ABAP joins como os appends de tabela são excluídos.
(e
Você só pode acessar os dados em tabelas pool ou cluster mediante OPEN SQL
não via ABAP Native SQL).
Para tabelas pool, somente as condições WHERE para campos-chave são
transferidas para o banco de dados, enquanto que para as tabelas cluster somente
são transferidas para o banco de dados as condições WHERE para os campos da
chave de cluster (subconjunto dos campos-chave). As cláusulas ORDER BY (ou
GROUP BY) não são transferidas para campos não-chave. Você necessita de
chaves maiores do que semanticamente necessário para tabelas pool.
<!-- Página 66 -->
### Resumo da lição
Você agora deve estar apto a:
- Descrever tipos de tabela no sistema da SAP, além das tabelas transparentes
- Diferenciar tabelas pool de tabelas cluster
O Descrever as vantagens e desvantagens de tabelas pool e cluster
<!-- Página 67 -->
## Resumo do capítulo
Você agora deve estar apto a:
Criar domínios e utilizá-los em elementos de dados
Definir elementos de dados e utilizá-los como a base para a definição de
objetos de dados em programas ABAP
e
Definir estruturas utilizá-las como a base para a definição de Gui de
dados em programas ABAP
Definir tabelas internas e utilizá-las como a base para a definição de objetos
de dados em programas ABAP
Definir estruturas complexas (aninhadas/profundas) e utilizá-las como a base
para a definição de objetos de dados em programas ABAP
Definir constantes globais com a ajuda de um pool de tipos e utilizá-las em
programas ABAP
Criar tabelas
Utilizar o conceito de domínio de dois níveis
Definir as configurações técnicas de uma tabela
e
Criar utilizar estruturas include
Descrever tipos de tabela no sistema da SAP, além das tabelas transparentes
Diferenciar tabelas pool de tabelas cluster
Descrever as vantagens e desvantagens de tabelas pool e cluster
<!-- Página 68 -->
**Resumo do capítulo TAW10 2**