Descomplicando Logo
Escopo e Visibilidade de Objetos

Escopo e Visibilidade de Objetos

Global ou Local?

SAP ABAP
Base de Conhecimento

Introdução

No desenvolvimento em SAP ABAP, as variáveis são essenciais para armazenar e manipular dados dentro de um programa. Elas podem ser classificadas em variáveis globais e locais, dependendo do seu escopo e da sua acessibilidade dentro do programa.



Diferença entre Variáveis Globais e Locais

Global

  • Declarada fora de qualquer bloco de processamento (FORM, METHODS, FUNCTION MODULE, etc.).
  • Pode ser acessada por todas as partes do programa, desde que dentro do mesmo contexto de execução.

Local

  • Declarada dentro de um bloco específico (FORM, METHODS, FUNCTION MODULE, etc.).
  • Só pode ser acessada dentro do bloco onde foi declarada.



Exemplo em um Programa ABAP

Vamos considerar um programa onde utilizamos variáveis globais e locais em diferentes contextos:

REPORT z_variaveis_abap.

" Declaração de variável global
DATA: gv_nome TYPE string.

" Sub-rotina que utiliza uma variável local
FORM preencher_nome.
    DATA: lv_nome TYPE string.
    lv_nome = 'João'. " Esta variável só pode ser usada dentro deste FORM
    gv_nome = lv_nome. " Atribui o valor para a variável global
ENDFORM.

START-OF-SELECTION.
    PERFORM preencher_nome.
    WRITE: gv_nome. " A variável global pode ser usada em qualquer parte do programa

Neste exemplo, gv_nome é uma variável global, acessível dentro de todo o programa, enquanto lv_nome é uma variável local que só existe dentro do FORM preencher_nome.



Uso de Variáveis em Classes

As classes em ABAP também utilizam variáveis com escopo global ou local, dependendo de onde são declaradas.

CLASS lcl_teste DEFINITION.
    PUBLIC SECTION.
        METHODS: exibir_nome.
    PRIVATE SECTION.
        DATA: gv_nome TYPE string. " Variável de instância (global dentro da classe)
ENDCLASS.

CLASS lcl_teste IMPLEMENTATION.
    METHOD exibir_nome.
        DATA: lv_nome TYPE string. " Variável local, visível apenas dentro deste método
        lv_nome = 'Ana'.
        gv_nome = lv_nome.
        WRITE: gv_nome.
    ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
    DATA: obj TYPE REF TO lcl_teste.
    CREATE OBJECT obj.
    obj->exibir_nome().

Aqui, gv_nome é uma variável de instância, acessível dentro da classe, enquanto lv_nome é uma variável local, acessível apenas dentro do método exibir_nome.



Pontos de Referência para o Uso de Variáveis

  • Escopo e Visibilidade:
  • Use variáveis globais apenas quando necessário.
  • Prefira variáveis locais para evitar conflitos e garantir modularidade.
  • Performance:
  • Variáveis locais são mais eficientes porque são alocadas e desalocadas conforme a necessidade, enquanto variáveis globais permanecem na memória durante toda a execução.
  • Manutenção do Código:
  • O uso excessivo de variáveis globais pode dificultar a manutenção do código, pois qualquer alteração nelas pode impactar múltiplas partes do programa.



Conclusão

O uso adequado de variáveis globais e locais no SAP ABAP é fundamental para garantir um código mais limpo, seguro e eficiente. Sempre que possível, opte por variáveis locais para reduzir dependências e melhorar a manutenção do sistema.

Comentários

Cuidado com as palavras!

Sem comentários. Seja o primeiro!