• Nenhum resultado encontrado

HEADER LINE

No documento Academia ABAP (páginas 32-36)

As tabelas internas podem ser definidas com ou sem uma linha de cabeçalho. Uma tabela interna com linha de cabeçalho é composta por uma área de trabalho e o corpo real da tabela, ambos endereçados com o mesmo nome.

O usuário pode declarar uma tabela interna com uma linha de cabeçalho através do suplemento WITH HEADER LINE.

Para evitar erros, recomenda-se que o usuário crie tabelas internas sem linha de cabeçalho. Entretanto, nas tabelas internas com linhas de cabeçalho é quase sempre possível usar uma sintaxe reduzida para certas operações.

Uma tabela interna é uma seqüência de linhas do mesmo tipo.

Em geral as tabelas internas ( também denominada matriz) são usadas para arquivar os resultados de processamento ou os dados de origem.

Elas são usadas para:

• Armazenamento temporário de dados das tabelas de banco de dados para processamento posterior.

• Arquivamento de dados para exibição de listas.

• Arquivo de dados para comunicação com o computador de mesa, outros servidores de aplicação do sistema R/3 ou sistemas não SAP.

As tabelas internas são descritas através de vários atributos, um dos quais é o tipo de linha. O tipo de linha determina a estrutura dos registros de dados que podem ser armazenados em uma tabela interna.

CARRID CONNID DISTANCIA Tipo de Linha

AA 0017 2,572

LH 0400 6,162 Dados

Outro atributo das tabelas internas são as chaves, que ajudam a identificar as entradas da tabela. O importante na definição de uma chave é a seqüência de seus campos.

Por exemplo, a chave CARRID CONNID é diferente de CONNID CARRID.

Existem dois tipos diferentes de acesso aos dados no Abap: com índice e com chave.

Acesso com índice: Significa usar o índice do registro de dados que o sistema mantem para acessar os dados.

Acesso com chave: significa usar o termo de pesquisa, em geral uma chave da tabela ou uma chave da tabela genérica, para ter acesso aos dados.

- Categorias de Tabelas

As tabelas internas podem ser divididas em três categorias. De acordo com o modo de acesso aos dados:

• Tabelas Standard: mantém, internamente, um índice linear e podem ser acessadas atraves do seu índice ou de sua chaves.

• Tabelas Ordenadas: São ordenadas de acordo com a chave e gravadas. Aqui, também um índice linear é utilizado internamente. Este tipo de tabela também pode ser acessada através do seu índice ou de suas chaves.

• Tabelas Aleatórias de Prova: Não mantém índice linear interno e podem ser acessadas apenas através de suas chaves.

As seguintes operações podem ser executadas com tabelas internas em ABAP:

Comando Efeito

APPEND Anexa o conteúdo de uma área de trabalho ao final de uma tabela interna

INSERT Insere o conteúdo de uma área de trabalho em um determinado ponto ( N° linha).

MODIFY Sobrescreve uma linha especifica com o conteúdo de uma área de trabalho;

DELETE Apaga uma linha especifica de uma tabela interna. LOOP AT Insere as entradas de uma tabela interna. Linha por

linha em uma área de trabalho.

READ TABLE Insere exatamente uma entrada da tabela interna

em uma área de trabalho.

SORT Ordena uma tabela interna.

CLEAR Limpa (apaga) uma área de trabalho ou uma tabela interna.

- Preenchimento de Tabelas Internas

O sistema permite usar tabelas internas sempre que houver uma seqüência de entradas ou linhas de mesmo tipo. Isto ocorre quase sempre quando um programa precisa de uma copia interna de uma determinada tabela do banco de dados.

O usuário pode preencher uma tabela interna com registros de dados de uma tabela do banco de dados utilizando um loop SELECT para colocar registros individuais de dados na área de trabalho de uma tabela interna e, depois, anexando o conteúdo da área de trabalho à tabela interna no loop SELECT.

A instrução APPEND deve ser utilizada para preencher uma tabela interna. Ao declarar uma tabela standard, o usuário não precisa usar o suplemento STANDARD.

Exemplos de criação.

Debugar e mostrar vazia.

Passar os parameters para dentro da ITAB. Mostrar APPEND -> explicar header line.

Exercício:

Algumas sintaxes de criação: DATA: BEGIN OF itab_zprof OCCURS 0, codprof like zprofessor-codprof,

nomeprof like zprofessor-nomeprof, dtnasc like zprofessor-dtnasc, END of itab_zprof.

OU

DATA: itab_zprof like zprofessor occurs 0 with header line. DATA: BEGIN OF itab_zprofessor OCCURS 0.

include structure zprofessor. data: idade(02) type c. DATA: END OF itab_zprof. OU

data: itab_zprof like zprofessor occurs 0 with heaDER LINE.

Exercício:

01 – Criar dentro do programa teste a declaração de tabela interna e compilar.

02 – Debugar a o programa e exibir HEADER LINE -> explicar.

03 - Criar parameters para tabela ZPROFESSOR e mover para tabela interna.

04 – Criar SELECTION SCREEN com bloco e frame.

Adendo a respeito da declaração OCCURS N em tabelas internas: General Performance Notes for Internal Tables

OCCURS Value or INITIAL SIZE Specification

Internal tables are a dynamic data structure. Their memory requirements are met in blocks. The initial memory allocation (hereafter called the OCCURS area), can be controlled using the " OCCURS n" or "INITIAL SIZE n " addition in the table definition (see DATA, TYPES). Once the OCCURS area is full, the next block to be created is twice as big as the OCCURS area (as long as this is not greater than 8 KB). All further blocks are then created with a constant size of 12 KB.

You can leave it to the system to determine the size of the OCCURS area by specifying n = 0. In this case, the system allocates only a "small" portion of memory at the first INSERT or APPEND statement. "OCCURS 0" or "INITIAL SIZE 0" means that 16 <= n <= 100 (depending on the line width).

It only makes sense to specify a concrete value of n > 0 when you know exactly how many entries the table will have, and you want to set up the OCCURS area exactly. This can be particularly important if you want to nest internal tables (where an "outer" internal table contains one or more other internal tables in each line, and the "inner" tables only have a few entries (no more than 5, for example).

To avoid excessive memory requirements, the system handles large values of n as follows: The largest possible value of n is n_max = 8 KB divided by the line width. For larger values, n is set such that n multiplied by the line width is around 12 KB.

MODULARIZAÇÃO:

No documento Academia ABAP (páginas 32-36)

Documentos relacionados