diff --git a/SAP.md b/SAP.md new file mode 100644 index 0000000..bae7634 --- /dev/null +++ b/SAP.md @@ -0,0 +1,1948 @@ +--- +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. + + + +## 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 + + + +## 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” + + + +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. + + + +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Á + + + +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 + + + +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). + + + +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. + + + +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”. + + + +.. +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 + + + +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” + + + +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. + + + +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” + + + +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 + + + +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” + + + +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. +; + + + +### 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Á + + + +? +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” + + + +### 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 + + + +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 + + + +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 + + + +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” + + + +### 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 + + + +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. + + + +### 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 + + + +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 + + + +: +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” + + + +### 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. + + + +### 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 + + + +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 + + + +wasflight-price, +wa sflight-currency, +wa sflight-planetype. +ENDLOOP. + + + +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. + + + +### 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 + + + +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 + + + +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 + + + +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 + + + +## 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. +; + + + +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. + + + +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 + + + +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” + + + +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. + + + +- 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” + + + +**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 + + + +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. + + + +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. +; + + + +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 + + + +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. + + + +### 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 + + + +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 + + + +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” + + + +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. + + + +### 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 + + + +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 (2f%) 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&%) 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 + + + +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 + + + +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 (Zk%) 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 + + + +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&%) 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 + + + +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 + + + +#### 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 + + + +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. +; + + + +### 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 + + + +## 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” + + + +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” + + + +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. + + + +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. + + + +### 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 + + + +## 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 + + + +**Resumo do capítulo TAW10 2**