Infor Baan ERP LN里的On Case用法

对于程序员来讲,if,elseif这种判断语句肯定用的比较多,在asp里有select case,在.net里面有switch case的用法,在Baan里面有On Case的使用,对于某一变量为多个值的时候,是一种很有效、代码优美的判断。官方的用法如下,

<br/>ON CASE expression<br/>        CASE expr_1:<br/>                statements_1<br/>                break<br/>        CASE expr_2:<br/>                statements_2<br/>                break<br/>        CASE expr_3:<br/>                statements_3<br/>                break<br/>        DEFAULT:                    | optional<br/>                statements<br/>        ENDCASE<br/>

我在使用过程中的一个例子,需要强调的是千万不要忘记了break,不然你会发现你最终得出的结果会乱掉了。

<br/>case "M110  ":<br/><br/>m110.qty=whwmd215.qhnd<br/>break<br/><br/>case "W200  ":<br/>w200.qty=whwmd215.qhnd<br/>break<br/><br/>case "W300  ":<br/>w300.qty=whwmd215.qhnd<br/>break<br/><br/>case "W700  ":<br/>w700.qty=whwmd215.qhnd<br/>break<br/><br/>case "M999  ":<br/>m999.qty=whwmd215.qhnd<br/>break<br/><br/>case "MNUD  ":<br/>mnud.qty=whwmd215.qhnd<br/>break<br/><br/>case "LNUD  ":<br/>lnud.qty=whwmd215.qhnd<br/>break<br/><br/>endcase<br/>

Loading

由我主讲的《Baan ERP开发视频教程》即将于12月15日发布

由我主讲,BE论坛(www.BaanERP.com)的Tony联手制作的《Baan ERP开发视频教程》将于2010年12月15日公开免费提供下载,本视频共5个小时、612M,为Infor Baan ERP V/LN开发的基础培训现场版的演讲加屏幕录像。

从事Infor Baan ERP IV/V/LN开发的朋友们不妨登录论坛免费申请。

欢迎大家多提意见,BE论坛在线讨论地址:http://bbs.baanerp.com/thread-725-1-1.html

Loading

一段从Infor ERP LN(Baan)的Oracle数据库中导出数据到SQL Server的SQL语句

保存一段从Baan ERP LN的Oracle数据库中导出数据到SQL Server的SQL语句,前提是在MSSQL 2005中建立Link Server。

<br/>/***************     tibom010          *********************/<br/><br/>Truncate Table LNtibom010<br/><br/>Insert into LNtibom010(mitm<br/>      ,pono<br/>      ,seqn<br/>      ,sitm<br/>      ,indt<br/>      ,exdt<br/>      ,qana<br/>      ,cwar<br/>      ,cpha<br/>      ,scpf<br/>      ,scpq)<br/>SELECT *<br/>FROM OPENQUERY([CHLNDB],'Select T$mitm,T$pono,T$seqn,T$sitm,T$indt,T$exdt,T$qana,T$cwar,T$cpha,T$scpf,T$scpq from Baan.Ttibom010801')<br/><br/>Update LNtibom010 Set mitm = rtrim(mitm),sitm = rtrim(sitm)<br/><br/>/***************     tcibd001          *********************/<br/><br/>Truncate Table LNtcibd001<br/><br/>Insert into LNtcibd001(item<br/>      ,kitm<br/>      ,citg<br/>      ,dsca<br/>      ,uset<br/>      ,cuni<br/>  ,cwun<br/>  ,wght<br/>  ,csig<br/>      ,ctyp<br/>  ,ctyo<br/>  ,cpcl<br/>  ,cean<br/>  ,lmdt<br/>      )<br/>SELECT *<br/>FROM OPENQUERY([CHLNDB],'Select T$item,T$kitm,T$citg,T$dsca,T$uset,T$cuni,T$cwun,T$wght,T$csig,T$ctyp,T$ctyo,T$cpcl,T$cean,T$lmdt from Baan.Ttcibd001801')<br/><br/>Update LNtcibd001 Set item = rtrim(item),citg = rtrim(citg),dsca = rtrim(dsca)<br/><br/>/***************     whwmd400          *********************/<br/><br/>Truncate Table LNwhwmd400<br/><br/>Insert into LNwhwmd400(item,abcc,hght,wdth,dpth)<br/>SELECT *<br/>FROM OPENQUERY([CHLNDB],'Select T$item,T$abcc,T$hght,T$wdth,T$dpth from Baan.Twhwmd400801')<br/><br/>Update LNwhwmd400 Set item = rtrim(item),abcc = rtrim(abcc)<br/><br/>/***************     tdipu010          *********************/<br/><br/>Truncate Table LNtdipu010<br/><br/>Insert into LNtdipu010(item,otbp,efdt,exdt,cofc,pref,ibps,prio,srcp,qimf,qimi,qima,qifi,qiec,cfrw,suti)<br/>SELECT *<br/>FROM OPENQUERY([CHLNDB],'Select T$item,T$otbp,T$efdt,T$exdt,T$cofc,T$pref,T$ibps,T$prio,T$srcp,T$qimf,T$qimi,T$qima,T$qifi,T$qiec,T$cfrw,T$suti from Baan.Ttdipu010801')<br/><br/>Update LNtdipu010 Set item = rtrim(item)<br/><br/>/***************     tdipu010          *********************/<br/><br/>Truncate Table LNtdipu001<br/><br/>Insert into LNtdipu001(item,cuqp,cupp,ccur,prip,otbp,buyr,cofc,suti)<br/>SELECT *<br/>FROM OPENQUERY([CHLNDB],'Select T$item,T$cuqp,T$cupp,T$ccur,T$prip,T$otbp,T$buyr,T$cofc,T$suti from Baan.Ttdipu001801')<br/><br/>Update LNtdipu001 Set item = rtrim(item)<br/><br/>/***************     tcibd004   Item Code by Item Code system       *********************/<br/><br/>Truncate Table LNtcibd004<br/><br/>Insert into LNtcibd004(citt,bpid,item,aitc)<br/>SELECT *<br/>FROM OPENQUERY([CHLNDB],'Select T$citt,T$bpid,T$item,T$aitc from Baan.Ttcibd004801')<br/><br/>Update LNtcibd004 Set item = rtrim(item),aitc = rtrim(aitc)<br/><br/>/***************     tcibd200  Item Ordering Data        *********************/<br/><br/>Truncate Table LNtcibd200<br/><br/>Insert into LNtcibd200(item,opol,osys,crmp,omth,kctr,cwar,oqmf,mioq,maoq,fioq,ecoq,reop,oint,oivu,sftm,sfst,maxs,cplb,fodt,lodt)<br/>SELECT *<br/>FROM OPENQUERY([CHLNDB],'Select T$item,T$opol,T$osys,T$crmp,T$omth,T$kctr,T$cwar,T$oqmf,T$mioq,T$maoq,T$fioq,T$ecoq,T$reop,T$oint,T$oivu,T$sftm,T$sfst,T$maxs,T$cplb,T$fodt,T$lodt from Baan.Ttcibd200801')<br/><br/>Update LNtcibd200 Set item = rtrim(item)<br/>

Loading

如何解决ERP LN中的报错:a Quantity to Return found in Production Warehouse Orders

九月份的时候,遇到一个工单,关闭的时候老是出现错误:“a Quantity to Return found in Production Warehouse Orders”,以前没解决过,提问到Baanboard.com,很快就有了回复。

按照网友给的意见,检查了一下timfc0101m100,发现的确有一行“退料”虽然处理完毕,但是那个Return Quantity的字段没有自动更新为零,后来通过GTM后台修改解决掉了。

Loading

如何在Infor Baan ERP LN的报表上打印Barcode条码

前天Eric问我LN里面如何显示条码,因为太忙昨天才整理了一个例子给他,今天把这个例子也发到这里,希望碰到同样问题的朋友也能参考。

[URL=upload/HowtoPrintBarcodeinBaanERPLNReport.doc]HowtoPrintBarcodeinBaanERPLNReport.doc[/URL]

Loading

Baan LN开发中批量上传更新订单类日期的注意事项

最近根据用户需要,开发一个通过csv批量上传更新Sales Order Line上的Planned Delivery Date的一个Session,同时需要打印报表给出本次上传的所有订单(行)的更新状态。上传的文件可以是文本文件.txt后缀也可以直接.csv,只要是用,分割就可以。上传的文件一共有4列如下,日期格式为MM-DD-YYYY。

Order,Line(Position),Sequence,Planned Delivery Date(MM-DD-YYYY)

在本次的开发中,有几个要注意的地方:
1、函数choose.file的利用,用来选择本地的文件
2、上传函数client2server的使用
3、从文本读取行,然后按照,分割的函数string.scan
4、更新UTC类型的日期时函数date.to.utc()的使用

开发中相应的一些重要的地方我都截了图,方便其它朋友参考,同时Session的主程序Program Script我也贴了上来。

需要更新的表为tdsls401,字段为tdsls.ddta,类型为UTC

Session的主界面

设定默认的按钮(最顶部)的为我们的自定义Form Commands

对Standard作必要的设定,把不必要的按钮都隐藏掉

Session的Form Commands及exec.cont.process和Choose.file详细

Report的Input Fields,关于Layout很简单的就不列出来了

主程序如下:[URL=upload/tdsls4201m902-program-scripts.txt]tdsls4201m902-program-scripts.txt[/URL]

如果您还有什么其它问题,请联系我。

Loading

《跟Troy一起学用Baan》 ERP教程开始了

制作如何使用Baan的教程是我由来已久的一个想法,碰巧昨天给同事演示了一下如何使用Baan Exchang,索性多花点心思,开始第一篇《跟Troy一起学用Baan》 的ERP教程。

如果把Baan当作众多ERP产品中的一个,单纯的认为Baan像Office软件一样,而不去思考为什么要在Baan里面如此这般的操作做,你可以参考我的教程,但是我不保证这个教程一定适合你、适合你所用的Baan版本、适合你所在的公司。理由有很多,其中一个简单的原因:每家公司的软件有可能相同,但是流程肯定是不同的。

这个教程是以专题的方式进行,因为我所了解的Baan的模块有限,所以只能选择有把握的逐篇写出。说得明白点,这个教程是没有章法的。

知识一个积累的过程,一个沉淀的过程,我相信自己写出来之后的若干个月以后,我会否定我的一些理解,但是现在写出来,不管理解正确与否,都是一种知识管理,都是一种进步。

写的过程可以给我更多深入思考的可能,我相信读者也会给我更多深入思考的挑战。

第一篇地址[URL=http://www.cuiwenyuan.com/baan/exchange/how-to-use-baan-exchange-export-data.html]《How to use Baan Exchange export Data?如何使用Baan Exchange导出数据?》[/URL],你将能在2008年8月1日看到完整的图文版内容(我食言了!)。

更新日志

2009年4月30日新增《[URL=http://www.cuiwenyuan.com/sh/post/Baan-SQL-Query-Primary-Course-ppt-20090430.ppt.html]Baan SQL Query初级教程[/URL]》
2009年4月24日新增《[URL=http://www.cuiwenyuan.com/sh/post/Baan-ERP-Exchange-Primary-Course-PPT.html]Baan Exchange初级教程[/URL]》

Loading

Baan ERP SQL Query 中Exists的用法举例

很久都没有写Baan的报表以及查询了,上午远在深圳的Allen通过MSN告诉我一个小小的需求,于是用到了Exists的查询,代码分享如下:

正常的关联写法

select
tdsls401.orno,
tdsls401.pono,
tdsls401.sqnb
from
tdsls401, | Sales Order Lines
whinh430, | Shipment
whinh431 | Shipment Lines
where
whinh431.worn = tdsls401.orno and
whinh431.wpon = tdsls401.pono and
whinh431.wseq = tdsls401.sqnb and
whinh430.pcsp = tcyesno.yes and
whinh431.shpm = whinh430.shpm and
(whinh431.worg = whinh.oorg.sales or
whinh431.worg = whinh.oorg.purchase)
order by tdsls401.orno,tdsls401.pono

反选的时候,用Not Exists

select
tdsls401.orno,
tdsls401.pono,
tdsls401.sqnb
from
tdsls401 | Sales Order Lines
where not exists
(select *
from
whinh430, | Shipment
whinh431 | Shipment Lines
where
whinh431.worn = tdsls401.orno and
whinh431.wpon = tdsls401.pono and
whinh431.wseq = tdsls401.sqnb and
whinh430.pcsp = tcyesno.yes and
whinh431.shpm = whinh430.shpm and
(whinh431.worg = whinh.oorg.sales or
whinh431.worg = whinh.oorg.purchase))
order by tdsls401.orno,tdsls401.pono

其实第一种正常查询中,查询多个表中关联出现的结果集也可以用Exists:

select
tdsls401.orno,
tdsls401.pono,
tdsls401.sqnb
from
tdsls401 | Sales Order Lines
where exists
(select *
from
whinh430, | Shipment
whinh431 | Shipment Lines
where
whinh431.worn = tdsls401.orno and
whinh431.wpon = tdsls401.pono and
whinh431.wseq = tdsls401.sqnb and
whinh430.pcsp = tcyesno.yes and
whinh431.shpm = whinh430.shpm and
(whinh431.worg = whinh.oorg.sales or
whinh431.worg = whinh.oorg.purchase))
order by tdsls401.orno,tdsls401.pono

Loading