Curso SAP ERP 12# – Módulo de funciones

Introducción

Los módulos de funciones son objetos que realizan operaciones que pueden ser utilizadas en varios programas. Al crear un módulo de función con el código que realiza una operación, se evita tener que repetirlo en todos los programas que realicen esa operación añadiendo en ellos una llamada al módulo de función. Además de evitar que se repita el mismo código en diferentes programas, se facilita el mantenimiento del proceso, ya que las modificaciones que se realicen en un módulo de función afectan a todos los programas que lo utilicen.

SAP dispone de un gran número de módulos de función predefinidos que se pueden utilizar en nuestros programas, a las que se añadirán los que se desarrollen a medida.

Los módulos de función pertenecen a grupos de funciones, que los agrupan según su funcionalidad. Los módulos de funciones de un mismo grupo de funciones comparten las definiciones de datos globales.

Creación de un grupo de funciones.

Para crear un grupo de funciones accedemos en la transacción SE37 – Biblioteca de funciones y navegamos en el menú en Pasar a -> Gestión gr.funciones -> Crear grupo.

También se pueden crear grupos de funciones utilizando la transacción SE80 – Object Navigator.

En el siguiente paso se deben definir los atributos del grupo de funciones:

  • Grupo de funciones: Nombre del grupo de
  • Texto breve: Descripción del grupo de
  • Responsable: Usuario responsable del grupo de funciones.

Datos de gestión

Los módulos de función se mantienen utilizando la biblioteca de funciones. Ruta de acceso: en el menú principal de SAP en Herramientas->Workbench ABAP->Desarrollo->Biblioteca funciones’ (SE37).

Desde esta pantalla se pueden crear, modificar o visualizar todas las partes de un módulo de función.

Para crear un módulo de función se deberá especificar el nombre en la pantalla inicial y pulsar el botón de crear. Aparecerá una pantalla en la que se debe indicar el grupo de funciones a la que pertenece el módulo de función junto con su la descripción de la función.

Una vez especificado el grupo de función se deberán informar los datos de gestión del módulo de función:

  • Texto breve
  • Forma de ejecución
    • Módulo de función normal
    • Módulo de acceso remoto: Estas funciones pueden ser ejecutadas desde otros sistemas externos a SAP.
    • Módulo actualización: Funciones de actualización asíncrona. Se puede especificar el modo de tratamiento de la tarea de actualización (Inicio inmediato, inicio inmediato sin actualización posterior, inicio retardado o lanzamiento colectivo).

Parámetros de la función.

Parámetros Import.

Deberemos indicar los siguientes atributos en lista de parámetros de entrada de la función:

  • Nombre parám.: Nombre de los parámetros de entrada.
  • Tipificación: Tipo de dato del parámetro.
  • Tipo Ref. Tipo de referencia (Solo se indicará una de estas dos últimas).
  • Valor Propuesto: Valor por defecto cuando se declara como opcional.
  • Trasp. Valores: Indicación de que el parámetro se recibe por valor y no por referencia.

    Parámetros de salida (Export).

    Son los parámetros de salida de función.

    Parámetros (Changing):

    Parámetros de entrada y salida del módulo de función. Estos parámetros devuelven el valor de salida al finalizar la ejecución del módulo de función sin errores, manteniendo el valor de entrada en caso contrario.

    Tablas

    Además de los parámetros de entrada y salida definidos anteriormente, también se pueden traspasar tablas por referencia en la llamada al módulo de función.

    • Parámetro tabla: Nombre del parámetro de tabla.
    • Tipificación: Tipo de datos de la tabla
    • Tipo : Estructura de referencia del diccionario de datos para especificar la estructura del parámetro de tabla.
    • Opcional: Si se activa este flag no será obligatorio informar el parámetro de tabla en la llamada al módulo de función.

    Excepciones

    Las excepciones son una serie de errores predefinidos en los módulos de función que pueden devolver como valor de retorno de su ejecución en la variable del sistema SY-SUBRC.

    Excepción: Se indicará un nombre descriptivo para cada posible error predefinido que va a poder retornar el módulo de función. La posición en la tabla de excepciones se corresponderá con el valor que devolverá en la variable SY-SUBRC (la primera excepción definida devolverá 1, la siguiente 2, etc.).

    Por defecto siempre existe la excepción ‘OTHERS’, aunque aparezca definida, que se utiliza para devolver un error genérico y devuelve en la variable SY-SUBRC el valor siguiente al de la última excepción creada.

    Para devolver una excepción desde el código del módulo de función se utiliza la sentencia RAISE <excepción>, finalizando así la ejecución de la función y devolviendo el código asociado a la excepción en la variable SY- SUBRC. En caso de devolver una excepción no se actualiza el valor de salida de los parámetros CHANGING.

    Con la cláusula RAISING de la instrucción MESSAGE se puede dar la

    posibilidad de que el módulo de función trate el error mostrando el mensaje de error especificado o que devuelva la excepción correspondiente

    sin mostrar el mensaje de error, en función de si se especifica la cláusula ‘EXCEPTIONS’ en su llamada. Si no se especifica la cláusula, el módulo de función mostrará los mensajes de error que tengan la cláusula ‘RAISING’, finalizando así la ejecución del programa que realiza la llamada, en caso contrario se devolverán las excepciones asociadas a los mensajes traspasando el control de los errores al programa que realiza la llamada al módulo de función.

    Datos globales

    Las definiciones globales de datos son compartidas por todos los módulos de función de un grupo de funciones. Las definiciones de objetos globales se mantienen a través de la opción de menú ‘Pasar -> Datos globales’.

    Nota: Las definiciones globales y el texto fuente del módulo de función se codifican realmente en el editor ABAP utilizando los mismos comandos que en la codificación de listados.

    Los parámetros definidos en el módulo de función son locales, por lo tanto solo son visibles en el cuerpo principal de la función. Para que puedan ser utilizados en las subrutinas, sin necesidad de pasarlos como parámetros, se deberán globalizar utilizando la opción de menú ‘Tratar->Interfase->Globalizar parám.’ en la pantalla de mantenimiento de parámetros de entrada/salida. Para eliminar la globalización se utiliza la opción de menú ‘Tratar->Interfas->Localizar parám.’.

    Código fuente

    Al crear una subrutina, haciendo doble clic sobre el nombre en la llamada, el sistema propondrá la creación de un INCLUDE que contendrá todas las subrutinas del grupo de funciones. Al finalizar la introducción del texto fuente se deberá grabar, verificar y activar el módulo de función.

    Ejecución

    Para ejecutar un módulo de función desde la biblioteca de funciones se utiliza la opción de menú ‘UtilidadesàEntorno test’ (F8) de la biblioteca de funciones o pulsando el botón en la pantalla inicial.

    Para ejecutar un módulo de función desde un programa se utiliza la sentencia CALL FUNCTION <función>. Para que el sistema nos proponga la sentencia de la llamada a una función con todos sus parámetros desde el editor ABAP utilizaremos el botón, marcando la opción ‘CALL FUNCTION’ y especificando el nombre de la función.

    Nota: Los campos que se utilizan en la llamada a un módulo de función deben ser del mismo tipo que los parámetros a los que hacen referencia (definidos en el módulo de función), si no se pueden producir errores en la ejecución del programa.