目前日期文章:200807 (7)

瀏覽方式: 標題列表 簡短摘要
注意 : 不是每個 Form 都可以修改 Default Where, 特別是有 Query Form 的, 它的 Where 組成是寫在按下 Button 時動態產生,  那 Personalize 寫的會被蓋掉而沒有產生效果

- Example Form : Receipt (RCVRCERC)
Type : Property
Object Type : Block
Target Object : RCV_TRANSACTION
Property Name : DEFAULT_WHERE
Value : NVL(RCV_ENTER_RECEIPTS_V.Outside_operation_flag,'N') = 'N'

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

注意1 : 需確認標準 Form 所設定的 LOV Name 是什麼, 一般來說, 開 Form 起來看是最準的
注意2 : SQL 也最好是基於標準的 LOV SQL 下去改, 出錯的機率比較低
注意3 : 只能變動 LOV 的資料, 不能變動欄位順序或增減欄位

Example : Change Order Type LOV

Seq : 1
Type : Builtin
Builtin : Create Record Group from Query
Argument :
SELECT   A.ORDER_TYPE_ID
,        A.NAME
,        A.DESCRIPTION
    FROM OE_ORDER_TYPES_V A
   WHERE TRUNC ( SYSDATE ) BETWEEN TRUNC ( A.START_DATE_ACTIVE ) AND NVL ( TRUNC ( A.END_DATE_ACTIVE ), TRUNC ( SYSDATE ))
     AND A.ORDER_CATEGORY_CODE IN ( 'RETURN', 'MIXED' )

ORDER BY A.NAME

Group Name : U_ORDER_TYPE

Seq : 2
Type : Property
Object Type : LOV
Target Object : ORDER_TYPE
Property Name : GROUP_NAME
Value : U_ORDER_TYPE

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

- 設定 Menu
1. Condition:
Trigger Event : SPECIAL43 (數字自行選擇)

Actions:
Type : Builtin
Builtin Type : Launch a Function
Function Code : XXX (寫在 Application 註冊的Function Code)
Function Name : YYY (寫在 Application 註冊的Function Name)
Parameters : =' DELIVERY_ID = ' || ${item.dlvy.delivery_id.value} || ' ORGANIZATION_ID = ' || ${item.dlvy.organization_id.value} (寫該 Function 必須的參數值)

2. Condition:
Trigger Event : WHEN-NEW-FORM-INSTANCE

Actions:
Type : Menu
Menu Entry : SPECIAL43
Menu Label : ZZZ (在 Form 的選單呈現的字串)
Render line before menu : No (勾選的話, 這個 Menu 前面會有分隔線)
Enabled in Block(s) : DLVY

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

- Error Message (Example Form : WSHFSTRX)
Type : Message
Message Type : Error
Message Value : ='Delivery# ' || ${item.dlvy.name.value}
* 可使用SQL字串相加的方式, 把 Form 上的變數傳進 Message 中, 讓 Message 的效果更好
* 若使用 Error Message, 順序在此之後的 Actions 不會被執行到, 要特別小心

Actual Example
- Delivery Group
因為標準的 Delivery Group Rule 只會考慮 Ship Information, 所以我們用了以下操作方式來做控制 :
1. 後端 Pick / Ship 人員只能看到 Firm 的 Delivery
2. 寫 Function 做其他條件的 Group
3. 在 OM User 要做 Firm 時做檢查

Condition :
Trigger Event : WHEN-NEW-RECORD-INSTANCE
Trigger Object : DLVY
Condition : :DLVY.STATUS_CODE='OP' AND :DLVY.PLANNED_FLAG='N' AND U_OM_COUNT_DELIVERY_DETAILS(:DLVY.NAME) > 1

Actions :
Seq : 1
Type : Property
Object Type : Item
Target Object : DLVY_BUTTONS.GO
Property Name : DISPLAYED (APPLICATIONS COVER)
Value : False

Seq : 2
Type : Message
Message Type : Error
Message Value : ='Delivery# ' || ${item.dlvy.name.value} || ' 不能被 Firm, 原因...........'

當然還有另外一段是做反向控制, 這在寫 Personalize 的時候也是一定要考慮到的, 也可以說是寫"還原動作"

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

如前一篇所說, Actions 是整個 Personalize 的精華, 能夠做的事很多又雜, 目前用到的應該不到一半吧

也因為功能太多, 不知道該怎麼整理起, 所以改用範例做為主題, 只寫出 Actions 的部份, 這樣應該會比較清楚.........吧

- 欄位失效 (Example Form : OEXOEORD)
Type : Property
Object Type : Line
Target Object : LINE.ORDERED_QUANTITY
Property Name : ENABLED (APPLICATIONS COVER)
Value : FALSE

- 欄位不允許修改
(Example Form : OEXOEORD)
Type : Property
Object Type : Line
Target Object : LINE.ORDERED_QUANTITY
Property Name : UPDATE_ALLOWED
Value : FALSE

- 欄位不可見 (Example Form : OEXOEORD)
Type : Property
Object Type : Line
Target Object : LINE.ORDERED_QUANTITY
Property Name : DISPLAYED (APPLICATIONS COVER)
Value : FALSE

- 欄位變必填 (Example Form : OEXOEORD)
Type : Property
Object Type : Line
Target Object : LINE.ORDERED_QUANTITY
Property Name : REQUIRED (APPLICATIONS COVER)
Value : TRUE

- 修改欄位 Prompt (Example Form : OEXOEORD) => 部份 Form 可用 Folder 達成
Type : Property
Object Type : Line
Target Object : LINE.ORDERED_QUANTITY
Property Name : PROMPT_TEXT
Value : Qty

- Block 不可 Update (Example Form : OEXOEORD)
Type : Property
Object Type : Block
Target Object : ORDER
Property Name : UPDATE_ALLOWED
Value : FALSE

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

我一直以為在 OE_ORDER_LINES_ALL 中的 FLOW_STATUS_CODE 會等於 Form 上的 Status, 只不過一個是 Code, 一個是 Meaning, 但是, 很不巧的發現, Oracle 偷偷的留一手.....

當該 Line 已做了 Pick 時, Form 上雖然顯示 "Picked", 但在 Table 所記錄的 FLOW_STATUS_CODE 仍是 "AWAITING_SHIPPING", 不確定原因是啥, 不過 Oracle 在 Metalink 也都沒做任何的解釋, 其實就只是用了一個 Package 去做轉換的動作罷了

OE_LINE_STATUS_PUB.GET_LINE_STATUS ( LINE_ID, FLOW_STATUS_CODE)

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

在很多時候, 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
精華就在此, 開另外一篇寫好了

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

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

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

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

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

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼