✒️ABAP Las subrutinas
ABAP Las subrutinas
==> SUBRUTINAS
Qué son las Subrutinas:
- Son secciones de código que pueden ser utilizadas más de una vez.
- Pasar el código a subrutinas es beneficioso para que los programas sean más fáciles de leer y mantener.
- MODULARIZAR es como se llama a la acción de pasar el código de un programa a subrutinas, para mantener la lectura y el mantenimiento del mismo.
Cómo se crea una Subrutina:
- Se declaran con la palabra reservada PERFORM seguida del nombre de la subrutina. Ejemplo:
PERFORM selecciono_datos.
- Al escribir la línea anterior, y hacer doble click sobe el nombre, el sistema nos propondrá crearla. Elegimos crearla en el mismo programa de control y se nos generará un bloque FORM-ENDFORM en el programa para poner todo el código de la subrutina.
- El nombre de la subrutina no puede tener más de 30 caracteres.
Tipos de subrutinas:
- Internas: está dentro del mismo programa que la llama.
- Externas: está en un programa distinto al que las llama. Es el caso de un include de subrutinas u otro programa.
Rutinas Internas:
- Se crea usando la palabra clave PERFORM seguida del nombre de la rutina. Esto crea un bloque FORM-ENDFORM donde ponemos el código.
- Se pueden pasar parámetros a la subrutina.
- Los parámetros definidos en el programa principal se llaman PARÁMETROS ACTUALES, y los parámetros definidos en la subrutina se llaman PARÁMETROS FORMALES.
- Los parámetros pueden ser de 3 tipos:
- De entrada: del programa principal a la subrutina.
- De salida: de la subrutina al programa principal.
- De entrada y salida: en ambos sentidos.
Paso de parámetros a subrutinas:
- Se utilizan 3 opciones: TABLES, USING y CHANGING .
- Se deben escribir en ese mismo orden.
- Ejemplo:
PERFORM subrutina TABLES <tabla de salida>
USING <parámetro de entrada>
CHANGING <parámetro de salida>.
- Existen 3 formas de pasar parámetros:
- Paso por valor: al llamar a la subrutina los parámetros formales son creados como copias de los parámetros actuales. Los cambios en los formales no afectan a los actuales. Ejemplo:
DATA: v_f1(1) TYPE c VALUE 'B'.
PERFORM paso_por_valor USING v_f1.
WRITE v_f1.
FORM paso_por_valor USING value(pf1).
pf1 = 'X'.
ENDFORM.
Y la salida será B.
- Paso por referencia: al llamar a la subrutina la dirección de los parámetros actuales se transfiere a los parámetros formales.Es una referencia a estos. Ejemplo:
DATA: v_g1(1) TYPE c VALUE 'A',
v_g2(1) TTPE c VALUE 'B'.
WRITE: v_g1, v_g2.
PERFORM paso_por_referencia USING v_g1
CHANGING v_g2.
WRITE: v_g1, v_g2.
FORM paso_por_referencia USING p_g1
CHANGING p_g2.
p_g1 = p_g2 = 'X'.
ENDFORM.
Y la salida será A b y X X.
- Paso por valor y resultado: al llamar a la subrutina, los parámetros formales son creados como copias de los actuales, y los cambios en los formales son copiados a los actuales al final de la rutina. Ejemplo:
DATA: v_g1(1) TYPE c VALUE 'A',
v_g2(1) TTPE c VALUE 'B'.
PERFORM paso_por_valor y resultado USING v_g1
CHANGING v_g2.
WRITE:/ 'G1 es:', v_g1.
FORM paso_por_valor y resultado USING value(p_g1)
CHANGING value(p_g2).
p_g1 = p_g2
ENDFORM.
Y la salida será G1 es: B.
Subrutinas externas:
- Para llamar a una subrutina situada en un programa distinto utilizaremos la siuiente sintaxis:
PERFORM <subrutina>(<programa>) USING...
- También podemos añadir INCLUDES de subrutinas así:
INCLUDE <report>
 
 
 
Sobre el autor
Publicación académica de Jose Lopez Partida, en su ámbito de estudios para la Carrera Consultor ABAP.
Jose Lopez Partida
Profesión: Programador. Informático - España - Legajo: BF75R
✒️Autor de: 40 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Jose Lopez