Modulos-de-Funciones.pdf

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