Form e Perform – Abap

Publicado: 18 de fevereiro de 2014 em Abap

Similar às funções em outras linguagens de programação. Fornece encapsulamento de funcionalidade. Permite a passagem de parâmetro usando métodos diferentes.

A declaração FORM define uma sub-rotina e sua interface. Convenções de nomenclatura se aplicam ao nome da sub-rotina. As funções da sub-rotina são implementadas entre as declarações FORM e ENDFORM. As adições definem os parâmetros formais da sub-rotina e declaram a propagação das exceções de classe até a instrução que a invocou.

Você pode usar o comando PERFORM para chamar uma sub-rotina ABAP (FORM) a partir de qualquer programa, sujeito à verificação normal de autorização ABAP em tempo de execução. Você pode usar essas chamadas a sub-rotinas para a realização de cálculos, para a obtenção de dados a partir do banco de dados, formatação de dados, e assim por diante.

Métodos de Parâmetros

Apesar de uma sub-rotina poder operar em dados globais, este é um design pobre e nunca deve ser feito. O risco de erros de manutenção é muito maior.

Escolha o método mais conservador de passagem de parâmetros com base em objetivos de design:

  • Chamada por valor tem a vantagem de proporcionar segurança do objeto de dados. Mudanças na variável na sub-rotina não afetará o principal objeto de dados.
  • Chamada por valor e chamada por valor e resultado têm a desvantagem de sobrecarga associada ao fazer cópias de objetos de dados. Evite para grandes objetos de dados.

Sintaxe:

Escreve uma sub-rotina basica:

FORM minhasubrotina.

[instruções]

ENDFORM.

Chama uma sub-rotina basica:

PERFORM minhasubrotina.

Mais informações sobre sub rotinas: http://help.sap.com/abapdocu_702/en/abapform.htm

Exemplo:

Neste exemplo criamos três sub-rotinas, a primeira com uma sintaxe básica, a segunda enviando parâmetros e a terceira usando uma troca de valores dentro da sub-rotina.

Abap

*&---------------------------------------------------------------------*
*& Report  ZSUBROTINA *&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Sub Rotinas
*&---------------------------------------------------------------------*

REPORT  ZSUBROTINA.

* Declara variavel
DATA :  menssagem TYPE c LENGTH 100,
        num1      TYPE i,
        num2      TYPE i,
        resultado TYPE i.

* Alimenta variáveis
 menssagem = 'Enviando Menssagem Com Parametro'.
 num1 = 10.
 num2 = 2.
 resultado = 0.

* Chama Sub Rotina

PERFORM basico.
PERFORM msg USING menssagem.

* Troca valores depois da execução da Sub Rotina
PERFORM multiplica USING num1 num2 CHANGING resultado.
 WRITE : / 'Depois da Sub Rotina',
         / 'Reultado =' UNDER 'Resultado =', resultado.

* Cria Sub Rotina

* Sub Rotina Comum
FORM basico.
   WRITE : / 'Menssagem de uma Sub Rotina Basica'.
ENDFORM.

* Utiliza Parametros
FORM msg  USING messagem TYPE any.
   WRITE : / menssagem.
ENDFORM.

FORM multiplica USING    VALUE(x1) TYPE any
                          VALUE(x2) TYPE any
            CHANGING      VALUE(x)  TYPE any.
   x = x1 * x2.
   WRITE : / 'Multiplica X pelos parametros e troca pelo resultado',
           / ' Dentro da Sub Rotina :',
           / ' X = ', x , ' Resultado = ', resultado.
ENDFORM.
comentários
  1. Luis A M de Oliveira disse:

    Objetivo e instrutivo, muito obrigado

Deixe um comentário