petguego
5th January 2006, 22:59
hola amigos, tengo una duda con la función stpapi.get.mess.code(), en el manual aparece que esta función tiene 2 argumentos "string stpapi.get.mess.code(string session [, ref string err.mesg])", pero en el compilador me acepta solo uno.

Lo estoy ocupando de la siguiente forma:

function extern void fsls4102m000.ingresar.detalle.ov(
const domain tcseak seab.p,
const domain tcqsl1 oqua.p,
const domain tcpric pric.p,
const domain tccwar cwar.p)
{
domain tcmcs.str100 err.msg
domain tcdsca error.code

stpapi.put.field("tdsls4102s000", "codbarr.o", seab.p)
stpapi.put.field("tdsls4102s000", "tdsls041.oqua", str$(oqua.p))
error.code = stpapi.get.mess.code("tdsls4102s000") <-- Aqui obtengo el error que corresponde cuando no hay stock, muestra un mensaje y despues muestra un menu
if error.code = "tdsls11086" then
stpapi.zoom.option("tdsls4102s000", 1, "tdsls4801s000", err.msg)
endif
stpapi.put.field("tdsls4102s000", "tdsls041.pric", str$(pric.p))
stpapi.put.field("tdsls4102s000", "tdsls041.cwar", cwar.p)
stpapi.insert("tdsls4102s000", true, err.msg)
|stpapi.save("tdsls4102s000", err.msg)
}

El problema es que en el punto indicado no devuelve nincun error y cuando se ejecuta la funcion stpapi.insert el programa queda colgado, por favor indicarme si esta bien programadas las instrucciones stpapi.get.mess.code y stpapi.zoom.option


Gracias
Atte
PGG

petguego
12th January 2006, 19:51
Nadie me ayuda con esto????

dorleta
18th January 2006, 10:43
Pues mira, así a primera vista puedes tener los siguientes problemas.


Estás intentando manejar una sesión que no es principal ( subsesión ) que en condiciones normales sería llamada desde la sesión de mantener cabeceras de órdenes.

¿que deberías hacer?

primero crear la api de cabeceras, donde tendrás que hacer un insert o un find dependiendo si tienes o no creada ya la cabecera y después simular el continuar.

Más o menos sería algo así:

stpapi.put.field("tdsls4101m000", "tdsls040.orno", str$(orno))
ret = stpapi.find("tdsls4101m000", error.msg)
if ret = 1 then
stpapi.handle.subproc("tdsls4102s000", "tdsls4101m000", "add")
stpapi.continue.process("tdsls4101m000", error.msg)

***

endif



En los asteriscos iría tú código. De todas formas cuando hagas un insert no está demás añadir algo como:

retval = stpapi.insert("tdsls4102s000", true, o.mess)
if not retval then
retval = stpapi.recover("tdsls4102s000", dummy.msg) endif
stpapi.end.session("tdsls4102s000")
return(isspace(o.mess))

Por último , algunas instrucciones que contiene ese programa y otros de aspecto similares tales como swutich.to.process, wait.for.switch pueden desactivarse mediante la variaple api.mode (true si estamos manejando la sesión en via api ).

Suerte.

petguego
19th January 2006, 15:16
Gacias dorleta , muy amable!!! lo intentare denuevo, ya estaba desechando la idea de usar AFS, pero me pesa por que es demasiado útil.

Atte
petguego