✒️ABAP Las subrutinas
ABAP Las subrutinas
SUBRUTINAS:
Secciones de código que pueden ser utilizadas má de una vez. El objetivo es que los programas sean mas legibles.
Modularizar: Se denomina así a la acción de pasar código de un programa a subrutinas, para mejorar la lectura y mantenimiento de los mismos.
Declaración de Subrutinas:
Sintaxis: PERFORM <nombre_rutina>.
El sistema nos ofrecerá la posibilidad de crear la subrutina en una INCLUDE (Los includes se usan para agrupar subrutinas que van a ser reutilizadas en muchos programas) o crearlas en el propio programa de control.
una vez creadas su sisntaxis es:
FORM <nombre_rutina>.
........
<instrucciones>
..........
ENDFORM.
Notas: Es importante que el nombre de la Subrutina indique lo mas posible la funcionalidad de la subrutina con un máximo de 30 caracteres.
TIPOS DE SUBRUTINAS:
internas (el código de la subrutina está dentro del programa que la llama).
externas (la subrutina está en un programa distinto al llamante).
Subrutinas internas:
Sintaxis: PERFORM <nombre_rutina> <parametros actuales>.
FORM <nombre_rutina> <parametros formales>.
........
<instrucciones>
..........
ENDFORM.
Los parámetros pueden ser de 3 tipos:
Entrada: Se utilizan para pasar datos del programa principal a la Subrutina.
Salida: Se utilizan para pasar datos de la Subrutina principal al programa
Entrada/salida: Se utilizan en ambos sentidos.
PASO DE PARAMETROS A SUBRUTINAS
Para pasar los parametros se utilizan tres opciones: USING, CHANGING y TABLES.
Sintaxis:
PERFORM nombre [(prog)] [ TABLES tabla de salida ]
[ USING parámetro entrada ]
[ CHANGING parámetro de salida].
En el bloque FORM-ENDFORM se especifican el tipo de los parametros formales. De esta forma forma nos aseguramos que solo se pasen los parámetros del tipo que corresponde a la subrutina. Siempre se debe respetar el orden de los parámetros comofueron declarados.
Existen tres formas para el paso de parámetros:
Paso por valor: El parámetro formal y el actual ocupan posiciones de memoria distintas, es una copia, con lo que su valor no puede ser modificado por la subrutina. Sólo se puede usar en USING con la opción VALUE. No es necesario que tengan el mismo nombre, lo importante es que coincidadn en la posición y el tipo.
Paso por referencia: El parámetro formal y el actual ocupan la misma posición de memoria, con lo que su valor puede ser modificado por la subrutina. Se pasa la dirección del parámetro, no una copia. Se puede usar en TABLES, USING y CHANGING. No es necesario que tengan el mismo nombre, lo importante es que coincidadn en la posición y el tipo.
Paso por valor y resultado: El parámetro formal y el actual ocupan posiciones de memoria distintas (se pasa una copia), pero su valor puede ser modificado por la subrutina.
Subrutinas Externas:
la subrutina está en un programa distinto al llamante:
PERFORM name (programa) [ paráms ] [ IF FOUND ].
En este caso se debe indicar el programa en el cual se encuentra la subrutina llamada. Con IF FOUND, si la subrutina no existe, la sentencia PERFORM es ignorada y no se genera error.
INCLUSIÓN DE CÓDIGO:
- Existe una sentencia que permite incluir o insertar (en tiempo de generación / compilación, no en tiempo de ejecución) el código fuente del programa especificado, dentro del llamante. Esta sentencia sólo puede estar codificada en una línea. Dicho programa debe ser de tipo I (es un INCLUDE). Estos no llevan sentencia PROGRAM ni REPORT, y no son ejecutables directamente, sino que deben ser llamados siempre desde otro programa, con la sentencia INCLUDE. Por lo demás, es código Abap/4 normal. Los includes se usan para agrupar subrutinas que van a ser reutilizadas en muchos programas (por ejemplo, programas ‘batch-input’).
Sintaxis:INCLUDE nombre_include.
Sobre el autor
Publicación académica de Francisco Javier Gomez Jimenez, en su ámbito de estudios para la Carrera Consultor ABAP.
Francisco Javier Gomez Jimenez
Profesión: Consultor Junior - España - Legajo: KW17D
✒️Autor de: 200 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Avanzado
🎓Egresado de los módulos:
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP MM Nivel Avanzado
- Carrera Consultor en SAP MM Nivel Inicial