✒️ABAP Los módulos de funciones
ABAP Los módulos de funciones
¿Qué son los Módulos de Función?
Son funciones que han sido creadas y almacenadas en SAP y que pueden ser utilizadas por cualquier programa ABAP.
Para acceder a estas funciones, utilizaremos la transacción SE37 como vemos a continuación:
Transacción SE37 (Administración Modulo Funciones)
Utilizaremos la Biblioteca de funciones correspondiente a la transacción estándar SE37
para la creación, modificación y visualización de los módulos de funciones existentes en el sistema.
Tienen una interfaz definida, ya que su diseño facilita el paso de parámetros tanto de entrada como de salida
CALL FUNCTION '<NOMBRE_FUNCION>'
EXPORTING <parámetros_entrada>
IMPORTING <parámetros_salida>
TABLES <tablas>
EXCEPTIONS <excepciones>
Veamos un ejemplo de como utilizar un módulo de función ya existente.
Vamos a crear un nuevo programa ABAP, donde vamos a ejecutar la función POPUP_TO_CONFIRM
que se utiliza para pedir confirmación al usuario antes de tomar una acción determinada.
En el menú del editor ABAP existe el botón Modelo (Pattern en Inglés)
que nos permite crear dentro de un programa el esqueleto de cualquier función creada a través de la transacción SE37,
simplemente ingresando el nombre de la función que necesitemos.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Aplicación de Bancos '
TEXT_QUESTION = 'Desea borrar el registro'
TEXT_BUTTON_1 = 'Si'
TEXT_BUTTON_2 = 'No'
DISPLAY_CANCEL_BUTTON = ''
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
La ejecución de este programa dará como resultado una venta emergente solicitando confirmacion con dos botones.
¿Cómo crear un Módulo de función?
Para crear un módulo de función accedemos a la transacción SE37.
Escribiremos el nombre de nuestra función que será Z_TEST_CLIENTES y presionaremos el botón Crear
Inmediatamente después veremos la siguiente ventana de diálogo en donde debemos escribir el nombre del grupo de funciones
al que pertenece la función y una descripción breve de la función que queremos crear.
Al presionar el botón Grabar el sistema nos informa que previamente a la creación del módulo de funciones :
debemos crear el Grupo de funciones asociado
GRUPO DE FUNCIONES
Es un repositorio que agrupa funciones y que se utiliza principalmente para compartir subrutinas y declaraciones de variables
entre las distintas funciones pertenecientes al grupo.
Para crear un grupo de funciones, debemos:
seleccionar en el menú de la transacción SE37
la ruta Pasar a / Gestión gr.funciones / Crear grupo (Goto/Functions Groups/Create Group)
Aquí ingresaremos el nombre de nuestro grupo de función y presionamos el botón Grabar
Luego veremos en la parte inferior de la pantalla el siguiente mensaje que nos indica que ha sido creado correctamente
Si quisiéramos definir variables que se puedan utilizar en todas las funciones pertenecientes a nuestro grupo de funciones,
debemos:
dirigirnos en el menú de la transacción SE37
Pasar a / Datos Globales (Goto/GlobalData)
y veríamos la pantalla donde definiremos las variables globales.
FUNCTION-POOL Z_CLIENTES_ESTQS36A_GRP. "MESSAGE-ID ..
Si quisiéramos declarar subrutinas que puedan ser utilizadas por todas las funciones del grupo, debemos:
en el menú de la transacción SE37
ir a Pasar a / Programa de Control (Goto/MainProgram).
y veríamos la pantalla donde estan definidos include de los programas de control
*******************************************************************
* System-defined Include-files. *
*******************************************************************
INCLUDE LZ_CLIENTES_ESTQS36A_GRPTOP. " Global Data
INCLUDE LZ_CLIENTES_ESTQS36A_GRPUXX. " Function Modules
*******************************************************************
* User-defined Include-files (if necessary). *
*******************************************************************
* INCLUDE LZ_CLIENTES_ESTQS36A_GRPF... " Subprograms
* INCLUDE LZ_CLIENTES_ESTQS36A_GRPO... " PBO-Modules
* INCLUDE LZ_CLIENTES_ESTQS36A_GRPI... " PAI-Modules
Allí descomentamos el primero de los include que está especificado para Subprogramas
le cambiamos el nombre para que comience con Z,
lo creamos haciendo doble clic sobre él y luego colocamos las subrutinas en él.
Finalmente, volvemos a la transacción SE37 con nuestro grupo de funciones creado,
presionamos Crear, ingresamos el grupo de función y la descripción de la función, grabamos
y veremos la función Z_TEST_CLIENTES creada tal como muestra el siguiente gráfico:
Veamos la utilidad de cada una de las solapas que se visualizan:
Atributos (Attributes):
aquí especificamos la descripción de la función y el tipo de función que puede ser Normal, RFC o Update module.
Import:
aquí especificamos los parámetros de entrada de la función.
Export:
aquí especificamos los parámetros de salida de la función.
Modificaciones (Changing):
aquí especificamos los parámetros de salida que cambiarán de valor con la ejecución de la función.
Tablas (Tables):
aquí especificamos las tablas que se utilizan en la función.
Excepciones (Exceptions):
aquí especificamos las excepciones de la función. Una excepción es un error que se produce al ejecutar la función
y que ha sido catalogado cuando se creo el módulo de función de modo de poder identificar rápidamente el motivo del error.
Código Fuente (Source Code):
aquí pondremos el código ABAP de la función.
Ahora, volviendo a nuestra función Z_TEST_CLIENTES, vamos a agregarle como parámetro de entrada el DNI.
Y como parámetro de salida, en la solapa Modificaciones definimos la estructura de usuarios de
la tabla que creamos en la unidad 2 ZTABLA_USUARIOS.
Si quisiéramos pasar como parámetro una tabla interna en lugar de una estructura,
entonces debemos crear un Tipo Tabla a través de la transacción SE11,
por ejemplo ZTT_USUARIOS, el cual va a tener la estructura de la tabla ZTABLA_USUARIOS.
Luego pondremos código en la solapa Código Fuente para recuperar de la tabla ZTABLA_USUARIOS,
los datos del usuario al que pertenezca el DNI de entrada.
CLEAR st_usuarios.
SELECT SINGLE *
FROM ZOQS36A_USUARIOS
INTO st_usuarios
WHERE dni EQ dni.
Y podremos probar nuestra función ejecutándola.
Y veremos los resultados de la ejecución de la misma:
 
 
 
Sobre el autor
Publicación académica de Alex Francisco Lemos Collazos, en su ámbito de estudios para la Carrera Consultor ABAP.
Alex Francisco Lemos Collazos
Profesión: Ingeniero en Sistemas - Colombia - Legajo: QS36A
✒️Autor de: 174 Publicaciones Académicas
🎓Cursando Actualmente: Master S/4HANA Material Management
🎓Egresado de los módulos:
- Máster Material Management en SAP S/4HANA LOGISTIC
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP SD Nivel Inicial