SAP ABAP - Módulos de Função

Os módulos de função constituem a maior parte de um sistema SAP, pois há anos o SAP modulariza o código usando módulos de função, permitindo a reutilização do código, por eles próprios, seus desenvolvedores e também por seus clientes.

Módulos de função são subprogramas que contêm um conjunto de instruções reutilizáveis ​​com parâmetros de importação e exportação. Ao contrário dos programas de inclusão, os módulos de função podem ser executados independentemente. O sistema SAP contém vários módulos de função predefinidos que podem ser chamados de qualquer programa ABAP. O grupo de funções atua como uma espécie de contêiner para vários módulos de função que logicamente pertenceriam um ao outro. Por exemplo, os módulos de função para um sistema de folha de pagamento de RH seriam reunidos em um grupo de funções.

Para ver como criar módulos de função, o construtor de função deve ser explorado. Você pode encontrar o construtor de função com o código de transação SE37. Basta digitar uma parte do nome de um módulo de função com um caractere curinga para demonstrar como os módulos de função podem ser pesquisados. Digite * quantidade * e pressione a tecla F4.

Os resultados da pesquisa serão exibidos em uma nova janela. Os módulos de função são exibidos nas linhas com fundo azul e seus grupos de funções em linhas rosa. Você pode examinar o grupo de funções ISOC usando a tela Object Navigator (Transaction SE80). Você pode ver uma lista de módulos de função e também outros objetos mantidos no grupo de funções. Vamos considerar o módulo de função SPELL_AMOUNT. Este módulo de função converte números numéricos em palavras.

Criação de um novo programa

Step 1 - Vá para a transação SE38 e crie um novo programa chamado Z_SPELLAMOUNT.

Step 2- Insira algum código para que um parâmetro possa ser configurado onde um valor pode ser inserido e passado para o módulo de função. O elemento de texto text-001 aqui diz 'Insira um valor'.

Step 3- Para escrever o código para isso, use CTRL + F6. Depois disso, aparece uma janela onde 'CALL FUNCTION' é a primeira opção em uma lista. Digite 'spell_amount' na caixa de texto e clique no botão continuar.

Step 4- Algum código é gerado automaticamente. Mas precisamos aprimorar a instrução IF para incluir um código para ESCREVER uma mensagem na tela para dizer "O módulo de função retornou um valor de: sy-subrc" e adicionar a instrução ELSE para escrever o resultado correto quando a função módulo foi bem-sucedido. Aqui, uma nova variável deve ser configurada para conter o valor retornado do módulo de função. Vamos chamar isso de 'resultado'.

A seguir está o código -

REPORT Z_SPELLAMOUNT. 
data result like SPELL. 

selection-screen begin of line. 
selection-screen comment 1(15) text-001. 

parameter num_1 Type I. 
selection-screen end of line. 
CALL FUNCTION 'SPELL_AMOUNT' 
EXPORTING 
AMOUNT = num_1 
IMPORTING 
IN_WORDS = result. 

IF SY-SUBRC <> 0. 
   Write: 'Value returned is:', SY-SUBRC. 
else. 
   Write: 'Amount in words is:', result-word. 
ENDIF.

Step 5- A variável que o módulo de função retorna é chamada IN_WORDS. Configure a variável correspondente no programa chamado 'resultado'. Defina IN_WORDS usando a instrução LIKE para se referir a uma estrutura chamada SPELL.

Step 6- Salvar, ativar e executar o programa. Insira um valor conforme mostrado na captura de tela a seguir e pressione F8.

O código acima produz a seguinte saída -

Spelling the Amount 
Amount in words is: 
FIVE THOUSAND SIX HUNDRED EIGHTY