Guru30
28th August 2008, 09:09
Tengo 1 sesión secundaria donde he insertado varios registros y mediante APIs quiero que se ejecute el botón de continuar y el mensaje que aparece después también dejarlo a sí. Esto me llevaría a otra sesión donde debo de insertar varios registros.
¿Me podríais ayudar para saber cómo puedo poner los botones a sí e insertar algún registro en la otra sesión?
Guru30
28th August 2008, 10:58
Yo escribo esto pero sé que me falta algo para que funcione bien o lo que he puesto está mal. Gracias
stpapi.enum.answer("tisfc0202s000","tisfc02023",tcyesno.yes) -à Esto me debería poner el botón de continuar a sí
stpapi.enum.answer("tisfc0202s000","tisfc02029",tcyesno.yes) à Esto pone el mensaje a sí
stpapi.put.field("tdltc0101s000", "tdltc001.item", "tialg903.item" ) à Esto pondría en la otra sesión el valor del campo
stpapi.end.session("tdltc0101s000") à Esto la finalizaría
igdigd
29th August 2008, 08:59
Hola,
supongo que tienes arrancada tambien la subsesión desde AFS, en caso contrario debes hacer
stpapi.handle.subproc("tdltc0101s000","tisfc0202s000","add")
stpapi.continue.process("tdltc0101s000",o.error)
y despues mandar el valor de tdltc001.item
Posteriormente tienes que cerrar la subsesión y la sesión.
De todas formas hay en algunos casos que no funciona, si el programa origen contiene zoom.to.session deberas condicionarlo a que no sea api.mode y arrancarlo desde donde estas llamando por AFS.
Espero que te sea de ayuda.
Guru30
29th August 2008, 09:40
En realidad hago esto, pero tengo varios errores. Para las funciones get me pone que tienen que ser llamadas por referencia:
stpapi.update("tisfc0102m000", true, error.msg ) --->
stpapi.continue.process("tisfc0102m000",error.msg)--> Continuo
stpapi.end.session("tisfc0102m000")--> Fin
stpapi.update("tisfc0202m000", true, error.msg )
stpapi.continue.process("tisfc0202m000",error.msg)
stpapi.enum.answer("tisfc0202m000","tisfc02023",tcyesno.yes)
stpapi.enum.answer("tisfc0202m000","tisfc02029",tcyesno.yes)
stpapi.handle.subproc("tisfc0202m000","tdilc4113s000","add")
stpapi.end.session("tisfc0202m000")
|*******Probar a insertar la cantidad de dqua form mediante APIs
stpapi.get.field("tdilc4113s000","dqua.form",str$(dqua.form)) --> Aquí me da errores y no me consigue los valores........
dqua.form = dqua.form + primera
stpapi.put.field("tdilc4113s000","dqua.form",str$(dqua.form))
stpapi.insert("tdilc4113s000","dqua.form",str$(dqua.form))
stpapi.update("tdilc4113s000", true, error.msg )
|stpapi.continue.process("tdilc4113s000",error.msg)
stpapi.end.session("tdilc4113s000")
|********************************
igdigd
29th August 2008, 10:47
Te mando un ejemplo que sí funciona, por si te sirve
stpapi.put.field("tisfc0101m000","tisfc001.pdno",str$(tisfc001.pdno))
ret2 = stpapi.find("tisfc0101m000",err.msg)
if ret2 = 1 then
stpapi.handle.subproc("tisfc0101m000","tcmcs9551s00b","add")
stpapi.put.field("tisfc0101m000","tisfc001.dldt", str$(new.finish.date))
stpapi.put.field("tisfc0101m000","tisfc001.prdt", str$(new.start.date))
retval1 = stpapi.update("tisfc0101m000", true, err.msg)
stpapi.put.field("tcmcs9551s00b","tcmcs951.recd", "01 ")
ret2 = stpapi.find("tcmcs9551s00b",err.msg)
if ret2 = 1 then
stpapi.end.session("tcmcs9551s00b")
endif
if not retval1 then
retval2 = stpapi.recover("tisfc0101m000", recover.msg)
endif
stpapi.end.session("tisfc0101m000")
endif
igdigd
29th August 2008, 10:52
[QUOTE=igdigd;145460]Te mando un ejemplo que sí funciona, por si te sirve
stpapi.put.field("tisfc0101m000","tisfc001.pdno",str$(tisfc001.pdno))
ret2 = stpapi.find("tisfc0101m000",err.msg)
if ret2 = 1 then
stpapi.handle.subproc("tisfc0101m000","tcmcs9551s00b","add")
stpapi.put.field("tisfc0101m000","tisfc001.dldt", str$(new.finish.date))
stpapi.put.field("tisfc0101m000","tisfc001.prdt", str$(new.start.date))
retval1 = stpapi.update("tisfc0101m000", true, err.msg)
stpapi.put.field("tcmcs9551s00b","tcmcs951.recd", "01 ")
ret2 = stpapi.find("tcmcs9551s00b",err.msg)
if ret2 = 1 then
stpapi.end.session("tcmcs9551s00b")
endif
if not retval1 then
retval2 = stpapi.recover("tisfc0101m000", recover.msg)
endif
stpapi.end.session("tisfc0101m000")
endif
Tienes que tener en cuenta que para recuperar un valor de una sesión previamente has tenido que hacer el find del registro.
Otro ejemplo:
stpapi.put.field("tdxxx0110m002","tdrpl105.orno",str$(i.orno))
ret = stpapi.find("tdxxx0110m002",o.error)
if ret <> 1 then
stpapi.end.session("tdxxx0110m002")
o.pono = 0
return(false)
endif
stpapi.handle.subproc("tdxxx0110m002","tdxxx0111s002","add")
stpapi.continue.process("tdxxx0110m002",o.error)
|LLamar a tdxxx0111s002 para insertar registro
stpapi.put.field("tdxxx0111s002","tdrpl100.orno",str$(i.orno))
stpapi.put.field("tdxxx0111s002","tdrpl100.pono",str$(0))
ret = stpapi.find("tdxxx0111s002",o.error)
if ret <> 1 then
stpapi.put.field("tdxxx0111s002","tdrpl100.item",i.item)
stpapi.put.field("tdxxx0111s002","tdrpl100.orno",str$(i.orno))
stpapi.put.field("tdxxx0111s002","tdrpl100.rwar",tdrpl105.rwar)
stpapi.put.field("tdxxx0111s002","tdrpl100.rloc",i.loca.o)
stpapi.put.field("tdxxx0111s002","tdrpl100.pono",str$(0))
stpapi.put.field("tdxxx0111s002","tdrpl100.dwar",tdrpl105.dwar)
stpapi.put.field("tdxxx0111s002","tdrpl100.dloc",i.loca.d)
stpapi.put.field("tdxxx0111s002","tdrpl100.cntr","")
stpapi.put.field("tdxxx0111s002","tdrpl100.twar",tdrpl105.twar)
stpapi.put.field("tdxxx0111s002","tdrpl100.odat",str$(tdrpl105.odat))
stpapi.put.field("tdxxx0111s002","tdrpl100.revi","")
stpapi.put.field("tdxxx0111s002","tdrpl100.pddt",str$(tdrpl105.pddt))
stpapi.put.field("tdxxx0111s002","tdrpl100.cuni",tiitm001.cuni)
stpapi.put.field("tdxxx0111s002","tdrpl100.oqua",str$(i.qty))
stpapi.put.field("tdxxx0111s002","tdrpl100.prdt",str$(tdrpl105.prdt))
stpapi.put.field("tdxxx0111s002","tdrpl100.odat",str$(tdrpl105.odat))
stpapi.put.field("tdxxx0111s002","tdrpl100.ctrj","")
stpapi.put.field("tdxxx0111s002","tdrpl100.cprj.o",i.cprj.o)
stpapi.put.field("tdxxx0111s002","tdrpl100.cprj.d",i.cprj.d)
stpapi.put.field("tdxxx0111s002","tdrpl100.imnc",str$(i.imnc))
stpapi.put.field("tdxxx0111s002","form.bulto",str$(i.bulto))
stpapi.continue.process("tdxxx0111s002",o.error)
ret = stpapi.insert("tdxxx0111s002",1,o.error)
stpapi.get.field("tdxxx0111s002","tdrpl100.pono",wpono )
o.pono = lval(wpono)
endif
stpapi.end.session("tdxxx0111s002")
stpapi.end.session("tdxxx0110m002")
Guru30
29th August 2008, 11:13
Te entiendo pero si tengo un campo de pantalla que es un double sacar su valor y actualizarlo con otro?
Guru30
29th August 2008, 11:13
Te entiendo pero si tengo un campo de pantalla que es un double, cómo puedo sacar su valor y actualizarlo con otro valor?
igdigd
29th August 2008, 11:36
Los datos que se mandan y se recogen siempre van con formato string, despues tu los tienes que convertir al formato que más te interese.
En esta sesión, por ejemplo, se esta insertando una linea de una orden y yo recojo el valor de la linea (que si lo haces manualmente es automatico) para posteriormente utilizarlo
ret = stpapi.insert("tdxxx0111s002",1,o.error)
stpapi.get.field("tdxxx0111s002","tdrpl100.pono",wpono )
o.pono = lval(wpono)
En este caso wpono y o.pono están definido como
domain tcmcs.str3 wpono
domain tcpono o.pono
Saludos
Guru30
29th August 2008, 12:53
Y si tengo una pantalla de una sesión 2ª que tiene dos botones, que uno de ellos actúa como un continue pero no lo es, cómo puedo hacer que ese boton se ejecuté?
igdigd
29th August 2008, 13:48
Sería algo así,
Execute session user option
SYNTAX
void stpapi.application.option(string session, long form, long option, ref string
err.mesg)
ARGUMENTS
session Name of the session this command is executed on.
form Form number on which user option must be executed. User
options (the commands on the Special menu) are defined per
form.
option The option number to be executed. User options appear as
choice.user.x options in the Baan 4GL code where x is a
number that ranges from 0 to 9. The value of x that corresponds
to the option that you want to activate is provided as the value
of this parameter.
err.mesg This parameter will contain the text of the error message if the
function cannot complete normally.
DESCRIPTION
This executes the specified user option in the session.
RETURN VALUES
None
EXAMPLE
stpapi.put.field("dtfsa1501m000", "dtfsa101.seno", str$(i.seno))
ret = stpapi.find("dtfsa1501m000", error.msg)
if ret = 1 then
stpapi.application.option("dtfsa1501m000", 2, 3, error.msg)
endif
Explanation:
For the record found, choice user.3 is executed on the second form.
Te adjunto el manual de AFS por si no lo tienes
Guru30
29th August 2008, 15:27
Gracias ya te contaré
fuenarq
11th January 2009, 00:30
Sres, Saludos
Amigo si alguno de Ud tiene un manual de Baan de AFS o cualquier otro que me facilite se lo agradeseria altamente..
Arquimedes Fuentes.
igdigd
12th January 2009, 08:38
El manual está en la respuesta anterior. Se titula AFS_nuevo.
fuenarq
13th January 2009, 17:25
Amigos estoy haciendo unas interfases (Baan 5) de creacion de ordenes de ventas con AFSy Necesito colocarle en descuento adicional a la orden el cual se encuentra en la pantalla 2 (ventas). Dto de la orden.
el campo es tdsls400.odis, se lo estoy colocando como ven a continuacion pero crea el pedido sin descuento.
como hago para indicarle al programa que es la pantalla 2 para que me lo asuma.
stpapi.synchronize.dialog("tdsls4500m000","add",error.msg.lines)
stpapi.put.field("tdsls4500m000","tdsls400.ofbp", strip$(new.ofbp))
stpapi.put.field("tdsls4500m000","tdsls400.odis", strip$(new.odis))
if stpapi.insert("tdsls4500m000", true, error.msg.lines) = 1 then
stpapi.get.field("tdsls4500m000","tdsls400.orno", new.orno)
else
|message("%s", error.msg.lines)
endif
stpapi.end.session("tdsls4500m000")