curso afs (baan)

41
Baan OpenWorld 2.1/2.2 Taller: Application Function Server

Upload: wgarciav

Post on 04-Jul-2015

484 views

Category:

Documents


21 download

TRANSCRIPT

Page 1: Curso AFS (BaaN)

Baan OpenWorld 2.1/2.2

Taller: Application Function Server

Page 2: Curso AFS (BaaN)

Introducción

Es el mas adecuado método de integración entre BaaN (Versión c4 o superior) y productos de terceros, conocido como Business Object Interface o BOI. BOI provee una API para acceder a las funcionalidades Baan. Las interfases de alto nivel no pueden acceder a la lógica funciona Baan. La lógica del negocio se lleva a cabo por medio de sesiones que son principalmente basadas en la interfaz del usuario.

BOI proporciona acceso programático a las sesiones por medio de un protocolo del mensaje de bajo nivel. Este mensaje se encapsula en un juego de funciones primitivas llamado Application Function Server (AFS). Es así como BOI codifica los accesos la funcionalidad del negocio por medio del AFS.

Usualmente no es necesario crear el BOI y las AFS desde un comienzo. El BOI puede ser generado usando la sesión ccboi0102m000 o ccboi0104m000 y los AFS-DLL son generados utilizando la sesión ttstpcreatdll. Los BOI y AFS son generados para resolver problemas donde se implementan juegos de funciones especiales de integración. En escenarios de integración complejos se hace necesario la extra-programación para complementar lógicas que no son cubiertas por el pre-código y que requieren un conocimiento de la arquitectura y la programación AFS.

Page 3: Curso AFS (BaaN)

ArquitecturaEl subsiguiente diagrama muestra el rol de AFS en la arquitectura BOI. Se muestra claramente que las llamadas de BOI “hablan” con la sesion baan subyacente a traves de AFS.

BOI/3GL/4GL El programa que desea accesar la funcionaloidad de la sesion. AFS-DLL El DLL, que contiene el paquete de funciones AFS primitivas. Estos DLL son opcionales. AFS API que contiene la implementacion de las funciones AFS primitivas. Este API se comunica con el 4GL-Engine a traves de un protocolo dedicado BCBE para permitir que la sesion ejecute la funcionalidad requerida.

Page 4: Curso AFS (BaaN)

Field bufferEl field buffer, contiene el campo (valores) de la forma, el cual será introducido a la sesión. Cuando ocurre la primera llamada API, a una sesión, este campo es llenado por los valores de la sesión. Estos pueden ser tanto campos de tablas como otros campos de pantalla de la sesión usado para Input.

Los valores de la BOI son almacenados en al field buffer. Cuando la sesión necesita estos valores (en el field loop de la sesión), el 4-GL-Engine toma estos valores del field buffer y los hace disponibles para la sesión.

4GL-EngineEl motor para cada sesión Baan 4GL, la cual se realiza para todas las pantallas, campos, eventos, manejo de maintable y demás. Se tata del mismo motor usado cuando se ejecuta una sesión bajo interfaz de usuario (por ejemplo el BW). Mientras en una sesión normalmente se espera por la interacción del usuario (el llenado de un campo por ejemplo), este ahora espera por un comando AFS. La variable api.mode es valorada en TRUE. Esto permite que el engine 4GL pueda comportarse diferente. Esta variable predefinida se puede usar para identificar si la sesión esta corriendo bajo AFS y conducir otros comportamientos de la sesión.

Session logicLa funcionalidad de la sesion Baan 4GL que se lleva acabo por AFS. Pueden existir mas de una sesion, sobre todo si se lleva a cabo el llamado a una sub-sesion o una sincronizacion entre sesiones de multiocurrencia a simple ocurrencia (ERP solamente). Tengase presenta que solo puede trabajar con un registro a la vez, para sesiones de tipo 2 y 3, solo una ocurrencia es usada.

Page 5: Curso AFS (BaaN)

Pautas para el manejo AFS:

AFS-DLLSe estandariza el uso de las AFS-DLL para el uso en sesiones con AFS, esto facilita la programación y el mantenimiento a los proyectos.Por convención, la nomenclatura para las AFS-DLL a diferencia de otras librerías, son llamadas bajo el mismo código de la sesión, sin embargo una letra “f” es incluida posterior al codigo del modulo.Las AFS-DLL contienen las funciones para poner y recuperar valores en los campos de la sesión subyacente. También contienen funciones para hojear, agregar, modificar y borrar registros en la sesión. Además, contienen funciones misceláneas como colocar respuestas en preguntas y recuperar mensajes de error.

Compilación Para compilar programas que utilizan funciones AFS, es mandatorio atachar al programa principal la librería “ottstpapihand” o en su defecto incluir el codigo de programa “#pragma used dll ottstpapihand” dentro del script

Activación de sesionesLa activación se la sesión ocurre cuando se llama la primera función AFS, sin embargo existen algunas funciones que requieren que la sesión haya sido activada con anterioridad: stpapi.insert() Uno o mas llamados stpapi.put.field() deben haber ocurrido. stpapi.update() Debe haber un registro actual o un llamado stpapi.find() debe haber ocurrido. stpapi.delete() Debe haber un registro actual o un llamado stpapi.find() debe haber ocurrido. stpapi.save() Un llamado stpapi.insert(), stpapi.update() debe haber ocurrido. stpapi.recover() Un llamado stpapi.insert(), stpapi.update() debe haber ocurrido id. stpapi.continue.process() Los parámetros de sesión deben haber sido completados.

Page 6: Curso AFS (BaaN)

Field buffer para inputSolo algunas funciones toman el field buffer como datos de entrada. En el momento de field loop estos valores son tomados por la sesión:

stpapi.insert() Cualquier campo de tabla en las distintas pantallas de la sesiónstpapi.update() Cualquier campo de tabla en las distintas pantallas de la sesiónstpapi.find() Solo campos clavesstpapi.change.view() Solo capos de grupostpapi.continue.process() Solo en pantallas tipo 4,para otras debe haber un registro actualstpapi.print.report() Solo en pantallas tipo 4,para otras debe haber un registro actualstpapi.application.option() Solo en pantallas tipo 4,para otras debe haber un registro actualstpapi.zoom.option() Solo en pantallas tipo 4,para otras debe haber un registro actualstpapi.form.command() Solo en pantallas tipo 4,para otras debe haber un registro actual

Field buffer para outputSolo algunas funciones llenan el field buffer como datos para salida.

stpapi.insert() Field buffer es llenado por lo valores escrito en la tabla (caso # de orden)stpapi.update() Field buffer es llenado por lo valores escrito en la tabla (caso # de orden)stpapi.save() Field buffer es llenado por lo valores escrito en la tabla (caso # de orden) stpapi.recover() Field buffer es llenado por los valores anteriores del registrostpapi.find() Field buffer es llenado por lo valores del registro encontradostpapi.browse.set() Field buffer es llenado por lo valores del registro encontradostpapi.browse.view() Field buffer es llenado por los valores del registro actualstpapi.synchronize.dialog() Field buffer es llenado por los valores del registro actual de la sesión de

simple ocurrencia (solo modo Modify o Display)

Page 7: Curso AFS (BaaN)

Administración de TextosLa administración de textos no es soportada por AFS.

Page 8: Curso AFS (BaaN)

EL 4GL engine primitivo (Instrucciones)

En la mayoría de las funciones AFS donde una sesión es incluida como parámetro, la sesión es activada automáticamente. Hay otras funciones las cuales requieren que la sesión haya sido activada con anterioridad. Estas funciones devolverán un error si son llamadas antes que la sesión haya sido activada. Esto implica que las funciones (de este tipo) subsecuentes son enviadas a la misma instancia actual.Las sesiones activadas vía AFS deben ser sesiones de tipo 4GL o en su defecto de 3GL por lo que sesiones sin pantallas y script de tipo 3GL (sin prog estandar) no pueden ser manejadas por la tecnología AFS.

Page 9: Curso AFS (BaaN)

Para Obtener un valor de una sesión(stpapi.get.field)

Sintaxis:stpapi.get.field (string sesión, string campo, ref string valor, [long elemento])

Argumentos:sesión Nombre de la sesión sobre la que se desea buscar el valor.campo Nombre del campo del cual se desea el valor.valor Variable string que contendrá el valor retornado. Para campos enumerados, se

retorna el valor numérico de este y para campos de fecha se retorna el valor internoUTC.

elemento Numero del elemento que se desea para casos de variables tipo arreglos.

Ejemplos:

stpapi.get.field("dtfsa1101s000", "dtfsa100.name", o.name)- Se obtiene el valor hallado en el campo dtffsa100.name de la sesion dtffsa1101s000 y se coloca en la variable o.name.

stpapi.get.field("dtfsa1101s000", "balance", o.balance)- Se obtiene el valor hallado en el campo balance de la sesión dtffsa1101s000 y se coloca en la variable o.balance. Note que esta vez se trata de una variable de pantalla y no un campo de tabla.

Page 10: Curso AFS (BaaN)

Para establecer un valor en un campo de una sesión(stpapi.put.field)

Sintaxis:stpapi.put.field (string sesión, string campo, ref string valor, [long elemento])

Argumentos:sesión Nombre de la sesión sobre la que se establecer el valor.campo Nombre del campo al cual se desea colocar el valor.valor Variable string que contendrá el valor a colocar. Para campos enumerados, se

retorna el valor numérico de este y para campos de fecha se retorna el valor internoUTC.

elemento Numero del elemento que se desea para casos de variables tipo arreglos.

Ejemplos:

stpapi.put.field("dtfsa1101s000", "dtfsa100.name", o.name)- Se coloca el valor del campo o.name en el campo dtffsa100.name de la sesión.

Page 11: Curso AFS (BaaN)

Para insertar un registro en una sesión(stpapi.insert)

Sintaxis:stpapi.insert (string sesión, long do.save, ref string err.mess)

Argumentos:sesión Nombre de la sesión sobre la que se ejecuta el comando.do.save Es un flag que indica si un commit debe ser ejecutado inmediatamente o no. Si el

valor del flag es “1” entonces un db.update es ejecutado. Si el valor se establece en“0” entonces debe ser ejecutado posteriormente un stpapi.save()

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:0 El registro no pudo ser insertado o si falla el salvado.1 El registro pudo ser insertado y salvado con éxito.

Ejemplos:

retval = stpapi.insert("dtfsa1101s000", true, err.mess)- Si retval = 1 el registro se guardo con éxito.- Si retval = 0 el registro no ha sido guardado. En este caso la variable err.mess guarda el

mensaje de error.

(N/O)

Willian Garcia
Los mensajes de error retornados son: - Sesion no disponible - Comando no habilitado, no ha sido posible. - Sesion inicial no sincronizada (solo ERP) - Algun mansaje de error propio de la sesion
Page 12: Curso AFS (BaaN)

Para actualizar un registro en una sesión(stpapi.update)

Sintaxis:stpapi.update (string sesión, long do.save, ref string err.mess)

Argumentos:sesión Nombre de la sesión sobre la que se ejecuta el comando.do.save Es un flag que indica si un commit debe ser ejecutado inmediatamente o no. Si el

valor del flag es “1” entonces un db.update es ejecutado. Si el valor se establece en“0” entonces debe ser ejecutado posteriormente un stpapi.save()

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:0 El registro no pudo ser actualizado o si falla el salvado.1 El registro pudo ser actualizado y salvado con éxito.

Ejemplos:

retval = stpapi.update("dtfsa1101s000", true, err.mess)- Si retval = 1 el registro se guardo con éxito.- Si retval = 0 el registro no ha sido guardado. En este caso la variable err.mess guarda el

mensaje de error.

(N/O)

Willian Garcia
Los mensajes de error retornados son: - Sesion no disponible - Comando no habilitado, no ha sido posible. - Sesion inicial no sincronizada (solo ERP) - Algun mansaje de error propio de la sesion
Page 13: Curso AFS (BaaN)

Para borrar un registro en una sesión(stpapi.delete)

Sintaxis:stpapi.delete (string sesión, long do.save, ref string err.mess)

Argumentos:sesión Nombre de la sesión sobre la que se ejecuta el comando.do.save Es un flag que indica si un commit debe ser ejecutado inmediatamente o no. El valor

falso no es soportado. El false existe en sintaxis, por compatibilidad, pero siempre será ejecutado como true.

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:0 El registro no pudo ser eliminado.1 El registro pudo ser eliminado con éxito.

Ejemplos:

retval = stpapi.delete("dtfsa1101s000", true, err.mess)- Si retval = 1 el registro se eliminó con éxito.- Si retval = 0 el registro no ha sido eliminado. En este caso la variable err.mess guarda el

mensaje de error.

(N/O)

Willian Garcia
Los mensajes de error retornados son: - Sesion no disponible - Comando no habilitado, no ha sido posible. - Algun mansaje de error propio de la sesion
Page 14: Curso AFS (BaaN)

Para salvar los cambios a un registro en una sesión(stpapi.save)

Sintaxis:stpapi.save (string sesión, ref string err.mess)

Argumentos:sesión Nombre de la sesión sobre la que se ejecuta el comando.

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:0 El registro no pudo ser salvado.1 El registro pudo ser salvado con éxito.

Ejemplos:

retval = stpapi.save("dtfsa1101s000", err.mess)- Si retval = 1 el registro se eliminó con éxito.- Si retval = 0 el registro no ha sido eliminado. En este caso la variable err.mess guarda el

mensaje de error.

Page 15: Curso AFS (BaaN)

Para deshacer los cambios a un registro en una sesión(stpapi.recover)

Sintaxis:stpapi.recover (string sesión, ref string err.mess)

Argumentos:sesión Nombre de la sesión sobre la que se ejecuta el comando.

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:0 El registro no pudo ser recobrado.1 El registro pudo ser recobrado con éxito.

Ejemplos:

retval = stpapi.recover("dtfsa1101s000", err.mess)- Si retval = 1 el registro se recupero con éxito.- Si retval = 0 el registro no ha sido recuperado. En este caso la variable err.mess guarda el

mensaje de error.

Page 16: Curso AFS (BaaN)

Para ubicar un registro en una sesión(stpapi.find)

Sintaxis:Stpapi.find (string sesión, ref string err.mess)

Argumentos:sesión Nombre de la sesión sobre la que se ejecuta el comando.

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:0 Registro no encontrado.1 El registro fue encontrado con éxito.

Ejemplos:

retval = stpapi.find("dtfsa1101s000", err.mess)- Si retval = 1 el registro fue encontrado.- Si retval = 0 el registro no ha sido encontrado, la tabla esta vacía o ocurrió un error. err.mess

guarda el mensaje de error.

(N/O)

Page 17: Curso AFS (BaaN)

Ejemplos Primera parte

Page 18: Curso AFS (BaaN)

Para buscar un registro en una sesión(stpapi.find)

stpapi.put.field("dtfsa1101s000", "dtfsa101.seno", str$(i.seno))ret = stpapi.find("dtfsa1101s000", error.msg)if ret <> 1 then message("Record not found")endif

Page 19: Curso AFS (BaaN)

Para obtener el valor de un registro en una sesión(stpapi.get.field)

stpapi.put.field("dtfsa1101s000", "dtfsa100.seno", str$(i.seno))retval = stpapi.find("dtfsa1101s000", error.msg)if retval = 1 then

stpapi.get.field("dtfsa1101s000", "dtfsa100.name", o.name)stpapi.get.field("dtfsa1101s000", "balance", o.balance)

endif

Page 20: Curso AFS (BaaN)

Para establecer el valor de un campo en una sesión(stpapi.put.field)

stpapi.put.field("dtfsa1201s000", "seno.f", str$(i.seno))stpapi.put.field("dtfsa1201s000", "seno.t", str$(i.seno))stpapi.put.field("dtfsa1201s000", "proc.date", str$(date.num()))stpapi.put.field("dtfsa1201s000", "do.update", str$(etol(dtyesno.no)))stpapi.continue.process("dtfsa1201s000", error.msg)

Page 21: Curso AFS (BaaN)

Para insertar un registro en una sesión(stpapi.insert)

stpapi.put.field("dtfsa1101s000", "dtfsa101.seno", str$(i.seno)) stpapi.put.field("dtfsa1101s000", "dtfsa101.name", name)retval1 = stpapi.insert("dtfsa1101s000", true, error.msg)if not retval1 then

retval2 = stpapi.recover("dtfsa1101s000", recover.msg) endif

Page 22: Curso AFS (BaaN)

Para actualizar un registro en una sesión(stpapi.update)

stpapi.put.field("dtfsa1101s000", "dtfsa101.seno", str$(i.seno))ret = stpapi.find("dtfsa1101s000", error.msg)if ret = 1 thenstpapi.put.field("dtfsa1101s000", "dtfsa101.name", name)retval1 = stpapi.update("dtfsa1101s000", true, error.msg)

if not retval1 thenretval2 = stpapi.recover("dtfsa1101s000", recover.msg)

endifendif

Page 23: Curso AFS (BaaN)

Para borrar un registro en una sesión(stpapi.delete)

stpapi.put.field("dtfsa1101s000", "dtfsa101.seno", str$(i.seno))ret = stpapi.find("dtfsa1101s000", error.msg)if ret = 1 thenretval1 = stpapi.delete("dtfsa1101s000", true, error.msg)

if not retval1 thenretval2 = stpapi.recover("dtfsa1101s000", recover.msg)

endifendif

Page 24: Curso AFS (BaaN)

Para salvar un registro en una sesión(stpapi.save)

stpapi.put.field("dtfsa1101s000", "dtfsa101.seno", str$(i.seno))ret = stpapi.find("dtfsa1101s000", error.msg)if ret = 1 then stpapi.put.field("dtfsa1101s000", "dtfsa101.name", name) retval1 = stpapi.update("dtfsa1101s000", false, error.msg) if retval1 then retval2 = stpapi.save("dtfsa1101s000", false, error.msg) endif if not retval1 or not retval2 then

retval3 = stpapi.recover("dtfsa1101s000", recover.msg) endifendif

Page 25: Curso AFS (BaaN)

Ejemplos Primera parte (fin)

Page 26: Curso AFS (BaaN)

Para marcar un registro en una sesión(stpapi.mark)

Sintaxis:Stpapi.mark (string sesión, ref string err.mess)

Argumentos:sesión Nombre de la sesión sobre la que se ejecuta el comando.

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:0 Registro no marcado.1 El registro fue marcado con éxito.

Ejemplos:

retval = stpapi.mark("dtfsa1101s000", err.mess)- Si retval = 1 el registro fue marcado.- Si retval = 0 el registro no ha sido marcado. err.mess guarda el mensaje de error.

(N/O)

Page 27: Curso AFS (BaaN)

Para visualizar un registro en una sesión(stpapi.browse.set)

Sintaxis:stpapi.browse.set (string sesión, string opción, ref string err.mess)

Argumentos:sesión Nombre de la sesión sobre la que se ejecuta el comando.

opción Indica el tipo de opción browse a ejecutar. Valores posibles son: first.set, next.set, prev.set, y last.set que corresponden a las acciones primer registro, siguiente registro, registro previo y ultimo registro respectivamente.

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:0 Registro no encontrado.1 El registro fue encontrado con éxito.

Ejemplos:

retval = stpapi.brows.set("dtfsa1101s000“, “next.set”, err.mess)- Si retval = 1 el registro fue encontrado.- Si retval = 0 el registro no ha sido encontrado. err.mess guarda el mensaje de error.

Page 28: Curso AFS (BaaN)

Para establecer un nuevo grupo en una sesión (pant. Tipo 3)(stpapi.change.view)

Sintaxis:stpapi.change.view (string sesión, ref string err.mess)

Argumentos:sesión Nombre de la sesión sobre la que se ejecuta el comando.

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:0 Registro no encontrado.1 El grupo fue encontrado con éxito.2 Fue encontrado un grupo siguiente.

Ejemplos:

stpapi.put.field("dtfsa1501m000", "dtfsa101.seno", str$(i.seno))ret = stpapi.change.view("dtfsa1501m000", error.msg)

Para hacer uso de esta función es necesario haber llenado los campos claves de la sesión.

Page 29: Curso AFS (BaaN)

Para cambiar la vista de grupo en una sesión (pant. Tipo 3)(stpapi.browse.view)

Sintaxis:stpapi.browse.view (string sesión, string opción, ref string err.mess)

Argumentos:sesión Nombre de la sesión sobre la que se ejecuta el comando.

Opcion Accion a ejecutar. Valor permitido: first.view, next.view, prev.view y last.view

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:0 Vista no encontrada.1 Nueva vista de grupo fue encontrado con éxito.

Ejemplos:

ret = stpapi.browse.view("dtfsa1501m000“, “prev.view”, error.msg)

Page 30: Curso AFS (BaaN)

Para sincronizar sesiones multi-ocurrencia con simple-ocurrencia(stpapi.synchronize.dialog) (Solo ERP)

Sintaxis:stpapi.synchronize.dialog.(string sesión, string modo, ref string err.mess)

Argumentos:sesión Nombre de la sesión sobre la que se ejecuta el comando.

modo Modo en el cual será sincronizada la sub-sesión. Valor permitido: Add, Modify, “”

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:0 La sesión o pudo ser sincronizada.1 Sesión sincronizada con éxito.

Ejemplos:

ret = stpapi.synchronize.dialog("dtfsa1501m000“, “modify”, error.msg)

Page 31: Curso AFS (BaaN)

Para ejecutar comando “continuar” en sesion(stpapi.continue.process) (Solo Baan IV)

Sintaxis:stpapi.continue.process(string sesión,ref string err.mess)

Argumentos:

sesión Nombre de la sesión sobre la que se ejecuta el comando.

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:Ninguno

Ejemplos:

stpapi.continue.process("dtfsa1501m000“, error.msg)

(Si se trata de una sesión de reporte, los datos del mismo deben ser establecidos antes)

Page 32: Curso AFS (BaaN)

Para establecer parámetros de reporte(stpapi.set.report) (Sesiones de mas de un reporte)

Sintaxis:stpapi.set.report(string sesión, string reporte, string dispositivo, ref string err.mess)

Argumentos:

sesión Nombre de la sesión sobre la que se ejecuta el comando.

Reporte Un código de reporte valido.

Dispositivo Un código de dispositivo valido.

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:Ninguno

Ejemplos:

stpapi.set.report("dtfsa1401m000“, “rdtfsa140111000”, “windows”, error.msg)

(Estos parámetros deben ser establecidos antes del uso de: stpapi.print.report(), tpapi.continue.process(), o stpapi.form.command() )

Page 33: Curso AFS (BaaN)

Para enviar comando print a la sesión(stpapi.print.report) (Solo Baan IV)

Sintaxis:stpapi.print.report(string sesión, ref string err.mess)

Argumentos:

sesión Nombre de la sesión sobre la que se ejecuta el comando.

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:Ninguno

Ejemplos:

stpapi.print.report("dtfsa1401m000“, error.msg)

( Este comando envía un execute(prind.data) a la sesión)

Page 34: Curso AFS (BaaN)

Para finalizar una sesión(stpapi.end.session)

Sintaxis:stpapi.end.session(string sesión, [ref string err.mess])

Argumentos:

sesión Nombre de la sesión sobre la que se ejecuta el comando.

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:Ninguno

Ejemplos:

stpapi.end.session("dtfsa1401m000“, error.msg)

( En el caso de sub-sesiones, estas deben ser finalizadas antes que la sesión principal)

Page 35: Curso AFS (BaaN)

Para ejecutar una opción de usuario(stpapi.application.option)(Solo Baan IV)

Sintaxis:stpapi.application.option(string sesión, long form, long opción, [ref string err.mess])

Argumentos:

sesión Nombre de la sesión sobre la que se ejecuta el comando.

Form Pantalla en la que se encuentra el comando de usuario a ejecutar.

Opción Numero de opción del usuario (choice.user.x), 0..9

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:Ninguno

Ejemplos:

stpapi.application.option("dtfsa1401m000“,2,3, error.msg)

Page 36: Curso AFS (BaaN)

Para ejecutar una opción de zoom(stpapi.zoom.option)(Solo Baan IV)

Sintaxis:stpapi.zoom.option(string sesión, long form, string sesión, [ref string err.mess])

Argumentos:

sesión Nombre de la sesión sobre la que se ejecuta el comando.

form Pantalla en la que se encuentra el campo con el zoom a ejecutar.

sesión Código de la sesión zoom, si el zoom especifica un menú de varias sesiones, debe colocarse el nombre de la sesión del menú

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:Ninguno

Ejemplos:

stpapi.zoom.option("dtfsa1501m000", 2, "dtfsa1201m000", error.msg)

Page 37: Curso AFS (BaaN)

Para ejecutar un comando de sesión(stpapi.form.command)(Solo ERP)

Sintaxis:stpapi.form.command(string sesión, long tipo, string comando, [ref string err.mess])

Argumentos:

sesión Nombre de la sesión sobre la que se ejecuta el comando.

tipo Tipo de comando, 2-sesión, 5-función.

sesión Código de la sesión o de la función a ser ejecutada.

err.mess Variable string que contendrá el mensaje de error si el comando no es ejecutado con éxito.

Valor de retorno:Ninguno

Ejemplos:

stpapi.form.command("dtfsa1501m000", 5, "calculate.vat", error.msg)

(Si el comando es de tipo sesión, un stpapi.handle.subproc() debe ser ejecutado antes)

Page 38: Curso AFS (BaaN)

Para especificar acciones para sub-sesiones(stpapi.handle.subproc)(Solo ERP)

Sintaxis:stpapi.handle.subproc(string sesión, string subproc, string acción)

Argumentos:

sesión Nombre de la sesión sobre la que se ejecuta el comando.

subproc Código de la sub-sesión de la sesión o del menú que va a ser activada.

acción Kill , el proceso hijo muere apenas comienza.Ignore , Se ignora el proceso hijo, solo que el padre espera por el termino de este.Add , El proceso hijo se agrega al control del padre, este puede ser manipulado.Send, todas las llamadas del hijo serán a través del nombre del proceso. padre

Valor de retorno:Ninguno

Ejemplos:

stpapi.handle.subproc("dtfsa1501m000", "dtfsa1201m000", "add") (Si el zoom es de tipo sesión, un stpapi.handle.subproc() debe ser ejecutado antes)

Page 39: Curso AFS (BaaN)

Para obtener mensajes de sesiones(stpapi.get.mess.code)

Sintaxis:stpapi.get.mess.code(string sesión, string err.mess)

Argumentos:

sesión Nombre de la sesión sobre la que se ejecuta el comando.

err.mess Variable string que contendrá el mensaje de error.

Valor de retorno:Código de error. Err.mess contiene un valor de vacio si no existen errores.

Ejemplos:

error.code = stpapi.get.mess.code("dtfsa1101s000", true, error.msg) (Los mensajes son devueltos en el orden inverso a como son generados originalmente por la sesión)

Page 40: Curso AFS (BaaN)

Para contestar preguntas en sesiones(stpapi.enum.answer)

Sintaxis:stpapi.enum.answer(string sesión, string pregunta, bset respuesta)

Argumentos:

sesión Nombre de la sesión sobre la que se ejecuta el comando.

pregunta Código de la pregunta que se presenta en la interfaz de usuario.

respuesta Valor del enumerado que representa la respuesta

Valor de retorno:Ninguno.

Ejemplos:

stpapi.enum.answer("dtfsa1101s000", "dtfsa1101a", tcyesno.yes) (Si la misma pregunta es hecha mas de una vez, esta debe ser contestada solo una)

Page 41: Curso AFS (BaaN)