廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 9308 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
lilimiao
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
淺談FR為ERP提供報表解決方案
這是來自帆軟愛好者論壇裡面一位番薯分享的案例,這裡整理給大家參考學習!
ERP——Enterprise ResourcePlanning 企業資源計劃系統,是指建立在信息技術基礎上,以系統化的管理思想,為企業決策層及員工提供決策運行手段的管理平台。ERP系統集中信息技術與先進的管理思想於一身,成為現代企業的運行模式,反映時代對企業合理調配資源,最大化地創造社會財富的要求,成為企業在信息時代生存、發展的基石。
截止到目前,使用ERP的用戶越來越多,對數據資料的探取需求也越來越大,但ERP報表對用戶個性化的需求支持的力度並不大,最多支持SQL語句查詢,而對報表的樣式就無能為力了,從今天開始,我將列舉幾個報表的應用,看如何解決ERP報表使用中的難題的。
一、銷售訂單執行情況明細表
1ERP過濾界面圖

2ERP查詢效果圖

相信大家從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、報表設計過程中遇到這樣一個問題:如何計算按期交貨率?公式=按期交貨筆數/總筆數。我們對筆數是這麼規定的,在一張訂單上,交貨日期相同的為一筆,交貨日期相同且全部未延期交貨的為一筆按期交貨筆數,這麼說是不是有點拗口,但只要你做過類似的計算,相信你會理解的。當然,各公司的規定可能不大一樣,但演算法差不多。
這個問題看似簡單,實則不然。銷售訂單號和交貨日期這兩個欄位是往下擴展的,到底有幾行是未知數,如何設置公式呢?第一步利用分組求出總筆數,用序號來代表:

注意看序號1819,這是一張訂單,但因為兩條分錄的交貨日期不同,我們認為這是兩筆訂單,用序號來代表還有一個好處是看著直觀,設計報表一定要站在用戶的角度,因為他們是最終使用者。FR的父格很有作用,把序號的父格指向交貨日期單元格就可以了。
EXCEL表功能最強大,用它也不好做,即使做了方法也不會比FR更簡單。
做報表關鍵是思路和想法,當時在設計這個報表時,苦苦思索了一整天,也沒有想到解決方案,無奈之下上論壇發貼求助,在jane版主的幫助下順利解決,再次表示感謝!
如何判斷是否按期交貨呢?增加一個輔助列,做好以後列隱藏,公式=if(and(min(Q5)>=0,P5>=1),1,0),只需要判斷交貨日期這一組中最小的數字是否大於等於0就可以了,如果條件符合返回1,否則返回0,做好這個之後求這一列的和就可以了,這個匯總就是按期交貨的筆數,問題迎刃而解。寫到這裡不由的一陣感慨:FR真是太靈活了!可能有人會說:「你是不是FR的托呀,在這直打廣告」,那麼好,現在讓你不論用哪個軟體,按照這個需求能做出來,方法有更簡單的,請在後面跟帖。
現在把ERP報表和FR報表效果圖放在一起比較,是不是高低立判呀,樣式效果還不是關鍵,關鍵是按照各個企業的管理特點開發出了非常有針對性的報表,充分挖掘已有數據資料,不怕做不到,就怕想不到呀。



獻花 x0 回到頂端 [樓 主] From:歐洲 | Posted:2015-12-15 14:27 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.054362 second(s),query:15 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言