✒️ABAP Las subrutinas
ABAP Las subrutinas
Subrutinas
1. Definición.
- Secciones de código que pueden ser utilizadas + de 1 vez.
- Modularizar código para que los programas sean de fácil lectura y de mantener.
-> Ayuda a encontrar con facilidad errores en programas.
-> Permite la reutlización del código (si está en más de 1 programa).
-> Debaguear programa para verificar sólo resultado de subrutina sin detallar cómo llegar al mismo.
- Rutina no debe contener + de 50 líneas de código.
- PERFORM: Palabra reservada para declarar subrutina seguida del nombre. Ejm.: PERFORM selecciono_datos.
- Si no existe, sistema solicitará ubicación de subrutina como Include de datos o crearlas en mismo programa de control. Esto creará bloque FORM-ENDFORM donde irá el código de la subrutina.
- Nombre de subrutina debe ser acorde al resultado que genere y su longitud<=30 caracteres.
2. Tipos de subrutinas
- Internas: Se encuentra en mismo programa que la invoca.
- Externas: Se encuentra en programa distinto al que la invoca (Include de subrutinas o otro programa).
-> Include de subrutinas: Objeto ABAP para agrupar declaraciones de subrutinas usadas en 1 o grupo de programas.
3. Subrutinas internas.
- Crear subrutina interna => PERFORM <Nombre-subrutina>
- Pasar datos entre programas principales y una subrutina por parámetros.
- Parámetros actuales son los definidos en el programa principal, a la derecha de la palabra PERFORM.
- Parámetros formales son los definidos en la subrutina a la derecha de palabra FORM.
- Tipos de Parámetros
-> Entrada: Usados para pasar datos del programa principal a subrutina.
-> Salida: Usados para pasar datos de subrutina a programa principal.
-> Entrada y salida:Usados para pasar datos de subrutina a programa principal y viceversa.
4. Paso de parámetros a subrutinas
- USING, CHANGING y TABLES.
- En bloque FORM-ENDFORM se especifican el tipo de los parámetros formales.
Ejm.:
DATA: ti_vuelos LIKE STANDARD 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.
ENDFORM.
- Formas de pasar parámetros:
-> Paso por valor: Parámetros formales son creados como copias de los actuales. Los cambios en los formales no
afectan a los actuales.
Ejm.:
DATA: v_f1(1) TYPE c VALUE 'S'.
PERFORM paso_valor USING v_f1.
WRITE v_f1.
FORM paso_valor USING value(pf1).
pf1 = 'E'
ENDFORM.
Salida=> S. Al pasar parámetro por valor, no cambia el valor del campo definido (param actual) en
programa principal.
-> Paso por referencia: Dirección de parámetros actuales es transferida a los formales, trabajando con campo
del programa que hace el llamado. Si se cambia parámetro formal, contenido del actual también.
Ejm.: DATA: v_f1(1) TYPE c VALUE 'X',
v_f2(1) TYPE c VALUE 'Y'.
WRITE: v_f1, v_f2.
PERFORM paso_referencia USING v_f1
CHANGING v_f2.
WRITE v_f1, v_f2.
FORM paso_referencia USING p_f1
CHANGING p_f2.
p_f1 = p_f2 = 'Z'.
ENDFORM.
Salida => Será X Y Z Z. Al pasar parámetro por referencia, cambia el valor del campo definido (param actual) en
programa principal.
-> Paso por valor y resultado: parámetros formales son creados como copias de los actuales. Los cambios en
los formales son copiados a los actuales al final de subrutina.
Ejm.: DATA: v_h1(1) TYPE c VALUE 'A',
v_h2(1) TYPE c VALUE 'B'.
PERFORM paso_valor_resultado USING v_h2
CHANGING v_h1.
WRITE:/ 'H1 es: ', v_h1.
FORM paso_valor_resultado USING value(p_f2)
CHANGING value(p_f1)
p_f1= p_f2.
ENDFORM.
Salida: H1 es: B.
5. Subrutinas externas.
- Forma de invocar: PERFORM <nombre_sub>(<nombre_programa>)....
- Se pueden agregar INCLUDES de subrutinas a programa: INCLUDE <report>.
 
 
 
Agradecimiento:
Ha agradecido este aporte: Octavio Davila Durazo
Favorito:
Está publicación ha sido agregada a sus favoritos por: Octavio Davila Durazo
Sobre el autor
Publicación académica de Darwin Enrique Terraza Berdugo, en su ámbito de estudios para la Carrera Consultor ABAP.
Darwin Enrique Terraza Berdugo
Colombia - Legajo: MM57E
✒️Autor de: 60 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor Basis NetWeaver Nivel Avanzado
- Carrera Consultor Basis NetWeaver Nivel Inicial
Disponibilidad Laboral: PartTime
Certificación Académica de Darwin Terraza