Guia de introdução
Aplicação de técnicas básicas e conceitos
Trabalhar com classes locais
Ler dados do banco de dados
Trabalhar com objetos de dados estruturados
Trabalhar com tabelas internas complexas
Implementar atualizações do banco de dados utilizando business objects
Descrição do modelo de programação de aplicativos ABAP RESTful

Trabalhar com objetos de dados básicos e tipos de dados

Objectives

After completing this lesson, you will be able to:
  • Declarar objetos de dados.
  • Atribuir valores.

Objetos de dados no ABAP

Um objeto de dados em um programa ABAP representa uma seção reservada da memória do programa.

O ABAP conhece três tipos de objetos de dados: variáveis, constantes e literais.

Variáveis

Uma variável é um objeto de dados com conteúdo que pode ser modificado durante o tempo de execução. Uma variável é identificada por um nome. O nome também é usado para abordar o objeto de dados no momento da execução. O valor inicial de uma variável ABAP é sempre bem definido.

Constantes

As constantes são semelhantes às variáveis. Mas, ao contrário das variáveis, o valor tem programação incondicional no texto fonte e não deve ser modificado durante o tempo de execução. Assim como as variáveis, as constantes têm um nome pelo qual podem ser reutilizadas.

Literais

O valor de literais também tem programação incondicional no texto fonte. Em contraste com constantes, os literais não têm um nome. Por isso, você não pode reutilizar um literal. Utilize somente literais para indicar os valores para constantes e os valores iniciais para variáveis.

Os objetos de dados ABAP são sempre tipificados: cada objeto de dados é baseado em um tipo de dados que determina o tipo de informação que eles podem conter. O tipo de dados de um objeto de dados ABAP permanece o mesmo durante a execução de um programa.

Declaração de variáveis

Uma variável em um programa ABAP é declarada com a palavra-chave DATA.

Uma instrução DATA é composta por três partes. Vejamos cada parte mais detalhadamente.

DATA
A palavra-chave DATA é seguida pelo nome da variável. O nome de uma variável pode ter um comprimento máximo de 30 caracteres. Ele pode conter os caracteres de A a Z, os dígitos de 0 a 9 e o caractere de sublinhado. O nome deve começar com uma letra ou sublinhado.
TYPE
O tipo da variável é indicado após o suplemento TYPE. No exemplo, são usados os tipos integrados i (para números inteiros) e string (string de caracteres com comprimento variável).
VALOR
A adição VALUE é opcional e você pode utilizá-la para indicar um valor inicial para a variável. Se VALUE estiver em falta, a variável é criada com um valor inicial que depende do tipo técnico da variável.

Fontes de tipos de dados ABAP

O ABAP oferece as seguintes fontes de tipos de dados:

ABAP integrado
O ABAP tem um conjunto de 14 tipos de dados predefinidos para objetos de dados simples numéricos, em forma de caractere e binários.
Instrução TYPES
A instrução TYPES permite que você defina tipos de dados e reutilize os mesmos em diferentes locais, dependendo da localização da definição.
ABAP Dictionary
O ABAP Dictionary faz parte do repositório ABAP. Entre outras coisas, ele administra tipos de dados globais que estão disponíveis em todo o sistema. Os tipos de ABAP Dictionary não só definem características técnicas, como também adicionam informações semânticas, por exemplo, etiquetas. Os tipos de ABAP Dictionary são especialmente úteis na implementação de interfaces do usuário.

Testar: TIPOS ABAP predefinidos

  1. Como no primeiro exercício deste curso, crie uma nova classe global que implemente a interface IF_OO_ADT_CLASSRUN.
  2. Copie o seguinte snippet de código para a parte de implementação do método if_oo_adt_classrun~main( ):
    Code Snippet
    12345678910111213141516171819202122232425
    * Data Objects with Built-in Types ********************************************************************** " comment/uncomment the following declarations and check the output DATA variable TYPE string. * DATA variable TYPE i. * DATA variable TYPE d. * DATA variable TYPE c LENGTH 10. * DATA variable TYPE n LENGTH 10. * DATA variable TYPE p LENGTH 8 DECIMALS 2. * Output ********************************************************************** out->write( 'Result with Initial Value)' ). out->write( variable ). out->write( '---------' ). variable = '19891109'. out->write( 'Result with Value 19891109' ). out->write( variable ). out->write( '---------' ).
  3. Pressione CTRL + F3 para ativar a classe e F9 para executá-la como um aplicativo de console.
  4. Analise a saída do console. Anule o comentário de diferentes declarações da variável. Tente suas próprias declarações para se familiarizar com os conceitos.

Constantes e Literais

Declaração de constantes

Uma constante é um objeto de dados com um valor com programação incondicional que não deve ser modificado durante o tempo de execução. Qualquer acesso de escrita a uma constante leva a um erro de sintaxe.

No ABAP, você declara uma constante utilizando a palavra-chave CONSTANTS. Uma instrução CONSTANT consiste nas mesmas partes que uma instrução DATA. A única diferença é que o suplemento VALUE é obrigatório.

Você pode utilizar o suplemento VALUE na forma especial VALUE IS INITIAL, caso o valor da constante deva ser o valor inicial específico do tipo.

Literais em ABAP

Literais são objetos de dados anônimos com um valor com programação incondicional. Literais são frequentemente usados para definir valores não iniciais para constantes e valores iniciais não iniciais para variáveis.

Tecnicamente, você pode usar literais em qualquer lugar em seu código. Para suportar a legibilidade e a manutenção, é recomendado definir e utilizar constantes.

O ABAP conhece três tipos de literais:

  • Literais numéricos são números inteiros com ou sem sinal. Os literais numéricos geralmente têm o tipo de dados I. Somente se o valor for demasiado grande para o tipo de dados I, é utilizado o tipo P, com um comprimento suficiente e sem casas decimais.
  • Literais de texto são cadeias de caracteres entre aspas simples. Os literais de texto têm o tipo C. O comprimento é derivado do conteúdo entre aspas. Os espaços em branco à direita são ignorados.
  • Literais de cadeia são cadeias de caracteres em um par de aspas verticais (`). Os literais de cadeia são do tipo STRING. Eles devem ser usados para fornecer valores para objetos de dados tipificados por cadeia.

Testar: objetos de dados

  1. Como no primeiro exercício deste curso, crie uma nova classe global que implemente a interface IF_OO_ADT_CLASSRUN.
  2. Copie o seguinte snippet de código para a parte de implementação do método if_oo_adt_classrun~main( ):
    Code Snippet
    1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
    * Example 1: Local Types ********************************************************************** * Comment/Uncomment the following lines to change the type of my_var TYPES my_type TYPE p LENGTH 3 DECIMALS 2. * TYPES my_type TYPE i . * TYPES my_type TYPE string. * TYPES my_type TYPE n length 10. * Variable based on local type DATA my_variable TYPE my_type. out->write( `my_variable (TYPE MY_TYPE)` ). out->write( my_variable ). * Example 2: Global Types ********************************************************************** * Variable based on global type . " Place cursor on variable and press F2 or F3 DATA airport TYPE /dmo/airport_id VALUE 'FRA'. out->write( `airport (TYPE /DMO/AIRPORT_ID )` ). out->write( airport ). * Example 3: Constants ********************************************************************** CONSTANTS c_text TYPE string VALUE `Hello World`. CONSTANTS c_number TYPE i VALUE 12345. "Uncomment this line to see syntax error ( VALUE is mandatory) * constants c_text2 type string. out->write( `c_text (TYPE STRING)` ). out->write( c_text ). out->write( '---------' ). out->write( `c_number (TYPE I )` ). out->write( c_number ). out->write( `---------` ). * Example 4: Literals ********************************************************************** out->write( '12345 ' ). "Text Literal (Type C) out->write( `12345 ` ). "String Literal (Type STRING) out->write( 12345 ). "Number Literal (Type I) "uncomment this line to see syntax error (no number literal with digits) * out->write( 12345.67 ).
  3. Pressione CTRL + F3 para ativar a classe e F9 para executá-la como um aplicativo de console.
  4. Jogue com o código-fonte para se familiarizar com os conceitos.
    • Anule o comentário de diferentes declarações de my_type e use F2 e F3 para analisar a definição da variável my_variable.
    • Utilize F2 e F3 para analisar a definição de aeroporto variável.
    • Anule o comentário da definição da constante c_text2 para ver o erro de sintaxe.
    • Anule o comentário da última linha de código para ver o erro de sintaxe.
    • ...

Atribuições de valor a objetos de dados

Utilize avaliações para modificar o valor de variáveis.

Assista a este vídeo para ver como.

Conversões de tipo implícitas

Embora o ABAP seja uma linguagem de programação tipificada, em uma avaliação, o tipo da expressão de origem e o tipo da variável de destino podem ser diferentes. Se for esse o caso, o tempo de execução tenta em uma conversão de tipo.

Como mostrado na figura, se possível, tente evitar conversões de tipo pelos seguintes motivos:

  • Consumo de tempo de execução adicional: os valores com conversões de tipo requerem mais tempo de execução do que atribuições de valores com tipos idênticos.
  • Possíveis erros em tempo de execução: algumas combinações de tipo de origem e tipo de destino podem levar a erros em tempo de execução. Se, por exemplo, a variável de destino tiver um tipo numérico l e a expressão de origem tiver um tipo de caractere, o tempo de execução emitirá um erro se não for possível traduzir o texto em um número.
  • Possível perda de informação: algumas combinações de tipo de fonte e tipo de destino não causam erros em tempo de execução, mas podem levar a uma perda de dados. Se, por exemplo, origem e destino forem do tipo C, mas o tipo da variável de destino for menor. Em seguida, o tempo de execução simplesmente trunca o valor da fonte.

Reinicializar variáveis

A instrução CLEAR é um tipo especial de avaliação. Ele é usado para redefinir uma variável para seu valor inicial específico de tipo.

Nota

A instrução CLEAR ignora o valor inicial do suplemento VALUE. Depois de CLEAR, a variável contém sempre o valor inicial específico de tipo.

Declarações inline em avaliações

Assista a este vídeo para saber mais sobre declarações inline e como elas funcionam nas avaliações.