Modularização em ABAP: Macro, Sub-rotinas e Módulos de Função

Ao modularizar o código-fonte, você coloca uma sequência de instruções ABAP em um módulo. Então, em vez de colocar todas as instruções em seu programa principal, basta chamar o módulo. Quando o programa é gerado, o código-fonte na unidade de modularização é tratado como se estivesse realmente presente fisicamente no programa principal.

Necessidade de Modularização

  • Melhorar a estrutura do programa.
  • Fácil de ler o código
  • Fácil de manter o código
  • Evite redundância e promova a reutilização de código

Várias técnicas de modularização

  • Uso de macros
  • Uso de arquivos de inclusão
  • Sub-rotinas
  • Módulos de Função

Vamos examinar cada um deles em detalhes:

SAP- Macro ABAP

Se quiser reutilizar o mesmo conjunto de instruções mais de uma vez em um programa, você poderá incluí-las em uma macro.

Você só pode utilizar uma macro dentro do programa em que ela está definida, e ela só pode ser chamada em linhas do programa seguintes à sua definição.

As macros podem ser úteis para cálculos longos ou instruções WRITE complexas.

Sintaxe

DEFINE <macro_name>

'Macro Statements

END-OF-DEFINITION

Macros podem usar parâmetros &N onde N = 1,2,3…

Exemplo:-

DATA: number1 TYPE I VALUE 1.

DEFINE increment.

ADD 1 to &1.

WRITE &1.

END-OF-DEFINITION.

Increment number1.

WRITE number1.

Saída: 2

Incluir programas

Os programas de inclusão destinam-se exclusivamente à modularização do código-fonte e não possuem interface de parâmetros.

Incluir programas permite que você use o mesmo código-fonte em programas diferentes. Eles podem ser úteis se você tiver declarações de dados extensas que deseja usar em programas diferentes.

Sintaxe

Include <include program Name>

Pontos a serem observados

  • Os programas incluídos não podem se autodenominar.
  • Os programas incluídos devem conter declarações completas.

Exemplo:

INCLUDE ZILX0004.

WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM.

================================

PROGRAM ZRPM0001.

INCLUDE ZILX0004.

Sub-rotinas

Sub-rotinas são procedimentos que você pode definir em qualquer Programa ABAP e também ligue de qualquer programa. As sub-rotinas normalmente são chamadas internamente, ou seja, contêm seções de código ou algoritmos que são usados ​​com frequência localmente. Se você deseja que uma função seja reutilizável em todo o sistema, use um módulo de função.

Sintaxe-

FORM <Subroutine> [<pass>].

<Statement block>.

ENDFORM.

= Nome da sub-rotina

= Parâmetros sendo passados

Tipos de Sub-rotinas

  1. Interno
    • Sub-rotina definida no mesmo programa que está sendo chamado.
    • Pode acessar todos os objetos de dados declarados no programa ABAP/4 principal.
  2. Externo
    • Sub-rotina definida fora do programa que está sendo chamado.
    • Precisa usar o opção ou declarar objetos de dados em partes comuns da memória.

Chamando uma sub-rotina

Sub-rotinas internas

PERFORM <subroutine> [<pass>]

= Nome da sub-rotina

= Parâmetros sendo passados

Os dados declarados no programa principal ficam automaticamente disponíveis.

Sub-rotinas externas

PERFORM <subroutine>(<Program>) [<pass>].

PERFORM <subroutine> (<Program>) [<pass>] [IF FOUND].

PERFORM (<subroutine>) IN PROGRAM  (<Program>) [<pass>] [IF FOUND].

PERFORM <index> OF <subroutine1> <subroutine2> <subroutine3> [<pass>].

Pontos a serem observados

  • Chamadas aninhadas são permitidas em sub-rotinas (ou seja, PERFORM dentro de um FORM… ENDFORM ).
  • Chamadas recursivas também são possíveis.
  • Para definir dados locais, use a instrução DATA após FORM . Cada vez que você entra na sub-rotina, os dados são recriados (com um valor inicial) e liberados no final (da pilha).
  • Para definir os dados globais usados ​​em uma sub-rotina, use a instrução LOCAL após FORM . Os valores são salvos quando você entra na sub-rotina e depois liberados no final (da pilha)

Módulos de Função

Módulos de função são rotinas ABAP/4 de uso geral que qualquer pessoa pode usar. Na verdade, há um grande número de módulos de função padrão disponíveis.

Os Módulos de Função são organizados em Grupos de Função: Coleções de funções relacionadas logicamente. Um módulo de função sempre pertence a um grupo de funções.

Sintaxe-

FUNCTION <function module>

<Statements>

ENDFUNCTION.

Informações importantes associadas ao módulo de função

  • Áreas de Suporte​
  • Parâmetros de importação/alteração/exportação.
  • Parâmetros/Exceções da Tabela.
  • Documentação
  • Código fonte – L U01. é o grupo de funções
  • Dados Globais – L TOP .Dados globais para o grupo de funções - Acessíveis através de módulos de função no grupo de funções.
  • Programa Principal – SAPeu . Contém a lista de todos os arquivos incluídos para esse grupo de funções

Chame um módulo de função

Para chamar um módulo de função, use a instrução CALL FUNCTION:

CALL FUNCTION <module>

[EXPORTING  f1 = a 1.... f n = a n]

[IMPORTING  f1 = a 1.... f n = a n]

[CHANGING   f1 = a 1.... f n = a n]

[TABLES     f1 = a 1.... f n = a n]

[EXCEPTIONS e1 = r 1.... e n = r n [ERROR_MESSAGE = r E]    

[OTHERS = ro]].

Grupos de funções

Grupos de funções são contêineres para módulos de função. Na verdade, há um grande número de grupos de funções padrão.
Todos os módulos de função em um grupo de funções podem acessar os dados globais do grupo.

Como programas executáveis ​​(tipo 1) e conjuntos de módulos (tipo M), os grupos de funções podem conter telas, telas de seleção e listas.

Pontos a serem observados

  • Grupos de funções não podem ser executados.
  • O nome de um grupo de funções pode ter até 26 caracteres.
  • Ao criar um grupo de funções ou módulo de função, o programa principal e os programas incluídos são gerados automaticamente.
  • Os grupos de funções encapsulam dados.

Como criar um grupo de funções

  1. Vá para a transação SE80.
  2. Selecione Programa no menu suspenso.
  3. Escreva o nome do grupo de funções que você deseja criar. Geralmente os grupos de funções criados pelo usuário começam com “Z”. por exemplo - . Pressione a tecla Enter.
  4. Observe que o TOP Include é criado por padrão se o usuário marcar a opção de criar um TOP include.

Como criar um Módulo de Função

  1. Crie um grupo de funções (diga “ZCAL”).
  2. Crie um módulo de função, defina os atributos como (Grupo de funções, Aplicação, Texto curto e Tipo de processo) e Salvar.
  3. O arquivo incluído “LZCALU01” terá o código fonte do primeiro módulo de função.
  4. Incluir arquivo “LZCALTOP” terá dados globais.
  5. Programa principal “SAPLZCAL” contém
    • Dados globais incluem arquivo “LZCALTOP”
    • Os módulos de função incluem o arquivo “LZCALUXX”
    • Arquivos de inclusão definidos pelo usuário “LZCALF..”, “LZCALO..” e “LZCALI..”
  6. Definir parâmetros de interface e exceções
  7. Escreva o código fonte
  8. Ativar módulo de função
  9. Testando o Módulo de Função – Teste Único e Depuração
  10. Documentando e liberando um módulo de função

Isso é tudo para Modularidade no ABAP.