✒️ABAP Las subrutinas
ABAP Las subrutinas
LECCION 1 – Subrutinas:
Conceptos: Son secciones de código que se pueden utilizar más de una vez.
La idea de pasar el código de los programas a subrutinas es para hacer los programas más fáciles de leer y mantener.
Modularizar:
· Ayuda a encontrar fácilmente los errores en los programas. Ocupándonos de que al debaguear el programa el resultado sea el esperado, sin importar el detalle de como se llega a ese resultado.
· Sintaxis: PERFORM Nombre_Subrutina.
· El nombre solo no debe pasar de 30 caracteres.
1.2 Tipos de Subrutinas
Internas: Cuando la subrutina esta dentro del mismo programa que la llama.
Externas: Cuando la subrutina esta en un programa distinto al que las llama. Ejemplo un Include de subrutinas u otro programa.
Subrutinas Internas: al crear la sentencia PERFORM nombre_subrutina, se crea el bloque:
FORM nombre_subrutina.
< CODIGO>
ENDFORM.
· Parámetros Actuales: definidos en el programa principal a la derecha de la palabra PERFORM.
Parámetros Formales: definidos en la subrutina, a la derecha de la palabra FORM.
1.4 Tipos de Parámetros:
Parámetros de Entrada: para pasar datos del programa principal a la subrutina.
Parámetros de Salida: para pasar datos de la subrutina al programa principal.
Parámetros de Entrada y Salida: para pasar datos de la subrutina al programa principal y viceversa.
1.5. Paso de Parámetros a Subrutinas:
Sintaxis:
PERFORM subrutina TABLES <TablaSalida>
USING <Parámetro de entrada>
CHANGING <Parámetro de Salida>.
Ejemplo:
DATA: ti_vuelos LIKE STANDARD TABLE OF sflight,
st_vuelos LIKE LINE OF ti_vuelos,
v_flag TYPE sy-subrc.
* Procesar los datos de entrada
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.
ENDFORM. "procesar_datos
En el bloque FORM-ENDFORM se deben agregar el TIPO de parámetros Formales, para asegurar que solo se pasen datos del mismo tipo a la subrutina:
FORM procesar_datos TABLES t_vuelos STRUCTURE sflight PASAMOS TABLA INTERNA
USING st_vuelos STRUCTURE sflight PASAMOS UNA ESTRUCTURA
CHANGING p_flag TYPE sy-subrc. PASAMOS UNA VARIABLE
ENDFORM. "procesar_datos
Los Parámetros deben ser pasados en el mismo orden que fueron creados en su invocación PERFORM. Así tanto el en PERFORM como en el bloque FORM-ENDFORM deben estar en el mismo orden.
1.6 Formas de Pasar Parámetros:
1.6.1 Paso por Valor:
CODIGO EJEMPLO: PASO PO RVALOR - RESULTADO = B
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. " PASO_POR_VALOR
1.6.2 Paso por Referencia:
· Los cambios en los parámetros formales SI afectan a los parámetros actuales.
CODIGO EJEMPLO: PASO POR REFERENCIA - RESULTADO = A B y X X
DATA: v_g1(1) TYPE c VALUE 'A',
v_g2(1) TYPE c VALUE 'B'.
WRITE: v_g1 , v_g2.
PERFORM paso_por_referencia USING v_g1 PARAMETROS ACTUALES
CHANGING v_g2.
WRITE: v_g1 , v_g2.
FORM paso_por_referencia USING p_g1 PARAMETROS FORMALES
CHANGING p_g2.
p_g1 = p_g2 = 'X'.
ENDFORM. " PASO_POR_REFERENCIA
1.6.3 Paso por valor y Resultado:
CODIGO EJEMPLO: PASO POR VALOR Y RESULTADO - RESULTADO = H1 es: B
DATA: v_h1(1) TYPE c VALUE 'A', v_h2(1) TYPE c VALUE 'B'. PERFORM paso_por_valor_y_resultado1 USING v_h2 CHANGING v_h1. ************************************************************************ WRITE:/'H1 es:', v_h1. FORM paso_por_valor_y_resultado1 USING value(p_f2) CHANGING value(p_f1). p_f1 = p_f2. ENDFORM. " PASO_POR_VALOR_Y_RESULTADO1
Subrutinas Externas: permite llamar a una subrutina que no esta en un programa distinto al que estamos utilizando.
PERFORM <SUB>(<programa>) USING….
 
 
 
Sobre el autor
Publicación académica de Gustavo Bolivar, en su ámbito de estudios para la Carrera Consultor ABAP.
Gustavo Bolivar
Profesión: Ing Sistemas - Chile - Legajo: EU47Z
✒️Autor de: 45 Publicaciones Académicas
🎓Egresado del módulo:
Presentación:
Enfocado en programación sap abap.
Certificación Académica de Gustavo Bolivar