![](/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/146.jpg)
Subrutinas
Son secciones de codigo reutilizables dentro de un mismo programa o tambien en otros programas que las referencien
Esta idea de pasar codigos a subrutinas se llama Modularizar (mejora la lectura y el mantenimiento de un programa, la idea es que no tenga mas de 50 lineas), ademas permite hallar errores facilmente.
Se declara con la palabra PERFORM <nombre_subrutina> y se puede crear haciendo doble clic sobre el nombre de la subrutina en el editor ABAP
Se puede crear en un INCLUDE o crear en el mismo programa de control
Luego de crearlo el sistema generara un bloque de codigo para llenarlo como se deba:
*text (reservado para describir la subrutina), p1 y p2 (parametros de entrada y salida)*
FORM nombre_subrutina.
ENDFORM.
Tipos de subrutinas
Hay dos tipos:
- Internas: cuando se encuentra dentro del programa que la llama o en un include el cual se declaro en el programa de control.
- Externas: cuando la subrutina se encuentra en un programa distinto al que la llama. Para llamar a una subritutina externa se escribe PERFORM <nombre_subrutina> IN PROGRAM <nombre_programa_subrutina>
Paso de parametros a subrutinas
Podemos pasar datos entre el programa y una subrutina a traves de parametros, pueden ser de tres tipos:
- Entrada: para pasar datos del programa principal a la subrutina
- Salida: pasar datos de la subrutina al programa principal
- Entrada y salida: para pasar datos de la subrutina al programa principal y viceversa.
Para pasar parametros en las subrutinas hay tres palabras reservadas:
- USING: declarar parametros de entrada que se utilizan en la subrutina
- CHANING: declarar parametros de entrada/salida que seran usados en la subrutina
- TABLES: declarar parametros de entrada/salida que son tablas y seran usadas en la subrutina
Las palabras reservadas deben ser escritas en el siguiente orden:
PERFORM nomb_subrutina TABLES nom_tabla_interna
USING paramtro_entrada
CHANING parametro_entrada_salida
A los parametros definidos en el programa principal en la declaracion de la subrutina a la derecha de PERFORM son parametros actuales
PERFORM nomb_subrutina CHANING v_nombre. <--- (parametros actuales)
A los que se especifican en la definicion de la subrutina a la derecha de FORM se los llama parametros formales
FORM nomb_subrutina CHANING p_nombre. <--- (parametro formal)
ENDFORM.
En el bloque FORM-ENDFORM debemos especificar el tipo de parametros formales para que solo se pasen parametros del tipo que corresponda.
Cuado se llama una subrutina los parametros deben estar en el mismo orden que fueron declarados en la subrutina.
Existen tres formas de pasar parametros:
- Paso por valor: en la llamada a la subrutina, los parametros formales son como copias de los actuales, los cambios en los param formales NO afectan a los actuales.
- Paso por referencia: durante el llamado solo la direccion de los param actuales se transfieren a los formales, en la subrutina se trabaja con el campo del programa, si se cambia el valor de los param formales el contenido del campo del programa tambien cambia.
- Paso por valor y resultado: los parametros formales son copias de los actuales, los cambios en los formales son copiados a los actuales al final de la subrutina.
Declaracion de datos globales y locales
Cuando se declaran datos en un programa ABAP hay dos formas de hacerlo: globalmente y localmente.
Las declaraciones globales (osea despues de la sentencia REPORT y antes del evento STAR-OF-SELECTION) pueden ser utilizadas en cualquier lugar del programa y sus subrutinas. Tienen la ventaja de que facilita el armado del programa ya que no hay que estar pensando donde va a ser usada, y tienen la desventaja de que no generamos un codigo tan eficiente en cuanto a modularizacion lo que puede complicar el mantenimiento.
Las declaraciones locales (dentro de una subrutina) que solo se declaran donde seran utilizadas, modularizan el codigo y consumen menos recursos del sistema.
 
 
 
Sobre el autor
Publicación académica de Luciano Martinez, en su ámbito de estudios para la Carrera Consultor ABAP.
Luciano Martinez
Profesión: Consultor Abap - Argentina - Legajo: LR86R
✒️Autor de: 66 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Presentación:
Me capacito para desempeñar el rol de un consultor abap, además soy sql developer jr, como ambos lenguajes (sql y abap) se relacionan, hace que mi perfil sea más completo y se complemente.
Certificación Académica de Luciano Martinez