Essa semana vamos falar sobre três comandos muito simples e que são bastante utilizados no SAP. Porém, são potenciais causadores de dor de cabeça se não usados de forma correta, e pode ser ainda pior se não forem usados quando necessário.

Basicamente, todos eles executam a mesma tarefa: inicializar variáveis/tabelas internas/work areas, mas há algumas peculiaridades. E é sobre essas pequenas diferenças que vamos aprender.

 

Variável

Segundo a Wikipédia, uma variável é um objeto (uma posição, frequentemente localizada na memória) capaz de reter e representar um valor ou expressão. Ou seja, toda vez que utilizamos a palavra-chave da linguagem de programação em que estamos criando nosso programa (no caso do ABAP, utilizamos DATA) para definir uma variável, em tempo de execução será alocado um espaço na memória para guardar as informações.

Esclarecido o conceito de variável, vejamos o trecho de código abaixo:

(Clique na imagem para ampliar)

No simples trecho de código acima, declaramos uma variável comum do tipo I, duas tabelas internas, sendo que uma tem header line e também declaramos uma workarea. Logo em seguida, atribuímos um valor inicial para cada uma delas. Vejamos o comportamento de cada um dos comandos para o cenário exposto:

 

CLEAR

(Clique na imagem para ampliar)
 

Veja o Memory Inspector (ao lado do código), logo após o comando CLEAR. A variável , a workarea e a tabela interna sem header line foi inicializada, porém a tabela interna com o header line não foi inicializada. Isso ocorre porque o comando CLEAR IT_EKKO_H vai atuar somente no cabeçalho da tabela, caso seja necessário limpar o conteúdo teremos que usar o comando da seguinte maneira: CLEAR IT_EKOO_H[].

Obs.: Note que a memória ainda está alocada para as tabelas, pois o comando CLEAR apenas limpa o conteúdo.

REFRESH

(Clique na imagem para ampliar)

Similar ao comando CLEAR, porém ele sempre vai se referir ao conteúdo da tabela interna. Sendo assim, REFRESH IT_EKKO _H é o mesmo que CLEAR INT_EKOO_H[].

Obs.: Note que após o comando ambas as tabelas estão inicializadas, porém seu espaço na memória continua alocado. 

FREE

(Clique na imagem para ampliar)

O comando FREE, assim como o comando REFRESH, sempre irá atuar no conteúdo da tabela. Porém ele tem mais uma característica  alem de inicializar a variável, ele libera o espaço na memória ocupado por ela, como pode ser observado no Memory Inspector.

Colaboradores: Alexandre Henrique – Desenvolvimento Abab

Deixe suas dúvidas e sugestões nos comentários, participe!

(Visited 1.677 times, 1 visits today)