在很多時候, Oracle 標準 Form 很難滿足我們的需要, 最常遇到的就是權限控制, 好比說 Receipt, 在同一個畫面可以收 PO, 也可以收 RMA, 如果對公司而言, 這兩種收料是分屬於不同的單位, 那一定要對標準 Receipt 畫面做客製.
當然, 你也可以客製 Oracle Form, 但是客製標準畫面還是最後的選擇, 這時候 Personalize 就是我們的好朋友
- 如何進入 Personalize 的編輯畫面
1. 開啟需要寫 Personalize 的 Form
2. 點選視窗上方的 Help > Diagnostics > Custom Code > Personalize
3. 輸入 Apps 的密碼
- 畫面解釋
*最上方
1. Function Name
2. Form Name
3. Debug Mode :
Off : 關閉 Debug Mode
Step-by-Step : 當所寫的 Custom Code 有問題, 可使用此模式偵錯
Show Debug Messages : 沒用過........
* 中間
1. Seq : 序號, 執行順序
2. Description : 寫給自己看的
3. Level :
Function : 只有在此 Function Name 生效
Form : 只是要這個 Form, 就算掛成不同的 Function 也會生效
4. Enabled : 生效與否
* 下方
1. Condition & Actions : 重點, 後面再說明
2. Context : 可設定要在什麼情況下生效
Industry / Site / Responsibility / User
- Condition
1. Trigger Event : 觸發的事件, 當什麼情況發生時, 會啟動該 Custom Code, 需配合下方的 Trigger Object
WHEN-NEW-FORM-INSTANCE : 當 Form 開啟時, 無需指定 Trigger Object
WHEN-NEW-BLOCK-INSTANCE : 當進入 Trigger Object 指定的 Block 時觸發
WHEN-NEW-RECORD-INSTANCE : 當進入 Trigger Object 指定的 Record 時觸發
WHEN-NEW-ITEM-INSTANCE : 當進入 Trigger Object 指定的 Item 時觸發
WHEN-VALIDATE-RECORD : 當 Trigger Object 指定的 Block 存檔時觸發
MENU1~15 : 進階應用
SPECIAL1~45 : 進階應用
* 雖然在畫面上 Oracle 有註明 : You can enter additional event name. 但是也不是說加就加, 目前只有試出 WHEN-BUTTON-PRESSED, 而且限制很多, 所以, 可能看看就好......
2. Trigger Object : 觸發的物件, 可直接用 LOV 挑選
3. Condition : 當 Event 與 Object 觸發到時, 還可以在 Condition 多做判斷, 內容只需填寫 SQL 語法 WHERE 之後的部份. 如果需要用到畫面的欄位, 可使用下方的 Insert Item Value (只能選 Value) 或 Insert 'Get' Expression (可選擇多種的屬性). Condition 裡也可套用 SQL Function, 例如 :
Z_OM_PKG.ZOMR001_OQC_PASS(:DLVY.NAME)=1 AND Z_OM_PKG.ZOMR001_TRACKINGINFO_PASS(:DLVY.NAME)=1
4. Processing Mode : Not in Enter-Query Mode / Only in Enter-Query Mode / Both
5. Context : 設定只在哪些 Level 下生效. Level 有 : Industry / Site / Responsibility / User
- Actions
精華就在此, 開另外一篇寫好了
當然, 你也可以客製 Oracle Form, 但是客製標準畫面還是最後的選擇, 這時候 Personalize 就是我們的好朋友
- 如何進入 Personalize 的編輯畫面
1. 開啟需要寫 Personalize 的 Form
2. 點選視窗上方的 Help > Diagnostics > Custom Code > Personalize
3. 輸入 Apps 的密碼
- 畫面解釋
*最上方
1. Function Name
2. Form Name
3. Debug Mode :
Off : 關閉 Debug Mode
Step-by-Step : 當所寫的 Custom Code 有問題, 可使用此模式偵錯
Show Debug Messages : 沒用過........
* 中間
1. Seq : 序號, 執行順序
2. Description : 寫給自己看的
3. Level :
Function : 只有在此 Function Name 生效
Form : 只是要這個 Form, 就算掛成不同的 Function 也會生效
4. Enabled : 生效與否
* 下方
1. Condition & Actions : 重點, 後面再說明
2. Context : 可設定要在什麼情況下生效
Industry / Site / Responsibility / User
- Condition
1. Trigger Event : 觸發的事件, 當什麼情況發生時, 會啟動該 Custom Code, 需配合下方的 Trigger Object
WHEN-NEW-FORM-INSTANCE : 當 Form 開啟時, 無需指定 Trigger Object
WHEN-NEW-BLOCK-INSTANCE : 當進入 Trigger Object 指定的 Block 時觸發
WHEN-NEW-RECORD-INSTANCE : 當進入 Trigger Object 指定的 Record 時觸發
WHEN-NEW-ITEM-INSTANCE : 當進入 Trigger Object 指定的 Item 時觸發
WHEN-VALIDATE-RECORD : 當 Trigger Object 指定的 Block 存檔時觸發
MENU1~15 : 進階應用
SPECIAL1~45 : 進階應用
* 雖然在畫面上 Oracle 有註明 : You can enter additional event name. 但是也不是說加就加, 目前只有試出 WHEN-BUTTON-PRESSED, 而且限制很多, 所以, 可能看看就好......
2. Trigger Object : 觸發的物件, 可直接用 LOV 挑選
3. Condition : 當 Event 與 Object 觸發到時, 還可以在 Condition 多做判斷, 內容只需填寫 SQL 語法 WHERE 之後的部份. 如果需要用到畫面的欄位, 可使用下方的 Insert Item Value (只能選 Value) 或 Insert 'Get' Expression (可選擇多種的屬性). Condition 裡也可套用 SQL Function, 例如 :
Z_OM_PKG.ZOMR001_OQC_PASS(:DLVY.NAME)=1 AND Z_OM_PKG.ZOMR001_TRACKINGINFO_PASS(:DLVY.NAME)=1
4. Processing Mode : Not in Enter-Query Mode / Only in Enter-Query Mode / Both
5. Context : 設定只在哪些 Level 下生效. Level 有 : Industry / Site / Responsibility / User
- Actions
精華就在此, 開另外一篇寫好了
文章標籤
全站熱搜

請問適用的Oracle ERP是那個版本? 進到Custom Code後無看到Personalize是否需使用管理者帳號進入方可設定?
阿, 我目前是使用 11.5.10, 舊版本好像是要改在 custom.pll, 不過, 我不是很確定 ^^"
有去IT-PUB看了一下, 好像也是要11.5.10之後的版本才有開放此功能, 謝謝先將這部份的資訊保留起來以備後續可以加以運用!
應該是11i的新功能, 之前的版本就只能用custom.pll的方式做修改
想請教From Personalizations針對按鈕的觸發條件:比方在按SAVE前先檢查A是否大於B那我的Tripper Event Trigger Object可以怎麼寫!?我參考FROMS上的觸發條件了....在寫在FROMS上的條件已經觸發~~但Personalization上的卻沒有!?
你好, 因為一年多沒碰 Oracle, 所以只能用印象來回答你, 請見諒... 其實不能用 Form 的觀點來處理 Personalize, 因為 Personalize 是屬於副加的東西, 常常會因為跟 Form 衝突而失效或是無法產生預期的效果. Save 前就是 Trigger Event 用 WHEN-VALIDATE-RECORD, Trigger Object 就是選 Block (?), 你可以使用 STEP-BY-STEP 來確認觸發的情況
感謝你的回覆!!因為已經測試了好幾種方式...因為使用Show custom events Step-By-Step都未顯示"按鈕"的觸發條件。若使用WHEN-VALIDATE-RECORD又打不到痛處(會有BUG 存在)就連測試自行新增"WHEN-BUTTON-PRESSED"並用在Condition上去指定SYSTEM.CURSOR_BLOCK與ITEM....結果仍失敗。但寫在FROMS上同樣的觸發條件卻啟動了~~囧!!
用 WHEN-BUTTON-PRESSED 是要看運氣的, 運氣好就中了. 記得有看過人家說, 如果畫面中只有一個 Button, 那 WHEN-BUTTON-PRESSED 可運作的機率就比較大. 當然, 如果寫在 FROM 裡面, 什麼都嘛可以....... 不知道你的 FROM 是哪一個模組的? 如果是 OM 的話, 是有別的方式可以試看看的說...
很不巧的是前人客製的INV模組作業!!其實我也很想寫在FROMS裡,但主管要求一定要用Personalize去做(為了日後版更方便)~~囧 因為之前有看過一篇文章說只要是CUST.PLL上可判斷到的條件或該FROM上存在的Trigger基本上Personalize都有辦法觸發成功。但測試了好幾次....結果都不如"想像中"的那樣!!若仍無法解決....我想我也只能屈服在FROM裡更改了!!!!OTZ
如果是客製的, 還有版更的問題嗎...? CUST.PLL 就是 Personalize 的前身, 功能應該不會比較好吧 XD
想請教From Personalizations針對按鈕的觸發條件可以怎麼使用嗎? 我想在BOOK 訂單時,檢核若SUBINVENTORY 沒有輸入的話,不能BOOK
你好, 第一, 預設的 Personalization 是沒有針對按鈕有對應的 Event, 但是, 是有一種說法是, 如果該畫面中只有一個按鈕, 還是有辦法做到的. 不過我很久之前有試過, 有效果但是還是不好. 所以, 如果真的是要在按鈕中放 Personalization, 就只能靠 custom.pll 來達成. 第二, 你的需求應該可以用另外的方式來做: 你如果把 Debug Mode 打開 (Step-by-Step), 當你按下 Book Order, Form 其實還是有先做一次存檔, 不論是在 Header Level 或是在 Line Level, 也就是說, 你可以把檢查埋在 WHEN-VALIDATE-RECORD, 不論使用者是單純要存檔或是按 Book Order, 都會被檢查, 檢查沒過就拋出 Error Message, 就無法存檔完成. 給你參考.
謝謝你哦
*****
*****
*****
*****
*****
*****
*****