Form開發中元件控制的幾個常用方法
在Oracle EBS 的Form二次開發中,經常需要靈活的來控制某些元件是否可用、是否可見;有時希望某些欄位的值自動生成或者手動輸入;有時又希望能夠根據不同的職責、不同的使用者等來設定不同的行為控制。[@more@]Form開發中元件控制的幾個常用方法在Oracle EBS 的Form二次開發中,經常需要靈活的來控制某些元件是否可用、是否可見;有時希望某些欄位的值自動生成或者手動輸入;有時又希望能夠根據不同的職責、不同的使用者等來設定不同的行為控制。常見的需求: 只有某些角色的人才能看到銷售訂單中“登記訂單”這個按鈕 1. 只有某些角色的人才可以切換到某個標籤頁 2. 實現訂單號碼根據需要自動生成編號或者手工錄入 3. 快速編碼的值即可以錄入所有應用下的,也可以只能錄入某個應用,更可以只能錄入某個應用下某個型別下的值 4. 在某些情況下Form需要只能夠查詢 5. …… 在Oracle EBS環境中有很多方法來實現這些功能,但是使用預置檔案(Profile)、子功能(Subfunction)和功能引數(Function Parameter)是最常用最方便有效的3種方式, 一,子功能(Subfunction) 子功能是實際上是一個特殊的功能,利用子功能的方式其實就是使用了Oracle EBS的功能許可權控制來實現安全性的控制,其實質就是某個使用者能夠執行一個被授權的功能,一般情況下會使用子功能來控制某些按鈕是否顯示,進而實現了使用者是否可以操作Form中的某些功能,所以Oracle EBS的開發人員經常使用子功能來透過顯示/隱藏或者有效/失效介面上的元件來實現功能的有效或無效,如上面常見需求中的1,2使用子功能最適合。如下我希望只有授權的使用者才能看到Book Order這個按鈕,看不到的自然也無法進行這個操作了 實現步驟: 1,為Book Order按鈕元件定義一個子功能 2,Form程式碼中根據功能來控制元件在PRE-FORM觸發器中,來判斷使用者是否有許可權看到這個操作,如果有就顯示否則不顯示 ?[Copy to clipboard]View Code PLSQL 12345 IF (fnd_function.test('XHUORDER_BOOK_ORDER')) THEN app_item_property.set_property('headers.book_order', DISPLAYED, PROPERTY_ON);ELSE app_item_property.set_property('headers.book_order', DISPLAYED, PROPERTY_OFF);END IF; 3,將子功能授權給有權的使用者如果某個使用者需要顯示這個按鈕,只要將子功能XHUORDER_BOOK_ORDER新增使用者擁有的職責對應的選單裡面,把子功能XHUORDER_BOOK_ORDER新增為一個選單項,但是Prompt留空就可以 定義的時候需要將Prompt欄位留空,這樣在選單顯示的時候就看不到這個選單項,實際關鍵的是最後的Grant列,預設都是勾上的,代表了授權給相關的職責使用者 二、功能引數功能引數的方法實際上和子功能是一致的控制方法,都是使用功能許可權來進行控制, 它透過針對同一個Form定義多個Function,不同Function引數的值不同來實現控制,Oracle EBS中最典型的應用就是Form中的僅僅查詢功能和快速編碼(Lookup Code)定義介面在快速編碼定義介面中,可以透過APPL_SHORT_NAME引數來控制只能查詢特點應用的快速編碼;LOOKUP_TYPE引數來控制特點型別的快速編碼。實現了引數值不同介面的行為也不同 實現步驟: 1,在Form設計器中定義引數像快速編碼定義的Form中,定義瞭如下圖的引數 2,在Form程式程式碼中引用引數的值來控制根據業務需求和功能設計的要求,透過引數的值來編寫程式碼,如 ?[Copy to clipboard]View Code PLSQL 123456789101112131415 if (:parameter.lookup_type is not null) then set_block_property('FND_LOOKUP_TYPES', INSERT_ALLOWED, PROPERTY_FALSE); end if; if (:parameter.appl_short_name is not null) then :parameter.appl_short_name := upper(:parameter.appl_short_name); :parameter.appl_id := fnd_utilities.get_application_id(:parameter.appl_short_name); :parameter.application := fnd_utilities.get_application_name(:parameter.appl_id); app_item_property.set_property('FND_LOOKUP_TYPES.APPLICATION_NAME', INSERT_ALLOWED, PROPERTY_OFF); end if; parameter的引數值在Form執行的時候會從Function定義中傳入 3,定義Function時設定具體的引數值如上面顯示的DEMAND_CLASS的快速編碼,引數為:VIEW_APPLICATION=”AU” LOOKUP_TYPE=”DEMAND_CLASS” 為Function定義了引數,在執行的時候就會到form的parameter中去查詢同名的引數,並將等號(=)後的值傳給引數,多個引數間用空格隔開。因此可以採用功能引數值的不同定義不同的功能,並賦給對應使用者的職責就實現了不同的控制三、預置檔案(Profile) 預置檔案的控制是這些方法中最靈活最強大的一種方法,透過預置檔案可以實現到站點層、應用層、職責層和使用者層的控制,預置檔案相當於Oracle EBS系統中根據的一個全域性變數,這個全域性變數在不同的上下文可以設定為不同的值,因此在Form的開發中可以使用它來實現業務邏輯的控制,上面列出的常見需求都可以使用預置檔案的方法來實現,只是預置檔案太過靈活,所以有的需求則顯得大材小用,因此只要需要較靈活層次控制並符合站點層、應用層、職責層和使用者層這樣層次控制的時候才採用。實現步驟: 1,定義預置檔案在Application Developer職責下定義預置檔案,就像在Oracle EBS系統中定義一個變數的感覺,SQL Validation區域就是預置檔案可以定義的值列表 2,Form中根據預置檔案值進行控制 ?[Copy to clipboard]View Code PLSQL 1234567 l_order_num_mode := fnd_profile.value('DEMO_ORDER_NUMBER_MODE'); if :parameter.order_number_mode = 'AUTOMATIC' then app_item_property.set_property('HEADERS.ORDER_NUMBER', REQUIRED, PROPERTY_FALSE); app_item_property.set_property('HEADERS.ORDER_NUMBER', ENTERABLE, PROPERTY_FALSE); app_item_property.set_property('HEADERS.ORDER_NUMBER', NAVIGABLE, PROPERTY_FALSE); end if; 上面的程式碼代表瞭如果預置檔案DEMO_ORDER_NUMBER_MODE的值是AUTOMATIC的話,進行ORDER_NUMBER的控制 3,設定預置檔案的值 Form程式中根據預置檔案值的不同進行了不同的控制,而預置檔案的值則是根據需要進行設定 透過以上預置檔案值設定的不同,Form控制的項就會根據設定的不同表現出不同的行為。 上面描述的3個方法是Oracle EBS Form二次開發中最常用的方法,根據功能需求的不同選擇最適合的方法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/92289/viewspace-1042789/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS 開發中 runtime 常用的幾種方法iOS
- android獲取控制元件的幾種方法Android控制元件
- Cesium 比較常用的幾個方法
- 常用的幾個陣列方法與數學方法陣列
- html的常用控制元件HTML控制元件
- JavaScript陣列 幾個常用方法JavaScript陣列
- 開發ActiveX控制元件的實踐(1)--用VS2010開發一個簡單的TestOcx控制元件控制元件
- Linux埠轉發的幾種常用方法Linux
- antd Form元件方法getFieldsValue獲取自定義元件的值ORM元件
- 深度解析11個最常用的遊戲控制元件遊戲控制元件
- SAP UI5 Simple Form 控制元件的使用方法介紹試讀版UIORM控制元件
- 常用的幾個提高iOS開發效率的開源類庫及工具iOS
- Form元件ORM元件
- Java中幾個常用併發佇列比較 | BaeldungJava佇列
- SAP UI5 Form 控制元件的 ColumnLayout 佈局特性UIORM控制元件
- Flutter Form表單控制元件超全總結FlutterORM控制元件
- Flutter常用控制元件-ImageFlutter控制元件
- XAML常用控制元件2控制元件
- QT常用控制元件(三)——自定義控制元件封裝QT控制元件封裝
- Syncfusion宣佈開源其為.NET MAUI開發的14個控制元件UI控制元件
- 一個Flutter中臺元件的開發過程Flutter元件
- laravel 在一個控制器的方法中呼叫其他控制器中的方法Laravel
- 建樹的幾種常用方法
- Android Form元件AndroidORM元件
- Django Form元件DjangoORM元件
- linux中後臺執行程式常用的幾種方法Linux行程
- 一個可拖拽,移動,自由組合子控制元件的檢視控制元件,讓開發更簡單控制元件
- 如何開發FineReport的自定義控制元件?控制元件
- html5常用控制元件HTML控制元件
- Android常用控制元件-BannerView(無限輪播圖控制元件)Android控制元件View
- 帶農曆日曆的DatePicker控制元件!Xamarin控制元件開發小記控制元件
- DeWeb進階 :控制元件開發 --- 1 完成一個純html的demoWeb控制元件HTML
- 為 Laravel-admin 的 Form 控制元件做一個大檔案上傳的擴充套件包LaravelORM控制元件套件
- js控制form提交JSORM
- iframe跨域的幾種常用方法跨域
- Kotlin中的幾個常用函式let with run also applyKotlin函式APP
- git的幾個常用基本操作Git
- 常用的Linux,記住了幾個?Linux
- UWP 開發初階 Chapter 3 - 常用 XAML 基礎控制元件及其相應常用屬性介紹APT控制元件