![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP Las subrutinas
ABAP Las subrutinas
![ABAP Las subrutinas ABAP Las subrutinas](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/357.jpg)
1) SUBRUTINAS
Son secciones de código que pueden ser utilizadas mas de una vez.
Modularizar: Es la acción de pasar el código de un programa a subrutinas, para mejorar la lectura y el mantenimiento.
Se declara así;
PERFOM selecciono_datos.
Se se hace doble-clic sobre el nombre de la subrutina, proporcionara una ventana de dialogo, en donde pregunta si se desea crear el objeto, al dar afirmativo preguntará en donde crear la subrutina:
1) Crear un include de datos
2) Crearla en el mismo programa de control.
Y se crea el código de la subrutina con FORM-ENDFORM.
Es importante que el nombre que se le asigne a la subrutina, sea lo mas representativo y no debe exceder de 30 caracteres.
2) TIPOS DE SUBRUTINAS
Existen 2 tipos:
- Internas- Cuando esta dentro del mismo programa
- Externas- Cuando esta en un programa distinto ( include de subrutinas)
3) SUBRUTINAS INTERNAS
Se pueden pasar parámetros entre el programa y la subrutina.
- Parametros actuales - son los que están en la palabra PERFORM
- Parametros formales - son los que están en la palabra FORM,
Pueden ser de 3 tipos:
- De Entrada
- De Salida
- De entrada y salida.
4) Paso de parámetros.
Para pasar los parametros utilizaremos 3 opciones: USING, CHANGING y TABLES, y se escriben en el siguiente orden:
PERFORM subrutina TABLES <Tabla de salida>
USING <parametros de entrada>
CHANGING <parametros de salida>
En el FORM-ENDFORM se debe especificar el tipo de parametros formales:
FORM procesar datos TABLES t_vuelos STRUCTURE sflight
USING st_vuelos STRUCTURE sflight
CHANGING p_flag TYPE sy-subrc.
ENDFORM.
Existen 3 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
Ejemplo:
DATA: v_f1(1) TYPE c VALUE 'B'.
PERFORM paso_por valor USING v_f1.
FORM paso_por _valor USING value (pf1)
ENDFORM.
Cuando se pasan por valor, los parámetros actuales del programa principal no sufrirán alguna alteración en su valor, aunque se hagan modificaciones en la subrutina.
- Paso por Referencia: Durante la llamada a la subrutina solo la dirección de los parametros actuales transfiere a los parámetros formales.Si cambiamos los para formales, el contenido del campo en el programa que hace la llamada también cambia.
Ejemplo;
DATA: v_g1(1) TYPE c Value 'A,
v_g2(1) TYPE c Value 'B.
PERFORM paso_referencia USING v_g1.
CHANGING v_g2.
FORM paso_referencia USING v_g1.
CHANGING p_g2.
p_g1 = p_g2 = 'X'.
El valor de las variables al regresar al programa que las llamó , cambió a 'X'.
- 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 formales son copiados a los parámetroasactuales
DATA: v_h1(1) TYPE c Value 'A,
v_h2(1) TYPE c Value 'B.
PERFORM paso_valor_ referencia USING v_h2.
CHANGING v_h1.
FORM paso_valor_referencia USING value (p_f2)
CHANGING value (p_fi)
p_f1 = p_f2 .
 
 
 
Sobre el autor
Publicación académica de Manuel Antonio Moncada Vera, en su ámbito de estudios para la Carrera Consultor ABAP.
Manuel Antonio Moncada Vera
Profesión: Ingeniero en Informatica - Colombia - Legajo: JT58S
✒️Autor de: 68 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Manuel Moncada