这是来自帆软爱好者论坛里面一位番薯分享的案例,这里整理给大家参考学习!ERP
——Enterprise ResourcePlanning
企业资源计划系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。ERP
系统集中信息技术与先进的管理思想于一身,成为现代企业的运行模式,反映时代对企业合理调配资源,最大化地创造社会财富的要求,成为企业在信息时代生存、发展的基石。截止到目前,使用ERP
的用户越来越多,对数据资料的探取需求也越来越大,但ERP
报表对用户个性化的需求支持的力度并不大,最多支持SQL
语句查询,而对报表的样式就无能为力了,从今天开始,我将列举几个报表的应用,看如何解决ERP
报表使用中的难题的。一、销售订单执行情况明细表1
、ERP
过滤界面图2
、ERP
查询效果图相信大家从ERP
效果图中可以看出,报表提供了两种单据资料,即销售订单和销售出库单,并且这两种单据资料还不是在同一行上,都是隔行显示,用户体验并不好,并且这些资料比较单一,如果我还想知道订单的入库情况、订单完工率、订单按期交货率呢?那只能对资料进行二次加工,比较常见的方法是把资料导出EXCEL
表使用公式来做,粗略估计,没有个把钟头无法做出像样的报表来。3
、使用FR
报表做出来的报表效果图用FR
做报表,必须要明白点SQL
,而且对ERP
资料库也要有一定的了解,清楚每个栏位的含义,否则多表关联你也是搞不定的,下面是模板资料集语句:SELECT * FROM (SELECT t1.FBillNo,u1.FNameAS FCustID,case when u1.FName=
’零售户’ then
‘预测订单’ else
‘销售订单’ end as FCustID1,t1.FDate,
u2.FName AS FEmpID,
case when t1.FMultiCheckLevel1=16403 ort1.FMultiCheckLevel1=16507 then
‘昆嵛路工厂’else
‘四产路工厂’ end
ASfparentid,t2.FEntryID,t100.FNumber,t100.FName,t100.FModel,
CASE WHEN t2.FUnitID=0 THEN ” ELSE u4.FNameEND AS FUnitID,
t2.FAuxQty As FQty,t2.FDate ASFOutStockDate,t2.FAdviceConsignDate,u5.FBOMNumber,t1.FInterID
,t2.FAuxStockQty as FStockQty,t51.FName asFCUUnitID,t2.FQty/t51.FCoefficient as FCUQty,
t2.FStockQty/t51.FCoefficient asFCUStockQty
,cast(t2.finterid asvarchar)+cast(t2.fentryid as varchar) finteridfentryid,t800.fqtyfstockqty1,t800.fcheckdate,t2.FHaveMrp,t1.FExchangeRate,t2.fauxpricediscount
FROM SEOrder t1 INNER JOIN SEOrderEntry t2ON t1.FInterID = t2.FInterID and t1.fstatus in (1,2,3)
and t1.FChangeMark=0 ANDIsnull(t1.FClassTypeID,0)<>1007100 and t2.FMrpAutoClosed in ${
是否手工行关闭} leftouter join icmo t900 on t900.FOrderInterID =t2.FInterID andt900.FSourceEntryID=t2.FEntryID and t900.fitemid=t2.fitemid
left outer join (selectb.FICMOInterID,b.fitemid,b.fqty,a.fcheckdate from icstockbill a joinicstockbillentry b
on a.finterid=b.finterid wherea.ftrantype=2 and a.fstatus=1) t800 on t800.FICMOInterID=t900.finterid
LEFT OUTER JOIN t_Organization u1 ONt1.FCustID=u1.FItemID
LEFT OUTER JOIN t_Emp u2 ONt1.FEmpID=u2.FItemID
LEFT OUTER JOIN t_ICItem t100 ON t2.FItemID= t100.FItemID
LEFT OUTER JOIN t_MeasureUnit u4 ONt2.FUnitID = u4.FItemID
LEFT OUTER JOIN t_MeasureUnit t51 ONt100.FProductUnitID=t51.FItemID
LEFT OUTER JOIN ICBOM u5 ON t2.FBomInterID= u5.FInterID ) tt
WHERE 1=1 and tt.FOutStockDate>=
’${
开始日期}
’ andtt.FOutStockDate<='${
结束日期}' and tt.FCustID1='
销售订单' and tt.FNumber>
‘3.01
’${if(len(fparentid)==0,””,”and fparentid =‘”+fparentid+”‘”)}
order by ${cname} ${orderby}
(看起来有点复杂,这些是以需求为导向的,看需求的复杂程度而定啦)4
、做好的模板图5
、报表设计过程中遇到这样一个问题:如何计算按期交货率?公式=
按期交货笔数/
总笔数。我们对笔数是这么规定的,在一张订单上,交货日期相同的为一笔,交货日期相同且全部未延期交货的为一笔按期交货笔数,这么说是不是有点拗口,但只要你做过类似的计算,相信你会理解的。当然,各公司的规定可能不大一样,但演算法差不多。这个问题看似简单,实则不然。销售订单号和交货日期这两个栏位是往下扩展的,到底有几行是未知数,如何设置公式呢?第一步利用分组求出总笔数,用序号来代表:注意看序号18
和19
,这是一张订单,但因为两条分录的交货日期不同,我们认为这是两笔订单,用序号来代表还有一个好处是看着直观,设计报表一定要站在用户的角度,因为他们是最终使用者。FR
的父格很有作用,把序号的父格指向交货日期单元格就可以了。EXCEL
表功能最强大,用它也不好做,即使做了方法也不会比FR
更简单。做报表关键是思路和想法,当时在设计这个报表时,苦苦思索了一整天,也没有想到解决方案,无奈之下上论坛发贴求助,在jane
版主的帮助下顺利解决,再次表示感谢!如何判断是否按期交货呢?增加一个辅助列,做好以后列隐藏,公式=if(and(min(Q5)>=0,P5>=1),1,0)
,只需要判断交货日期这一组中最小的数字是否大于等于0
就可以了,如果条件符合返回1
,否则返回0
,做好这个之后求这一列的和就可以了,这个汇总就是按期交货的笔数,问题迎刃而解。写到这里不由的一阵感慨:FR
真是太灵活了!可能有人会说:「你是不是FR
的托呀,在这直打广告」,那么好,现在让你不论用哪个软体,按照这个需求能做出来,方法有更简单的,请在后面跟帖。现在把ERP
报表和FR
报表效果图放在一起比较,是不是高低立判呀,样式效果还不是关键,关键是按照各个企业的管理特点开发出了非常有针对性的报表,充分挖掘已有数据资料,不怕做不到,就怕想不到呀。