SAP ABAP - Variáveis
Variáveis são objetos de dados nomeados usados para armazenar valores dentro da área de memória alocada de um programa. Como o nome sugere, os usuários podem alterar o conteúdo das variáveis com a ajuda de instruções ABAP. Cada variável no ABAP possui um tipo específico, que determina o tamanho e o layout da memória da variável; a faixa de valores que podem ser armazenados nessa memória; e o conjunto de operações que podem ser aplicadas à variável.
Você deve declarar todas as variáveis antes que elas possam ser usadas. A forma básica de uma declaração de variável é -
DATA <f> TYPE <type> VALUE <val>.
Aqui <f> especifica o nome de uma variável. O nome da variável pode ter até 30 caracteres. <tipo> especifica o tipo de variável. Qualquer tipo de dados com atributos técnicos totalmente especificados é conhecido como <tipo>. O <val> especifica o valor inicial da variável de <f>. No caso de você definir uma variável elementar de comprimento fixo, a instrução DATA preenche automaticamente o valor da variável com o valor inicial específico do tipo. Outros valores possíveis para <val> podem ser uma cláusula literal, constante ou explícita, como Is INITIAL.
A seguir estão exemplos válidos de declarações de variáveis.
DATA d1(2) TYPE C.
DATA d2 LIKE d1.
DATA minimum_value TYPE I VALUE 10.
No trecho de código acima, d1 é uma variável do tipo C, d2 é uma variável do tipo d1 e minimum_value é uma variável do tipo inteiro ABAP I.
Este capítulo irá explicar vários tipos de variáveis disponíveis no ABAP. Existem três tipos de variáveis em ABAP -
- Variáveis Estáticas
- Variáveis de Referência
- Variáveis do sistema
Variáveis Estáticas
Variáveis estáticas são declaradas em sub-rotinas, módulos de função e métodos estáticos.
O tempo de vida está vinculado ao contexto da declaração.
Com a instrução 'CLASS-DATA', você pode declarar variáveis dentro das classes.
A instrução 'PARAMETERS' pode ser usada para declarar os objetos de dados elementares que estão vinculados aos campos de entrada em uma tela de seleção.
Você também pode declarar as tabelas internas que estão vinculadas aos campos de entrada em uma tela de seleção usando a instrução 'SELECT-OPTIONS'.
A seguir estão as convenções usadas ao nomear uma variável -
Você não pode usar caracteres especiais como "t" e "," para nomear variáveis.
O nome dos objetos de dados predefinidos não pode ser alterado.
O nome da variável não pode ser igual a qualquer palavra-chave ou cláusula ABAP.
O nome das variáveis deve transmitir o significado da variável sem a necessidade de comentários adicionais.
Os hífens são reservados para representar os componentes das estruturas. Portanto, você deve evitar hifens em nomes de variáveis.
O caractere de sublinhado pode ser usado para separar palavras compostas.
Este programa mostra como declarar uma variável usando a instrução PARAMETERS -
REPORT ZTest123_01.
PARAMETERS: NAME(10) TYPE C,
CLASS TYPE I,
SCORE TYPE P DECIMALS 2,
CONNECT TYPE MARA-MATNR.
Aqui, NAME representa um parâmetro de 10 caracteres, CLASS especifica um parâmetro do tipo inteiro com o tamanho padrão em bytes, SCORE representa um parâmetro de tipo compactado com valores de até duas casas decimais e CONNECT se refere ao tipo MARA-MATNF do dicionário ABAP .
O código acima produz a seguinte saída -
Variáveis de Referência
A sintaxe para declarar variáveis de referência é -
DATA <ref> TYPE REF TO <type> VALUE IS INITIAL.
A adição REF TO declara uma variável de referência ref.
A especificação após REF TO especifica o tipo estático da variável de referência.
O tipo estático restringe o conjunto de objetos aos quais <ref> pode se referir.
O tipo dinâmico de variável de referência é o tipo de dados ou classe a que se refere atualmente.
O tipo estático é sempre mais geral ou igual ao tipo dinâmico.
A adição TYPE é usada para criar um tipo de referência de limite e como um valor inicial, e apenas IS INITIAL pode ser especificado após a adição de VALUE.
Exemplo
CLASS C1 DEFINITION.
PUBLIC SECTION.
DATA Bl TYPE I VALUE 1.
ENDCLASS. DATA: Oref TYPE REF TO C1 ,
Dref1 LIKE REF TO Oref,
Dref2 TYPE REF TO I .
CREATE OBJECT Oref.
GET REFERENCE OF Oref INTO Dref1.
CREATE DATA Dref2.
Dref2→* = Dref1→*→Bl.
No fragmento de código acima, uma referência de objeto Oref e duas variáveis de referência de dados Dref1 e Dref2 são declaradas.
Ambas as variáveis de referência de dados são totalmente digitadas e podem ser desreferenciadas usando o operador de desreferenciação → * nas posições do operando.
Variáveis do sistema
As variáveis do sistema ABAP são acessíveis a partir de todos os programas ABAP.
Na verdade, esses campos são preenchidos pelo ambiente de tempo de execução.
Os valores nesses campos indicam o estado do sistema em qualquer ponto do tempo.
Você pode encontrar a lista completa de variáveis do sistema na tabela SYST do SAP.
Os campos individuais da estrutura SYST podem ser acessados usando “SYST-” ou “SY-”.
Exemplo
REPORT Z_Test123_01.
WRITE:/'SY-ABCDE', SY-ABCDE,
/'SY-DATUM', SY-DATUM,
/'SY-DBSYS', SY-DBSYS,
/'SY-HOST ', SY-HOST,
/'SY-LANGU', SY-LANGU,
/'SY-MANDT', SY-MANDT,
/'SY-OPSYS', SY-OPSYS,
/'SY-SAPRL', SY-SAPRL,
/'SY-SYSID', SY-SYSID,
/'SY-TCODE', SY-TCODE,
/'SY-UNAME', SY-UNAME,
/'SY-UZEIT', SY-UZEIT.
O código acima produz a seguinte saída -
SY-ABCDE ABCDEFGHIJKLMNOPQRSTUVWXYZ
SY-DATUM 12.09.2015
SY-DBSYS ORACLE
SY-HOST sapserver
SY-LANGU EN
SY-MANDT 800
SY-OPSYS Windows NT
SY-SAPRL 700
SY-SYSID DMO
SY-TCODE SE38
SY-UNAME SAPUSER
SY-UZEIT 14:25:48