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

Definição de uma classe local

Objective

After completing this lesson, you will be able to defina uma classe local dentro de uma classe global.

Classes locais

Classes locais e globais

As classes no ABAP podem ser locais ou globais.

As classes globais são armazenadas centralmente e estão contidas em seu próprio objeto do repositório chamado pool de classes. Uma classe global pode servir como programa principal. As classes globais também podem conter lógica a ser reutilizada por outros programas ABAP, incluindo outras classes globais.

As classes locais são definidas como parte de um programa ABAP, por exemplo, uma classe global. Você só pode utilizá-los no programa ou na classe em que estão definidos. As classes locais são úteis para entidades ou funções que você precisa apenas em um único programa.

A sintaxe ABAP de classes locais e globais é quase idêntica. Neste curso, você trabalhará com classes locais em sua classe global. A classe global com o método if_oo_adt_classrun~main só servirá como um tipo de programa principal.

Classes locais em classes globais

Como mostrado na figura abaixo, quando você abre uma classe global no ADT, o foco está na guia Classe global, primeiro. Aqui você encontra o texto fonte da própria classe global. Para ver ou inserir o texto fonte de classes locais, você deve navegar para a guia Tipos locais.

O ADT fornece um modelo de texto fonte para a classe local. Para utilizar este modelo, proceda da seguinte forma:

  1. No editor ABAP, digite lcl e pressione Ctrl + espaço.
  2. Na lista exibida, selecione lcl - Classe local e pressione Enter.
  3. Ajuste o nome da nova classe local.

Para as classes neste curso, remova a adição Create private da instrução CLASS … DEFINITION.

Como criar uma classe local em uma classe global

Atributos

Texto fonte de uma classe em ABAP

No ABAP, o texto fonte de uma classe tem duas partes - a definição e a implementação. A parte de definição de uma classe é subdividida em até três seções, chamadas de seções de visibilidade da classe.

Definição
A parte de definição de uma classe contém a definição e declaração de todos os elementos na classe, ou seja, os tipos, as constantes, os atributos e os métodos. Ele começa com CLASS <class_name> DEFINITION. e termina com ENDCLASS.
Implementação
A parte de implementação de uma classe contém o código executável da classe, nomeadamente a implementação de seus métodos. Ele começa com CLASS <class_name> IMPLEMENTATION. e termina com ENDCLASS. A parte de implementação de uma classe é opcional. Ela se torna obrigatória assim que a definição de classe contiver métodos executáveis.
Seções de visibilidade

Cada seção de visibilidade de uma classe começa com uma das instruções PUBLIC SECTION, PROTECTED SECTION, PRIVATE SECTION e termina implicitamente quando a próxima seção começa. A última seção termina com a instrução ENDCLASS. Todas as declarações de uma classe devem estar dentro de uma das seções. Em outras palavras: Não são permitidas declarações entre o início da definição de classe e o início da primeira seção.

A seção na qual uma declaração está localizada define a visibilidade do elemento declarado da classe.

As três seções de visibilidade de uma classe são opcionais; se você não precisar de uma seção específica, não precisa declará-la. Mas se uma definição de classe for composta por mais de uma seção, elas devem seguir a ordem PUBLIC SECTION - PROTECTED SECTION - PRIVATE SECTION.

Parte da definição de uma classe

O vídeo a seguir mostra os diferentes tipos de componentes que você pode definir em uma classe. Você pode definir qualquer um desses componentes em qualquer seção de visibilidade da classe.

Exemplo: atributos da classe de conexão de voo

Vamos começar a implementar nosso modelo UML no ABAP e usar os atributos da classe de conexão para começar. Para declarar um atributo, use a instrução DATA dentro da seção de visibilidade apropriada.

O atributo conn_counter é sublinhado, o que indica um atributo estático. Você declara atributos estáticos usando a instrução CLASS-DATA. A sintaxe de CLASS-DATA é idêntica à de DATA.

Nota

Começamos com atributos públicos neste ponto. Mais tarde no curso, quando discutimos o encapsulamento, vamos transformá-los em atributos privados.

Definir uma classe local

Neste exercício, você define uma classe local dentro de uma classe global.

Modelo:

  • nenhum

Solução:

  • /LRN/CL_S4D400_CLS_LOCAL_CLASS (classe global)

Tarefa 1: Criar uma classe global

No seu próprio pacote, crie uma nova classe ABAP.

Etapas

  1. Crie uma nova classe global que implemente a interface IF_OO_ADT_CLASSRUN (nome sugerido: ZCL_##_LOCAL_CLASS, onde ## representa seu número de grupo).

    1. Selecione ArquivoNovaclasse ABAP.

    2. Insira o nome do seu pacote no campo Pacote. No campo Nome, insira o nome ZCL_##_LOCAL_CLASS, em que ## é seu número de grupo. Insira uma descrição.

    3. No quadro de grupo Interfaces, selecione Adicionar.

    4. Insira IF_OO_ADT_CLASSRUN. Quando a interface aparecer na lista de ocorrências, clique duas vezes nela para adicioná-la à definição de classe.

    5. Selecione Avançar.

    6. Selecione sua ordem de transporte e, em seguida, Concluir.

Tarefa 2: Definir uma classe local

Defina uma classe local lcl_connection e declare alguns atributos públicos.

Etapas

  1. Dentro da classe global, crie uma nova classe local lcl_connection. Utilize o code completion para gerar o código, mas certifique-se de remover o suplemento create private do código gerado.

    1. Mude para a guia Tipos locais.

    2. Digite lcl no editor e pressione Ctrl + Espaço.

    3. Clique duas vezes em lcl - class no popup.

    4. Enquanto ainda há um quadro visível em torno de lcl na linha class lcl definition create private., complete o nome da classe para lcl_connection.

    5. Elimine as palavras create private no fim da linha de código class lcl_connection definition..

  2. Na classe local lcl_connection, declare os seguintes atributos públicos:

    Atributos

    Nome do atributoEscopoTipo de dados
    carrier_idinstância/DMO/CARRIER_ID
    connection_idinstância/DMO/CONNECTION_ID
    conn_counterestáticoP
    1. Após a linha PUBLIC SECTION. e antes da linha PROTECTED SECTION., adicione o seguinte código:

      Code Snippet
      123456
      DATA carrier_id TYPE /dmo/carrier_id. DATA connection_id TYPE /dmo/connection_id. CLASS-DATA conn_counter TYPE i.
  3. Ative a classe.

    Nota

    Uma vez que o método if_oo_adt_classrun~main ainda não contém código executável, não existe nada para testar ou depurar neste ponto.
    1. Pressione Ctrl + F3 para ativar a classe.

    2. Compare seu código na guia Tipos locais com o seguinte extrato da solução modelo:

      Code Snippet
      1234567891011121314151617181920212223
      *"* use this source file for the definition and implementation of *"* local helper classes, interface definitions and type *"* declarations CLASS lcl_connection DEFINITION. PUBLIC SECTION. DATA carrier_id TYPE /dmo/carrier_id. DATA connection_id TYPE /dmo/connection_id. CLASS-DATA conn_counter TYPE i. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS lcl_connection IMPLEMENTATION. ENDCLASS.