Form 個性化控制講義

Form 個性化控制講義

Kenver ()

 

綱要:

    概述

    如何使用 Form 個性化控制

    轉移個性化設計至其他環境

 

1. 概述

Form 個性化允許您修改基於Form 基礎頁面的事件,包括:修改物件的屬性、執行內建函數、產生提示信息和添加標籤入口。

對於每個功能(需在功能處指定上下文條件,相應的Form才能執行)來說,您可以制定一個或一個以上的規則。每條規則包括:一個事件,事件執行的條件(可選),事件執行的範圍,一個或多個動作。

 

Form上的一個Trigger 就是一個事件。例如,開啓頁面的Trigger WHEN-NEW-FORM-INSTANCE),或者光標從一條記錄移至另一條新的記錄所觸發的Trigger WHEN-NEW-RECORD-INSTANCE)等等,這幾乎是每個Form 傳送資料都必須執行的,或者確認傳送資料附加的事件。

若指定了事件執行的範圍,當Form 在運行的時候,系統會去檢查當前的規則是否可執行。事件執行的範圍有以下層級:SiteResoponsibilityUserIndustry ,每個規則可有相應層級的執行範圍與之相關聯。

注:Industry 層級的執行範圍指的是爲下一版本預留。

 

事件執行的條件是一段SQL 語句,來控制事件在何時執行。只有在執行條件的返回結果是真時,該時間纔會執行。

 

一個動作包含以下的任意一項內容:

²    設置屬性,如:設置一個欄位狀態爲必輸,隱藏一個Tab 頁籤等。

²    執行內建函數,如:GO_BLOCKDO_KEYFND_FUNCTION.EXECUTE 等。

²    顯示提示信息。

²    呼叫一個特殊標籤入口。

 

規則一旦建立,當目標功能執行時,這些規則會被系統視爲Form 裏的一個事件,並且會自動執行。

2. 如何使用Form 個性化控制

要創建一個個性化控制,首先要進入到目標功能Form ,然後按下拉菜單 Help à Diagnotics à Custoner Code à Personalize 。若該下拉菜單不可見,請檢查系統Profile 設定選項:FND_HIDE_DIAGNOSTICS (Hide Diagnostics menu entry) DIAGNOSTICS (Utilities:Diagnostics)

進入到個性化控制頁面時,系統會羅列當前功能頁上已定義的規則。您若做了修改,請保存然後重新進入該功能頁,這樣所做的改動才能生效。您也可以按下按鈕‘Validate’和‘Apply’,分別來驗證修改的值和快速查看所做改動的執行結果,而不必重新進入功能頁。

個性化設置的界面(當前功能頁:FND_FNDSCAUSFORMFNDSCUS

每個規則包含的欄位:

 

Seq :對應規則的序號。值從1-100,序號可重複,值小的優先執行。

Description :描述,可用於註明當前規則的用途。

Enable:勾選時當前規則纔有效。

 

定位至Condition 頁簽有如下欄位:

 

Trigger Event :選擇規則執行的Trigger ,您可以從LOV 中挑選,或者自己鍵入當前Form 還未用到的Tirgger,該欄位是複合型的,可從LOV挑選,也可自己輸入。個性化規則會先匹配事件,然後按序號順序執行。

 

Trigger Object :選擇對象。對象的挑選值依賴Trigger Event,根據不同的Trigger Event 其狀態亦不同。即,可能是不可輸入的,也可能是必須輸入的。例如,如果你挑選的Trigger Event 

WHEN–NEW–ITEM–INSTANCE ,此時您必須輸入一個 Trigger Object 

 

Condition:這個欄位是選擇性輸入的SQL 語句段,只有SQL 語句段返回值是真,個性化定義的動作纔會執行。條件可包含如下內容:

²    SQL 函數和運算子,如AND OR TO_CHAR DECODE  NVL 等。

²    關聯到Form 某個字段(:Block.feild),包括::System , :Globle, :parameter 

²    調用服務器上沒有外部參數的函數。

輸入的判斷條件語法上必須是正確的,可按下按鈕‘Validate’來檢查語法的正確性。若語法上有錯誤,系統會彈出一個錯誤信息提示框警示出錯的部分。

一些判斷條件的例子:

條件

備註

:users.user_name is not null and :users.description is null

個性化規則動作執行的條件,User_name不爲空,且 Description 爲空

sysdate >= to_date(‘1-1-2005’, ‘DD- MM-RRRR’)

個性化規則動作執行的條件,系統日期大於等於200511

 

Processing Mode :設定執行的模式。Not-in-Entry-Query-Mode,查詢模式下不使用個性化規則;

Only-in-Entry-Query-Mode 僅在查詢模式下使用個性化規則;BOTH, 兩種狀態下都使用個性化規則。

Level :個性化規則執行的層級。

Value :層級的值。

定位至Actions 頁簽有如下欄位:

Seq :個性化規則動作的序號,值從1-100,序號可重複,值小的優先執行。

 

Type :個性化規則動作的類型,包括:(1Property 即物件的屬性。(2Buildtin Form 的內建函數如:GO_BLOCKDO_KEY 等。(3Message 即提示消息。(4Special 呼叫一個下拉菜單入口,定義其標籤,已經在哪個Block 可激活。

Discription:用於註明當前個性化動作的用途。

Language:個性化規則動作執行的語言環境 

Enable :勾選該個性化動作纔有效。

 

以下按鈕出現依賴於Type 欄位的挑選值:

 

    Add Parameter,出現時機:Type  Builtin ,挑選值爲FND_FUNCTION.EXECUTE 

    Add BlockLOV 挑選Block 的名字。

    Add ItemLOV 挑選Item 的名字。

 

下圖區域依Type 挑選值爲Property 時出現。

 

 

Select By Text … 快速需找某個欄位名錶述方式。

 

Object Type :物件類型。如:Item Block Window Tab Canvas Radio ButtonView

Globle Parameter 

 

Target Object :目標物件。指定當前個性化動作的執行對象,即指定要針對哪個物件進行動作設定。

 

Property Name :屬性名。指定物件的屬性。

 

Value :給出物件屬性值。

 

Get Value :取得當前對象屬性值。

 

下圖區域依Type 挑選值爲Message 時出現。

 

 

Message Type :用於設定提示信息的類型。'Show', 'Hint', ‘Warn’, 'Error', ‘Debug’。值得注意的是,若消息類型挑選了‘Warn’ 'Error', 當您按下按鈕‘Cancel ’ 時,系統會執行 form_trigger_failure 這個Trigger ,以阻止Form 繼續執行。‘Debug’ 類型的 message 只有頁面上的 Show Debug Message 這個複選框勾選才會顯示。

 

Message Text :提示消息的內容。

 

下圖區域依Type 挑選值爲Builtin 時出現。

 

Builtin Type :指定所使用的內建函數。

Argument :內建函數所使用的參數。

 

Builtin Type FND_FUNCTION.EXECUTE時,會出現以下區域。

Function Name :指定要執行的函數。

Parameters :執行函數的參數。

 

下圖區域依Type 挑選值爲Special 時出現。

Menu Etry :指定下拉菜單的入口。由3個集組成。每個集15個,挑選不同的集,下拉標籤將出現在不同的下拉菜單位置上。若你挑選了Form 已有的Menu並且創建了個性化控制,那麼所創建的個性化規則將改寫Form原有的菜單入口功能。

 

Menu Lable :標籤的標示符。

 

Render Line Before Menu  :若勾選,在標籤上方會出現一條直線以做區隔所用。

 

Enable In Block :在哪個Block 標籤被激活。

 

Icon Name :若需要在工具欄上添加一個圖形(功能與點擊對應下拉菜單的標籤相同),則可以在此指定圖形的名稱。

 

每個屬性值輸入的字符串可能直接被引用,也可能個性化規則在運行時才被檢查。(取決於字符串是否以”= ”開頭)

  不以”=”開頭,值在個性化規則運行時直接被引用。

  ”=”開頭,值在個性化規則運行時被檢查,允許添加上下文邏輯,如:

ü  SQL 運算子:||TO_CHARDECODE,和 NVL

ü  綁定變量值:(:Block.Field),:System,:Globle,:Parameter

ü  調用服務器上的函數。

ü  Select 語句,但必須遵循以下條件:

u  需以’ = SELECT’ 開頭。

u  查詢值結果必須爲字符型的,且長度不超過2000個字節。

u  所查詢的欄位的別名需給“A”。

u  語句段的查詢結果集不超過一行,若超過一行,只有第一行被使用。

 

 

使用“=”的一些例子:

輸入的字符

執行結果

='Your password will expire on '||(sysdate+7)

Your password will expire on 2007-12-28

(假設系統日期爲2007-12-21)

='Your password must have at least

'||:global.password_length||' characters.'

Your password must have at least 8 characters

(假設該Global項的值長度爲8

=’Your password isn’’t valid.’

 

Your password isn’t valid.

=:items.part_number

 

{欄位=:items.part_number  的值}

=SELECT meaning A from fnd_lookups where

lookup_type = 'DAY_NAME' and lookup_code

= 'SAT' 

 

Saturday {假設系統作業是在英文環境下執行}

=SELECT 'The office is closed on '||meaning A

from fnd_lookups where lookup_type =

'DAY_NAME' and lookup_code = 'SAT'

 

The office is closed on Saturday {假設系統作業是在英文環境下執行}

 

3.       轉移個性化設計至其他環境上

在測試環境上設計並且通過測試的個性化規則,可通過以下辦法快速轉移至新的環境。

(1)       下載頁面配置命令

FNDLOAD <userid>/<password> 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.lct

<filename.ldt> FND_FORM_CUSTOM_RULES function_name=<function name>

 注:<function name> 是該命令必須給出的參數,若不給則不會產生ldt 檔。

(2)       上傳頁面配置命令

FNDLOAD <userid>/<password> 0 Y UPLOAD $FND_TOP/patch/115/import/affrmcus.lct

<filename.ldt>

發佈了7 篇原創文章 · 獲贊 9 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章