Kingsto88
22nd September 2005, 05:58
Dear experts,


I am using API in Baan 4c4 with latest Service Pack 18

I am trying to enter inventory adjustment through API
So I call tdilc1120m000 which runs the subsession tdilc1121s000

In tdilc1121s000, it zooms to Maint Lot tdltc0101s000. I want to enter the item here and save the session so that a Lot is automatically created and passed back to tdilc1121s000.

It is not successful. Please see the code below.

Thanks and regards,
function main()
{
stpapi.put.field("tdilc1120m000","tdinv100.item",ln.item)
stpapi.put.field("tdilc1120m000","tdinv100.cwar",ln.cwar)
stpapi.put.field("tdilc1120m000","tdinv100.idat",str$(date.num()))
|stpapi.put.field("tdilc1120m000","tdinv100.sern","1")
stpapi.put.field("tdilc1120m000","tdinv100.kowt",str$(etol(tckowt.stc.correction)))
stpapi.put.field("tdilc1120m000","tdinv100.recd",ln.reason)
stpapi.put.field("tdilc1120m000","tdinv100.odat",str$(date.num()))
stpapi.put.field("tdilc1120m000","tdinv100.pdat",str$(date.num()))
stpapi.put.field("tdilc1120m000","tdinv100.trdt",str$(date.num()))
stpapi.put.field("tdilc1120m000","tdinv100.pqan",str$(var.quan))
ret = stpapi.insert("tdilc1120m000",1,msg)
if not ret then
ret = stpapi.recover("tdilc1120m000",msg)
else
if var.quan > 0 then
get.location()
if not isspace(ln.newloc) then
if lot.opt = 1 then
access.ltc0101()
endif
activate.child()
else
message("No location can be found in warehouse %s",ln.cwar)
endif
else
activate.child()
endif
if no.txt <> 0 then
update.inv100.txta()
endif
endif
stpapi.end.session("tdilc1120m000")

}

function access.ltc0101()
{
string tmp.serb(6)

message("ltc 01")
|stpapi.get.field("tdilc1121s000","tdilc102.serb",tmp.serb)
|stpapi.put.field("tdilc1121s000","tdilc102.serb",tmp.serb)
|ret = stpapi.find("tdilc1121s000",msg)
|message("me %s",msg)
|if ret then
message("ltc 02")
stpapi.handle.subproc("tdilc1121s000", "tdltc0101s000", "add")
stpapi.zoom.option("tdilc1121s000", 1, "tdltc0101s000", msg)
stpapi.put.field("tdltc0101s000","tdltc001.item",ln.item)
ret = stpapi.find("tdltc0101s000",msg)
|stpapi.continue.process("tdltc0101s000", msg)
message("p %s",msg)
|if isspace(msg) then
stpapi.put.field("tdltc0101s000","tdltc001.olot",str$(etol(tdltc.olot.prod)))
stpapi.put.field("tdltc0101s000","tdltc001.item",ln.item)
ret = stpapi.insert("tdltc0101s000",1,msg)
message("ins %s",msg)
stpapi.end.session("tdltc0101s000")
|endif
}

function activate.child()
{
stpapi.get.field("tdilc1120m000","tdinv100.wrho",tmp.orno)
stpapi.put.field("tdilc1120m000","tdinv100.wrho",tmp.orno)
ret = stpapi.find("tdilc1120m000",msg)
if ret then
stpapi.handle.subproc("tdilc1120m000","tdilc1121s000","add")
stpapi.continue.process("tdilc1120m000",msg)
if isspace(msg) then
if lot.opt = 1 then
stpapi.put.field("tdilc1121s000","tdilc102.clot","LOTIT 09005")
endif
stpapi.put.field("tdilc1121s000","tdilc102.stun",ln.stun)
stpapi.put.field("tdilc1121s000","tdilc102.loca",ln.newloc)
stpapi.put.field("tdilc1121s000","tdilc102.qstr",str$(var.quan))
stpapi.put.field("tdilc1121s000","tdilc102.qstk",str$(var.quan))
ret = stpapi.insert("tdilc1121s000",1,msg)
endif
stpapi.end.session("tdilc1121s000")
endif
}

veyant
22nd September 2005, 20:15
Please use

stpapi.save after inserting record. may be record is not getting saved.

try this.