Está en la página 1de 22

MDULOS DE FUNCIN

Qu son?

Los mdulos de funcin son mdulos especiales guardados en una librera central, y agrupados por la funcin ue reali!an. "rincipalmente se caracteri!an por un interface definido y por ue reali!an tr t miento de e!ce"ciones# #e caracteri!an por un interface definido ya ue su dise$o facilita el paso de par%metros tanto de entrada como de salida. C$LL FUNC%ION &funcin'. 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 funcin, en el IM'O(%IN) -opcional. el resultado o retorno de la funcin y en %$*LES -opcional. las tablas ue se utili!an como par%metros. /eamos en detalle las 0partes0 de una funcin.

E&'O(%IN)1 "ar%metros ue *an hacia el mdulo de funciones, son los de entr d -la funcin por tanto no los modifica.. Los *alores estar%n declarados como IM'O(% en la funcin. IM'O(%IN)1 "ar%metros de s lid + son los *alores resultantes de la e2ecucin de la funcin. -3n la funcin estar%n declarados como E&'O(%.. C,$N)IN)1 "ar%metros de entr d - s lid -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+cepcin, en el campo de retorno S./SU*(C se tendr% el *alor correspondiente asignado a dicha e+cepcin en la parametri!acin del mdulo de funcin. 5s se puede saber u6 ocurri al e2ecutar la funcin. 4on la instruccin O%,E(S se da tratamiento a errores no contemplados. E((O(/MESS$)E. #e usa para tratar errores generando un mensa2e. #e tendr% el *alor si0n do " r el error en el campo S./SU*(C. /er punto siguiente para su e+plicacin.

Mdulos de Funciones RichardRey.com - 2

)estin de E!ce"ciones# Los mdulos de funcin tambi6n se caracteri!an por reali!ar un tratamiento de e+cepciones. 3n el interface de los mdulos de funcin se indican los *alores de e+cepciones para el retorno del mdulo, ue posteriormente con el campo-*ariable S./SU*(C se pueden comprobar. 3l cdigo de la funcin puede acti*ar e+cepciones mediante las instrucciones1 MESS$)E...($ISIN) &e+cepcin'. ($ISE &e+cepcin'.

La 8nica manera de gestionar errores dentro de un mdulo de funcin es ele1 r e!ce"ciones, ya ue NO se pueden usar mensa2es en ellas. La primera sentencia acti*a un mensa2e, 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 mensa2e, n8mero,... pero desde el programa principal. 3sto responde al apartado E((O(/MESS$)E del punto anterior. #e podr% mandar el mensa2e desde el programa llamante, accediendo a los campos del sistema1 S./MS)ID -nombre del mensa2e., S./MS)N( -n8mero del mensa2e., S./MS)%. -tipo del mensa2e., S./MS)23 ... S./ MS)24 -9 te+tos para los 9 posibles par%metros 5 del mensa2e..

Cre ndo un Funcin " r simul r un C lcul dor # Recordemos el e2emplo del captulo anterior -#ubrutinas.: *amos a crear un mdulo de funcin ue cumpla con las 9 operaciones principales de la aritm6tica, -suma, resta, multiplicacin y di*isin.. "ara ello, *amos a definir en primera instancia ue par%metros de entrada recibiremos en la funcin1 ;"3R<1 /ariable con el *alor del primer campo. ;"3R21 /ariable con el *alor del segundo campo. =>";1 =ipo de operacin aritm6tica a e2ecutar, la cual contiene un cdigo 8nico por cada operacin contemplada. 4omo par%metros de salida, tendremos1 R3#?L1 /ariable ue contendr% el resultado de la operacin.

4omo control de e+cepcin, contemplaremos la di*isin por cero1

Mdulos de Funciones RichardRey.com - 7

,eclararemos una e+cepcin llamada @A(43R;, al cual le asignaremos el *alor de < cuando se produ!ca un intento de di*isin 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 transaccin SE67, ue es la ue gestiona todo lo referente a Mdulos de Funciones.

/amos a asignar un nombre a la funcin ue empiece por B -recuerda ue todos nuestros desarrollos deben empe!ar con B o con A.. La llamaremos B45L, y le damos al botn 4R35R.

Cos pedir% ue la asignemos a un Drupo de Funciones e+istente, e indi uemos una bre*e descripcin.

Mdulos de Funciones RichardRey.com - 9

/amos a llegar a la siguiente *entana1

/eamos antes de continuar una bre*e descripcin de cada ob2eto a u encontrado1

$tri8utos 9 " r:metros; ?na funcin tiene los siguientes par%metros1 E&'O(%IN) -de entrada a la funcin cuando se hace el llamado desde un programa, estos datos ir%n en la pesta$a de arriba >M";R= en su declaracin., IM'O(%IN) -de salida. Resultado de la funcin. #alida al momento de in*ocar a la funcin, en su declaracin, la informacin ir% en la pesta$a 3F";R=., C,$N)IN) -de entrada G salida, pesta$a M;,>F., %$*LES -tablas internas de entrada G salida, pesta$a =5@L5#., E&CE'%IONS -e+cepciones producidas por la funcin. #e usa para el mane2o de errores, se declaran en la pesta$a 3F43".. %e!to fuente1 4digo 5@5" de la funcin, se escribe en la pesta$a 4;,.F=3. Document cin1 5sociada a la funcin, dependiente del idioma. D tos 0lo8 les1 4digo 5@5" con las sentencias declarati*as del grupo de funcin. 'ro0r m "rinci" l1 "rograma ue llama a la funcin. 4ada mdulo de funcin tiene su correspondiente >C4L?,3 -C$LL FUNC%ION. en el programa.

Mdulos de Funciones RichardRey.com - E

'rimer ' so; 'est < $%(I*U%OS

"ocas cosas debemos modificar a u, sal*o la forma en ue se e2ecutar% dicha funcin, lo normal es de2arlo todo como est%, es decir, con los checIs tildados de 0Mdulo de funciones normal0 y de 0>nicio inmediato0. >nteresante saber a u, ue si lo ue nos piden es dise$ar una funcin ue haga las *eces de interfa! entre un sistema e+terno y #5", el checI ue debemos tildar es el ue dice 0Mdulo de acceso remoto0, con esto ser% suficiente para ue desde fuera puedan comunicarse con nuestra funcin. "ara nuestro e2emplo, lo de2amos como esta y pasamos a la pesta$a >M";R=. Se0undo ' so; 'est < IM'O(% 3n esta pesta$a *amos a declarar los par%metros de entrada ue definimos anteriormente1 ;"3R<1 /ariable con el *alor del primer campo. ;"3R21 /ariable con el *alor del segundo campo. =>";1 =ipo de operacin aritm6tica a e2ecutar, la cual contiene un cdigo 8nico por cada operacin contemplada. 5signaremos a los operadores, un elemento de datos ue haga referencia a cantidades, -@#3D,M@=R. mientras ue para el campo =>";, cuya funcin ser% simplemente indicar ue tipo de Mdulos de Funciones RichardRey.com - H

operacin se *a a reali!ar, le asignaremos un tipo de datos 4K5R<, es decir, un te+to de un solo caracter.

%ercer ' so; 'est < E&'O(% Kabamos definido ue el 8nico campo de salida sera el siguiente1 R3#?L1 /ariable ue contendr% el resultado de la operacin.

Le asignaremos el mismo elemento de datos de las *ariables de entrada ;"3R< y ;"3R2.

Cu rto ' so; 'est < E&CE' Cos falta declarar la e+cepcin ue mane2ar% nuestra funcin, habamos definido lo siguiente1 ,eclararemos una e+cepcin llamada @A(43R;, al cual le asignaremos el *alor de < cuando se produ!ca un intento de di*isin por cero.

Mdulos de Funciones RichardRey.com - J

Quinto ' so; 'est < CDI)O FUEN%E "rocedemos ahora, a crear el cdigo correspondiente para simular una calculadora, lo haremos en la pesta$a del cdigo fuente, ue como *eremos, nos presenta ya la informacin ue acabamos de parametri!ar en las pesta$as.

La siguiente ser% nuestra estrategia de programacin1 <. ,eclararemos una *ariable local llamada /5R ue contendr% el resultado parcial de las operaciones a reali!ar. 2. 4onstruiremos un 45#3-3C,45#3 basado en el campo de entrada =>";, el cual contendr% como *alores lo siguiente1 a. M#M para identificar la operacin #?M5. b. MRM para identificar la operacin R3#=5. c. MMM para identificar la operacin M?L=>"L>454>NC. d. M,M para identificar la operacin ,>/>#>NC. 7. ,entro de cada condicin del 45#3, se reali!ar% la operacin 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+cepcin @A(43R; y no se reali!a la di*isin. E. 5l t6rmino del 45#3, se le asigna al campo de salida R3#?L, el resultado almacenado pre*iamente en /5R.

Mdulos de Funciones RichardRey.com - L

/eamos cmo ueda el e2emplo1

Recuerda ue la instruccin R5>#3 acti*a la e+cepcin, esto har% ue si se produce un intento de di*isin por cero, la funcin de*ol*er%, en lugar de resultado de la operacin en el campo R3#?L, un cdigo #A-#?@R4 diferente de cero en el campo de e+cepcin @A(43R;. 3ste *alor retornable se puede definir en el llamado a la funcin, ahora *eremos cmo. "rimero *amos a probar nuestra funcin directamente desde la #37J.

Luego de acti*ar nuestra funcin en el botn

, procedemos a e2ecutarla en el

siguiente botn1 #e nos presenta la siguiente *entana, en la cual nos pedir% los par%metros de entrada1

Mdulos de Funciones RichardRey.com - O

"rimero probaremos la suma entre los *alores <J.2E y <9.EP.

,amos clic en el botn e2ecutar1 ;btendremos el resultado de la funcin, el cual nos indica ue la suma dio como resultado 7<.JE1

Mdulos de Funciones RichardRey.com - <P

5hora *amos a probar una di*isin por cero, para e*aluar si la funcin captura la e+cepcin de manera correcta1

A obtenemos el siguiente resultado1

/emos ue el campo R3#?L no tiene *alor, y en la parte posterior, el test nos indica ue se produ2o la e+cepcin @A(43R;, garanti!%ndonos as ue la funcin procesa la informacin de forma correcta. 'ro0r m de Control

Mdulos de Funciones RichardRey.com - <<

5hora *amos a crear un pe ue$o programa B, en la #37L, en la ue capturemos por pantalla los 2 *alores a operar, el tipo de operacin, con los ue internamente *amos a llamar a esta funcin,, y ofre!camos el resultado en una salida por pantalla, y de esta manera practicamos un poco la creacin de programas B. /amos a crear un programa llamado B45L4?L5,;R5.

>ndicamos el tipo de programa, y una descripcin.

Mdulos de Funciones RichardRey.com - <2

>ndicamos ue el programa ser% un ob2eto local.

A listo, ya podemos escribir nuestro cdigo.

Mdulos de Funciones RichardRey.com - <7

3l primer paso es declarar un blo ue de datos de seleccin, en el ue pediremos los dos importes ue corresponder%n a los par%metros ;"3R< y ;"3R2 de la funcin, les asignaremos el mismo nombre y tipo de datos.

"osteriormente, crearemos otro blo ue de datos, en el opciones, para determinar el tipo de operacin a reali!ar.

ue tendremos una seleccin de 9

#i e2ecutamos el programa ahora mismo, la pantalla de seleccin uedara as1

Mdulos de Funciones RichardRey.com - <9

"odemos asignarles nombres legibles y ttulos a los blo ues o ca2as, ingresando a "asar a ' 3lementos de =e+to ' =e+tos de seleccin.

3n te+tos de seleccin, le asignaremos descripciones a las *ariables de entrada definidas1

Mdulos de Funciones RichardRey.com - <E

3n #mbolos de te+to definiremos los ttulos descripti*os a los blo ues o ca2as dise$adas.

?na *e! acti*ados todos los ob2etos, tendremos el siguiente aspecto en nuestra pantalla de seleccin1

Mdulos de Funciones RichardRey.com - <H

5hora continuamos con la programacin, en las *ariables ;"3R< y ;"3R2 tenemos ya los importes a tratar, *amos a definir a tra*6s de sentencias >F-3C,>F cual pulsador -tipo de operacin. fue seleccionada, y le asignaremos el *alor correspondiente ue debemos pasar como par%metro a la funcin -#, R, M o ,..

"asamos ahora a construir la llamada a la funcin, la me2or pr%ctica para hacer esto es utili!ando el cono 0Modelo0 en la barra de pulsadores.

>ndicamos el nombre de la funcin ue ueremos in*ocar, y damos ;Q.

Mdulos de Funciones RichardRey.com - <J

#e nos presenta en el cdigo, lo siguiente1

"rocedemos a completar el cdigo necesario para un correcto llamado a la funcin.

Mdulos de Funciones RichardRey.com - <L

5hora configuraremos la salida del resultado por pantalla, para ello nos adelantaremos un poco en materia y crearemos un sencillo reporte con la instruccin RR>=3, -esto lo *eremos en detalle en el siguiente captulo.. 5dem%s controlaremos la e+cepcin @A(43R; configurada en la funcin.

Mdulos de Funciones RichardRey.com - <O

Sued%ndonos el cdigo estructurado de la siguiente manera1

ListoT Aa tenemos todo el traba2o hecho, ahora *amos a probar nuestro programa con las mismas dos pruebas ue utili!amos directamente en la funcin. "rimero probaremos la suma entre los *alores <J.2E y <9.EP.

Mdulos de Funciones RichardRey.com - 2P

A obtendremos el reporte con el resultado correcto de la operacin1

5hora *amos a probar una di*isin por cero, para e*aluar si la funcin captura la e+cepcin de manera correcta1

Mdulos de Funciones RichardRey.com - 2<

3spero te haya sido 8til esta seccin pr%ctica, ahora te in*ito a ue practi ues tu mismo para ue poco a poco *ayas familiari!%ndote con el sistema.

=e saluda, (ic= rd (e9 =tt";-- "rende 8 "#com

Mdulos de Funciones RichardRey.com - 22

También podría gustarte