Funciones ABAP – Cómo encapsular código

Funciones ABAP

Los módulos de funciones ABAP sirven para encapsular porciones de código, brindando una forma de intercambiar datos; se agrupan en librerías dentro de un grupo de funciones. Generalmente, estos grupos de funciones contienen módulos de funciones que sirven a un propósito en particular.

SAP contiene una larga lista de módulos de funciones estándar, los cuales nos pueden ayudar en múltiples escenarios.

Grupos de Funciones ABAP

Son programas que contienen los módulos de funciones, esto permite tener declaraciones globales y rutinas utilizadas por todos los módulos de funciones. Ademas, sus módulos de funciones pueden llamarse desde otros programas.

Estructura de un grupo de funciones

La arquitectura de un grupo funciones se compone de la siguiente manera:

  • Programa ABAP control nombrado con la siguiente nomenclatura SAPL<fgrp>, contiene todos los INCLUDES.
  • INCLUDE L<fgrp> TOP: Declaraciones globales.
  • INCLUDE L<fgrp> Uxx:: Módulos de funciones SAP.
  • L<fgrp> F01, L<fgrp> F02… L<fgrp> Fxx: Subrutinas.

LLamado de una función ABAP

Puedes utilizar la función dentro de cualquier programa ABAP, unicamente tienes que utilizar la siguiente sentencia.

CALL FUNCTION <Módulo de Funcion>

Por último es importante declarar los parámetros que se van a utilizar. Es decir, los datos a enviar para ser procesados y la respuesta a recibir. Los tipos de parámetros son los siguientes:

  • EXPORTING: Los datos que vas a enviar a la función. Ej: El número de factura
  • IMPORTING: Los datos que esperas recibir. Ej: La fecha de creación de la factura.
  • CHANGING: Un valor que se va a cambiar Ej: Un importe a calcular después de impuestos.
  • TABLES: Una tabla de dos dimensiones. Ej: Los items o posiciones que corresponden a esa factura.
  • EXCEPCIONES: Una alerta por parte del módulo de función, en caso de falla.

Para cada caso es necesario revisar cuales son los tipos de datos que utiliza la función SAP, si enviamos un parámetro cuyo tipo de dato ABAP no concuerde, recibiremos un excepción, la cual en caso de no ser manejada terminará en un DUMP.