Function Modules
Módulos de função são rotinas ABAP que são armazenados em uma biblioteca de função central. Elas não são específicas do aplicativo, mas disponível em todo o sistema. O ABAP Workbench vem com um grande número de módulos de função padrão.
Como rotinas de formulários, módulos de função podem encapsular o código do programa e fornecer uma interface para troca de dados. Os Módulos de função devem pertencer a um grupo chamado de um grupo de funções.
Eles possuem uma interface fixa para troca de dados. Isso torna mais fácil para você passar parâmetros de entrada e saída para o módulo de função. Por exemplo, você pode atribuir valores padrão para os parâmetros de entrada. A interface também suporta manipulação de exceção. Isto permite-lhe detectar erros e passá-los de volta para o programa de chamada para o manuseio.
Os módulos usam a sua própria área de memória. O programa de chamada e do módulo de função não pode trocar dados usando uma área de memória compartilhada – devem usar a interface do módulo de função. Isso evita efeitos colaterais desagradáveis, como a substituição de dados acidentalmente. Você chama um módulo de função pelo seu nome (que deve ser único) em um comunicado de função de chamada usando a palavra chave CALL FUNCTION.
Function Builder
O Function Builder permite desenvolver, testar e documentar novos módulos de função. Você também pode usá-lo para exibir informações sobre os módulos de função existentes.
Criando uma Função
- Entre na transação SE37.
- No menu Goto, Function Groups, Create Group, crie um novo Grupo de função chamado ZDEVA.
- Digite a transação SE80, no ABAP WorkBench escolha grupo de função e o seu grupo, clique com o botão direito em cima do nome do seu grupo e escolha Activate.
- Volte para a transação SE37.
- Em Function Module, escreva ZF_FUNCAO_DA e clique em Create.
- Na aba Import, nos campos respectivos digite: Parameter name = TEXTO1, Typing = TYPE, Associated Type = String.
- No segundo registro digite: Parameter name = TEXTO2, Typing = TYPE, Associated Type = String.
- Na Aba Export, nos campos respectivos digite: Parameter name = RESULTADO, Typing = TYPE, Associated Type = String.
- Na Aba Exceptions nos campos respectivos digite: Exception = DA_ERRO, ShortText = Erro na função Dev Aberto.
- Na aba Source Code, você pode ver o código gerado automaticamente, preencha de acordo com a imagem abaixo.
- Clique em Activate para ativar a função.
Call Function
Para chamar um módulo de função, use a instrução de função de chamada CALL FUNCTION.
Exemplo:
Neste exemplo criamos um modulo de função no Function Builder e usamos um programa para chamar esta função.
Abap
Função
FUNCTION ZF_FUNCAO_DA. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" REFERENCE(TEXTO1) TYPE STRING *" REFERENCE(TEXTO2) TYPE STRING *" EXPORTING *" REFERENCE(RESULTADO) TYPE STRING *" EXCEPTIONS *" DA_ERRO *"---------------------------------------------------------------------- IF TEXTO1 NE 'ERRO'. CONCATENATE TEXTO1 TEXTO2 INTO RESULTADO SEPARATED BY ' '. ELSE. RAISE DA_ERRO. ENDIF. ENDFUNCTION.
Programa
*&---------------------------------------------------------------------* *& Report ZFUNCAO *& *&---------------------------------------------------------------------* *& Desenvolvimento Aberto *& Modulo de Função *&---------------------------------------------------------------------* REPORT ZFUNCAO. DATA R_FUNCAO TYPE STRING. * Chama função CALL FUNCTION 'ZF_FUNCAO_DA' exporting TEXTO1 = 'Desenvolvimento' TEXTO2 = 'Aberto' importing RESULTADO = R_FUNCAO. WRITE : / 'Retorno da função:', R_FUNCAO.