✒️ABAP Las subrutinas
ABAP Las subrutinas
¿Qué son las subrutinas?
Son secciones de código que pueden ser utilizadas más de una vez dentro de un mismo programa y también pueden ser utilizadas por otros programas que las referencian.
La idea de pasar el código de los programas a subrutinas, es para que los programas sean más fáciles de leer y de mantener.
Modularizar: pasar el código de un programa a subrutinas, para mejorar la lectura y el mantenimiento del mismo. Lo ideal es que una subrutina no tenga más de 50 líneas de código. Ayuda a encontrar más fácilmente los errores en los programas.
En ABAP una subrutina se declara con la palabra reservada PERFORM seguida del nombre de la subrutina.
PERFORM seleccionar_datos CHANGING v_hay_datos.
Los tipos de subrutinas
Existen dos tipos de subrutinas:
- Internas: cuando la subrutina se encuentra dentro del mismo programa que la llama o en un include de subrutinas, el cuál se encuentra declarado en el programa de control.
- Externas: cuando la subrutina se encuentra en un programa distinto al que la llama. Para llamar a una subrutina
externa desde otro programa.
PERFORM seleccionar_datos IN PROGRAM ZTEST_SUBRUTINAS.
El paso de parámetros a subrutinas
Podemos pasar datos entre el programa principal y una subrutina a través de parámetros
- De entrada: cuando se utilizan para pasar datos del programa principal a la subrutina.
- De salida: cuando se utilizan para pasar datos de la subrutina al programa principal.
- De entrada y salida: cuando se utilizan para pasar datos de la subrutina al programa principal y también viceversa.
Para pasar los parámetros en las subrutinas vamos a utilizar tres palabras reservadas
- USING para declarar parámetros de entrada que serán utilizados en la subrutina.
- 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 serán utilizadas en la subrutina.
USING wa_usuarios
CHANGING v_flag.
- Paso por valor:
PERFORM paso_por_valor USING v_f1.
WRITE v_f1.
- Paso por referencia:
v_g2(1) TYPE c VALUE 'B'.
WRITE:/ v_g1, v_g2.
PERFORM paso_por_referencia USING v_g1
CHANGING v_g2.
WRITE:/ v_g1, v_g2.
- Paso por valor y resultado:
v_g2(1) TYPE c VALUE 'B'.
WRITE:/ v_g1, v_g2.
PERFORM paso_por_referencia USING v_g1
CHANGING v_g2.
WRITE:/ v_g1, v_g2.
- Globalmente
- Localmente
Las declaraciones globales de datos tienen una ventaja y una desventaja:
- Como ventaja podemos decir que se facilita el armado del programa ya que no tenemos que estar pensando en donde particularmente va a ser utilizada una declaración de datos, sino que simplemente la declaramos globalmente y la utilizamos en donde corresponda.
- Como desventaja podemos decir que al realizar todas las declaraciones de datos en forma global no estamos generando un código ABAP tan eficiente en cuanto a la modularización, lo cual en algún punto puede complicar el mantenimiento futuro del programa.
Otra posibilidad con la que contamos consiste en realizar declaraciones locales, es decir dentro de una subrutina podríamos declarar exclusivamente los datos que vamos a utilizar, de modo de modularizar lo más posible el código y consumir la menor cantidad de recursos del sistema.
 
 
 
Sobre el autor
Publicación académica de Octavio Ivan Pasciucco, en su ámbito de estudios para la Carrera Consultor ABAP.
Octavio Ivan Pasciucco
Profesión: Consultor Sap Btp - Argentina - Legajo: FX47X
✒️Autor de: 23 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Avanzado
🎓Egresado del módulo:
Presentación:
Consultor sap btp
Certificación Académica de Octavio Pasciucco