✒️ABAP Las subrutinas
ABAP Las subrutinas
- SUBRUTINAS
Secciones de código que pueden ser utilizadas más de una vez.
PERFORM nombre_subrutina. (Llamada a la subrutina desde otro código)
Haciendo doble click sobre el nombre de la subrutina, el sistema nos ayuda a crearla. Se crea con la siguiente estructura FORM nombre_subrutina ... ENDFORM.
- TIPOS DE SUBRUTINAS
- Internas: La subrutina está dentro del mismo programa que la llama.
- Externas: Cuando la subrutina está en una programa distinto al que las llama. (Include de subrutinas u otro programa).
- SUBRUTINAS INTERNAS
Llamada PERFORM. Declaración de la subrutina FORM-ENDFORM.
Se pueden pasar datos en las subrutinas mediante parámetros, que pueden ser de entrada, de salida o de entrada y salida.
- PASO DE PARÁMETROS A SUBRUTINAS
Tres opciones USING, CHANGING y TABLES
PERFORM subrutina TABLES <tabla de salida> USING <parámetro de entrada> CHANGING <parámetro de salida>.
Ejemplo/ DATA: ti_values LIKE STANDARD TABLE OF sflight, st_vuelos LIKE LINE OF ti_vuelos, v_flag TYPE sy-subrc.
PERFORM procesar_datos TABLES ti_vuelos USING st_vuelos CHANGING v_flag.
FORM procesar_datos TABLES t_vuelos STRUCTURE sflight USING st_vuelos STRUCTURE sflight CHANGING p_flag TYPE sy-subrc.
Formas de pasar los parámetros:
Paso por valor: Los cambios en los parámetros de la subrutina no afectan a los parámetros de la llamada.
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.
El valor que escribirá en write será B.
Paso por referencia: Si se cambia el parámetro en la subrutina, el de la llamada también cambia.
DATA: v_f1(1) TYPE c VALUE 'A', v_f2(1) TYPE c VALUE 'B'.
PERFORM paso_por_valor USING v_f1 CHANGING v_f2.
WRITE: v_f1, v_f2.
FORM paso_por_valor USING pf1 CHANGING pf2. pf1 = pf2 = 'X' ENDFORM.
El valor que escribirá en write será X X.
Paso por valor y referencia:
DATA: v_f1(1) TYPE c VALUE 'A', v_f2(1) TYPE c VALUE 'B'.
PERFORM paso_por_valor USING v_f1 CHANGING v_f2.
WRITE: v_f2.
FORM paso_por_valor USING VALUES (pf1) CHANGING VALUE (pf2). pf1 = pf2. ENDFORM.
El valor que escribirá en write será B
- SUBRUTINAS EXTERNAS
Subrutina que está en un programa distinto al que estamos procesando. PERFORM <sub>(<programa>) USING...
También podemos agregar includes de subrutinas a nuestro programa INCLUDE <report>.
 
 
 
Sobre el autor
Publicación académica de Ignacio Martín Bolumar, en su ámbito de estudios para la Carrera Consultor ABAP.
Ignacio Martín Bolumar
Profesión: Ingeniero Informático - España - Legajo: ZL84Z
✒️Autor de: 94 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Ignacio Martín