Modularización en ABAP: Macro, Subrutinas y Módulos de Funciones

Cuando modulariza el código fuente, coloca una secuencia de declaraciones ABAP en un módulo. Luego, en lugar de colocar todas las declaraciones en su programa principal, simplemente llama al módulo. Cuando se genera el programa, el código fuente en la unidad de modularización se trata como si realmente estuviera físicamente presente en el programa principal.

Necesidad de modularización

  • Mejorar la estructura del programa.
  • Fácil de leer el código
  • Fácil de mantener el código.
  • Evita la redundancia y promueve la reutilización del código.

Varias técnicas de modularización

  • Uso de macros
  • Uso de archivos de inclusión
  • Subrutinas
  • Módulos de función

Veamos cada uno de ellos en detalle:

SAP- Macro ABAP

Si desea reutilizar el mismo conjunto de declaraciones más de una vez en un programa, puede incluirlas en una macro.

Solo se puede utilizar una macro dentro del programa en el que está definida, y solo se puede llamar en líneas del programa que siguen a su definición.

Las macros pueden ser útiles para cálculos largos o declaraciones WRITE complejas.

Sintaxis

DEFINE <macro_name>

'Macro Statements

END-OF-DEFINITION

Las macros pueden usar parámetros &N donde norte = 1,2,3…

Ejemplo:-

DATA: number1 TYPE I VALUE 1.

DEFINE increment.

ADD 1 to &1.

WRITE &1.

END-OF-DEFINITION.

Increment number1.

WRITE number1.

Salida: 2

Incluir programas

Los programas de inclusión son únicamente para modularizar el código fuente y no tienen interfaz de parámetros.

Incluir programas le permite utilizar el mismo código fuente en diferentes programas. Pueden resultar útiles si tiene declaraciones de datos extensas que desea utilizar en diferentes programas.

Sintaxis

Include <include program Name>

Puntos a tener en cuenta

  • Los programas de inclusión no pueden llamarse a sí mismos.
  • Los programas de inclusión deben contener declaraciones completas.

Ejemplo:

INCLUDE ZILX0004.

WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM.

================================

PROGRAM ZRPM0001.

INCLUDE ZILX0004.

Subrutinas

Las subrutinas son procedimientos que puedes definir en cualquier programa ABAP y también se pueden llamar desde cualquier programa. Las subrutinas normalmente se llaman internamente, es decir, contienen secciones de código o algoritmos que se usan frecuentemente a nivel local. Si desea que una función sea reutilizable en todo el sistema, utilice un módulo de función.

Sintaxis-

FORM <Subroutine> [<pass>].

<Statement block>.

ENDFORM.

= Nombre de la subrutina

= Parámetros que se pasan

Tipos de Subrutinas

  1. Interno
    • Subrutina definida en el mismo programa que se llama.
    • Puede acceder a todos los objetos de datos declarados en el programa principal ABAP/4.
  2. Externo
    • Subrutina definida fuera del programa que se llama.
    • Necesita utilizar la opción o declarar objetos de datos en partes comunes de la memoria.

Llamar a una subrutina

Subrutinas Internas

PERFORM <subroutine> [<pass>]

= Nombre de la subrutina

= Parámetros que se pasan

Los datos declarados en el programa principal están disponibles automáticamente.

Subrutinas Externas

PERFORM <subroutine>(<Program>) [<pass>].

PERFORM <subroutine> (<Program>) [<pass>] [IF FOUND].

PERFORM (<subroutine>) IN PROGRAM  (<Program>) [<pass>] [IF FOUND].

PERFORM <index> OF <subroutine1> <subroutine2> <subroutine3> [<pass>].

Puntos a tener en cuenta

  • Se permiten llamadas anidadas en subrutinas (es decir, PERFORM dentro de un FORM... ENDFORM).
  • También son posibles llamadas recursivas.
  • Para definir datos locales, utilice la declaración DATA después de FORM. Cada vez que ingresa a la subrutina, los datos se recrean (con un valor inicial) y se liberan al final (de la pila).
  • Para definir los datos globales utilizados dentro de una subrutina, utilice la declaración LOCAL después de FORM. Los valores se guardan cuando ingresa a la subrutina y luego se liberan al final (de la pila)

Módulos de función

Los módulos de funciones son rutinas ABAP/4 de propósito general que cualquiera puede utilizar. De hecho, hay una gran cantidad de módulos de funciones estándar disponibles.

Los módulos de funciones están organizados en grupos de funciones: colecciones de funciones lógicamente relacionadas. Un módulo de funciones siempre pertenece a un grupo de funciones.

Sintaxis-

FUNCTION <function module>

<Statements>

ENDFUNCTION.

Información importante asociada al módulo de funciones

  • Administración
  • Importar/Cambiar/Exportar parámetros.
  • Parámetros de tabla/Excepciones.
  • Documentación
  • Código fuente: LU01. es el grupo de funciones
  • Datos globales: LTOP. Datos globales para el grupo de funciones: accesibles a través de los módulos de funciones del grupo de funciones.
  • Programa principal – SAPl . Contiene la lista de todos los archivos incluidos para ese grupo de funciones.

Llamar a un módulo de funciones

Para llamar a un módulo de funciones, utilice la instrucción CALL FUNCTION:

CALL FUNCTION <module>

[EXPORTING  f1 = a 1.... f n = a n]

[IMPORTING  f1 = a 1.... f n = a n]

[CHANGING   f1 = a 1.... f n = a n]

[TABLES     f1 = a 1.... f n = a n]

[EXCEPTIONS e1 = r 1.... e n = r n [ERROR_MESSAGE = r E]    

[OTHERS = ro]].

Grupos de funciones

Los grupos de funciones son contenedores para módulos de funciones. De hecho, existe una gran cantidad de grupos de funciones estándar.
Todos los módulos de funciones de un grupo de funciones pueden acceder a los datos globales del grupo.

Como programas ejecutables (tipo 1) y grupos de módulos (tipo M), los grupos de funciones pueden contener pantallas, pantallas de selección y listas.

Puntos a tener en cuenta

  • Los grupos de funciones no se pueden ejecutar.
  • El nombre de un grupo de funciones puede tener hasta 26 caracteres.
  • Cuando crea un grupo de funciones o un módulo de funciones, el programa principal y los programas incluidos se generan automáticamente.
  • Los grupos de funciones encapsulan datos.

Cómo crear un grupo de funciones

  1. Ir a transacción SE80.
  2. Seleccione Programa en el menú desplegable.
  3. Escriba el nombre del Grupo de Funciones que desea crear. Generalmente los grupos de funciones creados por el usuario comienzan con “Z”. p.ej. – . Presione la tecla Enter.
  4. Tenga en cuenta que la inclusión TOP se crea de forma predeterminada si el usuario marca la opción de crear una inclusión TOP.

Cómo crear un módulo de funciones

  1. Cree un grupo de funciones (diga “ZCAL”).
  2. Cree un módulo de funciones, establezca atributos como (grupo de funciones, aplicación, texto breve y tipo de proceso) y guarde.
  3. El archivo de inclusión “LZCALU01” tendrá el código fuente del primer módulo de función.
  4. El archivo de inclusión “LZCALTOP” tendrá datos globales.
  5. Programa principal “SAPLZCAL” contiene
    • Datos globales Incluir archivo “LZCALTOP”
    • Los módulos de funciones incluyen el archivo “LZCALUXX”
    • Definido por el usuario Incluye archivos “LZCALF..”, “LZCALO..” y “LZCALI..”
  6. Definir parámetros de interfaz y excepciones.
  7. Escribe el código fuente
  8. Activar módulo de funciones
  9. Prueba del módulo de funciones: prueba única y depuración
  10. Documentar y publicar un módulo de funciones

Eso es todo sobre Modularidad en ABAP.