You are on page 1of 14

1.

Mdulos de Funciones
1.1 Introduccin
Los mdulos de funciones son objetos que realizan operaciones
que pueden ser utilizadas en varios programas. Al crear un mdulo
de funcin con el cdigo que realiza una operacin, se evita tener
que repetirlo en todos los programas que realicen esa operacin
aadiendo en ellos una llamada al mdulo de funcin. Adems de
evitar que se repita el mismo cdigo en diferentes programas, se
facilita el mantenimiento del proceso, ya que las modificaciones
que se realicen en un mdulo de funcin afectan a todos los
programas que lo utilicen.
SA dispone de un gran n!mero de mdulos de funcin
predefinidos que se pueden utilizar en nuestros programas, a las
que se aadirn los que se desarrollen a medida.
Los mdulos de funcin pertenecen a grupos de funciones, que los
agrupan seg!n su funcionalidad. Los mdulos de funciones de un
mismo grupo de funciones comparten las definiciones de datos
globales.
1.2 Creacin de un grupo de funciones.
ara crear un grupo de funcin iremos por la opcin de men! del
"#$%& 'A()*A&"+
+uta de acceso, - %n el men! principal de SA . /0erramientas
1or2benc3 A#A4 +esumen "bject 'avigator - S%56..
Seleccionaremos /*rupo de funciones7 , pondremos el nombre del
grupo de funciones a 8rear
Ej ZCXX.
Aparecer una ventana el la que definir los atributos del grupo de
funciones.
Grupo de funciones: 'ombre del grupo de funciones.
Texto breve: 9escripcin del grupo de funciones.
%j, /Asignacin de n!meros7.
Respnsable: :suario responsable del grupo de funciones.
1.3 Datos de gestin
Los mdulos de funcin se mantienen utilizando la biblioteca de
funciones.
+uta de acceso, - %n el men! principal de SA . /0erramientas
1or2benc3 A#A4;9esarrollo#iblioteca funciones7 -S%<=..
9esde esta pantalla se pueden crear, modificar o visualizar todas
las partes de un mdulo de funcin marcando las distintas
opciones de objetos parciales.
Ej.: Se crear una funcin que recibir como parmetro de entrada
una sociedad y devover como parmetro de saida e primer
n!mero de ciente desocupado en a taba de cientes ZC"#E$XX
para esa sociedad.
ara crear un mdulo de funcin se deber especificar el nombre
en la pantalla inicial y pulsar el botn de crear
con la opcin /*estin7 activada.
Ej.: Z%&'(E$E)%$*+E)&%C"#E$(E%XX.
Aparecer una pantalla en la que se debe indicar el grupo de
funciones a la que pertenece el mdulo de funcin junto con su la
descripcin de la funcin.
Ej.: ZCXX..
,evueve un n!mero de ciente ibre.
:na vez especificado el grupo de funcin se debern informar los
datos de gestin del mdulo de funcin.
Clasificacin:
Aplicacin, >dulo al que pertenece el programa - ?) ,
00++ @ ..
Ej.: - +utiapicacin.
&eAto breve, 9escripcin de la funcionalidad del mdulo de
funcin.
Ej.: ,eterminacin de n!mero de ciente.

Forma ejec.:
'ormal, >dulo de funcin normal.
Apoyo +emote ?unction 8all, ?unciones de jecucin remota.
%stas funciones pueden ser ejecutadas desde otros
sistemas eAternos a SA.
Actualizable, ?unciones de actualizacin asBncrona. Se
puede especificar el modo de tratamiento de la tarea de
actualizacin -)nicio inmediato, inicio inmediato sin
actualizacin posterior, inico retardado o lanzamiento
colectivo.
Ej.: $orma.
Al finalizar la introduccin de los datos de gestin se deber grabar
el mdulo de funcin.
1.4 Parmetros de la funcin.
1.4.1 ar!metros "mport.
9eberemos indicar la lista de parmetros de entrada de la funcin,
ar!metro:'ombre de los parmetros de entrada.
Tipificacin: &ipo de dato del parmetro.
Tipo Ref. &ipo de referencia - Solo se indicar una de estas dos
!ltimas ..
#alor ropuesto: (alor por defecto cuando se declara como
opcional.
Fla$ opc. )ndicador de parmetro no obligatorio.
Fla$. Tras. )ndicacin de que el parmetro se recibe por
valorCreferencia.
1.4.% ar!metros de salida & 'xport(.
Son los parmetros de salida de funcin.
1.4.) ar!metros & c*an$in$ (:
armetros de entrada y salida del mdulo de funcin. %stos
parmetros devuelven el valor de salida al finalizar la ejecucin del
mdulo de funcin sin errores, manteniendo el valor de entrada en
caso contrario.
Ej.: Se crea e parmetro import '*.)S con e campo de
referencia ZC"#E$XX/'*.)S para recibir a sociedad de ciente0
y e parmetro e1port $C"#E con e campo de referencia
ZC"#E$XX/$C"#E para devover e n!mero de ciente.
1.5 Tablas
Adems de los parmetros de entrada y salida definidos
anteriormente, tambiDn se pueden traspasar tablas por referencia
en la llamada al mdulo de funcin.
ar!metro tabla, 'ombre del parmetro de tabla.
Tipificain , &ipo de datos de la tabla
Tipo ref., %structura de referencia del diccionario de datos
para especificar la estructura del parmetro de tabla.
+pcional, Si se activa este flag no ser obligatorio informar
el parmetro de tabla en la llamada al mdulo de funcin.
1. !"cepciones
Las eAcepciones son una serie de errores predefinidos en los
mdulos de funcin que pueden devolver como valor de retorno de
su ejecucin en la variable del sistema SE;S:#+8.
'xcepcin: Se indicar un nombre descriptivo para cada
posible error predefinido que va a poder retornar el mdulo
de funcin. La posicin en la tabla de eAcepciones se
corresponder con el valor que devolver en la variable SE;
S:#+8 -la primera eAcepcin definida devolver F, la
siguiente G, etc...
or defecto siempre eAiste la eAcepcin /"&0%+S7, aunque
aparezca definida, que se utiliza para devolver un error genDrico y
devuelve en la variable SE;S:#+8 el valor siguiente al de la !ltima
eAcepcin creada.
Ej.: Se crea a e1cepcin S&C#E,2,%#$EX#S(E$(E que ser
devueta cuando a sociedad informada en e parmetro de entrada
correspondiente no e1ista en a taba estndar de sociedades.
ara devolver una eAcepcin desde el cdigo del modulo de
funcin se utiliza la sentencia +A)S% HeAcepcinI, finalizando asB
la ejecucin de la funcin y devolviendo el cdigo asociado a la
eAcepcin en la variable SE;S:#+8. %n caso de devolver una
eAcepcin no se actualiza el valor de salida de los parmetros
80A'*)'*.
8on la clusula +A)S)'* de la instruccin >%SSA*% se puede
dar la posibilidad de que el mdulo de funcin trate el error
mostrando el mensaje de error especificado o que devuelva la
eAcepcin correspondiente sin mostrar el mensaje de error, en
funcin de si se especifica la clusula /%J8%&)"'S7 en su
llamada. Si no se eApecifica la clusula, el mdulo de funcin
mostrar los mensajes de error que tengan la clusula /+A)S)'*7,
finalizando asB la ejecucin del programa que realiza la llamada, en
caso contrario se devolvern las eAcepciones asociadas a los
mensajes traspasando el control de los errores al programa que
realiza la llamada al mdulo de funcin.
1.# Datos globales
Las definiciones globales de datos son compartidas por todos los
mdulos de funcin de un grupo de funciones. Las definiciones de
objetos globales se mantienen a travDs de la opcin de men!
/asar a 9atos globales7.
'ota, Las definiciones globales y el teAto fuente del mdulo de
funcin se codifican realmente en el editor A#AC4 utilizando los
mismos comandos que en la codificacin de listados.
Ej.: Se define a taba estndar de sociedades (334 en a que se
c5equear que a sociedad recibida como parmetro es correcta0 y
a taba de cientes ZC"#E$XX para seeccionar os n!meros de
ciente e1istentes.
#ncude "ZC"#(&6:
7*$C(#&$/6&&" ZC"#. 8+ESS29E/#, ..
------------------------------------------------------------------------
- ,efinicin de tabas
------------------------------------------------------------------------
(2'"ES: (3340 8 Sociedades
ZC"#E$XX. 8 Cientes
Los parmetros definidos en el mdulo de funcin son locales, por
lo tanto solo son visibles en el cuerpo principal de la funcin. ara
que puedan ser utilizados en las subrutinas, sin necesidad de
pasarlos como parmetros, se debern globalizar utilizando la
opcin de men! /&ratar)nterfase*lobalizar parm.7 en la
pantalla de mantenimiento de parmetros de entradaCsalida. ara
eliminar la globalizacin se utiliza la opcin de men!
/&ratar)nterfaseLocalizar parm.7.
1.$ Cdigo fuente
Al crear una subrutina, 3aciendo doble clic2 sobre el nombre en la
llamada, el sistema propondr la creacin de un )nclude que
contendr todas las subrutinas del grupo de funciones.
Al finalizar la introduccin del teAto fuente se deber grabar,
verificar y activar el mdulo de funcin.
Ej.: Se crea a subrutina C:E;*E2)%S&C#E,2, en un nuevo
#ncude "ZC"#734 pasndoe como parmetro de entrada e
parmetro de sociedad0 que c5equear que a sociedad e1iste en
a taba estandar de sociedades0 devoviendo a e1cepcin
S&C#E,2,%#$EX#S(E$(E en caso contrario.
Se crea a subrutina SE"ECC#&$2)%$*+E)&%C"#E$(E
pasndoe como parmetro de entrada e parmetro de sociedad0
que devover como parmetro de saida e primer n!mero de
ciente desocupado para a sociedad indicada.

#ncude "ZC"#*34:
7*$C(#&$ Z%&'(E$E)%$*+E)&%C"#E$(E.
-8//////////////////////////////////////////////////////////////////////
-8-<#nterfase oca
-8 #+6&)(#$9
-8 =2"*E>'*.)S? "#.E ZC"#E$XX/'*.)S
-8 EX6&)(#$9
-8 =2"*E>$C"#E? "#.E ZC"#E$XX/$C"#E
-8 EXCE6(#&$S
-8 S&C#E,2,%#$EX#S(E$(E
-8//////////////////////////////////////////////////////////////////////

- Se c5equea a sociedad
6E)7&)+ C:E;*E2)%S&C#E,2, *S#$9 '*.)S.
- Se seecciona e n!mero de ciente para a sociedad
6E)7&)+ SE"ECC#&$2)%$*+E)&%C"#E$(E *S#$9
'*.)S $C"#E.

E$,7*$C(#&$.
#ncude "ZC"#734:
-///////////////////////////////////////////////////////////////////
---#$C"*,E "ZC"#734 .
-///////////////////////////////////////////////////////////////////
-@/////////////////////////////////////////////////////////////////////-
-@ 7orm C:E;*E2)%S&C#E,2,
-@/////////////////////////////////////////////////////////////////////-
- C5equea que a sociedad recibida como parmetro e1iste en a
taba
- de sociedades.
-//////////////////////////////////////////////////////////////////////-
- //A 6E%'*.)S Sociedad
-//////////////////////////////////////////////////////////////////////-
7&)+ C:E;*E2)%S&C#E,2, *S#$9 =2"*E>6E%'*.)S?
"#.E ZC"#E$XX/'*.)S.

- Se seecciona a sociedad en a taba de sociedades
SE"EC( S#$9"E '*.)S #$(& (334/'*.)S
7)&+ (334
B:E)E '*.)S C 6E%'*.)S.
- Si no se 5a seeccionado se devueve a e1cepcin
S&C#E,2,%#$EX#S(E$(E
#7 SD/S*')C EA 3.
)2#SE S&C#E,2,%#$EX#S(E$(E.
E$,#7.

E$,7&)+. 8 C:E;*E2)%S&C#E,2,
-@/////////////////////////////////////////////////////////////////////-
-@ 7orm SE"ECC#&$2)%$*+E)&%C"#E$(E
-@/////////////////////////////////////////////////////////////////////-
- ,evueve en e parmetro de saida 6S%C"#E e primer n!mero
de ciente
- desocupado en a taba de cientes para a sociedad especificada
en e
- parmetro de entrada 6E%'*.)S.
-//////////////////////////////////////////////////////////////////////-
- //A6E%'*.)S Sociedad
- //A6S%$C"#E $!mero de ciente -
-//////////////////////////////////////////////////////////////////////-
7&)+ SE"ECC#&$2)%$*+E)&%C"#E$(E
*S#$9 =2"*E>6E%'*.)S? "#.E ZC"#E$XX/'*.)S
6S%$C"#E "#.E ZC"#E$XX/$C"#E.

- Se seecciona e nF mayor e1istente en a taba

SE"EC( +2X> $C"#E ?
7)&+ ZC"#E$XX #$(& >ZC"#E$XX/$C"#E?
B:E)E '*.)S C 6E%'*.)S.
- Si se encuentra vaor m1imo
#7 > SD/S*')C C 3 ?.
6S%$C"#E C ZC"#E$XX/$C"#E G 4.
- Si no se encuentra vaor m1imo
6S%$C"#E C 4.
E$,#7.
- Competamos con ceros por a #Hq.
*$62C. 6S%$C"#E.

E$,7&)+. 8 SE"ECC#&$2)%$*+E)&%C"#E$(E
1.% !&ecucin
ara ejecutar un mdulo de funcin desde la biblioteca de
funciones se utiliza la opcin de men! /:tilidades%ntorno test7
-?5. de la biblioteca de funciones o pulsando el botn en la
pantalla inicial.
Ej.: Ejecutar a funcin Z%&'(E$E)%$*+E)&%C"#E$(E%XX
desde a bibioteca de funciones.
ara ejecutar un mdulo de funcin desde un programa se utiliza la
sentencia 8ALL ?:'8&)"' HfuncinI. ara que el sistema nos
proponga la sentencia de la llamada a una funcin con todos sus
parmetros desde el editor A#AC4 utilizaremos el botn ,
marcando la opcin /8ALL ?:'8&)"'7 y especificando el nombre
de la funcin.
'ota, Los campos que se utilizan en la llamada a un mdulo de
funcin deben ser del mismo tipo que los parmetros a los que
3acen referencia -definidos en el mdulo de funcin., sino se
pueden producir errores en la ejecucin del programa.
%. ,lamadas a pro$ramas - utili.acin de la memoria.
2.1 Introduccin
ara intercambiar datos entre diferentes programas se puede utilizar la
memoria SA y la memoria A#AC4.
o >emoria SA.
%s un rea de memoria especifico para cada usuario que se utiliza
para almacenar valores que son retenidos durante toda la sesin
del usuario.
o >emoria A#AC4.
Los valores almacenados en la memoria A#AC4 solamente son
retenidos durante la ejecucin de un programa. %sta memoria es
utilizada para la transferencia de datos entre dos programa cuando
uno de ellos realiza una llamada al otro.
2.2 Parmetros de memoria '(P
%n la memoria SA se pueden almacenar valores asociados a un
identificador de tres caracteres, que se mantienen disponibles 3asta que
finalice la sesin.
%n los campos de las pantallas eAisten tres atributos relacionados con los
parmetros de memoria,
o )d;parm., )dentificador de parmetro para los valores del campo
en la memoria SA. Si el campo est referenciado al diccionario de
datos, se informar con el identificador asociado al dominio del
campo del diccionario.
o S%& arm., Al activar este atributo, el sistema almacenar en la
memoria SA el valor que contiene al campo bajo el identificador
asociado.
o *%& arm., Al activar este atributo, el campo se inicializar con el
valor definido en la memoria SA bajo el identificador asociado en
lugar de utilizar el valor inicial en funcin del tipo de dato del
campo.
9esde un programa se pueden almacenar y recuperar datos de la
memoria SA con las siguientes sentencias,
o S%& A+A>%&%+.
La sentencia S%& A+A>%&%+ )9 HidentificadorI ?)%L9
HcampoI almacena el valor del campo en la memoria SA
asociado al identificador especificado.
o *%& A+A>%&%+.
La sentencia *%& A+A>%&%+ )9 HidentificadorI ?)%L9
HcampoI almacena el valor asociado al identificador en la memoria
SA en el campo especificado.
Los parmetros de memoria se inicializan al comenzar una sesin con los
valores almacenados en los parmetros de usuario, que se mantienen
desde la opcin de men! /Sistema(alores prefijados9atos propios7
-S:<..
o )dp, )dentificador de parmetro.
o (alor parmetro, (alor asociado al identificador.
2.3 'entencias de llamada a programas
ara realizar llamadas a otros programas desde un programa se utilizan
las siguientes sentencias,
o S:#>)& HlistadoI A'9 +%&:+', +ealiza una llamada a un
listado. Si no se especifica la clusula /A'9 +%&:+'7 finalizar el
programa actual y se ejecutar el listado sin regresar al programa
actual.
o 8ALL &+A'SA8&)"' HtransaccinI, +ealiza una llamada a una
transaccin.
Ej.:Se incuir un pusador en a pantaa de atas de cientes para ejecutar
e istado de visuaiHacin de facturas de cientes.
Se incuye un pusador en a barra de pusadores e Status S(2%I333
con e cdiJo de funcin 72C( de tipo E >Comando E1it? y e te1to
=isuaiHar cientes asociado a a teca de funcin 7K.
Se aLade e procesamiento de cdiJo de funcin 72C( en e mduo
62# S2"#)%I3330 reaiHando una amada a istado Z)E6&4XX en
caso de que se seecciones a funcin =isuaiHar facturas
B:E$ <72C(<. 8 =isuaiHar facturas
- Se ejecuta e istado de facturas de cientes
S*'+#( Z)E6&4XX 2$, )E(*)$.
Se ejecuta el listado de facturas de clientes desde la pantalla de altas de
clientes pulsando el botn .
2.4 Intercambio de datos a tra)*s de la memoria (+(P,4
Al realizar una llamada a un programa desde otro programa, se pueden
intercambiar datos a travDs de la memoria A#AC4 utilizando las
siguientes sentencias,
o %J"+& HobjetoI &" >%>"+E )9 HidentificadorI.
Almacena el objeto en la memoria A#AC4 asociado al
identificador especificado, que puede tener una longitud de <G
caracteres. 8ada vez que se eAportan datos bajo un mismo
identificador se sobreescriben los anteriores.
o )>"+& HobjetoI ?+"> >%>"+E )9 HidentificadorI.
+ecupera el objeto asociado al identificador especificado de
la memoria A#AC4.
o ?+%% >%>"+E )9 HidentificadorI.
Libera de la memoria A#AC4 los datos almacenados bajo el
identificador especificado. Si no se especifica la clusula /)97 se
liberar toda la memoria A#AC4.

You might also like