SAP ABAP - Módulos de funciones

Los módulos de funciones constituyen una parte importante de un sistema SAP, porque durante años SAP ha modularizado el código utilizando módulos de funciones, lo que permite la reutilización del código, por ellos mismos, sus desarrolladores y también por sus clientes.

Los módulos de función son subprogramas que contienen un conjunto de declaraciones reutilizables con parámetros de importación y exportación. A diferencia de los programas de inclusión, los módulos de funciones se pueden ejecutar de forma independiente. El sistema SAP contiene varios módulos de funciones predefinidos que se pueden llamar desde cualquier programa ABAP. El grupo de funciones actúa como una especie de contenedor para varios módulos de funciones que lógicamente pertenecerían juntos. Por ejemplo, los módulos de funciones para un sistema de nómina de recursos humanos se agruparían en un grupo de funciones.

Para ver cómo crear módulos de funciones, se debe explorar el constructor de funciones. Puede encontrar el constructor de funciones con el código de transacción SE37. Simplemente escriba una parte del nombre de un módulo de función con un carácter comodín para demostrar la forma en que se pueden buscar los módulos de función. Escriba * monto * y luego presione la tecla F4.

Los resultados de la búsqueda se mostrarán en una nueva ventana. Los módulos de función se muestran en las líneas con fondo azul y sus grupos de funciones en líneas rosadas. Puede ver más en el grupo de funciones ISOC utilizando la pantalla Navegador de objetos (Transacción SE80). Puede ver una lista de módulos de función y también otros objetos contenidos en el grupo de funciones. Consideremos el módulo de función SPELL_AMOUNT. Este módulo de funciones convierte cifras numéricas en palabras.

Crear un programa nuevo

Step 1 - Vaya a la transacción SE38 y cree un nuevo programa llamado Z_SPELLAMOUNT.

Step 2- Ingrese algún código para que se pueda configurar un parámetro donde se pueda ingresar un valor y pasarlo al módulo de función. El elemento de texto text-001 aquí dice 'Ingrese un valor'.

Step 3- Para escribir el código para esto, use CTRL + F6. Después de esto, aparece una ventana donde 'CALL FUNCTION' es la primera opción en una lista. Introduzca 'cantidad_de_ hechizo' en el cuadro de texto y haga clic en el botón Continuar.

Step 4- Algún código se genera automáticamente. Pero necesitamos mejorar la declaración IF para incluir un código para ESCRIBIR un mensaje en la pantalla que diga "El módulo de función devolvió un valor de: sy-subrc" y agregar la declaración ELSE para escribir el resultado correcto cuando la función El módulo es exitoso. Aquí, se debe configurar una nueva variable para contener el valor devuelto por el módulo de función. Llamemos a esto como 'resultado'.

A continuación está el 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- La variable que devuelve el módulo de función se llama IN_WORDS. Configure la variable correspondiente en el programa llamado 'resultado'. Defina IN_WORDS utilizando la instrucción LIKE para referirse a una estructura llamada SPELL.

Step 6- Guardar, activar y ejecutar el programa. Ingrese un valor como se muestra en la siguiente captura de pantalla y presione F8.

El código anterior produce la siguiente salida:

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