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
- Interno
- Sub-rotina definida no mesmo programa que está sendo chamado.
- Pode acessar todos os objetos de dados declarados no programa ABAP/4 principal.
- 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
- Vá para a transação SE80.
- Selecione Programa no menu suspenso.
- 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.
- 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
- Crie um grupo de funções (diga “ZCAL”).
- 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.
- O arquivo incluído “LZCALU01” terá o código fonte do primeiro módulo de função.
- Incluir arquivo “LZCALTOP” terá dados globais.
- 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..”
- Definir parâmetros de interface e exceções
- Escreva o código fonte
- Ativar módulo de função
- Testando o Módulo de Função – Teste Único e Depuração
- Documentando e liberando um módulo de função
Isso é tudo para Modularidade no ABAP.