✒️ABAP / Las subrutinas Por Javier Angel Barcelo
ABAP Las subrutinas

Subrutinas: son secciones de códogo que peuden ser utilizadas más de una vez dentro de un programa y también pueden der utilizadas por otros programas que las referiencien.
La idea de pasar el código de los programas a subrutinas, es para que los programas sean mas facil de leer y de mantender.
Modularizar se llama asi a la acción de pasr el código de un programa a subrutinas, lo ideal es que una subrutina no tenga más de 50 lineas de codigo, ayuda a encontrar más facilmente los errores en los programas. Esto se debe a que al debaguear un programa solo nos preocupamos que el resultado de uana subrutuna sea el esperadosin entrar en detalle de cómo se llega a ese resultado. En ABAP una subrutina se declara con la palabla reservada PERFORM seguidsa del nombre de la subrutina.
Si hacemos doble clic en el nombre de la subrutina, el sistema nos propondrá crear la subrutina, Contestamos SI y el sistema nos preguntará donde deseamos crear la definición de la subrutina, las opciones son: crear un nuevo include o crearlas en el mismo programa de control. en este caso la creamos en el programa de control. Luego el sistema generara el siguiente bloque de código en nuestro programa para que lo completemos con el código que corresponda
El nombre que se le asigna a una subrutina debe ser lo más representatovo posible del resultado que produse la subrutina. La longitud del nombre de una subrutina no puede exeder los 30 caracteres.
LOS TIPOS DE SUBRITINAS
existen dos tipos de subrutinas:
- INTERNAS: cuando la subrutina se encuentra dentro del mismo programa que la llamo o en un incluce de subrutinas, el cúal se encuentra declarado en el programa de control.
- EXTERNAS: cuando la subrutina se encuntra en un programa distinto al que llama. Para llamar a una subritina externa desde otro programa vamos a escribir la sentencia PERFORM.
EL PASO PARÁMETROS A SUBRUTINAS: podemos pasar datos entre programa principal y una subrutina a través de parámetros.
Los parámetros de una subrutina puede ser de tres tipos:
- DE ENTRADA: cuando se utilizan para pasar datos del programa principal a la subrutina
- DE SALA: cuando se utiliza para pasar datos de la subrutina al programa p´rincipal.
- DE ENTRADA Y SALIDA: cuando se utiliza para pasar datos de la subrutina al programa principal y también vicerversa.
Para pasar los parametros en las subrutinas vamos a utilizar tres palabras reservadas que son las siguientes:
- USING: para declarar parametros de entrada que serán utilizados en la subrutinas.
- CHANGING: para declarar parámetros de entrada/salida que serán utilizados en la subrutina
- TABLES: para declarar parámetros de entrada/salida que son tablas, las cuales sera utilizadas en la subrutina.
A los parámetros definidos dentro del programa principal, en la declaración de la subrutina, a la derecha de la palabra PEFORM se los llama parámetros actuales.
A los parámetros que se especifican en la definición de la subrutina, a la derecha de la palabra FORM se los llama parámetros formales.
Ahora bien, en el bloque FOR-ENDFORM debemos especificar el tipo de los parámetros formales. De esta manera mos aseguramos que loso se pasen parámetros del tipo que corresponde a la subrutina.
Cuando una cubrutina es llamada, los parámetros deben ser pasados en la misma orden en el que fueron declarados, por lo tanto, se debe respetar esta moisma secuencia en el bloque FORM-ENDFORM.
Existen tres formas de pasar parámetros:
- PASO POR VALOR: durante la llamada a la subrutina, los parámetros formales son creados como copias de los parámetros actuales. Los cambios en los parámetros formales no afectan a los parámetros actuales.
- PASO POR REFERENCIA: durante la llamada a la subrutina, solo la dirección de los parámetros actuales se transfieren a los parámetros formales. Dentro de la subrutina, se trabaja con el campo del programa que hace la llamada. Si cambiamos los parámetros formales, el contenido del campo del programa que hace la llamada también cambia.
- PASO POR VALOR Y RESULTADOS: durante la llamada a la subrutina, los parámetros formales son creados como copias de los parámetros actuales. los cambios en los parámetros son copiados a los parámetros actuales al final de la subrutina.
LAS DECLARACIONES DE DATOS GLOBALES Y LOCALES
Cuando declaramos datos en un programa ABAP, es decir variable, estructura, tablas internas u otros tipos de datos,podemos hacerlo de dos formas diferentes:
- GLOBALMENTE
- LOCALMENTE
Hasta este momento siempre que declaramos datos en los programas, realizamos las declaraciones luego de la ejecución de la sentencia REPORT y antes de la declaracion del avento START-OF-SELECTION. Son llamadas declaracciones globales, lo cual significa que esta declaraciones pueden ser utilizadas en cualquier lugar del programa y con esto nos referimos a que pueden ser utilizadas tanto en el programa principal como en cualquiera de las subrutinas que el programa contenga.
Las declaraciones globales de datos tienen una ventaja y una deventaja :
- Como ventaja podemos desir que facilita el armado del programa, no tenemos que andar pensando en donde va a ser utilizada una declaración de dato, sino simplemente la declaramos globalmente y utilizamos en donde corresponda.
- Como desventaja podemos decir que al realizar todas las declaraciones de datos en forma global no estamos generando un codigo ABAP tan eficiente en cuanto a la modularización, lo cual en algun punto puede complicar el mantenimiento futuro del programa.
Otra posibilidar con la que contamos consiste en realizar declaraciones locales, es decir dentro de una subrutina podriamos declarar exclucivamente los datos que vamos a utilizar, de modo de modularizar lo más posible código y consumir la menor cantidad de recursos del sistema, evitando declarar globalmente datos que solos serán utilizados localmente y de esta forma hacemos más eficiente el uso de la memoria de un programa ABAP
 
 
 
Sobre el autor
Publicación académica de Javier Miguel Angel Barcelo, en su ámbito de estudios para la Carrera Consultor ABAP Nivel Inicial.
Javier Miguel Angel Barcelo
Profesión: Militar - Argentina - Legajo: DQ34X
✒️Autor de: 107 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: PartTime
























