2010年3月14日 星期日

利用電腦結算成本,這也是導入 Smart ERP的主要目的

利用電腦結算成本,這也是導入 Smart ERP的主要目的??

用人工也可節成本!!
算成本算正確很不簡單!!
因為 BOM 會更改
因為 用料會替用
但是結構對就不會困難
很多公司成品完成無法入庫??
是因為領料不齊全無法入庫??
是生產線已產出
品保已經檢驗
產品已入成品區!!!!
為何沒領料單可以生產??
是線邊倉沒有自動化以倒沖帳自動提領用料 ??
是 BOM 與 批次用料不相同 ??
是 沒有設立 批次用料標准 ??
是 沒有設立 批次替代料申請流程 ??


因完全依照 Smart ERP的作業流程,並未做太多個案修改 , 這不僅減少公司軟體費用的支出,更對於系統導入過程及後來資料維護上,都減少很多不必要的困擾 。

  整個上線過程中許多令人感動的點滴,其中之一就是當 USER遇到問題時,張總經理常說:「先聽聽顧問怎麼說」,他總是在員工面前極力支持顧問師。再者,無論電腦化出現任何問題,他亦總會說:顧問師請您儘量教我們的員工,我相信他們亦是很Smart。

  目前達佛羅已能利用電腦結算成本,這也是導入 Smart ERP的主要目的。透過雙方願意充份溝通並共同解決問題,相信導入ERP是可以創造出最佳的e化效益 。

ERP 這種關聯圖示大腦與身體的關連

這種關聯圖示大腦與身體的關連

大家都知道有關連

但是如何關連

用什麼關連


http://www.ares.com.tw/ArgoERP/img/b2_01l.jpg

ERP 核心技術轉移顧問

商業軟體 ERP 導入顧問 用經驗告訴你 如何避開 現有 ERP 的限制
開源軟件 技術轉移顧問 用經驗告訴你 如何修正 現有 ERP 的限制

我是 ADempiere/Compiere 核心技術轉移顧問
Skype: ADempiere/Compiere

例如::

開帳時的試算表:
將"庫存"改成"開帳庫存"
借: 開帳庫存
貸: xx

開帳時的盤點載入其出明細:
再將"盤盈(虧)"改成"開帳庫存"
借: 庫存
貸: 開帳庫存

因此就有正確的庫存明細帳
但是還要在 開帳之後將
盤點的對應會計科目改回"盤盈(虧)"

但這是不道德的
明知有開帳的盤點
為何不加一個開帳的單據類別
用開帳類別去對應"開帳庫存"

明明是系統的問題
顧問還自認他很偉大可以避開系統限制...

ERP 大師不一定會用對 SQL

ERP 大師不一定會用對 SQL

ERP 大師不一定會用對 SQL


if (client.isUseASP())
ASPFilter =
" AND ( AD_Tab_ID IN ( "
// Just ASP subscribed tabs for client "
+ " SELECT t.AD_Tab_ID "
+ " FROM ASP_Tab t, ASP_Window w, ASP_Level l, ASP_ClientLevel cl "
+ " WHERE w.ASP_Level_ID = l.ASP_Level_ID "
+ " AND cl.AD_Client_ID = " + client.getAD_Client_ID()
+ " AND cl.ASP_Level_ID = l.ASP_Level_ID "
+ " AND t.ASP_Window_ID = w.ASP_Window_ID "
+ " AND t.IsActive = 'Y' "
+ " AND w.IsActive = 'Y' "
+ " AND l.IsActive = 'Y' "
+ " AND cl.IsActive = 'Y' "
+ " AND t.ASP_Status = 'S') " // Show
+ " OR AD_Tab_ID IN ( "
// + show ASP exceptions for client
+ " SELECT AD_Tab_ID "
+ " FROM ASP_ClientException ce "
+ " WHERE ce.AD_Client_ID = " + client.getAD_Client_ID()
+ " AND ce.IsActive = 'Y' "
+ " AND ce.AD_Tab_ID IS NOT NULL "
+ " AND ce.AD_Field_ID IS NULL "
+ " AND ce.ASP_Status = 'S') " // Show
+ " ) "
+ " AND AD_Tab_ID NOT IN ( "
// minus hide ASP exceptions for client
+ " SELECT AD_Tab_ID "
+ " FROM ASP_ClientException ce "
+ " WHERE ce.AD_Client_ID = " + client.getAD_Client_ID()
+ " AND ce.IsActive = 'Y' "
+ " AND ce.AD_Tab_ID IS NOT NULL "
+ " AND ce.AD_Field_ID IS NULL "
+ " AND ce.ASP_Status = 'H')"; // Hide



求求你 快快改 這樣用好不好 !!

+ " EXISTS ( " -- 只要顯示要隱藏的頁籤
// + show ASP exceptions for client
+ " SELECT * "
+ " FROM ASP_ClientException ce "
+ " WHERE ce.AD_Client_ID = " + client.getAD_Client_ID()
+ " AND ce.IsActive = 'Y' "
+ " AND ce.AD_Tab_ID = AD_Tab.AD_Tab_ID "
+ " AND ce.AD_Field_ID IS NULL "
+ " AND ce.ASP_Status = 'S') " // Show

+ " NOT EXISTS (" -- 不要顯示要隱藏的頁籤
// minus hide ASP exceptions for client
+ " SELECT * "
+ " FROM ASP_ClientException ce "
+ " WHERE ce.AD_Client_ID = " + client.getAD_Client_ID()
+ " AND ce.IsActive = 'Y' "
+ " AND ce.AD_Tab_ID = AD_Tab.AD_Tab_ID "
+ " AND ce.AD_Field_ID IS NULL "
+ " AND ce.ASP_Status = 'H')"; // Hide

2010年3月13日 星期六

ERP MDA UML 有夠笨跟真正笨中間是什麼!!

ERP MDA UML 有夠笨跟真正笨中間是什麼!!

以下的笨問題

有個現代聰明人

用更笨的方法提出更笨的看法

看完如有不良反應請自行就醫


文章來源::
http://myblog-erp.blogspot.com/search/label/%E7%B3%BB%E7%B5%B1%E6%9E%B6%E6%A7%8B


有了新方法還需要舊觀念嗎?


文-楊振源

ERP 系統當中有許多的交易檔,都與庫存帳息息相關,
比如驗收入庫則庫存增加,銷售出貨則庫存減少。

=========================================
>我最討厭這些人將 Unix 時代 講成 Dos 時代
>你知道當時就是 Unix / AS400 / Novell
>Dos 是前端展現工具之一
>我們當時也有些用終端機
>我們 20年前的架構 Unix/IBM AIX/HP-UX
>今天大潤發還是覺得他很好用
==========================================

記得20幾年前 DOS 的時代,
老是為了電腦系統上的庫存量正確性大傷腦筋,
因為當一筆出貨交易完成更新以後,
又要再做數量的修改,就必須加舊減新。
若再加上同時又修改了料號,
則計算邏輯就更複雜了,
這樣的程式撰寫方式又被稱為 On-line Update 。

============================================
>領料 有無更改料號都是
>加 更改前 料號數量
>減 更改後 料號數量
>拜託大大你麼聰明
>為何故意裝糊塗
>這樣騙學生不好
============================================

為了解決技術上的難題,大家就創造了 Batch Update 的方式,也就是出貨單 key-in 完畢存檔的時候,並不去 Update 庫存主檔,必需在 User 按了過帳的時候才批次更新庫存。這樣解決了程式的難度問題、 DB Commit / Rollback 的技術問題、以及 DB Performance 的問題。
時至今日,20年過去了,現有國內多數 ERP 系統廠商,卻仍停留在20年前,僅僅把資料庫 Database 當作儲存資料的地方而已。仍沿襲舊的做法繼續採取批次過帳的方式。

這樣的方式有哪些問題呢?

1. 庫存即時性的問題,必需按 「 過帳 」
( 或稱「 確認 」或稱「 核准 」)
才會更新庫存,庫存不即時。

==============================
>拜託大大你麼聰明
>為何故意裝糊塗
>你是把敲單當成流程跑完補上系統
>哪有還在敲單
>都沒確認都沒審核就過帳
>一有敲單就過帳
>這是 On-Line ??
>拜託大大你麼聰明
>為何故意裝糊塗
>這樣騙學生不好
===============================

2. 疊床架屋的問題,假如出貨通知單 ( 或稱「備貨單」) 可為 Locking 庫存用,則未過帳的出貨單顯然是重覆的單據。
3. 操作便利性的問題,假如過完帳後要修改資料,則必須過帳還原,而往往在過帳還原的時候庫存被不當的搶走,或還原的時候造成庫存不足,而必須採取其他補庫存的特殊奇怪作業。


是什麼新方法可以解決程式的難度問題? DB Commit / Rollback 的技術問題?以及DB Performance 的問題?答案很簡單,運用 DB的Trigger 功能。

1. 程式的難度問題, DB Trigger 可以分開處理 Insert / Update / Delete 的程式碼。
2. DB Commit / Rollback 的技術問題,程式只要控制出貨單的 Master / Detail 就好了,只有在出貨單被 Commit 成功, Trigger 才會被執行,所以不需要擔心資料寫入一半的問題。
3. DB Performance 的問題,使用 Trigger 則它的所有資料處理都在 DB Server 上完成,可徹底解決 DB Performance 的問題。

總而言之,過了20年,都已有了新方法、新工具,是不是應該放棄舊的觀念與做法才算聰明!

2010年3月12日 星期五

ERP 2010 預測:開源ERP難有大作為

近日,一篇名為《2010 預測:開源ERP難有大作為》在網上流傳頗為廣泛。該文認為,開源軟體最後都難免走向商業化運作的道路。畢竟追求利潤是商人的根本目的。進而,該 文作者認為:“現在很多企業都是拿’開源’作為一個炒作的手段。企業推出一個軟體的時候,先通過開源的手段積累一定的客戶數量。而隨著SaaS軟體的日趨 成熟,商業性質的開源ERP軟體會脫去其神聖的外衣,走SaaS軟體的發展道路。”
  面對於這樣的質疑,近幾年來一直從事開源ERP研發的恩信科技公司CEO劉有濤發表了反駁的觀點。
  從必死到難有大作為
  劉有濤表示:“類似的質疑每年都有,只不過以前的聲音更刺耳,以往這個時候我聽到的淨是開源ERP必死,今年溫和多了,變成開源ERP難有大作為了。”
  談起作為,劉有濤給出了一組數位:“截止到2009年10月1日,恩信科技開源ERP已經有200萬的下載量,企業安裝用戶80萬家,成功使用 的企業用戶至少12萬家,ERP實施成功率超過15%,已大大超過目前國內ERP軟體實施成功率;目前已有3000多家軟體企業在恩信科技開源ERP基礎上在自行做二次開發,而且已簽約加盟的合作夥伴超過50家,這些鬆散的、緊密的合作夥伴在本地為無數的行業客戶創造了巨大的價值,同時也賺取了巨大的利潤;上百家高校、培訓機構用開源ERP軟體做教材自行培訓學生實戰能力,簽約高校加盟合作夥伴的已超過20家,這些高校合作夥伴通過開源ERP幫助學生在 校期間就能實現與企業的資訊化、軟體公司的開發工作近距離接觸,提高了就業能力,同時,這些學生走上工作崗位,更能為企業最低成本的建立資訊化平臺。”
  基於這些數字,劉有濤問了一個問題:“這些算不算作為呢?”
  而談起開源ERP對整個ERP產業的促進作用,劉有濤還有一肚子的話要說。
  開源ERP的價值
  在不少人眼中,開源還只是局限在Linux上。單以Linux而論,Linux這個當年芬蘭大學生帶頭開發的系統,在今天已經演變成為了紅帽、Ubuntu、 紅旗、中標軟等在內的上千個Linux發行版。因此,單以Linux而論,開源作業系統是大有作為的,但推廣開來,開源作業系統之上的開源應用,也是在作 為的嗎?
  對此,劉有濤算了一筆帳:“在恩信科技沒有推廣開源ERP 之前,ERP主打產品的價格至少為30萬元以上,現在國內號稱一流的ERP廠商已經將主打產品降到3萬元上下,國外的壟斷巨頭也降到10萬元上下,這難道 不是開源ERP反壟斷的功勞嗎?這又算不算有作為?”
  劉有濤認為:“這些評論實際上和Sun被Oracle收購等大事件有很大關係。Sun被收購之後,直接導致了Java和MySQL這樣的開源支 撐軟體前途未蔔。”但劉有濤接下來表示:“我個人認為,無論Sun這家公司何去何從,類似於Java和MySQL這樣的開源軟體都會繼續發展下去。這源於 開源軟體深厚的群眾基礎,在這一點上,開源軟體有點象電影’魔鬼終結者’中的天網那樣,一但打開就將永遠無法關閉。”
  劉有濤進而介紹說:“開源軟體的前途往往與開源軟體貢獻廠商的前途並無關係,這就象脫離了恩信公司,恩信ERP也可能在用戶和開源愛好者的支持 下繼續發展下去。”
  而談起開源ERP向SaaS轉變這一問題時,劉有濤認為:“開源軟體的生命力決定著它也處在一個變革的狀態之中,象恩信在2009年就推出了雲 計算ERP軟體服務,這些創新業務保證了恩信科技的健康成長。”
  無論是開源增值服務還是雲計算ERP服務,都繼承了把軟體當服務的關鍵要素。由此看來,開源與SaaS,在提供服務的角度上存在著共通的地方。 同時,開源與SaaS又都不意味著完全免費,因此二者在未來完全可能走向融合。但另一方面,開源與SaaS 之間,又存在著差異性,所以並不能說誰完全代替誰。
即將過去的2009年,對於開源ERP是跌宕起伏的一年。一方面,以恩信科技等為首的企業將開源ERP推向新一輪的高潮。另一方面,由於開源軟體最 大的貢獻者Sun被收購,無疑是向開源軟體市場扔下了一顆重型的炮彈,讓開源軟體的使用者無所適從。在此情況下,2010年開源軟體將何去何從?
Sun收購事件意味著開源軟體難逃商業化命運
誰是開源軟體最大的貢獻者?這個答案是無庸質疑的。Sun公司開發的Java平臺是最大的開源平臺。在這個平臺上開發出了很多免費的和商業的軟體。 但是,2009年4月20日卻傳來一個令人吃驚的消息。就在這一天,甲骨文公司宣佈將以74億美元的價格收購Sun公司。這個事件再一次證明,開源軟體最 後都難免走向商業化運作的道路。畢竟追求利潤是商人的根本目的。
歷史往往有驚人的相似。類似的事情很早就已發生。比如最早Linux等作業系統也都是開源的。用戶不僅可以免費使用,而且還可以在原有功能的基礎來 進行自定義開發。
其中,紅帽的Linux作業系統無疑是最成功的產品。可惜的是,沒有幾年時間,當積累到一定的用戶數量之後,也被商業化包裝了。現在和微 軟的作業系統一樣,需要收費。只是價格沒有微軟那麼高而已。
從這一個個事件中,我們可以得出一個結論。現在很多企業都是拿“開源”作為一個炒作的手段。
企業推出一個軟體的時候,先通過開源的手段積累一定的客戶數量。而且軟體開源、免費,往往意味著企業不用為軟體的漏洞買單。
這也在很大程度上降低軟體的測試成本,有很多用戶可以為企業進行免費地測試。等用戶數 量達到一定規模的時候,其軟體本身也已經比較完善,此時再通過商業化包裝推向市場,無論是軟體發展者,還是包裝者,都可以從中獲取很大的商業價值。
所以, 開源-商業化包裝成為一款成功的商業化軟體無法擺脫的命運。畢竟天下沒有免費的午餐。只要是商人,都會追求利潤。
開源軟體的運作或許會走SaaS的道路
國內開源ERP軟體也有不少。比如全球第一家開源ERP企業Cmpiere在國內也設有分支機搆,再如北京恩信創業也憑藉著開源ERP軟體進入到信 息化管理軟體領域。那麼,這些企業又是靠什麼來盈利的呢?
難道他們真的有如此善心,虧本為企業免費開發軟體?
天下沒有免費的午餐,這是一個真理。這些從事開源軟體設計、開發的企業,在招募人才的時候可不是免費的。
企業仍然要為員工買單、為設備買單。如果沒 有收入來源,企業都將難以維持生計。因此,軟體雖然是開源的,但是企業仍然有利潤來源。這個利潤來源就是服務與二次開發。
眾所周知,ERP系統不像其他辦公軟體那麼簡單。對於大部分企業來說,即使他們擁有一個ERP軟體,但是如果沒有專業的顧問進行實施的話,企業也很難取得成功。也就是說,此時即使企業免費地擁有一款ERP軟體,但對於企業來說,就好像只有汽車沒有駕駛員,只能夠當作擺設,而不能夠帶來任何的價值。
為此,企業要部署好ERP系統,必然要尋找專業的實施顧問來負責企業EPR系統的實施。通過軟體提供商推薦顧問,無疑是不錯的選擇。因為他們瞭解這個公司的 產品與設計流程。軟體公司雖然免費提供軟體,但是卻可以從系統實施服務那裏取得不錯的收益。
還有一點需要提醒的是,開源ERP軟體無論在功能上,還是業務邏輯上,總是與商業軟體之間存在一定的差距。
如果往好的方面想,由於軟體本身是開源的,免費為企業所用,由於資金、技術等方面的限制,無論在設計還是測試上,都沒有商業軟體那樣完善、嚴謹。
所以,出現漏洞或者功能不夠完善也是可以接受的。如果往壞的方面想,難道企業在這方面真的沒有一點惡意嗎?
因為軟體不完善或者存在一定Bug,企業要使用這款軟體的話,則必須進行大量的二次開發。
二次開發可不是免費的,企業必須要為其買單。不可否認的是,在二次開發的功能上,有不少是因為企業自身的個性需求來決定的。由於軟體本身功能不足或者缺陷只 占其中一部分。
從中我們可以看出,從事開源軟體發展、推廣的企業,其利潤來源主要是服務,其中包括ERP系統實施、維護服務和系統二次開發的服務。其實這種商業推 廣的模式與現在比較流行的SaaS(軟體即服務)運作模式非常相似。
因此,筆者大膽預測,或許在不久的將來,帶有一定商業性質的開源ERP軟體會脫去其神 聖的外衣,走SaaS軟體的發展道路。
商業軟體就是商業軟體,何必再套上一件開源的大衣呢?
開源ERP領域難有大的前途
雖然現在市場上的很多開源軟體,大部分是批著開源軟體外衣的商業軟體。
但是,隨著國內開發人員不斷增多,開源意識增強,筆者相信,
一些小型開源軟體 仍然會層次不窮地出現。
比如郵件系統、OA系統、看板系統等,由於其設計、開發難度不大,參與的人數也不用很多,故其在國內仍然會有一定的發展。
但是筆者認為,其發展範圍可能只限於小型的管理軟體或者辦公軟體。因為其不需要十分嚴格的組織與業務邏輯,
大部分情況下,可能幾個人花幾個月時間就可以開發出一套小型管理軟體。
但如果要開發ERP這種大型資訊化管理軟體,筆者認為開源軟體是很難有大作為的。
即使面對中小型企業的ERP軟體,其背後的 業務邏輯仍然是非常複雜的。
無論是後臺資料表,還是業務流程,都是數以萬計的。如果沒有嚴格的組織、嚴密的測試,同時大量開發人員的參與,很難設計開發出一個比較完善的ERP系統。
即使號稱全球第一大的開源ERP產品Ccmpiere其功能仍然有很大的限制,如物料需求計畫等都沒有實現,所以更像是一個進銷存系統和財務管理系統的結合產品。從功能與技術角度來說,遠遠沒有達到一個ERP系統所要求的程度。
所以,開源軟體如果想在ERP領域內發展,會遇到很大的阻礙。最大的阻礙就是開發成本問題。除非走商業化道路,通過服務來獲取利潤,彌補軟體發展成 本,否則很難有進一步的發展。
從以上分析可以看出,2010年,筆者並不看好開源ERP軟體發展。
筆者相信,由於商人的本質,當開源ERP軟體積累到一定用戶,
功能上也比較完善 時,必然走向商業化道路。
只是各家走的道路可能會不同,要麼像紅帽靠出售軟體使用權來收費;
要麼像恩信通過實施服務或者二次開發來收費。
不過無論走哪一條 道路,都無疑從一定程度上偏離開源軟體的本質,
走上商業化發展的道路。

2010年3月11日 星期四

ERP 四大理由 将开源ERP软件拒之门外

以下文件來自::
http://www.linuxeden.com/html/news/20100301/70860.html

四大理由 将开源ERP软件拒之门外

有一段時間,我受雇於一家企業,
幫他們實施一個開源的ERP專案。
經歷了半年多的折騰,
以前我對於開源軟體的一點熱情都被徹底消滅了,
讓我看清了開源ERP軟體的面目。
我想,我以後再也不會用開源的ERP軟體了。
我採用的是號稱最大的開源ERP軟體-Compiere。

==========================================
>好一個顧問..
>自己一個人就想實施 Compiere ERP..
>OpenSource ERP 開源企業管理軟體..
>
>你應該去找一個通通不能改的商業軟體..
>
==========================================


一、開源ERP的軟體BUG,讓我“頭疼不已”。

像ERP這麼複雜的管理軟體,
有幾個BUG也是難免的事情。
但是,若一個軟體到處是BUG,
到處是陷阱,那可真的讓人受不了。
開源的ERP軟體,漏洞之多,
實在出乎我所料。

如在產品基本資料處,
有個屬性的欄位,
但是,奇怪的是,
這個屬性竟然不能夠帶到採購單、領料單等相關單據,

==========================================
>好一個顧問..
>不暸解屬性宣告的意義..
>不同屬性共用一個料號
>帶到採購單??
>帶到領料單??
>為何用屬性宣告
>因為使用同一料號的基本假設
>是使用同一價格與相同成本的
>你的狀況是不該使用同一料號
>
>你應該去找一個通通不能改的商業軟體..
>
==========================================

讓人想不通,後來讓專門的服務商進行測試,
說是軟體的BUG,
但是因為這是開源的軟體,
所以,這個費用還是要企業自己來承擔。

如某個材料有多個供應商,
而不同的供應商價格又有所不同。
如某個原材料A,
其有兩個供應商甲與乙,
價格分別為6.6元與6.7元,
企業設定的標準價格與列表價格為6.5元(採購參考價格),
但是,在實際生成採購單時,
無論是向甲供應商還是向乙供應商採購,
帶出來的價格竟然都是6.5。

==========================================
>好一個顧問..
>不暸解價目表..
>有宣告價目表清單版本
>當然是使用價目表清單版本的價格
>
>SELECT
>bomPriceStd(p.M_Product_ID,pv.M_PriceList_Version_ID) AS PriceStd
>...
>FROM M_Product p
>INNER JOIN M_ProductPrice pp ON
(p.M_Product_ID=pp.M_Product_ID)
>
>INNER JOIN M_PriceList_Version pv ON >(pp.M_PriceList_Version_ID=pv.M_PriceList_Version_ID)
>
>INNER JOIN M_PriceList pl ON
>(pv.M_PriceList_ID=pl.M_PriceList_ID)
>...
>
>你應該去找一個通通不能改的商業軟體..
>
==========================================



這是在讓 我想不通,軟體設計者為何如此設計,
我想,這應該是一個軟體的BUG。
沒辦法,我只好來做一回產品設計工程師,
把這個BUG解決了。

這些漏洞真是數不甚數。
在軟體的測試階段,時常讓我頭疼不已。
每測試一個流程,都是提心吊膽的,
擔心,不知道哪里又有陷阱。

二、功能不足讓我“廢寢忘食”。

我從來沒有見過Compiere功能如此不全的ERP軟體。
雖然其實開源的,
但是,功能如此不全,也讓人意料不及。

如 我採購價格想保留更改歷史,
但是無論如何配置,都無法實現。
有些單據時可以保留歷史變更記錄的,
如產品基本資訊,但是,材料價格卻不行。
後來發現,只要單據中有兩個關鍵字的頁簽,
都無法保留歷史更改記錄。
而原材料採購價格處,有兩個關鍵字,
一是關聯原材料基本資訊,
二是關聯供應商資訊,所 以,
就無法保存歷史變更記錄。

如沒有專門的單據 變更單。如我因為某些原因,
採購單需要變更採購數量或者採購交期,
但是沒有採購變更,
需要把原有的採購單作廢掉或者重新撤銷 審核
(系統還沒有直接撤銷的功能,要在後臺資料庫中更改),
我真是要叫上帝保佑了。企業需要怎麼辦呢?
只好自己動手,
先探尋各個單據之間的關係及資料庫的 結構,
然後再開發出一個採購變更單頁簽,
實現採購單變更功能。
生產變更單、銷售變更單等也都沒有,
我也只好熬幾個通宵,把這些單據開發出來。

再 如,倉庫成品入庫時,竟然不能分批入庫,
這真讓人哭笑不得。
如一張生產訂單我有10000個產品,
能夠保證一次性入庫嗎?
難道要生產部門把生產完成的產品暫時放在車間,
等生產全部完工後,再一次性入庫嗎?
這用戶可不會答應。如何辦呢?
進行二次開發了,還能怎麼辦呢。
先要把原先的入庫單功能屏 蔽掉,
然後再新建一個入庫的單據,
設計能夠從生產訂單自動生成入庫單,
並且,在入庫時對領料數量、入庫數量進行檢驗,
判斷有沒有超領、多入庫的情況,
同時,入庫的數量還要更新生產訂單的完工數量。
小小的一個入庫單,
就要我加入如此多的功能,這是煩心。

一個專案下來,開源軟體在功能開發前後可是大變樣,
大概增加了50%左右的功能。
“廢寢忘食”用來形容我當時的努力,
可是一點都不過份。

三、缺乏服務技術支援,讓我“求救無門”。

開源軟體雖然是開源的,免費提供源代碼,
但是,相關的技術文檔確實少的可憐,
中文參考資料更是鳳毛麟角。
我有點懷疑,
他們開發這麼複雜的開源ERP系統是怎麼實現的,
難道沒有系統設計文檔嗎,
還是他們故意不拿出來,想憑此賺錢?

我公司在實施這個開源的ERP項目時,
花了萬把塊錢買了一個軟體的實施文檔,
其他資料,如開發指南等沒有購買。
所以,什麼資料都要我自己去網上查詢,
但是,資料實在是少的可憐。
沒有辦法,只好自己研究源代碼,研究資料庫結構。

雖然市場上已經有不少的公司在打開源Compiere軟體的主意,
他們付費提供Compiere的實施開發服務。
但是,我找了幾家公司,效果實在不滿意。
一方面,他們顧問能力不強,我們提出一個需求,
他們反而讓我提供解決方案,這真讓人哭笑不得呀。

一般情況下,我們提出一個需求,
對方實施顧問給我解決方案,
然後我們判斷是否可行。
現在倒反過來了,能不讓我感到奇怪嗎?
而且,收費又比較貴,
讓他們提供服務與技術支援的話,
就失去了開源的好處了。

怎 麼辦呢?我只要自力更生,閉門造車,研究了一個月,
總給我弄出來一點門堂。
還好我在之前有比較豐富的ERP實施經驗,
對於ERP實施中可能出現的一些問題有所瞭解,
在事先做了比較充分的準備工作,
不然,在如此情況下,
實施ERP專案,沒有外部的支持,
肯定是要出亂子的。

如我在事先,對於員工的需求做了具體的調研,
做的非常的詳細、具體,在後續的實施過程中,
儘量減少了需求的變更。
如此,是為了減少以後二次開發的數量。
雖然如此做,時間浪費了一點,
但是,後來回頭來看看,花點時間在需求調研上,
對以後專案的順利開展還是很有幫助的。

四、實施、開發,集與一身,讓我“心力交瘁”。

一開始,公司雇傭我時,
說讓我做ERP實施顧問,負責企業的ERP實施。
但是,沒有想到,在後來實施的過程中,
開發占了我大部分的時間。
這讓我這個不是技術出身、
沒怎麼接觸過軟體發展的ERP實施顧問,
英雄無用武之地。

上面我說過,無論是開源ERP軟體本身的BUG,
還是因為其功能的嚴重缺乏,
都需要我們進行大量的二次開發。
而因為缺乏外部的服務與技術支援,
還出於專案實施成本的考慮,
所以,我這個實施顧問,
不得已,只得兼任程式開發員,
負責ERP軟體的二次開發。

在這個開發的過程中,
資料缺乏、沒有外部支援、沒有開發經驗,
一切從零開始。如此熬了幾個月後,
終於有所成就。
但是,這個過程,讓我心力交瘁。

一般的開源ERP軟體,肯定需要進行很多的二次開發,
而企業本身決定使用開源的ERP項目,
本來就是出於節省項目成本的考慮,
所以,他們不可能把二次開發外包給專門的軟體公司,
不然專案成本比那些商業的ERP軟體來說,不會便宜多少;
同時,企業本來就不是專門的IT公司,
所以,也不會專門雇傭程式開發人員,來協助你。
所以,一切都只有靠我自己來完成。

經過半年的努力,
雖然開源的ERP系統基本上線了,
但是,
其使用效果根我以前實施的商業軟體還是有一定差距的。
有了這段經歷後,
我對開源的 ERP軟體有了新的認識。
以後若讓我選擇商業軟體還是使用開源ERP軟體,
我想,我絕對會選擇商業軟體。
對開源的ERP軟體專案,我會退避三舍。
看新聞發表評論,獎品瘋狂送!!

2010年3月8日 星期一

ERP ADempiere/Compiere 已有領料的工單

SELECT o.C_MfgOrder_ID, p.Name AS "工單成品", o.MOQty AS "工單量", ol.C_MfgOrderLine_ID,c.Name AS "用料", ol.MOQty AS "用料量",

(SELECT SUM(NVL(MovementQty,0)) FROM M_ProductionMILine ml
INNER JOIN M_ProductionMI m ON(ml.M_ProductionMI_ID=m.M_ProductionMI_ID AND m.DocStatus='CO' AND m.IsReturnTrx='N' AND m.IsActive='Y')
WHERE ml.IsActive='Y' AND ml.C_MfgOrderLine_ID=ol.C_MfgOrderLine_ID) AS MovementQtyCO,

(SELECT SUM(NVL(MovementQty,0)) FROM M_ProductionMILine ml
INNER JOIN M_ProductionMI m ON(ml.M_ProductionMI_ID=m.M_ProductionMI_ID AND m.DocStatus='VO' AND m.IsReturnTrx='N' AND m.IsActive='Y')
WHERE ml.IsActive='Y' AND ml.C_MfgOrderLine_ID=ol.C_MfgOrderLine_ID) AS MovementQtyVO,

(SELECT SUM(NVL(MovementQty,0)) FROM M_ProductionMILine ml
INNER JOIN M_ProductionMI m ON(ml.M_ProductionMI_ID=m.M_ProductionMI_ID AND m.DocStatus='CO' AND m.IsReturnTrx='Y' AND m.IsActive='Y')
WHERE ml.IsActive='Y' AND ml.C_MfgOrderLine_ID=ol.C_MfgOrderLine_ID) AS ReturnQtyCO,

(SELECT SUM(NVL(MovementQty,0)) FROM M_ProductionMILine ml
INNER JOIN M_ProductionMI m ON(ml.M_ProductionMI_ID=m.M_ProductionMI_ID AND m.DocStatus='VO' AND m.IsReturnTrx='Y' AND m.IsActive='Y')
WHERE ml.IsActive='Y' AND ml.C_MfgOrderLine_ID=ol.C_MfgOrderLine_ID) AS ReturnQtyVO


FROM C_MfgOrderLine ol
INNER JOIN C_MfgOrder o ON(o.C_MfgOrder_ID=ol.C_MfgOrder_ID)
INNER JOIN M_Product p ON(o.M_Product_ID=p.M_Product_ID)
INNER JOIN M_Product c ON(ol.M_Product_ID=c.M_Product_ID)
WHERE (SELECT SUM(NVL(MovementQty,0)) FROM M_ProductionMILine ml
INNER JOIN M_ProductionMI m ON(ml.M_ProductionMI_ID=m.M_ProductionMI_ID AND m.DocStatus='CO' AND m.IsReturnTrx='N' AND m.IsActive='Y')
WHERE ml.IsActive='Y' AND ml.C_MfgOrderLine_ID=ol.C_MfgOrderLine_ID) > 0 --已有領料的工單

2010年3月6日 星期六

ERP JDE 我恨我恨我恨我恨你你我恨你你我恨你

大恨與大愛是執著與堅持的動力

ERP JDE 我恨我恨我恨我恨你你我恨你你我恨你

ERP JDE 當你會規劃會系統開發;;笑你不懂管理不懂會計
ERP JDE 當你懂管理懂會計;;笑你不懂規劃不懂系統開發
ERP JDE 當你懂管理懂會計懂規劃懂系統開發
他笑一個人抵擋不了 JDE 一百個博士
當 JDE 作不出功能時
他說 JDE 用的是一個世界知名品牌
因為用材料屬性自動判斷轉用代用
真的不是很簡單的事
除了我之外很少人作得到
除了我更少有人2O年以上經驗還擔任 技術顧問
...................................................


客戶主檔

成立時檢查哪一些是不可重複的

beforeSave();

BPartner[] m_BPartners = getBPartners(columnName, value);
if (BPartners.length()>0)
warrning columnName duplicate.

客戶主檔建檔需有防呆機制(ex.統編…)


客戶主檔異動申請單::
不可以直接去更改客戶主檔,,
透過異動申請單

建檔後如需異動重要項目
(Ex.統編,付款條件,信用額度,物料類別)
需要由財務解除鎖定,
並提示告知財務。
並須有表單可查詢並可列出異動人員、日期、修改項目…。
若有短期授信及額度變更需求,
是否有異動表單編號,
可自行訂定交易條件及額度的生效日及失效日

ERP 讓國中畢業生 直接讀ERP 技術顧問學院 :: Oracle+JAVA

ERP 讓國中畢業生 直接讀ERP 技術顧問學院 :: Oracle+JAVA
分類: 未分類資料夾
2010/03/07 00:19

ERP 讓國中畢業生 直接讀ERP 技術顧問學院 :: Oracle+JAVA

3000 小時 * 100= 30萬學費 (不用繳)

3000 小時 * 100= 30萬實習 (可以領) - 5萬學費

3000 小時 *200= 60萬實習 (可以領) - 10萬學費

3000 小時 *300= 90萬實習 (可以領) - 15萬學費

3000 小時 *400=120萬正式顧問

大學畢業生也寫不出
(1)依據正規化 是無需將客戶所屬國家的國家地區帶到客戶檔案中::
(2)但是反正規化 是解決單擋拋出作後續分析的必要措施

::
輸入國家別可自行帶出所屬區域別
::
客戶主檔之國家別為下拉式選單,
選擇後可帶出銷售區堿別:
EX.國家:越南、地區別:東南亞
::

ERP 日本株式会社アルマスCEO兼首席专家吉日木图学术报告会

日本株式会社アルマスCEO兼首席专家吉日木图学术报告会暨中小企业ERP应用研究室揭牌仪式在我校举行

2009年12月28日下午,内蒙古财经学院网络中心暨网络应用技术研究所在我校西区新教学楼网络中心会议室举行学术报告会暨“中小企业ERP应用研究室”揭牌仪式。日本株式会社アルマスCEO兼首席专家吉日木图先生应邀为我校相关专业教师作了一场主题为“Compiere ERP & CRM—全球中小企业信息化解决方案”的学术报告。
会议由网络信息中心主任唐建平教授主持,科研处、计算机信息管理学院、工商管理学院、会计学院、实验中心、职业学院计算机系等相关教学、科研部门的领导和部分教师参加了报告会,我校副校长刘文清教授参加会议并与吉日木图先生共同为“中小企业ERP应用研究室”揭牌。
吉日木图先生的报告围绕着全球中小企业ERP应用模式,阐述Compiere ERP & CRM开源软件的MDA架构、柔性定制开发思想的优势以及全球中小企业应用开发情况,着重介绍了Compiere ERP & CRM在日本中小企业适应版研发思路、企业导入实施与定制开发的成功经验,以及日本早稻田大学、大阪工业大学在研究生、本科生教学中引入Compiere ERP & CRM的基本情况,并和与会教师们针对国内中小企业ERP应用开发、大学ERP教学中引入Compiere ERP & CRM等议题进行了热烈讨论。

(网络信息中心 供稿)


日本株式会社アルマスCEO兼首席专家吉日木图学术报告会

ERP POGenReceiptWS 收料抵搞為何掛了!!

[2010/3/5 下午 02:30:14] Ju: org.compiere.process.POGenReceiptWS
[2010/3/5 下午 02:34:59] Ju:

SELECT SUM(NVL(l.MovementQty,0))
FROM M_InOutLine l, M_InOut m
WHERE m.M_InOut_ID=l.M_InOut_ID
AND m.IsActive='Y'
AND m.DocStatus IN ('CO','CL')
AND l.C_OrderLine_ID=1003063
AND 1=1
AND m.IsSOTrx='N'
AND m.IsReturnTrx='N' [722]
-----------> MInOutWSLine.set_Value: Virtual Column - Name [722]
-----------> MInOutWSLine.set_Value: Virtual Column - ProductSize [722]
>
>
>
>
===========> DB.executeUpdate: INSERT INTO M_InOutWSLine (UpdatedBy,CreatedBy,Up
dated,TargetQty,ScrappedQty,QtyUnDelivered,QtyShipmentAvailable,QtyOrdered,QtyEn
tered,QtyDelivered,Processed,PriceEntered,PriceActual,PickedQty,MovementQty,M_Wa
rehouse_ID,M_Locator_ID,M_InOut_ID,M_InOutWSLine_ID,LineNetAmt,Line,IsInvoiced,I
sDescription,IsActive,DateRequired,DatePromised,DateOrdered,Created,ConfirmedQty
,C_UOM_ID,C_Order_ID,C_OrderLine_ID,AD_Org_ID,AD_Client_ID) VALUES (100,100,TO_D
ATE('2010-03-05 14:34:43','YYYY-MM-DD HH24:MI:SS'),0,0,1,1,1,0,0,'N',159,159,0,1
,1000002,0,1001965,1007702,0,10,'N','N','Y',TO_DATE('2010-02-10','YYYY-MM-DD'),T
O_DATE('2010-02-10','YYYY-MM-DD'),TO_DATE('2010-02-10','YYYY-MM-DD'),TO_DATE('20
10-03-05 14:34:43','YYYY-MM-DD HH24:MI:SS'),0,100,1003321,1004493,1000000,100000
0) [SvrProcess_1267770882671] [722]
java.sql.SQLException: ORA-02291: integrity constraint (C302.M_INOUTWSLINE_LOCAT
OR) violated - parent key not found
; State=23000; ErrorCode=2291
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:125)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:623)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.
java:181)
at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedS
tatement.java:543)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme
nt.java:1028)
at oracle.jdbc.driver.OracleStatement.doScrollExecuteCommon(OracleStatem
ent.java:3753)
at oracle.jdbc.driver.OraclePreparedStatement.doScrollPstmtExecuteUpdate
(OraclePreparedStatement.java:8829)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePrep
aredStatement.java:2886)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePrepar
edStatement.java:2960)
at org.compiere.util.CPreparedStatement.executeUpdate(CPreparedStatement
.java:215)
at org.compiere.util.DB.executeUpdate(DB.java:840)
at org.compiere.util.DB.executeUpdate(DB.java:747)
at org.compiere.framework.PO.saveNewInsertSQL(PO.java:2839)
at org.compiere.framework.PO.saveNew(PO.java:2688)
at org.compiere.framework.PO.save(PO.java:2251)
at org.compiere.process.POGenReceiptWS.createWSLine(POGenReceiptWS.java:323)
at org.compiere.process.POGenReceiptWS.doIt(POGenReceiptWS.java:229)
at org.compiere.process.SvrProcess.startProcess(SvrProcess.java:91)
at org.compiere.apps.ProcessCtl.startProcess(ProcessCtl.java:483)
at org.compiere.apps.ProcessCtl.run(ProcessCtl.java:251)

-----------> DB.saveError: DBExecuteError - ORA-02291: integrity constraint (C302.M_INOUTWSLINE_LOCATOR) violated - parent key not found
[722]
-----------> MInOutWSLine.saveNewInsertSQL: [SvrProcess_1267770882671]Not inserted - M_InOutWSLine [722]
-----------> POGenReceiptWS.startProcess: Could not create Shipment Line=MInOutWSLine[1007702,M_Product_ID=0,QtyEntered=0,MovementQty=1,M_AttributeSetInstance_ID=0] [722]
14:34:43.890 Trx.rollback: **** SvrProcess_1267770882671 [722]
>
>

2010年3月5日 星期五

ERP 工單開立流程 建議事項 Oracle ERP / SAP

ERP 工單開立流程 建議事項 Oracle ERP / SAP

工單建立時::機台欄位 下拉選項的精準化

因目前有部分產品之使用機台皆為單一固定機台,
若能在開工單時,
設備選項部分能依據產品名稱及途程自動判定
帶出已預設的使用機台
或過濾其他非同類型所用到的機台,
縮小機台類型選項範圍。
??

這需要問嗎??
這是 MDA 架構的基本功能
這叫做 Dynamic_Valuation_Rule
SELECT * FROM 機台TBL WHERE

<<以下是動態驗證 正面列舉
<<帶出已預設的使用機台
EXISTS (SELECT * FROM 料號途程機台TBL WHERE
料號途程機台TBL.產品編號=@產品編號@ AND
料號途程機台TBL.途程編號=@途程編號@)

<<以下是動態驗證 負面列舉
<<過濾其他非同類型所用到的機台
NOT EXISTS (SELECT * FROM 產品類別途程機台TBL
INNER JOIN 產品類別TBL ON(產品類別TBL.產品類別=料號類別途程機台TBL.產品類別)
INNER JOIN 產品TBL ON(料號類別TBL.料號類別=料號TBL.料號類別)
WHERE
產品TBL.產品編號 <> @產品編號@ AND
產品類別途程機台.途程編號=@途程編號@
)

2010年3月1日 星期一

ERP 証照 教育騙局

kentyeh wrote:
剛剛看到電視廣告,是一個面試場景,前面的幾人很多都有人罩,
可是最後一個人沒有人罩卻有多張電腦證照,可是面試官卻哭了,
然後畫面出現"三個月取得電腦證照"。

多年來也看過一些短期取得證照,卻不會寫程式的人,
我想碰到這樣的人,如果我是主管我也要哭了吧,
還不如用一些有人罩的人,
讓長官高興一點,
至少長官會心理有數吧!



面試官哭了之後,接著就換主管哭了....
(因為廣告秒數關係...後面那段沒播出來啦....XD)

2010年2月28日 星期日

ERP 顧問視野 從台東上岸就以為台灣就是這麼乾淨

請給我客戶名稱
請給我購買機型
請給我購買機號

我就可以知道你的 BOM
而且知道你是何日產出 何日交貨
重點是提供了用料版次
設計變更方面更是詳細
因為修補品才不會弄錯



業務最前線/優化客戶資訊流
【經濟日報╱吳育宏】

2010.03.01 02:59 am


每天早晨走到巷口的早餐店,幹練的老闆只需要三秒鐘的時間,
就可以辨識出我是誰,總是點鮪魚三明治加奶茶的老顧客。
但是當場景換到企業市場,我們卻常遇到自稱業界一流的大型供應商,
面對緊急的客戶需求或品質問題,以牛步的速度在確認基本資訊。

從數十人的小公司,到花費上千萬元導入ERP
(Enterprise Resource Planning,企業資源規劃)
或CRM(Customer Relationship Management,顧客關係管理)
的大型企業,
在客戶資訊的「透明度」和「流動性」上都有改善的空間。

這表示與客戶有關的訊息,應該更有效率地在組織內傳遞,
促成市場開發、售後服務、後勤支援的合作無間。

對於產品生命周期短、規格標準化,但顧客群廣大的快速消費品業
(FMCG,Fast Moving Consumer Goods)來說,
資訊流優化的挑戰,主要來自對終端消費市場的掌握程度。
舉凡顧客的消費能力、採購習性、使用偏好等,
透過市場調查或資料庫的分析,形成消費者洞見(Consumer Insights),
提供業務和行銷部門行動的方針。

至於在產品和服務內容較為複雜、客製化程度高,
營收集中在少數關鍵客戶的B2B產業,
資訊流優化的挑戰轉而在企業內部。

例如,塑膠射出成型機的客戶,
購買的不同機型有各自的零件材料表(BOM,Bill of Materials),
並在不同時間進行了設計變更。

若每台機器有五年的運作壽命,
要維持零件系統資訊的正確無誤,
成為一項極具挑戰性的任務。

又或者,客戶分散在海外的收貨工廠,
有各自不同的包裝標示、報關流程等要求,
若是沒有定期更新客戶的運輸要求,隨時可能因為文件不符規定、包裝錯誤等因素造成運輸延誤。

不論是哪一種產業型態,業務單位要優化客戶資訊流,必須先「盤點」所有和客戶有關的重要資訊是什麼。大自客戶的資本額、營業額、成長率預測,小至交易項目、數量、金額的統計,或是使用偏好、未來發展潛力等需要業務人員判斷的軟性資訊。

然後建立一個能和所有單位充分分享的平台,完整呈現、傳遞、更新這些資訊。

它可以是現行的ERP和CRM系統,或是公司內部網路的共用資料夾,甚至僅是一張EXCEL報表。

最後再以客戶的角度不斷檢討,如何更完整、更正確地傳遞這些資訊,讓前線業務人員更快速地掌握客戶狀況,以及後勤客服單位更精準地滿足客戶需求。

當企業對市場變化和客戶需求的反應速度更為敏捷,而其資訊系統真正為開發顧客、服務顧客而存在,企業就會回歸到基本面,建立具競爭力的客戶經營能力,如同幹練的早餐店老闆。

(作者是企管顧問公司高級顧問,yuhung.wu@yahoo.com.tw)

2010年2月26日 星期五

ERP 培基數碼 還停在 1980 年的編碼法

ERP資料編碼-基礎篇

人氣 0
作者:培基數碼 發表於2010/1/12 上午 10:31:37

談到ERP的宏圖大業,會有諸如結合企業經營策略、
增強企業整體競爭力等影響深遠值得思索的議題,
也有許多如何料帳準確、降低庫存、提升效率等有待討論改進的作業流程。
但是在此之前,有一項更基本的、更關鍵性的工作,就是資料編碼制度的設計。
的確,許多ERP 實施的問題就出在資料編碼上。


在ERP操作過程中,編號可以說是無所不在。
基本上資料只要進ERP系統,就會涉及到編號問題。
資料編碼的技術是?馬步的基層功夫,
於其羡慕王建民的伸卡球,不如先把球投到捕手手套裡吧,
於其高談闊論ERP的實施成效,
不如先建立正確的ERP資料編碼基本觀念吧。

從客戶編號說起

『給客戶編一個號』,這在企業早已是行之有年。
不過在人工作業時代,
客戶編號介於可有可無之間,編號的方式也簡單,
例如直接以客戶的簡稱做為編號便可。
然而在推動ERP 之後,
客戶編號郤從最好有(Nice To Have)變成了必須有(Must Have),
所以新客戶建檔的第一個動作便是要給一個客戶號。問題來了,
如何能夠讓客戶號的編碼有系統性?誰來編?如何編?
尤其是不同的人、甚或不同的辦公室,
都需要為新客戶號時,更需要有明確的編碼規則,
以避免重複,並符合電腦處理上的要求。

不單是客戶如此,供應商、產品或其他資料的編碼亦是如此,
要善用ERP,就得有一套適當的資料編碼制度,
要設計編碼制度先得對資料編碼的本質有所了解,
並針對各資料的特性,方能規畫出合於己用的資料編碼方式。

資料編碼的好壞對ERP作業流程及效率的改善上,
會起關鍵性的作用,
而且資料編碼的設計在一開始時便要作對
(ERP實施中途改編號會是一場大災難)。
在ERP推動的過程中,
如果我們仍用舊的思維來處理ERP 上的編碼問題,
就喪失了改變管理體質的大好時機。

>>> 古話連篇
>>> 無意義編號+多重類別定義
>>> 才是硬道理




編號的兩大任務

編號,在電腦作業上的首要任務就是識別,所以編號亦稱為識別號。
不但要讓人能識別,更重要的是要方便於電腦識別,
務必要做做到一人一號、一物一號、一單一號,絕對不容混淆。
人工作業對於重號還可以用其他的方式例如規格、說明、日期等予以分辨識別,
但電腦作業則否(人比較聰明,此又得一證明)。
同一類東西,
如果有一物兩號或兩物一號的情形,
電腦就分辨不出來了,ERP就垮了。

>>
>>一物兩號一定是不同供應商或不同批次
>>兩物一號是因為系統沒有將屬性材質尺寸
>>系統會告知你的編號重複或此物品以編號
>>

資料在頻繁的增添刪除過程中,
如何有秩序的確保做到一物一號,
是要有條理及方法的,
資料編碼的精神及訣竅盡在此中。

編號第二個重要任務便是排序,
就是依編號的大小來排的順序,
因為資料的列印及顯示經常是依編號順序的,而順序也意味著基本分類,
因為我們總希望同一類的東西顯示時排列在一起。
資料編碼方式即暗示著資料的顯示順序有決定性的影響。

至於在資料分類及查詢的角度上,
編號反倒沒有那麼重要了,
因為一般ERP可以用各種角度來分類或查資料,
不似人工作業時代,
查資料不方便,
故而往往在編號上放上很多的含意,
例如第一碼代表什麼意思,
第二碼代表某種分類等,
以便在看編號時便可了解很多事情。
但在電腦作業的時代,
這樣做反而會讓編碼變得較複雜,
甚至傷害到編號在識別及排序的考量。
編號的組成-英文與數字

人工作業時,代碼可以使用任何符號而不受限制,
但電腦作業則不成,電腦作業時,
代碼通常由阿拉伯數字及英文字母大寫所組成。
在排列的順序上,
則以數字0最小,
英文字母Z最大。

編號不宜用中文。
為了操作上的方便,
一般的ERP系統對編號的內容通常會做大小寫轉換的處理,
也就是說,在編號欄,不管你輸入的是「A」還是「a」,
電腦都一律自動轉為「A」。
如果編號裡有中文,電腦在進行大小寫轉換時,會破壞掉其中的中文。

>> Unicode standard UTF-8 AL32UTF8
>>

如果你在ERP的資料中看到一些無厘頭的中文,
九成是編號大小寫轉換的結果。
為了降低混淆及誤判,編號通常會避免使用英文字母I及O,
因為與數字1及0太像了,容易造成輸入及識別上的錯誤。
身份證字號第一碼的英文字不含I和O就是一個最好的例子。

除了數字及字母外,
有些時候我們會把一些特殊符號放在編號內。
這些特殊符號中除了’-‘、 ’_’等分隔符號外,
其他的符號應盡可能避免。尤其是’*’號及&|?等符號,
在電腦查詢及邏輯條件的設定上,
這些符號往往有特定的涵義,
若使用這些符號可能會造成查詢上的困擾。
除此之外,使用特殊符號時,
也需考慮條碼化的可行性,
以最常用的39碼為例,
除了數字及字母外,
只接受’+’、’-’、’*’、’/’、’%’、’$’六個符號。
(有些條碼例如EAN 碼甚至只能有數字)。 

使用文字或數字的另一項考量是碼的長度。
若為數字,則一碼最多有10種變化(0-9),
若為文字則一碼可有24種變化(A-Z去除 I及O)。
同一數目的資料,碼的變化越多,
碼長可縮得越短。
當然,我們也可以文數字合用,那一碼就有34種變化,
以此類推。注意,若文數字合用,
電腦在排序上,通常數字排在字母的前面。
其他相關議題

ERP時代的資料編碼,除了基於對上述編碼本質上的了解之外,還牽涉到諸如編碼的方式、碼長的考量、編碼規則等技術性的問題。更重要的是,如何考量資料應用的特性,並與ERP的功能做最佳的結合(例如商品編號與條碼的結合)。這些相關的議題都可另撰專文做進一步討論,在此,不妨先針對ERP資料編碼的基本認識做一總結。

1. 資料編碼對ERP實施的順暢與否有決定性影響,並要在開始時就作對。
2. 資料編碼的核心需求在識別,其次在排序。
3. 碼的組成包括數字、大寫字母、及’-’, ’_’分隔符號,不宜使用其他的符號。

2010年2月22日 星期一

ERP JR DataSource

1. package test.report;
2.
3. import java.math.BigDecimal;
4. import java.sql.Connection;
5. import java.sql.DriverManager;
6. import java.sql.PreparedStatement;
7. import java.sql.ResultSet;
8. import java.sql.SQLException;
9. import java.util.HashMap;
10.
11. import net.sf.jasperreports.engine.JRException;
12. import net.sf.jasperreports.engine.JRResultSetDataSource;
13. import net.sf.jasperreports.engine.JasperCompileManager;
14. import net.sf.jasperreports.engine.JasperExportManager;
15. import net.sf.jasperreports.engine.JasperFillManager;
16. import net.sf.jasperreports.engine.JasperPrint;
17. import net.sf.jasperreports.engine.JasperReport;
18. import net.sf.jasperreports.engine.util.JRLoader;
19.
20. public class GenerateReport {
21. public static void main(String[] args) {
22. try {
23. sql4Report();
24. } catch (JRException e) {
25. e.printStackTrace();
26. } catch (SQLException e) {
27. e.printStackTrace();
28. } finally {
29. System.out.print( "finish" );
30. }
31. }
32.
33. public static void parameter4Report ()
34. throws SQLException, JRException {
35. //report parameter
36. HashMap parameter =
37. new HashMap();
38. parameter.put( "master_location_id", new BigDecimal(22) );
39.
40. Connection con = getConnection();
41. JasperReport jasperReport =
42. JasperCompileManager.compileReport("reports/Location.jrxml");
43. JasperPrint jasperPrint =
44. JasperFillManager.fillReport( jasperReport, parameter, con );
45.
46. JasperExportManager.exportReportToPdfFile(
47. jasperPrint, "reports/location_parameter4Report.pdf");
48. }
49.
50. public static void sql4Report () throws SQLException, JRException {
51. //create the ResultSet
52. Connection con = getConnection();
53. PreparedStatement statement =
54. con.prepareStatement(
55. "select * from loc_location "
56. + "where location_type_cd = 'ROOM' "
57. + "order by location_type_cd"
58. );
59. ResultSet resultSet = statement.executeQuery();
60.
61. JRResultSetDataSource result =
62. new JRResultSetDataSource( resultSet );
63. JasperReport jasperReport =
64. JasperCompileManager.compileReport("reports/Location.jrxml");
65. JasperPrint jasperPrint =
66. JasperFillManager.fillReport(
67. jasperReport, new HashMap(), result
68. );
69.
70. JasperExportManager.exportReportToPdfFile(
71. jasperPrint, "reports/location_sql4Report.pdf"
72. );
73. }
74.
75. public static void jasper4Report ()
76. throws SQLException, JRException {
77. //create the ResultSet
78. Connection con = getConnection();
79. PreparedStatement statement =
80. con.prepareStatement(
81. "select * from loc_location "
82. + "where location_type_cd = 'ROOM' "
83. + "order by location_type_cd"
84. );
85. ResultSet resultSet = statement.executeQuery();
86.
87. JRResultSetDataSource result =
88. new JRResultSetDataSource( resultSet );
89. //modify
90. JasperReport jasperReport =
91. (JasperReport) JRLoader.loadObject(
92. "reports/Location.jasper"
93. );
94. JasperPrint jasperPrint =
95. JasperFillManager.fillReport(
96. jasperReport, new HashMap(), result
97. );
98.
99. JasperExportManager.exportReportToPdfFile(
100. jasperPrint, "reports/location_jasper4Report.pdf"
101. );
102. }
103.
104. public static void xls4Report () throws SQLException, JRException {
105. // create the ResultSet
106. Connection con = getConnection();
107. PreparedStatement statement =
108. con.prepareStatement(
109. "select * from loc_location "
110. + "where location_type_cd = 'ROOM' "
111. + "order by location_type_cd"
112. );
113. ResultSet resultSet = statement.executeQuery();
114.
115.
116. JRResultSetDataSource result =
117. new JRResultSetDataSource( resultSet );
118. // create JasperReport from .jasper
119. JasperReport jasperReport =
120. (JasperReport) JRLoader.loadObject("reports/Location.jasper");
121. JasperPrint jasperPrint =
122. JasperFillManager.fillReport( jasperReport, new HashMap(), result );
123.
124. // JasperExportManager.exportReportToPdfFile( jasperPrint, "reports/location_xls4Report.xls");
125.
126. JRXlsExporter xlsExporter = new JRXlsExporter();
127. xlsExporter.setParameter( JRExporterParameter.JASPER_PRINT, jasperPrint );
128. xlsExporter.setParameter( JRExporterParameter.OUTPUT_FILE, new File("reports/location_xls4Report.xls") );
129. xlsExporter.exportReport();
130. }
131.
132. private static Connection getConnection () throws SQLException {
133. DriverManager.registerDriver(
134. new oracle.jdbc.driver.OracleDriver()
135. );
136. return DriverManager.getConnection( url, user, pw );
137. }
138.
139. private static String url = "jdbc:oracle:thin:@localhost:1521:db";
140. private static String user = "report";
141. private static String pw = "report";
142. }

ERP iReport使用javabean做数据源需要四个步骤

iReport使用javabean做数据源需要四个步骤

一、建立一个javabean,这是一个普通的bean:


/**//*
* PersonBean.java
*
* Created on 8 luglio 2004, 1.41
*/
package it.businesslogic.ireport.examples.beans;
/** *//**
*
* @author Administrator
*/
public class PersonBean ...{
private String firstName;
private String lastName;
private HobbyBean[] hobbies;
private AddressBean address;
/** *//** Creates a new instance of PersonBean */
public PersonBean() ...{
this(null);
}
public PersonBean(String name) ...{
this.setFirstName( name );
hobbies = new HobbyBean[0];
}
/** *//**
* Getter for property firstName.
* @return Value of property firstName.
*/
public java.lang.String getFirstName() ...{
return firstName;
}
/** *//**
* Setter for property firstName.
* @param firstName New value of property firstName.
*/
public void setFirstName(java.lang.String firstName) ...{
this.firstName = firstName;
}
/** *//**
* Getter for property lastName.
* @return Value of property lastName.
*/
public java.lang.String getLastName() ...{
return lastName;
}
/** *//**
* Setter for property lastName.
* @param lastName New value of property lastName.
*/
public void setLastName(java.lang.String lastName) ...{
this.lastName = lastName;
}
/** *//**
* Getter for property hobbies.
* @return Value of property hobbies.
*/
public it.businesslogic.ireport.examples.beans.HobbyBean[] getHobbies() ...{
return this.hobbies;
}
/** *//**
* Setter for property hobbies.
* @param hobbies New value of property hobbies.
*/
public void setHobbies(it.businesslogic.ireport.examples.beans.HobbyBean[] hobbies) ...{
this.hobbies = hobbies;
}
/** *//**
* Getter for property address.
* @return Value of property address.
*/
public it.businesslogic.ireport.examples.beans.AddressBean getAddress() ...{
return address;
}
/** *//**
* Setter for property address.
* @param address New value of property address.
*/
public void setAddress(it.businesslogic.ireport.examples.beans.AddressBean address) ...{
this.address = address;
}
}


二 实现JRDataSourceProvider接口
实现JRDataSourceProvider接口最好的办法是继承JRAbstractBeanDataSourceProvider类:


import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.*;
import it.businesslogic.ireport.examples.beans.*;
import java.util.*;
public class PersonBeansDataSource extends JRAbstractBeanDataSourceProvider ...{
public PersonBeansDataSource() ...{
super(PersonBean.class);
}
public JRDataSource create(JasperReport report) throws JRException ...{
ArrayList list = new ArrayList();
/**/
/*这里查询数据库或其他途经,把数据包装到bean中
*把bean压入list中
*
*/
return new JRBeanCollectionDataSource(list);
}
public void dispose(JRDataSource dataSource) throws JRException ...{
// nothing to do
}
}

三、打开ireport 5.0 ,选择资料来源——〉连接/资料来源——〉new——〉type of connection/datasource选项选择JRDataSourceProvider,——〉填入名称和class——〉save——〉完成



四、在报表中 点击 资料来源——〉报表查询——〉选择Use DataSource Provider选项卡——〉点击Get fields from datasource 得到bean中定义的属性为 field

ERP iReport

Jasper Custom Data Source
Asked by Maciek1983 in Java Programming Language,
New to Java Programming
Tags: jasper, custom, datasource, data, source
I'm a newbie to programming and I'm trying to set up a custom data source for a Jasper Report and I'm having 2 problems.:

1. PrintVendorParametersBean

public class PrintVendorLabelsParameterBean
{

public String vendorName;
public String vendorAddress;

public printVendorLabelsParameterBean(String nm,String addr)
{
this.vendorName = nm;
this.vendorAddress = addr;
}
public String getVendorAddress()
{
return vendorAddress;
}

public void setVendorAddress(String vendorAddress)
{
this.vendorAddress = vendorAddress;
}
public String getVendorName()
{
return vendorName;
}
public void setVendorName(String vendorName)
{
this.vendorName = vendorName;
}
}

2. printVendorDataSource
public class printVendorDataSource implements JRDataSource {

// hard coded, needs to use a list later, just print one Bean for now
private int counter=0;
private ArrayList list = new ArrayList();

public printVendorDataSource (ArrayList l) {
this.list = l;
}

public Object getFieldValue(JRField jrField) throws JRException {
String fieldName = jrField.getName();
Object value = "";

if(fieldName.equals("vendorName"))
{ printVendorLabelsParameterBean pvb = (printVendorLabelsParameterBean)list.get(counter);
value = pvb.getVendorName();
}
return value;
}

public boolean next() throws JRException {
counter++;
if(counter>list.size())
return false;

return true;
}
}

2. printVendorLabelsDSProvider


public class printVendorLabelsDSProviderextends JRAbstractBeanDataSourceProvider
{
public WiObjectList objlist = null;

public printVendorLabelsDSProvider(WiObjectList obj) {
super(printVendorLabelsParameterBean.class);
objlist = obj;
}

public JRDataSource create(JasperReport report) throws JRException {
ArrayList list = new ArrayList();

try
{
boolean more = objlist.open();
while(more)
{
list.add(new printVendorLabelsParameterBean(objlist.getFieldValue("vendor_name"),objlist.getFieldValue("vendor_name")));
more = objlist.next();
}
}
catch(Exception e)
{

}
return new printVendorDataSource(list);
}

public void dispose(JRDataSource dataSource) throws JRException {
// nothing to dispose
}


}

4. printVendorLabelsService

public class printVendorLabelsService
{
public void getReport(WiSession ses, WiObjectList objList,PrintWriter out)
{
printVendorLabelsBean jrp = new printVendorLabelsBean(objList);
HashMap reportParams = null;


File rptFile = null;
FileInputStream fin = null;
try
{
rptFile = new File(System.getProperty("webapp.root")+ "glap\\reports\\printVendorLabels.jasper");

JasperReport htmlReport = (JasperReport) JRLoader.loadObject(rptFile.getPath());
JasperPrint htmlPrint = null;
htmlPrint = JasperFillManager.fillReport(htmlReport,reportParams ,jrp.create(htmlReport));
JRHtmlExporter exporter = new JRHtmlExporter();

// set exporter input file and out stream
exporter.setParameter(JRExporterParameter.JASPER_PRINT, htmlPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "
");
exporter.setParameter(JRHtmlExporterParameter.IS_WRAP_BREAK_WORD, Boolean.TRUE);
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);

exporter.setParameter(JRHtmlExporterParameter.SIZE_UNIT, JRHtmlExporterParameter.SIZE_UNIT_PIXEL);
exporter.exportReport();
}
catch(Exception ex)
{
}

....nothing else relvant after

ERP iReport

Jasper Custom Data Source
Asked by Maciek1983 in Java Programming Language,
New to Java Programming
Tags: jasper, custom, datasource, data, source
I'm a newbie to programming and I'm trying to set up a custom data source for a Jasper Report and I'm having 2 problems.:

1. PrintVendorParametersBean

public class PrintVendorLabelsParameterBean
{

public String vendorName;
public String vendorAddress;

public printVendorLabelsParameterBean(String nm,String addr)
{
this.vendorName = nm;
this.vendorAddress = addr;
}
public String getVendorAddress()
{
return vendorAddress;
}

public void setVendorAddress(String vendorAddress)
{
this.vendorAddress = vendorAddress;
}
public String getVendorName()
{
return vendorName;
}
public void setVendorName(String vendorName)
{
this.vendorName = vendorName;
}
}

2. printVendorDataSource
public class printVendorDataSource implements JRDataSource {

// hard coded, needs to use a list later, just print one Bean for now
private int counter=0;
private ArrayList list = new ArrayList();

public printVendorDataSource (ArrayList l) {
this.list = l;
}

public Object getFieldValue(JRField jrField) throws JRException {
String fieldName = jrField.getName();
Object value = "";

if(fieldName.equals("vendorName"))
{ printVendorLabelsParameterBean pvb = (printVendorLabelsParameterBean)list.get(counter);
value = pvb.getVendorName();
}
return value;
}

public boolean next() throws JRException {
counter++;
if(counter>list.size())
return false;

return true;
}
}

2. printVendorLabelsDSProvider


public class printVendorLabelsDSProviderextends JRAbstractBeanDataSourceProvider
{
public WiObjectList objlist = null;

public printVendorLabelsDSProvider(WiObjectList obj) {
super(printVendorLabelsParameterBean.class);
objlist = obj;
}

public JRDataSource create(JasperReport report) throws JRException {
ArrayList list = new ArrayList();

try
{
boolean more = objlist.open();
while(more)
{
list.add(new printVendorLabelsParameterBean(objlist.getFieldValue("vendor_name"),objlist.getFieldValue("vendor_name")));
more = objlist.next();
}
}
catch(Exception e)
{

}
return new printVendorDataSource(list);
}

public void dispose(JRDataSource dataSource) throws JRException {
// nothing to dispose
}


}

4. printVendorLabelsService

public class printVendorLabelsService
{
public void getReport(WiSession ses, WiObjectList objList,PrintWriter out)
{
printVendorLabelsBean jrp = new printVendorLabelsBean(objList);
HashMap reportParams = null;


File rptFile = null;
FileInputStream fin = null;
try
{
rptFile = new File(System.getProperty("webapp.root")+ "glap\\reports\\printVendorLabels.jasper");

JasperReport htmlReport = (JasperReport) JRLoader.loadObject(rptFile.getPath());
JasperPrint htmlPrint = null;
htmlPrint = JasperFillManager.fillReport(htmlReport,reportParams ,jrp.create(htmlReport));
JRHtmlExporter exporter = new JRHtmlExporter();

// set exporter input file and out stream
exporter.setParameter(JRExporterParameter.JASPER_PRINT, htmlPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "
");
exporter.setParameter(JRHtmlExporterParameter.IS_WRAP_BREAK_WORD, Boolean.TRUE);
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);

exporter.setParameter(JRHtmlExporterParameter.SIZE_UNIT, JRHtmlExporterParameter.SIZE_UNIT_PIXEL);
exporter.exportReport();
}
catch(Exception ex)
{
}

....nothing else relvant after

2010年2月21日 星期日

ERP MES 要看你是董事會還是總經理(執行長)

[贴图]对于生产制造企业,是先上ERP还是先上MES?可否并行呢?

对于中小型生产制造企业,是先上ERP还是先上MES?可否并行呢?

请大家不吝指教。

ERP 的重點在 企業資源的績效評核
MES 的重點在 企業資源的有效提升
董事會關心的是經營結果
是否達成預算
付給總經理(執行長)薪資與獎金是否值得
是否需要換總經理(執行長) ...

MES 是總經理(執行長)的提升績效工具
ERP 是監控評核總經理(執行長)的工具
...
到底是先買馬表測成績還是買訓練器材提升成績
...
要看你是董事會還是總經理(執行長)

我是 ADempiere/Compiere
技術轉移顧問開放原碼 MDA ERP/MES 平台

2010年2月20日 星期六

ERP 科技大學 ˇ教到哪裡吃比較好吃 一輩子好嗎??

ERP 科技大學 ˇ教到哪裡吃比較好吃 這樣學生的一輩子淒慘好嗎?

ERP 科技大學 ˇ教別人的系統如何用 這樣學生的一輩子淒慘好嗎?

ERP 科技大學 ˇ教別人的汽車如何用 這樣學生的一輩子淒慘好嗎?

還有比賽

??


不是應該比賽料理出一樣好吃的菜色

不是應該比賽設計出一樣功能的系統

不是應該比賽設計出一樣傑出的汽車

>>>

南台科技大學資管系勇奪
「2010第三屆虎門盃SAP Business One ERP競賽」第一名!!

由南台科技大學資訊管理系吳昭儀老師指導的歐尚鼎、劉家銘、李心瑜與梁惠茹等同學,於日前參加中華企業資源規劃學會、虎門科技股份有限公司舉辦的「2010第三屆虎門盃SAP Business One ERP競賽」。南台科大以作品「營建業專案式建案管理」榮獲全國第一名。

此次競賽目的為學生所知道課本上的企業e化知識和業界SAP Business One ERP系統相結合,而在知識和實務經驗結合的同時,又能展現個案的產業特色。由學會舉辦「虎門盃 SAP Business One ERP競賽」,競賽隊伍將完美地結合專業的技術與知識,並從個案探討中充分展現產業特色,是一年一度不容錯過的精采賽事。

2.jpg

得獎作品「營建業專案式建案管理」,以信美建設為例,它是一家小型建設公司,目前所面臨的經營困境,在人力不能大幅擴充的現況下,必須藉由資訊科技來協助解決以提昇經營效率。經本隊訪談並分析後,歸納為以下兩項待解決重點:
1. 目前所缺乏的是即時且整合性的資訊,以及所據以匯製產生的管理性報表。對此,企業資源規劃(ERP)系統即是一個具備所需解決能力的適當解決方案,包括銷售、採購、工程進行到財務及成本帳結算等流程。

2. 建築案場管理是屬於典型的專案式進行模式。因此,解決方案中還必須具有專案式的控管機制,方能符合建築業的特性。

南台科大校長戴謙表示,南台科大參賽團隊不僅在全國大專校院初賽20幾個隊伍中,脫穎而出進入8強決賽。在決賽過程中,以簡潔有力方式介紹作品「營建業專案式建案管理」,讓評審們了解此作品的設計理念並留下深刻印象。

南台科大資管系黃仁鵬主任表示,SAP為世界上最大的商業應用、企業資源規劃 (ERP)解決方案和獨立軟體的供應商,在全球企業應用軟體的市場佔有率高達三成以上。目前大廠多以使用SAP的ERP系統,資管系推動ERP系統不餘遺力之下,現在也有了相當不錯的成績表現。

SAP Business One 是SAP專門針對成長型企業設計的產品,它提供直觀並能快速實施的解決方案,滿足企業標準的業務需求以及持續發展的條件,幫助此類企業解決管理問題。本屆競賽目的在於鼓勵大專院校學生及研究生盡情發揮創意,透過SAP Business One系統與產業需求結合,為產業電子化帶來新的營運模式。

ERP 教書的決定被教的成績,不來聽課及格才厲害

ERP

教書的決定被教的成績, 真是不要臉的人!!

應該到另一個學校去參加考試

不來聽課及格才厲害

沒人聽課你沒學生教

真是悲哀
>>>>>>>>>>>>>>>>>>>>>>>>>>
推動以IC卡取代學生識別證,
達到一卡多用途、一卡走遍校園,
推動門禁系統、出席簽到、借書卡、
電子錢交易、成績全自動繳費系統,
也要和台北悠遊卡結合,不僅能儲值,
還能持悠遊卡免費搭台中捷運公車。

上課以唱名點名的方式落伍了,
對xx的科技化點名,
中部其他大學依系所不同方式互異,
有的請助教、工讀生人工點名,或設簽到簿,
有教授則在學期中無預期點名五次,
學生不知道哪五堂課要點名,
不想被當,就乖乖來上課。

ERP SAP MM Automatic Account Determination

Source::http://sapdup.peteandmegan.com/?cat=5

SAP MM Automatic Account Determination

Sometimes I wonder how many implementations it would take to get the Automatic Account Determination process down-pat.

Every consultant I’ve dealt with has had to brush up on the account determination process before implementing it, no matter their experience level.

So, for my sake, and yours, here’s a simple (as much as it can be) explanation of what Automatic Account Determination is, what it does, and how to do it.
Why do I need Automatic Account Determination?

Every time a transaction with financial implications is run, postings must be made to financial accounts. I’m a logistics consultant, so to be honest, I don’t care. But it has to happen, so since this is an integration point between us and FI, unless you can make the FI consultant do it, we have to fight through it.

We could let the user enter the GL account each time we post an invoice or goods receipt, but SAP is supposed to be a productivity tool, so that’s not really acceptable.

So, the idea is that the system will determine (based on our config) what account to post to depending on a number of factors, namely; company code, valuation area (plant vs company code), material / material type, transaction or business event and movement type.
So, with five variables, the determination system must be pretty complex?

Yes. When you come to understand the way SAP have done it, it is an elegant solution, but it is pretty damn complex.

Before you begin, sit down with the FI consultant, find out what accounts there are and in a business sense, how and when each of the accounts should be posted to. Discuss all five of the categories above. With this info set in concrete in front of you, you can begin the SAP config.

Here’s the lowdown, try and stay with me.

Essentially all that is happening is that SAP are allowing us to maintain a record of “if x and y happen, then use account z” and “if a and b occur then use account q”.

I can just imagine the conversation many years ago in Germany (translated for your convenience):

“Ok, we need a table of possible outcomes for account determination.”

“That’s faaarrr too easy. Let’s break it into fifty different tables, come up with many interchangeable names for the same thing, and hide the tables beneath several different, unimaginable directory paths.”
Configuration Steps

First up, since we have to do something first, let’s specify our valuation control. This is done via IMG > Materials Management > Valuation and Account Assignment > Account Determination > Account Determination Without Wizard > Define Valuation Control.

All that we’re doing here is specifying whether the system should consider the valuation grouping code in it’s determination procedures.

“What’s the valuation grouping code?” I hear you asking?

The valuation grouping code (vgc) is a collection of valuation areas that will have the same account determination. Since a valuation area can be a company code or plant, we can say that a vgc represents a group of plants or company codes that have the same account determination.

If you don’t use the valuation grouping code, you’ll have to set up account determination for each plant or company code in SAP.

If you’re using the vgc, then jump into “group together valuation areas” and assign your company codes or plant a code (any code). They should be somewhere in the list automatically, all you should need to do is give them a code.

The next step is to manage different account determination per material type. This is where it can get complicated if you let it.

The valuation class is linked to an account category reference. The account category reference (acr) is an artificial code which allows flexibility in linking material types with valuation classes.

“Huh?” I hear you asking. Let’s consider the alternatives.

We could relate the GL account directly to the material type. This would be easy to setup for a few material types, but would take a huge amount of time for many material types, and would be hard to understand if changes needed to be made.

We could use the valuation class, assign the GL account to it, and then assign valuation classes to material types. This is better, since we could for instance have a “Raw Materials” vc and a “Finished Materials” vc and then simply link all the various material types under each category to the valuation class. This would make updates and initial loads easier, but there is still one thing missing, a material type can only be part of one valuation class and can only post to one account.

However, in the real world, a material type may post to different accounts depending on things other than just the material type, such as plant, movement type or indeed any of the factors above.

So, we have an account category reference which is linked to a material type. This acr is then linked with a valuation class and the GL account is linked to the valuation class. So a material type can be linked to one or more valuation classes (and hence GL Accounts) and in turn, a valuation class can be linked to multiple material types (enabling ease of understanding and updates).

Now that you (hopefully) understand that, the actual updates are pretty simple.

Go to transaction: IMG > Materials Management > Valuation and Account Assignment > Account Determination > Account Determination Without Wizard > Define Valuation Classes and begin by defining your valuation classes. Then define your account category references and go back into your valuation classes and assign them (or you could do the acr’s first). Then go into your material types and assign your acr’s to your material types and done! For the moment.

At this point we should consider another factor, the actual business event that is occurring and it’s effect on account determination. This is another area where you have to try and see through the impenetrable fog of terminology.

Each time “something” occurs in the system it produces a “key” for each of the postings that need to be made (i.e. debit and credit). This “key” is entered in our account determination procedure so that postings for credit and debit go to different accounts. Simple aye?

Well when (as far as I understand) the “something” can be called ‘transaction (key)’ or ‘event (key)’ and the “key” can be called ‘value string’, ‘posting rule’ or ‘posting string for values’ and the column header in SAP for the “key” says “Trans”. Fun, fun, fun.

The combinations of movement type and “keys” and how they are determined are all internally programmed by SAP, so we don’t really care. What we do care about is the account modifier or ‘account grouping code’.

This is the topic I spent the most time on, and I’m still not completely clear, so don’t feel bad if you’re confused.

The account grouping code (aka account modification code, modifier or (in SAP) general modifier) is a three character code (which rather oddly has no link with the posting strings (”key”)) which we use to break account determination down by movement type.

For example, by default in SAP, the system says for movement type 101 and posting key PRD there is no modification. So the account determination is not different based on movement type. However, I can enter a code (e.g. AAA) against movement type 101 and posting key PRD and code BBB against movement type 102 and PRD.

Then in ‘Configure Automatic Postings’ when we go into posting key PRD, we will make entries for ‘general modifier’ AAA, account 100000 and BBB of 100001 (there will also need to be an entry for a “blank” modifier which should cover all the other movement types).

So, make sense? Hopefully.

Now you need to go through and for each posting key that we’re concerned with, record each of the defining factors mentioned above (you don’t need to enter them if you’re not using them) and enter a GL account for each permutation.

You should now find that your account determination is working. I wouldn’t put any money on that promise. My hope is that having read this guide, you’re a little bit closer to having your account determination working, and that in conjunction with a number of other resources you’ll get there eventually.



PS: I will be updating this article periodically, and would appreciate your constructive criticism by commenting below.

ERP SAP MM Automatic Account Determination

ADempiere/Compiere 的對應方式該學學 SAP
簡單設定又有彈性

用廠商集合碼對應 會計科目
用料品類別碼對應 會計科目

用廠商碼對應 會計科目
用料品碼對應 會計科目

設了一大堆
只用 DocBaseType 區分
又無法區分 MovementType

DocBaseType 又太單純太可笑

以下是由 SAP 物流(MM) 顧問寫的
SAP 的顧問普遍是愚笨且無知
(對財務會計與成本會計 FI/CO)
細膩分工大家有飯吃
顧問多人作業更顯其偉大與複雜
就像大甲媽祖的眾多信徒苦力付出彰顯其神威顯赫

SAP MM Automatic Account Determination

Sometimes I wonder how many implementations it would take to get the Automatic Account Determination process down-pat.

完全掌握, 彻底了解, 对自動會計科目對應熟悉得可一字不漏的说出;

Every consultant I’ve dealt with has had to brush up on the account determination process before implementing it,
no matter their experience level.

So, for my sake, and yours,
here’s a simple
(as much as it can be)
explanation of what Automatic Account Determination is,
what it does, and how to do it.
Why do I need Automatic Account Determination?

Every time a transaction with financial implications is run,
postings must be made to financial accounts.
I’m a logistics consultant, so to be honest,
I don’t care. But it has to happen,
so since this is an integration point between us and FI,
unless you can make the FI consultant do it,
we have to fight through it.

以下就是 SAP 有一些很笨顧問 不懂 ERP的精隨講的鬼話
商人無祖國
企業無國界
哪來本位幣
更不能只做一套帳
一個交易事件要立多套帳
國際佈局下的財會人員都由
當地總經理或財務經理招聘
ERP 就是要全球佈局下要有
一致性的財務會計科目歸屬
不會因為
不同會計人員立不同會計科目
不同會計人員用不同成本計算
追求全球佈局下可統一的評估標準

We could let the user enter the GL account each time we post an invoice or goods receipt, but SAP is supposed to be a productivity tool,
so that’s not really acceptable.

So, the idea is that the system will determine (based on our config)
what account to post to depending on a number of factors, namely;
company code,
valuation area (plant vs company code),
material / material type,
transaction or business event and movement type.
So, with five variables,
the determination system must be pretty complex?

Yes. When you come to understand the way SAP have done it,
it is an elegant solution, but it is pretty damn complex.

Before you begin, sit down with the FI consultant,
find out what accounts there are and in a business sense,
how and when each of the accounts should be posted to.
Discuss all five of the categories above.
With this info set in concrete in front of you,
you can begin the SAP config.

Here’s the lowdown, try and stay with me.

Essentially all that is happening is that SAP are allowing us to maintain a record of “if x and y happen, then use account z” and “if a and b occur then use account q”.

I can just imagine the conversation many years ago in Germany (translated for your convenience):

“Ok, we need a table of possible outcomes for account determination.”

“That’s faaarrr too easy. Let’s break it into fifty different tables, come up with many interchangeable names for the same thing, and hide the tables beneath several different, unimaginable directory paths.”
Configuration Steps

First up, since we have to do something first, let’s specify our valuation control. This is done via IMG > Materials Management > Valuation and Account Assignment > Account Determination > Account Determination Without Wizard > Define Valuation Control.

All that we’re doing here is specifying whether the system should consider the valuation grouping code in it’s determination procedures.

評價集合碼(成本計算方式代碼)

“What’s the valuation grouping code?” I hear you asking?

可以將不同的評價區域歸屬於同一評價集合碼,,會反映出相同會計科目與成本

The valuation grouping code (vgc) is a collection of valuation areas that will have the same account determination.

評價區域的範圍為可設定一個公司或單一廠區
設為一個公司時全公司各廠區成本加權平均
設為一個廠區時各廠區獨立分離計算成本加權平均

Since a valuation area can be a company code or plant, we can say that a vgc represents a group of plants or company codes that have the same account determination.

如果沒有設定使用評價集合碼(成本計算方式代碼)
就需設定是依據廠區或公司計算成本加權平均

If you don’t use the valuation grouping code, you’ll have to set up account determination for each plant or company code in SAP.

如果使用設定使用評價集合碼(成本計算方式代碼)
就不需要用評價區域去對應公司或工廠

If you’re using the vgc, then jump into “group together valuation areas” and assign your company codes or plant a code (any code).
They should be somewhere in the list automatically, all you should need to do is give them a code.

接下來是評價分類對應料品類別

The next step is to manage different account determination per material type.
This is where it can get complicated if you let it.

評價分類對應會計類別

The valuation class is linked to an account category reference.
The account category reference (acr) is an artificial code which allows flexibility in linking material types with valuation classes.

“Huh?” I hear you asking. Let’s consider the alternatives.

We could relate the GL account directly to the material type.
This would be easy to setup for a few material types, but would take a huge amount of time for many material types, and would be hard to understand if changes needed to be made.

We could use the valuation class, assign the GL account to it,
and then assign valuation classes to material types.
This is better, since we could for instance have a
“Raw Materials” vc and a
“Finished Materials” vc and then simply link all the various material types under each category to the valuation class.

This would make updates and initial loads easier,
but there is still one thing missing,
a material type can only be part of one valuation class and can only post to one account.

However, in the real world,
a material type may post to different accounts depending on things other than just the material type, such as plant,
movement type or indeed any of the factors above.

So, we have an account category reference which is linked to a material type.
This acr is then linked with a valuation class and the GL account is linked to the valuation class.
So a material type can be linked to one or more valuation classes
(and hence GL Accounts) and in turn,
a valuation class can be linked to multiple material types
(enabling ease of understanding and updates).

Now that you (hopefully) understand that, the actual updates are pretty simple.

Go to transaction:
IMG > Materials Management > Valuation and Account Assignment
> Account Determination
> Account Determination Without Wizard
> Define Valuation Classes and begin by defining your valuation classes.

Then define your account category references and go back into your valuation classes and assign them (or you could do the acr’s first).
Then go into your material types and assign your acr’s to your material types and done! For the moment.

At this point we should consider another factor, the actual business event that is occurring and it’s effect on account determination. This is another area where you have to try and see through the impenetrable fog of terminology.

Each time “something” occurs in the system it produces a “key” for each of the postings that need to be made (i.e. debit and credit). This “key” is entered in our account determination procedure so that postings for credit and debit go to different accounts. Simple aye?

Well when (as far as I understand) the “something” can be called ‘transaction (key)’ or ‘event (key)’ and the “key” can be called ‘value string’, ‘posting rule’ or ‘posting string for values’ and the column header in SAP for the “key” says “Trans”. Fun, fun, fun.

The combinations of movement type and “keys” and how they are determined are all internally programmed by SAP, so we don’t really care.
What we do care about is the account modifier or ‘account grouping code’.

This is the topic I spent the most time on, and I’m still not completely clear, so don’t feel bad if you’re confused.

The account grouping code
(aka account modification code, modifier or (in SAP) general modifier)
is a three character code
(which rather oddly has no link with the posting strings (”key”))
which we use to break account determination down by movement type.

假如 過帳碼 PRD (料品) 沒設定 修正碼 (modification)
那麼 過帳碼 PRD 在異動碼 101 / 102 (movement type) 會對應相同會計科目
For example, by default in SAP,
the system says for movement type 101 and posting key PRD there is no modification.
So the account determination is not different based on movement type.

假如 過帳碼 PRD (料品) 有設定 修正碼 (modification)
異動碼 (movement type) 101 修正碼 (modification) 是 AAA
異動碼 (movement type) 102 修正碼 (modification) 是 BBB
那麼 過帳碼 PRD 在異動碼(movement type) 101 / 102 會對應不同會計科目
AAA 會計科目 100000
BBB 會計科目 100001

However,
I can enter a code (e.g. AAA) against movement type 101 and posting key PRD and code BBB against movement type 102 and PRD.

Then in ‘Configure Automatic Postings’ when we go into posting key PRD,
we will make entries for ‘general modifier’ AAA,
account 100000 and BBB of 100001
(there will also need to be an entry for a “blank” modifier which should cover all the other movement types).

So, make sense? Hopefully.

Now you need to go through and for each posting key that we’re concerned with, record each of the defining factors mentioned above
(you don’t need to enter them if you’re not using them)
and enter a GL account for each permutation.

You should now find that your account determination is working.
I wouldn’t put any money on that promise.
My hope is that having read this guide,
you’re a little bit closer to having your account determination working,
and that in conjunction with a number of other resources you’ll get there eventually.



PS: I will be updating this article periodically, and would appreciate your constructive criticism by commenting below.

ERP 选型是成功的开始

选型::
不能調型所以需要選型
那不能調型的 ERP 怎麼稱為 ERP


Source::
http://www.icax.org/article/extech/2009/636.php
选型是成功的开始
作者:Extech 发布时间:2009-09-01 来源:Extech 点击:290
文章來自 MTU开思网

1、前言
宁波东海集团是国内计量仪表大型生产企业及主要出口基地,
集团隶属有水表、煤气表、热量表、定时器、阀门、智能仪表及能源资源管理系统、
电子信息产业等产业子公司,是浙江省新型计量仪表特色产业基地。


由于公司产品种类繁多,
涉及精密机械、自动控制、传感器、通讯和多个学科,
无论是技术管理和生产管理都非常复杂。
为全面实施信息化管理,在2007年初,
我公司决定实施PDM系统作为企业技术创新和管理创新的依托平台,
最终将实现企业技术体系的统一管理。
由于目前市场上主流的PDM系统有十几家,
对于我们这种对PDM并不是很专业的用户来讲,
判断哪个产品更适合我公司的应用的确是非常困难的事,
为此我公司专门成立了以董事长为首的PDM项目选型小组,
并由技术总监担任项目负责人,
负责整个项目的选型。


考虑到市面流行的PDM系统很多,
即有功能强大的国外软件,
又有功能实用的国内系统,
在选型时,
主要是从本身的需求出发来进行选择,
我们认为,不一定选择最好的软件,
但一定要选择最适合我公司应用的系统。


2、企业需求分析和选择供应商

由于我公司并没有十分熟悉PDM系统的技术人员,
为了做好需求分析,
项目组从网上查询了大量技术资料,
并翻阅了有关PDM/PLM的相关书籍,
同时组织项目组成员和技术人员进行讨论,
最终认为,
企业当前的需求主要包括以下几个方面:


一、公司下属10多家工厂,
技术资料管理方面存在很多安全隐患,
资料丢失现象严重;

二、产品研发包含三大学科:结构、电子、软件;
结构件的借用非常普遍,
常见通用件比例达到80%,标准化程度很高;
电子部分使用电子CAD进行设计,
而软件部分采用了各种汇编语言编制产品软件,
基于以上情况,
目前没有一个完整的产品技术资料管理系统,
不同学科之间的技术资料分散保存,
导致发放到生产部门或工厂的技术资料混乱,
而且生产部门在查询技术资料时也非常麻烦,
经常出现错误;

三、由于在各工厂的技术部门主要负责已有产品的变形设计,
没有行之有效的工具帮助工程师快速检索技术资料,
导致不能快速完成符合客户订单要求的技术资料,
拖延了交货周期;


四、
我公司于2003年引进了IFS系统,
但由于物料编码处理上存在一些问题,
导致在IFS系统中物料管理出现很多问题,
特别是在仓储部门、销售部门不能很好的利用编码信息。

究其原因,在于对产成品进行编码时,规则不明晰,
且由于当时IFS系统对编码长度的限制,
物料编码很难清楚的描述一个物料的准确信息;
另外由于在引进IFS系统时,
技术部门没有参与编码工作,
导致技术部门不能提供带有编码信息的物料清单,
所有物料信息传递到生产部门后,
还需要手工将物料编码维护到IFS系统中,
一旦有新物料产生时,
很难保证物料编码的准确性和唯一性,
而且由于编码申请目前是通过手工台帐形式进行管理的,
在管理和登记过程中错误较多。


五、在IFS系统上线时,
所有BOM信息都是通过手工形式录入到IFS系统中的,
这在当时是不小的工作量,
且因采用手工录入的形式,
BOM数据的准确性大打折扣,
典型的错误如一个物料在IFS系统中有两条完全不同的记录。


六、由于本公司产品的特点,
存在着大量按照客户订单要求进行产品配置的情况,
在以前都是由技术人员针对订单要求手工编制一份订单BOM,
即便只是某个微小的变化,
也需要技术人员在EXCEL中维护一份完整的BOM,
然后再导入到IFS系统。
工作量非常巨大且容易出错,
而这些信息其实在设计阶段的很多文件中都由技术人员编制在图纸上了,
因无法实现CAD和IFS系统的集成,
只能是将物料信息重复书写多次。


七、我公司生产的仪表中智能仪表居多,
而智能仪表中的电子部分更改非常快,
电子PCB板中的元器件数量很多,
每次修改,
都需要维护一个更改后的BOM,
并将数据输入到IFS系统,
当出现一天之间更改二、三次的情况时,
第一版的BOM还没有来得及完全导入到IFS系统,
第三版的数据已经过来了,
从而导致效率很低,
数据传递也非常不及时。


八、我公司的全新产品是技术中心研发的,
对于全新产品研发完全是按照项目管理模式来进行研发控制,
由于产品涉及多个学科,
各学科之间的协调工作很难做到非常合理,
另外由于项目周期比较长,除了图纸绘制以外,
还需要开模、做样机、工艺定型、小批生产,
整个项目不仅仅只涉及到技术部门,
还牵扯到其他部门一同完成项目,
对于项目进度的协调和监控非常困难,
我们的产品经理经常是跑来跑去到处救火,
但项目的整体进度还是被拖延。MTU开思网

以上只是我们在内部讨论后列出的几个主要问题,
其实其他问题还有很多,
比如零件族图纸没有很好的处理方法;
更改时只修改了纸介质文件而电脑里面的文件没有修改,
造成研发其他产品借用时出现错误;
或者是某个零件被使用在多个系统中,
而技术人员不了解情况,对其贸然修改,
导致其他产品生产时无法装配等等各种问题。
当然,我们并不是专业的PDM技术人员,
以上问题都是我们在日常管理中碰到的主要问题,
而这些问题也是我们急需解决的。MTU开思网

在确定了公司PDM系统的初步需求之后,
我们开始从市场上查找合适的供应商,
最终确定了三家软件公司作为考察对象:
某国外高端PDM系统、
艾克斯特和国内另一家软件公司,
最初选择供应商考察的主要指标为供应商的规模、
业界中的声誉、行业特色、实施特点、一般价格等。


3、选型过程MTU开思网
3.1、初步考察MTU开思网
在确定了考察对象之后,
我们分别邀请了三家软件商来我公司进行技术交流,
并向我公司项目组成员做了软件产品的PPT介绍,
经过第一次交流后,总体感觉是,
国外高端产品虽然包含了很多功能,
但有些功能我公司并不一定能用的上,
另外此软件商有可能对其代理的产品也并不是很了解,
讲解过程中概念居多,
让人听不明白到底此功能是做什么用的。
另外两家软件商的讲解则更加贴近于企业。
MTU开思网

经过此初步交流后,
我公司决定以后面两家软件商作为重点考察对象,
当然这并不是说国外高端软件不好,
而是感觉在我公司并不是很实用,
且根据各方的市场报价来算,
国外高端软件的费用显然是我公司难以承受的。


3.2、企业调研
经过第一轮筛选后,
我们邀请后面两家软件商对我公司进行企业情况调研,
相比较起来,艾克斯特公司在调研过程中投入精力较多,
其顾问水平也得到了项目组的一致认可,
从一些细节上就可以看出参与调研的顾问对我们这个行业比较了解,
例如对一些专业数据的描述和行业内的通用叫法上可以看出他曾经做过类似的企业。


3.3、方案和技术交流MTU开思网
调研完成之后,我们要求双方提供项目方案书,比较方案书,
艾克斯特公司显的更加专业一些,
且提交方案书后专门向我公司项目组进行了详细的讲解和交流,
然后针对交流过程中我方提出的问题对方案书进行修改,
这样反复了三次,其方案书也修改了三版,
为了保证方案书中技术路线的正确性和可行性,
软件商还专门和IFS 公司的顾问针对ERP集成接口进行了技术交流。
MTU开思网

当方案阶段结束后,
两家软件商又根据企业实际情况进行了有针对性的产品演示和技术交流,
在产品演示过程中,
艾克斯特公司还专门将我公司的一部分样例数据做到系统中,
让我们感觉非常亲切。MTU开思网

3.4、参观典型用户MTU开思网
当选型走到这一步时,
其实我们公司项目的意见已经基本一致,
那就是基本可以确定选择艾克斯特作为我们的合作伙伴,
当然为了保证选型结果的准确性,
我们还是要求艾克斯特公司带领我公司项目组成员去参观使用他们产品的典型用户。
MTU开思网

针对这个要求,艾克斯特公司向我们提供了二家有代表性的用户,
一个是国内某大型汽车零配件企业,另一个是某电子行业企业。
最初我们对艾克斯特公司提供的典型用户也是心存疑虑,
因为毕竟不是属于我们行业的用户,
那个电子行业企业和我们还类似一些。
但通过参观这两家用户之后,我们取得了不少的收获,
在参考汽车零配件企业时,
我们看到了艾克斯特产品是如何满足汽配行业对项目管理的要求的,
此汽配企业的特点在某些方面和我公司是很类似的,
其产品研发过程也需要经过设计、工艺、模具制造、模具试验、样机、小批、量产等环节,
而且也是按照项目管理模式运行的,在这一点上,
艾克斯特公司的产品能够在此企业应用,
那么同样也能在我公司应用;在另外一家电子行业的典型客户参观时,
我们看到了艾克斯特公司管理的企业的机电软一体化的数据,
并且实现了电子类CAD和PDM系统的集成,
能够直接从电子类CAD中将元器件信息导出并传递给ERP系统,
而这些功能正是我们迫切需要的,
两家公司对艾克斯特公司的产品和实施服务都比较满意;
另外,在参观艾克斯特公司的两家典型用户过程中,
我们在企业的办公室里看到了很完整的项目实施文档……每个项目都有很厚的文档,
记录了每次开会讨论的问题、软件安装情况甚至BUG,这是真正的项目管理,
这些文档让我们项目组对艾克斯特很满意,
和这样的公司合作,成功把握很大。
MTU开思网

3.5、签单MTU开思网
参观完用户后,我们项目经过开会讨论,
决定选用艾克斯特产品,
然后进入商务谈判阶段,
并最终签订了合同。MTU开思网

4、供应商特点总结MTU开思网
经过此项目的一系列过程,
目前笔者对主要参与我公司项目的二家公司的产品有了一定的了解,
对于国外那家公司由于没有进一步的详细接触,
在本章节中不再描述其特点。
那么是什么原因导致我们和艾克斯特公司进行合作呢,
笔者简单的总结了一下,
应该包含以下几个方面:


4.1、公司技术能力
据艾克斯特公司介绍,其全部员工大约为450人,技术人员有210多人,其中:
开发150人,实施60多人。全国共12家分支机构。MTU开思网

在本次项目中,
艾克斯特公司的技术顾问水平得到笔者个人和我公司项目组的认可,
无论是在企业理解、行业经验、方案编制,
还是产品演示、技术交流过程中,
其技术实力都是不错的。


以下资料来源于软件公司网络:MTU开思网
在2004年,艾克斯特入选世界四大会计公司之一的德勤国际会计公司评选的“2004年度亚太地区高科技高成长企业500强”,成为亚太区最有发展潜力的高科技企业。MTU开思网
2006年1月,经过网友投票,艾克斯特获得“中国制造业信息化工程十大优秀供应商”称号。MTU开思网
2006年9月,在IDC公司公布的《关于2005~2010年中国制造业信息化的分析报告》中,
艾克斯特被IDC列为中国制造业信息化十大解决方案提供商,
在国内本土的PLM厂商中位列第一。
MTU开思网

4.2、成功用户数量MTU开思网
据了解,艾克斯特公司成功实施的PDM项目有上千家。
从其网站资料上可以看出其用户涉及汽车汽车零配件、电器成套、电子、机床、家电、锅炉、铁路等多个行业。MTU开思网

4.3、行业经验MTU开思网
在本次项目过程中,艾克斯特公司的技术顾问对智能仪表行业还是比较熟悉的,
能够针对我公司情况提供适合我行业的解决方案
MTU开思网

4.4、CAD集成MTU开思网
针对我公司产品的特殊性,
在产品研发过程中使用到了二、三维CAD,
同时还使用到了电子类CAD,
一个比较好的PDM系统应该能够通过和CAD集成自动读取 CAD文件的中的BOM信息,
从而大大提高PDM系统的使用效率。
与CAD的集成功能是否方便好用,
在某种程度上会影响整个PDM项目实施的成功率。MTU开思网

经过本次选型,我们了解到艾克斯特公司在二维CAD上有专门的二次开发接口,
可以利用此接口实现CAD和PDM系统的双向集成;针对三维CAD,
艾克斯特公司称,
其产品能和目前市场上所有主流的三维CAD进行集成,
据此我们专门向其部分客户进行求证,
了解到其已实现了和UG、Pro-E、 Solidedge、Solidworks软件的成功集成。据了解,
XTPDM产品和三维设计软件也能达到双向集成的效果,
并能实现直接在二、三维CAD 中访问ERP中的基础物料库,
这是其非常独特的一个功能,
按照艾克斯特公司的理论,
实现此功能的主要目的是为了控制数据源头的准确性和优选物料、控制物料种类的效果。
MTU开思网

4.5、编码管理MTU开思网
物料编码在企业信息化的过程中具有举足轻重的作用,
在本文前面需求分析中已经提到本次项目的一个重要目标就是希望能利用此项目对企业的各种编码重新梳理,因此我们对PDM系统中的编码管理方面非常重视:
MTU开思网

据了解,艾克斯特公司提供了一个叫做统一编码的产品,
此产品可集成到CAD、PDM、ERP产品中,
此产品可管理企业信息化过程中的各种编码规则,
并可管理已经申请的物料编码。
MTU开思网

4.6、项目管理MTU开思网
通过本次项目,笔者认识到PDM一般包含数据和文档管理、产品结构与配置管理、零部件分类库管理、计划/项目管理、过程和工作流管理五大功能。前三大功能PDM软件商经过几年的研究和推广,业已成熟;项目和工作流管理是当前PDM关心的热点。MTU开思网

项目管理是在一定的约束条件下,以高效率实现项目目标为目的、以项目经理个人负责制为基础和以项目为独立实体进行经济核算,并按照项目内在的逻辑规律进行有效的计划、组织、协调、控制的系统管理活动。项目管理的核心技术是网络计划技术。MTU开思网

针对于我公司具体情况,一般项目管理会使用在新产品研发的过程中;因此本次选型,项目管理也是我们非常关心的内容:MTU开思网

据了解,XTPDM系统中提供了专门的项目管理模块,包含了项目管理的主要要素,这其中有WBS分解、进度跟踪、资源分配等相关功能,但在成本核算和风险分析等高级功能方面有所欠缺;但仍旧不失为一个比较完整的项目管理功能。MTU开思网

4.7、与ERP系统的集成MTU开思网
随着信息化理论的发展,企业越来越重视信息化产品的整体应用,利用CADCAPPPDMERP系统的集成功能,实现跨部门、跨业务领域不同应用系统的一体化无缝集成,保证企业级数据信息流的畅通性、唯一性、完整性和全程动态共享,并可实现全程动态跟踪与反馈,从而有效指挥并带动企业物流、资金流和伴生信息流的集成与控制管理,为管理者提供及时、可靠、科学的决策支持。针对本次项目,必须要考虑PDM和IFS系统集成的问题:MTU开思网

在XTPDM系统中提供了专门的ERP集成接口,从艾克斯特公司的客户列表可以得知,XTPDM系统应该实现了大部分目前市面上主流ERP系统的集成,所以在ERP系统集成方面,XTPDM系统应该不成问题。MTU开思网

5、选型体会MTU开思网
由于企业的需求、经费和实施规模差异很大,PDM供应商所提供的产品也各有风格,因此如何选择合适的PDM产品,会在很大程度上影响PDM实施的进度和成功概率。在选择PDM产品时,作为客户,我们通常需要考虑以下主要因素: MTU开思网

1.产品的功能 在实施PDM之前,客户已经初步了解企业对PDM各功能模块的需求情况,因此,在选择PDM软件时,我们可根据分析结果选择功能,
按照所需功能的优先级排定软件必备和可选的功能。与此同时,客户集成开发工具的功能将成为客户选择产品的基本条件。值得注意的是,PDM软件面市后需要三年以上的成熟期,
因此客户应尽量选择在PDM市场上处于领先地位的PDM供应商。成熟的产品和较高的市场占有率将获得更多的支持,
例如与其它ERP、CAD系统的接口等。

另外,企业的领导必须清醒地认识到PDM技术不是拿来就能用的工具,
不象其它的应用软件,如CAD、Windows软件等,只要技术人员熟悉软件的一些命令,
就可编程使用。PDM是一门涉及管理领域的技术,它为企业提供了一系列的科学管理工具,实施PDM是对企业动大手术。因此针对不同的企业,按照各自的实际情况,利用PDM提供的管理工具可以创造出各种各样的PDM系统。可以侧重于提供准确的BOM表,创造出适用于系列化生产企业的PDM系统;可以侧重于提供严格的、科学的工作流程管理,创造出适用于复杂产品研制开发的PDM系统;可以侧重于快速响应用户的各项需求,创造出适用于企业项目招标的PDM系统;可以侧重于企业全局信息的集成,创造出适用于企业采用并行工程等各项新技术的PDM系统,等等。这一点在企业引进PDM系统时应特别注意,要充分做好调查和咨询工作。要根据本企业的实际情况和需求分析,选择适合自己企业的PDM系统,要在各项功能上满足企业的要求,不能脱离实际,一味地追求高档和功能齐全。MTU开思网

2.系统的开放性 从PDM系统的发展可以看出,一个优秀的PDM系统,必须具有良好的底层体系结构,能满足异构计算机系统的要求。这样才能保证企业在其不断发展的同时,PDM系统也能随之扩大而不受太多技术因素的制约。PDM系统开放性主要体现在以下几个方面: MTU开思网

(1)持多种硬件平台;(2)支持多种数据库;(3)友好的图形用户界面和多语种支持;(5) 采用先进的技术,如Client/Server、Web/Internet等。 MTU开思网

3.系统集成性 系统的集成性以系统开放性为基础。
系统的集成性主要表现在PDM系统与其它商用系统,
包括MDA、EDA、OA和ERP等系统的集成。
PDM系统必须满足计算机或其它行业的标准,如CORBA、STEP等。
满足这些行业标准意味着PDM软件能更简单、方便地与行业的应用软件或系统集成。
通常情况下,应该优先选择具有现成接口的PDM软件。
如果必须通过客户化来完成集成工作,
用户就必须慎重考虑集成的方式和程度。
集成工作不仅和PDM软件有关,
而且还需要获得其它应用系统供应商的技术支持。

4.供应商服务能力 

在PDM选型的过程中,
很重要的一点,
就是要看供应商是否有实施PDM的技术服务能力,
即技术支持、二次开发和服务的能力。
因为PDM不象其它的应用软件,
不是拿来就能用的,
因此,
在购买之前不仅要很好地了解PDM产品的功能,
还要深入地调查该供应商是否有强大的技术服务队伍?
是否有实施 PDM 系统的能力?
过去在哪些企业作过 PDM 系统的实施?是否有实施PDM的经验?
这些问题都要一一了解清楚,才能下决心购买。
如果某供应商提供的PDM系统功能可以很好地满足本企业的要求,
但是没有强大的技术服务能力,
那么就是再好的产品也不能购买。
对于供应商的发展状况也需要了解,
如果是国外的供应商,
还需要了解其对中国市场的重视程度。
如果某些软件厂商在一段时间以后关门了,
或者国外的厂商为了全球市场的需要,
临时决定关闭中国的办事处,
诸如此类的问题都将给企业带来不可估量的损失。
因此,在选择供应商这个问题上一定要慎重。MTU开思网

5.产品和服务的费用
::
:: 使用的課程免費上課
:: 修改的課程免費上課
::
项目投入的费用问题是企业需要重点考虑的,
因此对软件和服务的费用应该经过多方面的比较和调查。
企业购买 PDM 产品时,
不仅要购买 PDM 产品,
而且还要花费一定的经费买服务,
即给企业提供技术咨询、技术支持、二次开发、培训和实施等服务工作。
这些开销也要占到一定的比例,
这点在预算经费时,一定要把服务的经费规划在内。
如果企业有较强的技术力量,
那么就要仔细计划哪些工作必须由PDM产品的供应商来做,
哪些实施可以在供应商的指导下由自己来做,
这样可以节省部分资金,
又可以尽早锻炼出自己的PDM技术力量,
有利于企业今后PDM系统的正常运行和维护,总之,我们认为,
一个软件再好,如果不能向企业提供很好的实施服务,
企业也不会取得很好的实施效果。
但对于选型来讲,毕竟项目还处于未签订合同状态,
因此考察软件供应商典型用户的实施过程和效果也是非常重要的。

ERP 中國品牌 長安 ERP 河洛實務博士學院院士群

ERP 中國品牌 長安 ERP 河洛實務博士學院院士群

以資本主義手段對抗資本主義
以共產主義開放原碼一生承諾

最極權的民主政府
最凶惡的善心人士::歧視別人的能力::輕忽別人的痛苦

要追上 SAP
要用 DocType 來決定 過帳方式
要用 DocBaseType 來決定 作業類別
要用 AD_UserDefine_Win 來超越 SAP
要用 AD_UserDefine_Tab 來超越 SAP
要用 AD_UserDefine_Field 來超越 SAP

2010年2月19日 星期五

ERP SOA

到底是受訂時要管制,,還是出貨時要管制 ??
出貨單金額超過10萬元
出貨人員打了出貨單後
系統會將它送到營業員的信箱 !!
:: 重點該是送到 : "稽核" 與 "業務會計" 順道通知營業員 你的貨已出了!!!
:: 訂單都接了都已經給承諾交期了!!
:: 難怪會設計出 由 Client Thread 去更新 Server 的 假 SOA - ERP
:: 沒有 MDA 概念 難怪需要 3000 多種 Service !!

工作流(workflow)是一種「事找人」的機制,對落實標準作業程序有幫助。
例如,金額在10萬元以上的出貨單要先讓營業員看過再讓營業主管看過。
若某出貨單金額超過10萬元,
出貨人員打了出貨單後,
系統會將它送到營業員的信箱,
並發簡訊給營業員。
營業員簽核後,
系統繼續送到營業主管的信箱。
營業員和營業主管只要能上Internet就能簽核,
用手機也可以。

ERP SAP FI Check List for Closing

SAP FI
Check List for Closing
SAP FI Check list for year end closing

1 Execute Report for InterCompany Activity & Journal Entries
2 Open posting period for next yr
3 Run Business Area's Assignment report.
4 Review list of recurring journal entries
5 Execute Recurring Entries for A/R, A/P, G/L
6 Process Parked A/R, A/P, G/L accounting documents
7 Final Cutoff for the Maintenance of Fixed Asset- Add Transfer and Retire
8 Run Depreciation in Test Run and post
9 Verify Display Log for Depreciation Test Run
10 Capitalize AUC Assets if needed
11 Enter Payroll Data to SAP
12 Verify Depreciation Balances with GL balances
13 Post Depreciation
14 Execute Asset History Report, and retire assets if needed
15 Adjust specific depreciation areas if necessary
16 Reconcile AM subledger with GL
17 Check Bank Data
18 Review AR Open Items
19 Review AP Open Items
20 Execute Pending Invoices
21 Clear Open Item for GRIR, freight
22 Reconciliation of Financial Documents and transactional figures
23 Open new CO Posting Period
24 Compare current (cost estimates) with last current price (Moving Avg)
25 Update current cost price to material master price field.
26 Process Freight charges, Match SD freight to actual
27 Review Internal Order Postings
28 Settle All Orders
29 Verify All Post Goods Issue have been Invoiced (Billing Due List)
30 Review SD Billng Doc from prior mth that have not yet been released to accounting
31 Reconciliation of MM movements in Transit Intra-SAP to NonSAP
32 Reconcile PI Inventory with SAP
33 Perform Manual Adjustment if needed
34 Verify balance of the GR/IR account
35 Post Accruals and Deferrals
36 Clearing of Cancelled Documents
37 Check Profitability Segment Adjustment
38 Aging Report-Reconcile GL balances with subledger balances AP
39 Check the check run numbers
40 Bank reconciliation Data
41 Enter Tax Journal Entry
42 Reconcile GL balances with subledger balances AR/MM/AP
43 Display Balance Sheet Adjustments
44 Post Balance Sheet Adjustments
45 Post Foreign Currency Valuation (foreign exchange)
46 Check generic cost centers for posting with wrong accounts
47 Correct wrong postings on generic cost centers
48 Check Validation dates for Cost Centers, Cost Elements, CO area
49 Check COGI--for both month end and year end
50 Doubtful receiviables
51 Verify In-transist Inventory
52 Reconcile PA to G/L
53 Post Cost Centre Assessments and Distributions
54 Run CO-FI Reconciliation to balance
55 Run BW reports P&L and Balance Sheet
56 Maintain CO yr variant
57 Fiscal Yr Balance carryforward AP/AR/AM
58 Fiscal Yr Balance carryforward CO
59 Fiscal Yr balance carryforward FI
60 Fiscal Yr balance carryforward PCA
61 Set Document number ranges - FI - new year
62 Set Document number ranges AP/AR - new year
63 Generate Financial statement Reports
64 Change Fiscal Year For Assets
65 Year end Closing-- Asset Accounting--final for year end
66 Close CO Posting Period
67 Close Prior A/R Posting Period
68 Close Prior A/P Posting Period
69 Close Prior MM Posting Period
70 Reverse accruals and deferrals for the new month
71 Reconciliation of Financial Documents from old fiscal year and new fiscal year
72 Load Balances, Budget Data for Cost centers, sales
73 Update Retained Earning Account , balance carry fwd

ERP SAP SD

SAP SD
Accounting Entries
INVOICE GENERATION
Invoices will be generated at the Smelters and stock points.
The accounting entries for the sale of goods despatched will flow from the Sales invoice generated in SAP Sales and Distribution module.

The following entries shall be passed
Customer Account Dr
Revenue Cr
Excise Duty Payable Cr
Sales Tax Payable (local or central) Cr

Note:
As mentioned above in the FI document, which is created in the background, the SD invoice number shall be captured.

However as per the current accounting procedure the accounting entry passed is as follows :-
Customer Account Dr
Revenue Cr
Excise Duty Billed Cr
Sales Tax Payable (local or central) Cr

Excise duty paid a/c Dr
Excise duty payable a/c Cr

EXPORT SALES
There have been very few export transactions in the past. SAP system will be designed to handle export business.

Exports are mainly from the mines and will be handled at the mines, however the documentation part will be taken care at the Head Office. The accounting entry is:
Customer Account Dr
Revenue (Exports) Cr

The realisation of export sales will be directly credited to the bank. The accounting entries will be as follow:
Bank Dr
Customer Cr
Exchange Fluctuation Dr/ Cr

The accounting entries will be:
Rebates/Discounts Dr
Customer Cr

DEBIT MEMOS
Debit Memos shall be issued in case of price difference, sale tax difference and interest on usance period and overdue payments.

The accounting entries for two possible scenarios are as follows:
Price Undercharged:
Customer Account Dr.
Revenue Cr.
Sales tax payable Cr.
Sales tax undercharged
Customer Account Dr.
Sales tax adjustment Cr.

Interest on delayed payments/usance period and other charges
Customer Account Dr.
Interest Others Cr.

In case of HZL a complete retirement or a partial retirement of asset is done.
The system uses the asset retirement date to determine the amount to be charged off for each depreciation area.

The existing accounting policy is to provide depreciation for the full quarter in which the asset is sold/discarded, recommended that the depreciation be provided from the date of acquisition on prorata basis .

Accounting entry for sale of Asset to customers:
Customer Account Dr
Asset Sale Cr
Accumulated Depreciation Dr
Loss on Sale (if applicable) Dr
Asset Sale account Dr
Asset account Cr
Profit on sale (if applicable) Cr

Note:
In case of any Sales Tax /Excise duty applicable for this transaction, SAP will calculate the Sales Tax/Excise Duty based on the Tax Code selected the entry is posted to the GL Account (Sales Tax Payable)

Accounting entry for sale without a customer:
Accumulated Depreciation Dr
Loss on Sale (if applicable) Dr
Asset Sale account Dr
Asset account Cr
Profit on sale (if applicable) Cr

Accounting entry for scrap
Accumulated Depreciation Dr
Loss on Sale of Assets Dr
Asset account Cr

SALE OF SCRAP
The sale of scrap (non-stock) shall be mapped as a direct manual FI entry. The customer will be created as a FI customer. No Logistics module will be involved in the process.

A FI Invoice will be prepared for the sale of scrap with the following entries:
Customer Dr
Sale of Scrap Cr
Excise Duty Payable Cr

ADVANCES FROM CUSTOMERS
Advances are received from the customers against delivery.
These advances will be recorded in a special general ledger account.

The accounting entry for the same will be:
Bank Account Dr
Advance Customer Payments Cr

These advances will be later on adjusted against the invoices raised on the customers. Advances can be adjusted against more than one invoice at the time of clearing of the invoices against advances.

Adjustment of Advances
Customer Account Cr
Advance Customer Payments Dr

A financial document would be created for each Bank Guarantee received and this document number will be referred to in the Sales Order which would then monitor the value and the validity of the of the

Bank Guarantee instrument wise while doing the billing.
The letter of credit /Bank guarantee given will be recorded as a noted item.

Accounting Entry for Goods receipt
Stock/Inventory account Dr
GR/IR account Cr
Freight clearing account Cr

Accounting Entry on invoice verification of supplier
GR/IR Dr
Vendor account Cr

Accounting Entry on invoice verification of freight vendor
Freight clearing account Dr
Freight Vendor account Cr

GOODS RECEIPT
Based on the Purchase order and the Quantity actually received Goods Receipts (GR) will be done.

Based on the GR done the following accounting entry will be passed in the Financial Accounts
RM/PM Stock Account Dr
GR/IR Account Cr
Freight Clearing Account Cr

EXCISE INVOICE VERIFICATION
On receipt of the excise invoice cum gate pass the following entry will be passed
RG 23 A / RG 23 C Part 2 Account Dr
Cenvat Clearing Account Cr

ERP SAP 讀取會計設定檔

IMG -> Sales and Distribution -> Account Assignment/Costing -> Revenue Account Determination
-> Assign G/L Accounts

With this link, the material that used this account assignment group will be posted with the desired G/L accounts during Billing.

User will not be able to Release the billing document to Accounting if this is not setup.

If you happend to assign it via Cust.Grp/MaterialGrp/AcctKey, then you can let your user use this report to check the material assignment.

* Transaction code VKOA

REPORT ZMATNR_AC_ASSIGN LINE-SIZE 132 NO STANDARD PAGE HEADING
LINE-COUNT 044(001).

TABLES: MARA,
MVKE, "Sales Data for Material
C001. "Cust.Grp/MaterialGrp/AcctKey

SELECT-OPTIONS: S_MTART FOR MARA-MTART DEFAULT 'DIEN',
S_MATNR FOR MARA-MATNR,
S_VKORG FOR MVKE-VKORG DEFAULT 'ALL'.

SELECT * FROM MARA WHERE MTART IN S_MTART
AND MATNR IN S_MATNR.
CLEAR MVKE.
SELECT SINGLE * FROM MVKE WHERE MATNR = MARA-MATNR
AND VKORG IN S_VKORG.

CLEAR C001.
SELECT SINGLE * FROM C001 WHERE KTGRM = MVKE-KTGRM.

WRITE:/ MVKE-MATNR UNDER 'Material',
C001-KTGRD UNDER 'Cust Grp',
MVKE-KTGRM UNDER 'Matl Grp',
C001-KVSL1 UNDER 'Acct Key',
C001-SAKN1 UNDER 'G/L From',
C001-SAKN2 UNDER 'G/L To '.

ENDSELECT.

TOP-OF-PAGE.
FORMAT COLOR COL_TOTAL.
WRITE: / SY-DATUM, SY-UZEIT, SY-REPID,
050 'Material Sales Account Assignment',
120 SY-UNAME, SY-PAGNO.
SKIP.
WRITE: /001 'Material',
020 'Cust Grp',
030 'Matl Grp',
040 'Acct Key',
050 'G/L From',
060 'G/L To '.
SKIP.

2010年2月18日 星期四

ERP SOA

ERP SOA

SOA 就是 Server Side's Service is Independent
SOA 就是 Client Side's Session not Trigger of Server Side's Service

既然是服務導向
Client端不要把 Server 當自助餐檯 自己來挾菜
Client端不要等待 Server 來問你要點什麼菜,
Client端自己看完 Menu 自己勾選投入等待主動服務.

Source::
http://blog.udn.com/al1107/3128991

自己有在訂閱GOOGLE的網路新聞,
最近常收到關於服務導向架構(Service-Oriented Architecture,SOA)
是否無法成為氣候,相對應的軟體是否也終將只是一種口號?
有很多廠商都有相關軟體,我只闡述我理解的ERP範疇。

ERP已經跑了好多年,似乎該有的公司都有了,那如SAP,ORACLE可能準備要收攤...但實際上仍有許多公司繼續的找尋合適的系統,可能升級,可能更換,無論如何,伴隨著公司成長的腳步,系統功能的增強仍是一個關切的議題。

個人待過的前一公司,所研發出的SOA ERP,讓我了解其實ERP可以有很多的彈性與延展性,所以我仍是他們忠實的銷售夥伴,加油加油,共同努力開發這片紅海中的藍海...

ERP SOA

ERP SOA

自己有在訂閱GOOGLE的網路新聞,
最近常收到關於服務導向架構(Service-Oriented Architecture,SOA)
是否無法成為氣候,相對應的軟體是否也終將只是一種口號?
有很多廠商都有相關軟體,我只闡述我理解的ERP範疇。

ERP已經跑了好多年,似乎該有的公司都有了,那如SAP,ORACLE可能準備要收攤...但實際上仍有許多公司繼續的找尋合適的系統,可能升級,可能更換,無論如何,伴隨著公司成長的腳步,系統功能的增強仍是一個關切的議題。

個人待過的前一公司,所研發出的SOA ERP,讓我了解其實ERP可以有很多的彈性與延展性,所以我仍是他們忠實的銷售夥伴,加油加油,共同努力開發這片紅海中的藍海...

ERP 致遠 為企業培育優秀人才再次獲肯定 ??

ERP 致遠 為企業培育優秀人才再次獲肯定 ??
從不批評系統的對與錯
從不研究系統應改進的操作方法與流程
完全記熟設定與操作程序稱為::優秀人才
有考上三張應用規劃師執照鼎新也不會挖角的
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
我會開車我會在三種不同路面開車
汽車公司不會因此請你去設計汽車
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

教育部委託技專校院入學測驗中心辦理的
「委辦技專校院取得民間證照認證執行計畫案」,,
為企業培育優秀人才再次獲肯定。
致遠資管系榮獲資管類應用規劃師評鑑優等獎
致遠董事長蔡清淵表示,為培育企業管理人才,
教育部推動技專院校取得民間證照認證執行計畫案,
並委由各專業單位辦理,
企業資源規劃(ERP)類,
則委由中華企業資源規劃學會辦理評鑑。

蔡清淵表示,致遠管理學院在眾多技專院校的角逐下脫穎而出,榮獲ERP資管類應用規劃師評鑑優等獎,3年來資管系師生努力終於獲得肯定。

資管系主任胡智明表示,為因應企業所需的規劃與應用人才,資管系在前主任王育民的帶領下已默默的努力3年多,輔導學生針對企業資源的規劃與應用考取規劃師與應用師的證照,增強未來在就業市場上的謀職實力,幾年來已有不少學生考取證照。

前主任王育民表示,ERP評鑑,資管系3年多前開始推動,初期以輔導學生考規劃師為主,近2年增加應用師證照的考照輔導,陸續已有4、50位學生考取規劃師證照,20多人考取應用師的證照,這次獲獎是3年來師生努力成果做肯定。

王育民說,ERP規劃師需具備對企業內部的財務、產業部門及內部資源能做妥善結合與規劃的能力,而應用師則是對企業軟體的實際操作需具備相當功力才能取得證照,資管系則針對企業人才需求開設企業規劃與實務課程,讓學生對未來就業市場提前做準備。

ERP SOA 亂中有序 亂中有續 亂中有緒 ??

ERP SOA 亂中有序 亂中有續 亂中有緒 ??

模組層級服務組合案例 ??

>>胡搞也是搞
>>有搞也是搞
>>亂搞也是搞

SalesOrder的模組元件,組合了三個服務,

分別為CrtSO, QrySalsesData, ConfirmSO, <<

依序所作的任務為建立銷售訂單、

查詢銷售訂單以及確認銷售訂單的動作。

PurchaseOrder的模組元件,組合了三個服務,

分別為CrtPO, QryPurchaseData, ConfirmPPPO,

依序所作的任務為建立採購訂單、

查詢採購訂單以及確認採購訂單的動作。

圖5為SalesOrder的實作,
最終模組內部服務的編排方式,
模組的實作可以使用多種程式語言來達成,
如Java以及BPEL,
圖中Receive表示SalesOrder模組的進入點,
而Reply是執行完整個模組之後的回應結果,
QrySalesDataAssign為QrySalsesData的介面,
規定在使用QrySalsesData服務之前,
需要先輸入特定值,
例如此服務的任務為查詢,
所以需要輸入特定的查詢資料,
這些資料和型態都會在介面中規定,
接下來才能夠執行QrySalsesData的服務,
當QrySalsesData服務執行完成之後,
也會有特定的回應,
例如根據輸入資料查詢過後的結果。

ERP Project on Pluralism and Fundamentalism in Germany and the United States

http://www.aicgs.org/index.aspx
http://www.aicgs.org/Projects2/view.aspx?ID=56&origin=results&QS=%27&union=AND&viewby=50&startrec=1&top_parent=155

ERP Project 的基本教義與多重認知在美國德國

ERP Project on Pluralism and Fundamentalism in Germany and the United States

Over the past two years, political relations
between the United States and Germany have stabilized,
while transatlantic economic integration remains deep and extensive.
American and European observers nevertheless speculate that the United States and Europe may be drifting apart in fundamental ways,
undermining their ability to cooperate on a broad range of issues.

German-American differences appear particularly profound
when it comes to the role of religion and religiosity in public and political life.
To some German observers,
the United States appears to be caught in the throes of a fundamentalist revival, while some Americans see Germany as a country that has become so secular that it no longer knows how to deal with religious expression in public life,
as seen in the "headscarf debate."

Behind these simplistic stereotypes lie more complex and fluid realities.
The constitutional and structural division of church and state in the United States has never meant the separation of religion from politics.
And in Germany, societal secularism coexists with church-state cooperation,
for example,
in the provision of religious instruction and social services.
Moreover, despite their different traditions,
Germans and Americans are confronting the dual challenges of two antithetical approaches to religion and public life: fundamentalism and pluralism.

Germans and Americans would benefit from a more nuanced understanding of religion and politics in their respective societies, in German-American relations,
and in our dealings with many other countries and conflicts in the world. Conversely, misperceptions of religion and public life in both countries serve to further highlight our differences rather than commonalities, and justify and strengthen the belief in the necessity and wisdom of a transatlantic divorce.

This AICGS project seeks to address the challenges presented to governments and societies by religious fundamentalism and by religious diversity.
The project's workshops address, among others,
issues such as the definitions and perceptions associated with fundamentalism and pluralism; the varying historical contexts within which fundamentalism and religious pluralism have existed;
the different effects of fundamentalism and religious diversity on politics in the United States and Europe; and the impact of these issues on democratic societies on both sides of the Atlantic.

..........................................................................................................

This project was concluded in February 2007.

In conjunction with this project, AICGS hosted two workshops. The first workshop on German and American Perspectives on Religion and Fundamentalism was held in November 2006 in Washington DC. The second workshop in May 2006 at the Humboldt Universität in Berlin focused on German and American Perspectives on Religious Pluralism: Domestic and Global Dimensions.

The following publications were published by AICGS as part of this project:

German-American Issues #7
Reconciling Religion and Public Life: Essays on Pluralism and Fundamentalism in the United States and Germany
By Patrick J. Deneen, Türkan Karakurt, Charles T. Mathewes, Erik Owens, and Rolf Schieder

Issue Brief #9
Confronting Religious Diversity in Germany and the United States
By Cathleen S. Fisher
*Please see erratum statement

Issue Brief #13
Disturbing Fundamentalism
By Joshua J. Yates

AICGS continues its focus on religion with a new project on Religion In Politics: Impact of Culture and Religion on Public Policy Debates, generously supported by the Robert Bosch Foundation.