Application(EBS)開發整理(轉)
Profile:
一個Profile其實就是一個引數,在開發員職責裡面定義,注意這個時候選擇的Application僅僅是方便管理,對以後的使用沒有限制;一個Profile的具體值需要在系統管理員職責裡面定義,可以分別在四個層次上定義,即Site/Application/Responsibility/User,具體來說可以給任意一個Site或任意一個Application或任意一個Resp或任意一個User定義這個Profile的值,可以四個層次都定義,也可以定義某幾個層次;對於一個Session來說,一個Profile到底取什麼值是和上面的定義有關係的,即後面的覆蓋前面的,如果它定義了的話。我們可以通過fnd_profile.value('Profile_Name')來取得當前會話的Profile值,庫存組織profile是mfg_organization_id
在用fnd_request.submit_request的時候,第五個引數用false,不要被引數名稱誤導;這個函式有105個引數,前面五個定義請求本身,後面100個是傳遞給請求的具體引數,都是Char型別,我們需要轉換,預設值是chr(0),代表這個引數不用傳遞給呼叫的請求;在Package裡面呼叫只需要傳遞需要的引數個數,因為它有預設值指示結束;在form裡面則不行,要寫滿105個,而且我們引數結束之後要用一個chr(0)來表示結束
用submit_request的時候,其實最終還是向fnd_concurrent_requests(另外我們定義的request是儲存在Fnd_Concurrent_Programs裡面的)裡面插入一行資料,如果不提交的話,該請求是不會真正開始執行的,所以我們一般在submit_request之後來個Commit,否則的話如果使用wait_for_request的話會無限期等待下去;在Form裡面需要注意的是,必須使塊基於資料庫,不然沒得Commit。假如在一個請求內部使用了submit_request,特別注意的是需要檢查Concurrent Manager的Process數至少為2,否則上述兩個請求會處於死鎖狀態
資料庫表中的Org_Id或者Organization_Id對初學者來說往往搞不清楚是哪個層次的組織,一般來說前者是OU,後者是庫存組織,然而這也不一定,有一個簡易的方法是,只要我們碰到Item,比如在訂單中,那麼一般是指庫存組織
_all,基表,儲存多組織資料,裡面有一個Org_Id欄位,一般不直接出現在我們的DML中
去掉_all的檢視,根據使用者環境過濾掉組織,相當於普通的基表,我們直接使用它,就當它是基表
_v,檢視,給Form用
_kfv,啟用關鍵性彈性域的時候動態生成的檢視,包含Concact過的欄位組合
_dfv,啟用描述性彈性域的時候動態生成的檢視,我們取彈性域子段的描述的時候,需要用使用者出口函式。。。。。。。。。。。
_tl,基表,有language欄位,us肯定有,其他的看安裝
_vl,檢視,根據環境設定過濾語種,所以做報表用_vl
_s,序列號
_API,Package,保證向後相容
_PKG,Package,Program
_SV,Package,供Form呼叫
rowid,偽列,指明記錄物理位置,檔案號+塊號等,具體的我也不清楚
rownum,偽列,指明符合條件的記錄的記錄號,需要注意的是這個記錄號在Order By之前就已經決定,如果想用Order By之後的記錄號,只能再套一層Select
level,偽列,指明樹狀結構記錄的層次,以下示例程式碼可作為Form. Tree的資料來源
select 1 state, level, CUSTOMER_NAME,null,CUSTOMER_ID
from da_customers a
start with PARENT_CUSTOMER_ID = -1
connect by prior CUSTOMER_ID = PARENT_CUSTOMER_ID
who,五個記錄建立及修改歷史的欄位,可以通過OA的Help/Record History選單檢視
attribute_xxx,描述性彈性域欄位
檔案系統File system的層次一般是$APPL_TOP/$MODULE_TOP such as $GL_TOP,$AU_TOP/Version/forms,reports,sql,.../EN,ZHS,...五個層次,在URL中有一個語言引數,它的值是根據使用者當前的NLS_LANG設定來的;假如指明是中文,那麼Form. Server會到ZHS下取檔案,在任何其他語言對應的目錄下找不到檔案的話,系統都會到EN目錄下取,假如還取不到,這個時候才報錯。AU指Application Utility,我們編寫的Form原始檔一般放在$AU_TOP/Version/forms/LANG下,而PLL原始檔一般放在$AU_TOP/Version/resource下,但編譯的時候前者要放到對應應用的對應語言的目錄下,而後者還是在源目錄;對於Report,則直接放在對應應用的對應語言下,不需要編譯
一個使用者對應一個或多個responsibility,一個responsibility對應一個或多個menu,一個底層menu對應一個function,一個function對應一個form或者一個報表或者一個程式;一個responsibility對應一個請求組,一個請求組對應一個或多個報表和程式,這個應該放過來說,在定義報表的時候可以選擇哪個請求組;一個responsibility對應一個Application,這個不要和該responsibility擁有的選單混淆,選單沒有限制
Attachements
Oracle的附件給我們提供了一個方便的功能,只要定義定義,不需要任何程式碼就可以實現附件功能,比彈性域還方便(當然功能沒有彈性域強)
定義Attachements比較容易,遵循115devg中的Attachements章節即可完成。
fnd_attached_*****系列的表儲存我們在開發員職責裡面的附件定義
fnd_documents_****系列的表儲存終端使用者的具體的附件業務資料,file型別的附件儲存在fnd_lobs表中
fnd_documents_tl.media_id可以關聯到fnd_lobs.file_id、fnd_documents_long_text.media_id、fnd_documents_shot_text.media_id取得相應的附件內容
定義過程如下
1、定義Entity實體,其實就是表,必須的
Table 輸入表名即可
Entity ID 輸入表名即可,如果在同一個標定義多個實體,可以用“表名_N”的形式,隨便
Entity Name 輸入一個比較友好的名字,這個名字要顯示給使用者看
Prompt 沒什麼用
Application 就是我們的應用;如果是定義在Oracle標準表上,最好也用我們自己的應用名,否則升級的時候會丟失
2、定義Document Categories,其實就是定義一個類別或者說一個標誌,可以直接用系統的Miscellaneous這個類別,可選的
Category 輸入任意一個名字即可
Default Datatype 隨便選一個,最好選會應用這個Category最常用的型別,比如檔案
Effective Date 預設,不填即可
Assinments按鈕 這裡不用管
3、定義Attachement Function,必須的
Type 一個Form可能關聯幾個Function(進一步關聯幾個選單),如果附件在不同的Function下可能不同,比如Category不同(從而可以過濾附件,這就是所謂的安全性),這裡選Function;如果附件不需要區分Function,這裡就選Form
Name Form或者Function的名字
User Name 自動出來
Session Context 我沒用它
Enabled 打勾
4、點選Category按鈕,為上面定義的Attachement Function選擇剛才定義的Category,或者選擇Miscellaneous,可以選擇任意個,必須的
**Category的工作原理:Category本身僅僅是一個標誌,就像我們部門字典表一樣;一個Form(或者其Function)會關聯到一個或多個Category(就是在這裡定義);終端使用者在把一個附件新增到這個Form上的一條記錄上時,必定會指定屬於某個Category,可選範圍就是這裡定義的;到這裡Category還沒有顯示出什麼作用,也就是如果僅僅一個地方會用到這個附件,Category就沒什麼用。如果同一個實體的附件會在其他Form上出現,就像115devg文件所說的,一個Product的附件可以在Order Line上被顯示出來,假如使用者上傳了一個圖片作為附件,並分配Category為xxxxx,如果Order Form的Category沒有包含xxxxx,在Order Line上將看不到那個附件。按我的理解,就這樣。
5、定義Attachement Function Block,定義我們Form上包含附件的資料塊,每個塊都可以定義,必須的
Block Name 輸入塊名,不要告訴我你不知道!
Method 一般Base Entity選Allow Change,如果是引用的選Query Only
Secured By 這個可以進一步限制安全性,可以不定;這裡我不多說,如果不清楚再找我
6、定義Block-Entity關係,必須的
Entity 選擇上面定義的實體,一行一個
Display Method 基礎實體選擇Main Window,引用實體選擇Related Window
Include in Indicator 基礎實體打勾,引用實體不選;這個選項其實就是用來初始化工具欄上的圖示,選不選都不影響功能
Indicator in View 我沒選
操作許可 分別定義Query/Insert/Update/Delete,基礎實體一般允許全部操作,引用物件不能有Insert,其他的看需要
定義條件 根據條件更加靈活的定義“操作許可”範圍;這裡我不多說,如果不清楚再找我
7、定義關鍵欄位,一般是主鍵,這裡指塊上的Item而非表裡面的,所以需要用“塊名.Item名”,必須的
按順序定義,如果基礎塊的實體不定義主鍵,仍然可以工作,但在引用塊將看不到,這是我碰到的問題
8、定義SQL Statement,附加的限制條件,就像我們在Form開發時定義的Where Clause一樣,一般沒用,可選的
使用過程如下
1、開啟我們的Form,查詢記錄或者輸入新記錄
2、注意工具欄上的Attachment按鈕時可用的,點選
3、出來附件視窗,想怎麼玩都行
最好用IE瀏覽器開啟Oracle Application,有些基於IE核心的瀏覽器可能無法開啟附件上傳視窗
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16860121/viewspace-716984/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Discoverer開發整理(轉)
- 【EBS】Oracle EBS 之 OM 模組整理(1)Oracle
- Web Application 開 發 利 器 - WebSnap(十二) (轉)WebAPP
- Web Application 開 發 利 器 - WebSnap(四) (轉)WebAPP
- Web Application 開 發 利 器 - WebSnap(十) (轉)WebAPP
- Web Application 開 發 利 器 - WebSnap(六) (轉)WebAPP
- Web Application 開 發 利 器 - WebSnap(八) (轉)WebAPP
- Web Application 開 發 利 器 - WebSnap(七) (轉)WebAPP
- EBS 常用SQL整理一SQL
- EBS開發筆記-1筆記
- EBS開發環境搭建開發環境
- EBS開發筆記-2筆記
- 【EBS】主機併發程式開發
- 如何開發 WEB applicationWebAPP
- EBS FORM PLL 開發入門ORM
- ebs二次開發1
- ebs二次開發2
- ebs二次開發3
- ebs二次開發4
- ebs二次開發5
- ebs二次開發6
- ebs二次開發7
- Excel Application物件 開發指南ExcelAPP物件
- Oracle EBS 基於Host併發程式的開發Oracle
- Oracle EBS R12 clone文件已整理Oracle
- 鴻蒙JS 開發整理鴻蒙JS
- 開發整合Microsoft Visual Basic for Application的應用系統(一) (轉)ROSAPP
- Oracle EBS Submit Concurrent Program from Self-Service Application: FNDCPSRSSSWAOracleMITAPP
- FNDCPSRSSSWA:Oracle EBS Submit Concurrent Program from Self-Service ApplicationOracleMITAPP
- vue知識點整理(轉發)Vue
- EBS之JTF_Grid 開發總結
- 分享之前整理的EBS常用表關聯圖 TRM
- Oracle EBS R12 install patch文件已整理Oracle
- [轉載] Oracle EBS 入門Oracle
- 整理:iOS開發知識點iOS
- 開發中的名言警句整理
- tp 框架開發整理總結框架
- WEB 前端開發外掛整理Web前端