Upload
alejandro-calderon
View
214
Download
0
Embed Size (px)
Citation preview
8/20/2019 Modulos-de-Funciones.pdf
1/22
MÓDULOS DE
FUNCIÓN
8/20/2019 Modulos-de-Funciones.pdf
2/22
Módulos de Funciones – RichardRey.com - 2
¿Qué son?
Los módulos de función son módulos especiales guardados en una librería central, y agrupadospor la función ue reali!an. "rincipalmente se caracteri!an por un interface definido y poruereali!an trtmiento de e!ce"ciones#
#e caracteri!an por un interface definido ya ue su dise$o facilita el paso de par%metros tanto deentrada como de salida.
C$LL FUNC%ION &función'.E&'O(%IN) &par%metros(entrada' ) &*alor(entrada'...
IM'O(%IN) &par%metros(salida')&*alor(salida'...%$*LES &tablas(entrada')&tablas(internas'...E&CE'%IONS &e+cepciones')&*alor'...
onde en el E&'O(%IN) especificamos los par%metros de entrada para la función, en elIM'O(%IN) opcional el resultado o retorno de la función y en %$*LES opcional las tablas uese utili!an como par%metros.
/eamos en detalle las 0partes0 de una función.
• E&'O(%IN)1 "ar%metros ue *an hacia el módulo de funciones, son los de entrd lafunción por tanto no los modifica. Los *alores estar%n declarados como IM'O(% en lafunción.
• IM'O(%IN)1 "ar%metros de slid+ son los *alores resultantes de la eecución de lafunción. 3n la función estar%n declarados como E&'O(%.
• C,$N)IN)1 "ar%metros de entrd - slid son modificables.
• %$*LES1 #e usa para pasar tablas internas como par%metros.
• E&CE'%IONS1 #e usa para gestionar e+cepciones y errores. 4uando se acti*a una
e+cepción, en el campo de retorno S./SU*(C se tendr% el *alor correspondiente asignadoa dicha e+cepción en la parametri!ación del módulo de función. 5sí se puede saber u6ocurrió al eecutar la función. 4on la instrucción O%,E(S se da tratamiento a errores nocontemplados.
• E((O(/MESS$)E. #e usa para tratar errores generando un mensae. #e tendr% el *alor
si0ndo "r el error en el campo S./SU*(C. /er punto siguiente para su e+plicación.
8/20/2019 Modulos-de-Funciones.pdf
3/22
Módulos de Funciones – RichardRey.com - 7
)estión de E!ce"ciones#
Los módulos de función tambi6n se caracteri!an por reali!ar un tratamiento de e+cepciones. 3n elinterface de los módulos de función se indican los *alores de e+cepciones para el retorno delmódulo, ue posteriormente con el campo-*ariable S./SU*(C se pueden comprobar.
3l código de la función puede acti*ar e+cepciones mediante las instrucciones1
MESS$)E...($ISIN) &e+cepción'.ó($ISE &e+cepción'.
La 8nica manera de gestionar errores dentro de un módulo de función es ele1r e!ce"ciones, yaue NO se pueden usar mensaes en ellas. La primera sentencia acti*a un mensae, pero no lo
muestra. "ara poder *isuali!arlo hay ue acceder a los campos del sistema de la tabla S.S%, donde
se almacena el te+to del mensae, n8mero,... pero desde el programa principal.
3sto responde al apartado E((O(/MESS$)E del punto anterior. #e podr% mandar el mensae
desde el programa llamante, accediendo a los campos del sistema1 S./MS)ID nombre del
mensae, S./MS)N( n8mero del mensae, S./MS)%. tipo del mensae, S./MS)23 ... S./
MS)24 9 te+tos para los 9 posibles par%metros 5 del mensae.
Crendo un Función "r simulr un Clculdor#
Recordemos el eemplo del capítulo anterior #ubrutinas: *amos a crear un módulo de función
ue cumpla con las 9 operaciones principales de la aritm6tica, suma, resta, multiplicación y
di*isión.
"ara ello, *amos a definir en primera instancia ue par%metros de entrada recibiremos en la
función1
• ;"3R
8/20/2019 Modulos-de-Funciones.pdf
4/22
Módulos de Funciones – RichardRey.com - 9
• eclararemos una e+cepción llamada @A(43R;, al cual le asignaremos el *alor de < cuando
se produ!ca un intento de di*isión por cero.
Luego de definido los par%metros ue utili!aremos, ingresamos a nuestra cuenta en el #5" >3#
ue hemos creado pre*iamente: y nos dirigimos a la transacción SE67, ue es la ue gestiona todo
lo referente a Módulos de Funciones.
/amos a asignar un nombre a la función ue empiece por B recuerda ue todos nuestros
desarrollos deben empe!ar con B o con A.
La llamaremos B45L, y le damos al botón 4R35R.
Cos pedir% ue la asignemos a un Drupo de Funciones e+istente, e indiuemos una bre*e
descripción.
8/20/2019 Modulos-de-Funciones.pdf
5/22
Módulos de Funciones – RichardRey.com - E
/amos a llegar a la siguiente *entana1
/eamos antes de continuar una bre*e descripción de cada obeto auí encontrado1
• $tri8utos 9 "r:metros; ?na función tiene los siguientes par%metros1 E&'O(%IN) de
entrada a la función cuando se hace el llamado desde un programa, estos datos ir%n en lapesta$a de arriba >M";R= en su declaración, IM'O(%IN) de salida. Resultado de lafunción. #alida al momento de in*ocar a la función, en su declaración, la información ir%en la pesta$a 3";R=, C,$N)IN) de entrada G salida, pesta$a M;>F, %$*LES tablasinternas de entrada G salida, pesta$a =5@L5#, E&CE'%IONS e+cepciones producidas por lafunción. #e usa para el maneo de errores, se declaran en la pesta$a 343".
• %e!to fuente1 4ódigo 5@5" de la función, se escribe en la pesta$a 4;.F=3.• Documentción1 5sociada a la función, dependiente del idioma.• Dtos 0lo8les1 4ódigo 5@5" con las sentencias declarati*as del grupo de función.• 'ro0rm "rinci"l1 "rograma ue llama a la función. 4ada módulo de función tiene su
correspondiente >C4L?3 C$LL FUNC%ION en el programa.
8/20/2019 Modulos-de-Funciones.pdf
6/22
Módulos de Funciones – RichardRey.com - H
'rimer 'so; 'est
8/20/2019 Modulos-de-Funciones.pdf
7/22
Módulos de Funciones – RichardRey.com - J
operación se *a a reali!ar, le asignaremos un tipo de datos 4K5R
8/20/2019 Modulos-de-Funciones.pdf
8/22
Módulos de Funciones – RichardRey.com -
Quinto 'so; 'est"L>454>NC.
d.
para identificar la operación >/>#>NC.
7.
entro de cada condición del 45#3, se reali!ar% la operación aritm6tica correspondiente
con los campos ;"3R< y ;"3R2, guardando el resultado en la *ariable local /5R.
9.
3n el caso de la >/>#>NC, pre*iamente se *alidar% ue el campo ;"3R2 sea diferente de
43R;, en caso contrario, se le asigna el *alor de < a la *ariable de e+cepción @A(43R; y no
se reali!a la di*isión.
E.
5l t6rmino del 45#3, se le asigna al campo de salida R3#?L, el resultado almacenado
pre*iamente en /5R.
8/20/2019 Modulos-de-Funciones.pdf
9/22
Módulos de Funciones – RichardRey.com - O
/eamos cómo ueda el eemplo1
Recuerda ue la instrucción R5>#3 acti*a la e+cepción, esto har% ue si se produce un intento de
di*isión por cero, la función de*ol*er%, en lugar de resultado de la operación en el campo R3#?L,
un código #A-#?@R4 diferente de cero en el campo de e+cepción @A(43R;. 3ste *alor retornable
se puede definir en el llamado a la función, ahora *eremos cómo.
"rimero *amos a probar nuestra función directamente desde la #37J.
Luego de acti*ar nuestra función en el botón , procedemos a eecutarla en el
siguiente botón1
#e nos presenta la siguiente *entana, en la cual nos pedir% los par%metros de entrada1
8/20/2019 Modulos-de-Funciones.pdf
10/22
Módulos de Funciones – RichardRey.com -
8/20/2019 Modulos-de-Funciones.pdf
11/22
Módulos de Funciones – RichardRey.com -
8/20/2019 Modulos-de-Funciones.pdf
12/22
Módulos de Funciones – RichardRey.com - ndicamos el tipo de programa, y una descripción.
8/20/2019 Modulos-de-Funciones.pdf
13/22
Módulos de Funciones – RichardRey.com - ndicamos ue el programa ser% un obeto local.
A listo, ya podemos escribir nuestro código.
8/20/2019 Modulos-de-Funciones.pdf
14/22
Módulos de Funciones – RichardRey.com -
8/20/2019 Modulos-de-Funciones.pdf
15/22
Módulos de Funciones – RichardRey.com -
8/20/2019 Modulos-de-Funciones.pdf
16/22
Módulos de Funciones – RichardRey.com -
8/20/2019 Modulos-de-Funciones.pdf
17/22
Módulos de Funciones – RichardRey.com - F-3C>F cual pulsador tipo de operación fueseleccionada, y le asignaremos el *alor correspondiente ue debemos pasar como par%metro a la
función #, R, M o .
"asamos ahora a construir la llamada a la función, la meor pr%ctica para hacer esto es utili!ando
el ícono 0Modelo0 en la barra de pulsadores.
>ndicamos el nombre de la función ue ueremos in*ocar, y damos ;Q.
8/20/2019 Modulos-de-Funciones.pdf
18/22
Módulos de Funciones – RichardRey.com -
8/20/2019 Modulos-de-Funciones.pdf
19/22
Módulos de Funciones – RichardRey.com - =3, esto lo *eremos en detalle en
el siguiente capítulo.
5dem%s controlaremos la e+cepción @A(43R; configurada en la función.
8/20/2019 Modulos-de-Funciones.pdf
20/22
Módulos de Funciones – RichardRey.com - 2P
Sued%ndonos el código estructurado de la siguiente manera1
ListoT
Aa tenemos todo el trabao hecho, ahora *amos a probar nuestro programa con las mismas dos
pruebas ue utili!amos directamente en la función.
"rimero probaremos la suma entre los *alores
8/20/2019 Modulos-de-Funciones.pdf
21/22
Módulos de Funciones – RichardRey.com - 2<
A obtendremos el reporte con el resultado correcto de la operación1
5hora *amos a probar una di*isión por cero, para e*aluar si la función captura la e+cepción de
manera correcta1
8/20/2019 Modulos-de-Funciones.pdf
22/22
Módulos de Funciones – RichardRey.com - 22
3spero te haya sido 8til esta sección pr%ctica, ahora te in*ito a ue practiues tu mismo para ue
poco a poco *ayas familiari!%ndote con el sistema.
=e saluda,
(ic=rd (e9
=tt";--"rende8"#com