✒️ABAP Las subrutinas
ABAP Las subrutinas
-SUBRUTINAS
Son secciones de código que pueden ser utilizadas mas de una vez
Los programas van a ser mas fáciles de leer y mantener.
*La idea es que las subrutinas no sean mayores de 50 líneas
Se busca MODULARIZAR el código, que quiere decir pasar el código del programa a subrutinas
PERFORN nombre_subrutina
*Los nombres deben ser lo mas representativos posible
**30 caracteres máximo del nombre
-TIPOS: -INTERNAS. La subrutina está dentro del mismo programa en ejecución.
-EXTERNAS. Cuando la subrutina está en otro programa, puede ser un include u otro programa
-SUBRUTINAS INTERNAS.
Se usa la palabra clave PERFORM y luego el nombre, esto crea un bloque FORM-ENDFORM en donde se coloca el código.
Se pueden pasar datos entre el programa principal y una subrutina usando parámetros.
-Definidos en el programa principal PERFORM -> parámetros ACTUALES.
-Definidos en la subrutina FORM -> parámetros FORMALES.
Parámetros pueden ser de 3 tipos
-De Entrada - Pasan datos a la subrutina
-De Salida - Pasan datos al programa principal
-De Entrada y Salida - Pasan datos a la subrutina y obtienen valores de regreso.
-PASO DE PARÁMETROS A SUBRUTINAS
*Se usan 3 opciones para pasar parámetros
PERFORM subrutina TABLES <tabla de salida>
USING <parámetro de entrada>
CHANGING <parámetro de salida>.
En el bloque FORM-ENDFORM debemos especificar el tipo de los parámetros formales, así aseguramos que solo se pasen parámetros del tipo correspondiente a la subrutina.
***Los parámetros deben ser pasados en el mismo órden que fueron declarados, es decir PERFORM y FORM deben empatarse.
DATA: ti vuelos LIKE STANDARD TABLE OF sflight,
st_vuelos LIKE LINE OF ti_vuelos,
v_flag TYPE sy-subrc.
PERFORM procesa_datos TABLES ti_vuelos USING st_vuelos CHANGING v_flag.
FORM procesa_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:
-Por valor. Los parámetros formales son creados como copias de los param. actuales. Los valores son independientes
DATA: v_f1 TYPE c VALUE 'B'.
PERFORM paso_pvalor USING v_f1.
FORM paso_pvalor USING value(pf1).
pf1='X'.
ENDFORM. "El valor de v_f1 es B
-Por referencia. La dirección de los parámetros actuales se transfieren a los formales. El campo original si cambia.
PERFORM paso_por_ref USING v_f1.
FORM paso_por_ref USING p_f1.
p_f1 = 'X'.
ENDFORM. "El valor de v_f1 es X
-Por valor y resultado. Los parámetros formales son creados como copias. Al final se les copia a los param actuales.
*Solo el param de CHANGING va a cambiar porque USING es una copia.
v_h1 = 'A'.
v_h2 = 'B'.
PERFORM paso_por_valor_y_result USING v_h2 CHANGING v_h1.
FORM paso_por_valor_y_result USING value (pf2) CHANGING value (pf1).
pf1 = pf2.
ENDFORM.
*El valor de pf1 va a ser B
-SUBRUTINAS EXTERNAS
Para llamar subrutinas en un programa distinto se utiliza la siguiente sintaxis.
PERFORM subrutina(z_programa) USING ...
Otra forma es agregar las subrutinas como INCLUDE.
INCLUDE report_name.
 
 
 
Sobre el autor
Publicación académica de Armando Mayo Marquez, en su ámbito de estudios para la Carrera Consultor ABAP.
Armando Mayo Marquez
Profesión: Desarrollador / Soporte Infra - Mexico - Legajo: RL93E
✒️Autor de: 59 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Presentación:
Profesional de t.i. desde 2005 desarrollador cobol, algol, c, tuxedo, java, shell script - banamex soporte de infra en linux para aplicaciones tuxedo, weblogic, oracle, websphere mq -amdocs/at&t usa
Certificación Académica de Armando Mayo