雖然是 Part 1,可是有沒有 Part 2 就很難說了

我跟 User 介紹 Oracle Discoverer 時,我都說這是 Oracle 版的 Excel。當然,它沒有 Excel 好用,可是它有 Excel 的特點,舉凡畫圖、樞紐分析等,至少目前還沒看到不能轉成 Discoverer 的 Excel File (笑)。


Discoverer使用可以分成四個部份:
1. Oracle Discoverer Administrator
2. Oracle Discoverer Desktop
3. Oracle Discoverer Plus (Web)
4. Oracle Discoverer Viewer (web)

第一個就是 IT 人員平時維護 EUL 與 Business Area 的介面。

後面三個就是給 User 看 Discoverer Workbook 的介面,Desktop 是傳統 Client 的軟體,版本比較舊,也需要安裝,大多只有安裝給 IT 使用 (舊歸舊,使用起來還滿穩定的,而且速度比較快);第三跟第四個是新版本的,也跟 EBS 一樣是 Web 介面,Viewer 不多說,正常人一定不會想用,太簡陋了,雖然在 Workbook 的保護上,Viewer 是最 OK 的,可是一次只能看六個 Fields ... 我看還是算了吧。預設是六個 Fields,使用者可以自行調整要看的欄位

Plus 是 Desktop 的新一代,它有一些功能是不存在於 Desktop 的,例如:Search Parameter 是否必填,在 Desktop 沒得選,Plus 有這個選項、警示訊號範圍顏色等等,但是,它的優點也是它的缺點,因為是 Web 化,反應與處理速度上,沒辦法跟 Desktop 相比。

Discoverer 本身也有提供權限管理的功能,可是實際應用上跟 Oracle Workflow 一樣,太單調了,或許是台灣公司跟外國公司比起來,對於權限這種事觀感不一吧。說它單調的原因是:User 可以使用 Plus 去該改變當初制定 Workflow 的 Condition,雖然 Discoverer 的本義是提供 User 自由的去拉自己要的報表,可是我相信沒有一個 User 那麼有空去拉自己的報表,絕大多數還是由 IT 拉一個統一的報表供大家使用,在混用的情況之下,似乎沒有辦法很動態的去變化撈出來的資料 (這部份目前仍在研究中)


Updated 2008-01-18 :
OK了,找到動態 SQL 的解法了,可以利用 FND_PROFILE 來判斷 Login 的 User_ID 或 Responsibility,進而區分出可呈現出來的資料。
對於 FND_PROFILE 的用法還不是很了解,正在收集資料中 ~


列一些"真正"的心得好了

1. 可以在 Business Area 做一些 Custom Folder,再變成 LOV (Item Classes),例如 Customer Name,之後只要有 Customer Name 的 Business Area,就可以直接套用這個 LOV,這樣 User 在 Search 時就可以用選的

2. Desktop 上的字型 不等於 Plus 上的,就算有同樣字型同樣大小,兩邊看起來還是差很多

3. 在 Desktop 上設定的參數一定都是必填,在 Plus 上設定的可以選擇

4. 不要直接使用 Desktop / Plus 上的 "匯出成 Excel",因為它會把檔案放在一個 User 一定找不到的地方,要使用 "匯出",才可以選擇自己要的路徑

Aloz 發表在 痞客邦 留言(2) 人氣()

這個功能我已經是第二次做SR了,看來問題還真多

不過還好,第三天就給我一個 Patch 了

明確的問題發生原因也不是太確定,但是我自己試出來的原因是,如果在 Run "Audit History Consolidator" 這一隻 Request 時,它抓取到多筆的 SO Change Records,就會造成拋到 OE_AUDIT_ATTR_HISTORY的資料會有垃圾。垃圾的意思是說,我明明改的是 Order Qty,它會記錄到沒錯,但是卻可能多記了一筆  Unit Selling Price = New Order Qty 的 Record,這筆 Record 就是我指的"垃圾資料"

這個問題 Oracle 給我了一個 Patch : 5753510,不大不小,聽 DBA 說這是 OM 的整體修正 Patch,把一段時間累積下來的 BUG 一次修完,希望是不會有問題才是

也順便講一個算是烏龍吧

在 Shipping Transaction > (Tab Page) Delivery 中有一個 Ship Confirm 的按鈕,不用說就是出貨確認的按鈕,這個功能可以利用 Shipping 的權限控制來管控,可是在某一天我發現,我沒有開權限的 User 卻可以使用這個按鈕。我的天阿,這在我們公司可以是天大的問題,可是我查了設定與 User Actions,都沒有發現有任何不對的地方,可是 User 就是看的到也可以使用。

一度以為是之前 Log TAR 之後上的 Patch 有問題,還跑去 Submit new SR,但有一天回家後我突然想到,我好像對於 Ship Confirm 有做 Personalize,而我 Personalize 控制的就是按鈕的 Enable / Disable,隔天上班來確認,噗,還真的是勒,真是對 Oracle 有點不好意思,趕快把 SR 關了 XDDD

也因為這件事呢,我現在寫 Personalize 都不會隨便控制 Enable / Disable,能用 Displayed 就用吧

Aloz 發表在 痞客邦 留言(0) 人氣()

公司為依照部門對 Sales Order 這個畫面做很多功能區分,好比說誰能做 Release Hold 阿等等,除了要控制 Sales Order 的 Insert / Update / Delete Allowed 之外,Actions 的控制也是關鍵。

絕大多數的 Action 都是在 Menu 之下的 Function,不過,因為它是 Oracle,所以一定有例外 (爆)

-== 一定都會有 ==-
- Additional Order Information
* Apply Automatic Attachments ( 非 Query_Only 才會有 )
- Promotion/Pricing Attributes
- Version History
- View Adjustments
- View Blanket Sales Agreements
- View Reasons
- View Shipping Status
( 開 Form 來看,都是寫死在 Action LOV 裡面 )

-== Action Name 不等於 Function Name ==-
- Spit Line = Sales Orders: Schedule Orders

還有新的發現再補上囉~

Aloz 發表在 痞客邦 留言(0) 人氣()

噗,卡在哪已經不想查了,等有空吧 XD

會發現的原因是,INV 模組要關期間,系統提醒有未幾筆未完成的Shipping,但是系統描述沒有寫的很清楚,一時間都不知道是哪幾筆

( INV 模組 > Accounting Close Cycle > Inventory Accounting Periods > 選擇期間 > (B)Pending > Pending Transactions )

後來又多試了 一張出貨,馬上看系統才發現:

當Ship Confirm之後,系統會觸發 Workflow,但 Workflow 會因為不明原因"卡彈" ( Line Status = "Shipped" ),造成資料流停在 Workflow 的某一站上,這時就必須要人工在重啟 Workflow。

有兩隻系統的 Request 可以跑 ( OM模組 > Shipping > Interfaces > Run ) :

1. Interface Trip Stop - SRS
2. Order Management Interface - SRS

大部份的情況只要跑第一隻,但看metalink有一篇有提到,如果單跑第一隻Request不能解決問題的話,就要跑第二隻,完成後再重跑第一隻


還發現了另一種情況,就是 Ship Confirm 已成功,但是卻沒有把 Stage 倉的貨扣帳,進而發現卡在 Order Line Workflow 的某一站 ( 今天的 Case 是卡在 Ship ),用 SYSADMIN 做 Retry 也沒有,甚至還有 ERROR。

解決方式還不是很確定,但是今天是把 Table Space 打開,Retry 之後在 Run "Interface Trip Stop - SRS" 就解開卡住的問題

這個問題跟上面不一樣的是,INV 那邊的庫存帳沒有扣除,直接跑 Interface Trip Stop - SRS 也不能解決,所以算是特別的 Case 吧

Aloz 發表在 痞客邦 留言(2) 人氣()

這幾天都在研究 Sales Order 的 Actions List, 大部份都很簡單, 就是用 Function 的方式掛上去,

可是, 似乎有些是預設一定會有的,

1. Additional Order Information
2. Apply Automatic Attachments (*)
3. Promotion/Pricing Attributes
4. Version History
5. View Adjustments
6. View Blanket Sales Agreements
7. View Reasons
8. View Shipping Status

(*) 如果 Form 是 Query_Only, 這個 Action 不會出來

其實, 出來也沒差, 但是就想說如果是用不到的功能, 就想要把它 Disable

那, 目前仍是無解

Aloz 發表在 痞客邦 留言(0) 人氣()

好幾天沒寫了 @@"

離上線越來越近,莫名的狀況也越來越多。目前發現比較奇怪的問題有兩個:

1. Customer Profile Class

公司的 Credit Profile Class 是建立在 Customer Level,之前都沒有什麼問題,卻在 PROD 環境發現,明明 User 在建立客戶時,已經有給公司規範的 Profile Class,竟然在存檔之後,重新查詢發現被改回 Default。導致 User 要重新維護 Profile Class、Collector、Credit Limit。

目前仍未解決!

(2008-02-05) 問題解決了,一樣,上個 Patch :5026759 

2. Party Number and Customer Number

這個問題更怪,我不知道 Oracle 定義 Party 用意在哪,至少我們公司不太需要用到,可是卻常常發生,User 明明建立兩個客戶 (A / B),Oracle 卻把它視為同一個 Party (Party Name = A),造成 Party Number 相同 Customer Number 不同的情形。更怪的事,其中一個 Customer Name 就不見了,改了 A 客戶,B 客戶的名字也會被改,反之亦然。算 BUG 嗎?我不知道 Orz

Aloz 發表在 痞客邦 留言(1) 人氣()

前陣子,也是 User 提出的需求,他希望能夠用 Excel 把資料倒進 Oracle,雖然 Oracle 有 SQL Loader,但是對 User 來說,那不是一個簡單的東西,所以呢,他想要「直接」用 Excel。

雖然可以使用 ODBC 或者 ADO,但是顧問告訴我們一個小東西 : OO4O

OO4O 簡介
(Oracle Object For Ole),Oracle 所提供的 Native OLEDB Driver,效能比 ADO 好

就衝著它比 ADO 效能更好,就在 Excel VBA 中實現它吧。

不過,也沒人教怎麼用 Orz
在 Google 找半天的結果,給我翻到了一個日文網頁,剛好有寫用法

參考網址 : http://homepage1.nifty.com/shimajun/ora.htm
原文如下 :

VisualBasic から OO4O を使って、表にアクセスしてみる(その他更新編)


Select 編は、読んでいただけましたか?Dynaset を使用する方法と、Bind を使用した参照方法、2つを書きました。
単なる1レコードの読みこみ(照会)だけならば、Dynaset で十分です。コーディングも短いですし、気軽に使えます。

ようは、適材適所というか、○鹿の一つ覚えのように、Dynaset を使うのはダメということです。

さて、参照の次は当然、更新,追加,削除です。参照を含めて、この4つが使えれば、大体のPGは問題なく作成できます(よね?)

1.Dynaset を使う

参照の時に使った、Dynaset を用いて、更新,追加,削除をしましょう。
--------------------------------------------------------------------------------
Dim W_Sql   As Object
Dim W_Dyna As Object

W_Sql = "select item1 from tblA"

Set W_Dyna = OraDatabase.dbCreateDynaset(W_Sql,&H0&)

W_Dyna.dbEdit '(A)
W_Dyna.fields("item1") = "ABC" '(B)
W_Dyna.dbUpdate '(C)
--------------------------------------------------------------------------------
簡単です。超が付くほど。

(A) では、「これからレコードの編集をするぞ」と宣言し、
(B) にて、更新対象の項目に、値をセットし、
(C) で、更新を実行しています。

更新処理(Update) を行うには、dbUpdate メソッドを、Dynaset に対して実行してやれば良いのです。
(当然、カレントレコードが対象になります)

なにも考えてないコーディングですが、これだけで更新できます。実際にはもっと項目が多いですから、
コーディングは煩雑ですけど。

追加の場合はこうです。
--------------------------------------------------------------------------------
Dim W_Sql   As Object
Dim W_Dyna As Object

W_Sql = "select item1 from tblA"

Set W_Dyna = OraDatabase.dbCreateDynaset(W_Sql,&H0&)

W_Dyna.dbAddNew '(A)
W_Dyna.fields("item1") = "ABC" '(B)
W_Dyna.dbUpdate '(C)
--------------------------------------------------------------------------------
更新の時と、そう差が有りません。
dbEdit メソッドが、dbAddNew メソッドに変わるだけです。最終的に、(C)の dbUpdate を実行した時点で、
Insert されます。

さらに、削除の場合は、こうです。
--------------------------------------------------------------------------------
Dim W_Sql   As Object
Dim W_Dyna As Object

W_Sql = "select item1 from tblA"

Set W_Dyna = OraDatabase.dbCreateDynaset(W_Sql,&H0&)

W_Dyna.dbDelete '(A)
--------------------------------------------------------------------------------
これはもう、こんなんで良いんでしょうか、っていうくらい簡素なコードです。
これで簡単に削除されてしまうレコードは、カワイソウになってきます。

2.Dynaset を使わない更新操作

当然、Dynaset を使用しなくても、更新や追加,削除は可能です。
1件ずつの更新や削除なら、Dynaset でも良いと思います。しかし、まとめて更新や削除するとき
には、いちいち Dynaset を使う必要はありません。

SQL 文を実行するために、dbExecuteSQL メソッドを使います。
例を見ていただくと、一目瞭然でしょう。

(1)更新

Dim W_Sql        As String

W_Sql = "update "
W_Sql = W_Sql & "tblA "
W_Sql = W_Sql & "set "
W_Sql = W_Sql & "item1 = 'AAA'"
W_Sql = W_Sql & "where "
W_Sql = W_Sql & "item2 = '123'"

OraDatabase.dbExecuteSQL(W_Sql)

(2) 削除

Dim W_Sql        As String

W_Sql = "delete from "
W_Sql = W_Sql & "tblA "
W_Sql = W_Sql & "where "
W_Sql = W_Sql & "item2 = '123'"

OraDatabase.dbExecuteSQL(W_Sql)

いかがでしょうか。更新用の SQL 文を作成して、dbExecuteSQL にて実行するだけです。
簡単ですね。
対象が1件だけなら、Dynaset と変わりないかも知れませんが、複数件有るときはとても
便利です。

Aloz 發表在 痞客邦 留言(3) 人氣()

有時候不知道 User 是太聰明還是怎樣的,就是會改到一些不該改的
為了避面慘劇發生,能擋能防的就全上吧 XD

先防止 User 自行修改 Profile 吧....

Responsibility : System Administrator
Path : Security > Responsibility > Define

把 User 用的 Responsibility 找出來之後,在 Menu Exclusions 增加一列 : Personal Profile Value
如此一來,User 就沒有辦法自行修改 Profile 囉

Aloz 發表在 痞客邦 留言(0) 人氣()

如下為 11.5.10 版本以上可用的 FNDLOAD 語法, 可將各種設定 Download 轉出為 .ldt 的檔案搬移此檔案到新的環境再透過 Upload 的語法就能完成設定

在導入階段多個環境間 (Test/Pilot-Run/Prod) 進行設定時非常有幫助

 

Aloz 發表在 痞客邦 留言(0) 人氣()

在設定 PROD 環境時,突然發現雖然價格表(Price List)已經建立,User也選的到,可以系統一樣告訴User:帶不出價格,原因就是有一隻Program沒跑。

Responsibility:Oracle Pricing Manager
Patch:Report
Request Name:Build Attribute Mapping Rules

Aloz 發表在 痞客邦 留言(0) 人氣()

Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼