卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

詳談彈性域用法

彈性域的使用彈性域分為鍵彈性域和說明性彈性域,本文就針對這兩種彈性域在二次開發(fā)中使用進行舉例說明,并附帶說明彈性域中經(jīng)常使用的值集一、彈性域開發(fā)中需要做的前期工作1.注冊一個可以使用彈性域的表,字段本

彈性域的使用

彈性域分為鍵彈性域和說明性彈性域,本文就針對這兩種彈性域在二次開發(fā)中使用進行舉例說明,并附帶說明彈性域中經(jīng)常使用的值集

一、彈性域開發(fā)中需要做的前期工作

1.注冊一個可以使用彈性域的表,字段

本范例全部以如下對象為基礎(chǔ),進行彈性域的說明

CREATE TABLE FLEX_LN(

NAME VARCHAR2(20),

AGE NUMBER,

DEPT VARCHAR2(20),

ATTRIBUTE1 VARCHAR2(250),

ATTRIBUTE2 VARCHAR2(250),

ATTRIBUTE3 VARCHAR2(250),

ATTRIBUTE4 VARCHAR2(250),

ATTRIBUTE_CATEGORY VARCHAR2(250)

);

注冊數(shù)據(jù)庫表,列

系統(tǒng)中的數(shù)據(jù)庫表和列的注冊旨在支持系統(tǒng)的彈性域和預(yù)警系統(tǒng)兩個特性如果不需要這些特性不需要注冊

表.注冊方法: 用如下的過程注冊表

AD_DD.register_table (

p_appl_short_name in varchar2,

p_tab_name in varchar2,

p_tab_type in varchar2,

p_next_extent in number default 512,

p_pct_free in number default 10,

p_pct_used in number default 70);

如我們需要注冊表 FLEX_LN 用如下的語句在EDV 應(yīng)用中注冊:

EXECUTE ad_dd.register_table('EDV','FLEX_LN','T');

這里說明下,EDV是在系統(tǒng)注冊過的一個應(yīng)用簡稱,二次開發(fā)的程序,最好重新注冊一個應(yīng)用,這樣便

于今后的管理。如下圖:

(當(dāng)然注冊一個應(yīng)用的方法本文不在敘述)

注冊表中的列(彈性域列)方法如下.

begin

ad_dd.register_column('EDV','FLEX_LN','ATTRIBUTE1',1, 'VARCHAR2', 250,'Y', 'N');

ad_dd.register_column('EDV','FLEX_LN','ATTRIBUTE2',2, 'VARCHAR2', 250,'Y', 'N');

ad_dd.register_column('EDV','FLEX_LN','ATTRIBUTE3',3, 'VARCHAR2', 250,'Y', 'N');

ad_dd.register_column('EDV','FLEX_LN','ATTRIBUTE4',4, 'VARCHAR2', 250,'Y', 'N');

ad_dd.register_column('EDV','FLEX_LN','ATTRIBUTE_CATEGORY',5, 'VARCHAR2',250,'Y', 'N');

end;

COMMIT;

看我們是否注冊成功可以查看FND_TABLES/FND_COLUMNS 中是否存在我們已經(jīng)注冊的表和列,

如果我們想刪除我們的注冊可以引用下面的相應(yīng)的過程.

procedure delete_table (p_appl_short_name in varchar2,p_tab_name in varchar2);

procedure delete_column (p_appl_short_name in varchar2,

p_tab_name in varchar2,

p_col_name in varchar2);

注冊說明性彈性域

注冊如圖所示:

,

應(yīng)用:選擇注冊的應(yīng)用

名稱:填寫注冊說明彈性域的名稱(必須唯一)

標(biāo)題:彈性域的標(biāo)題,在今后的應(yīng)用中,此說明彈性域?qū)诖翱跇?biāo)題上顯示在此定義的標(biāo)題內(nèi)容

說明:

表應(yīng)用:在注冊表,列時指定的應(yīng)用(appl_short_name)

表名: 選擇注冊的表名稱

結(jié)構(gòu)列:必須也是存在于注冊過的列,結(jié)構(gòu)列的意義就是存放說明性彈性域上下文提示的值

上下文提示:是在說明性彈性域上下文字段的標(biāo)題描述

參考字段BUTTON里,如下界面

上面的界面是輸入界面,系統(tǒng)提供輸入,這里可以輸入多個記錄,當(dāng)然最終只能有一個字段來起作用,需要在段里指定。

字段名:必須與彈性域中選擇的表中的字段一致。

說明:對字段的描述性文字

參考字段的含義:

參考字段的主要作用是 與結(jié)構(gòu)列的作用類似,可以在不選擇上下文字段的情況下,系統(tǒng)根據(jù)參考字段的含義來對應(yīng)顯示不用的彈性域,

舉例說明:例如參考字段為 NAME,則在系統(tǒng)中輸入NAME信息后,系統(tǒng)會自動根據(jù)NAME的信息來確定顯示什么樣的彈性域,這樣就可以避免來選擇上下文來顯示需要的彈性域。

列BUTTON里,如下界面

這里面顯示的是注冊后的列字段(如果填寫了結(jié)構(gòu)列字段,則這里面將不在顯示結(jié)構(gòu)列字段,因為系統(tǒng)認為結(jié)構(gòu)列字段

與彈性字段是不同的)

,

如果對某個彈性字段不需要,可以將起用CHECK ED 失效,這樣在構(gòu)造彈性域的時候,此彈性字段不會作用顯示系統(tǒng)注冊完彈性域的名稱后,下一步需要配置彈性域的彈性字段

界面如下:

此處的界面需要重點注意的地方:

上下文字段

->提示:這里的提示是上下文PROMPT的信息,在這里輸入信息后,在注冊彈性域 “上下文提示” 欄的內(nèi)容,兩者的內(nèi)容是一致的

->值集:為上下文字段的內(nèi)容提供一個值的LOV形式選擇,

以本例說明:值集SET_VALUE_DESC_FLEX中包括的信息是“彈性一”、“彈性二”,這樣,就可以根據(jù)選擇不同的信息來實現(xiàn)不同的彈性域,而且,選擇的上下文字段信息(此處就是彈性域上下文AAAA欄)會保存在結(jié)構(gòu)列中。

->默認值: 設(shè)定上下文的默認值

->參考字段:此處系統(tǒng)提供的是一個LOV輸入,此處LOV里的數(shù)據(jù)來源于在注冊彈性域里的時候“參考字段:”BUTTON里的輸入記錄。

參考字段的含義是,可以以其他字段的輸入記錄來判斷是否顯示哪種彈性域。

上下文字段值

這里可以定義多個彈性域段:比如 彈性域1=彈性字段1 彈性字段2

彈性域2=彈性字段1 彈性字段2 彈性字段3

彈性域3=彈性字段1 彈性字段2 彈性字段3 彈性字段4

這里需要說明下:每個彈性的段信息中,都有一個默

認的段定義 Global Data Elements

,

彈性域Global Data Elements 的段結(jié)構(gòu)如下:

如果我們定義的彈性域只有一種段結(jié)構(gòu)的話,可以直接在 Global Data Elements段中進行定義,如果有多個的話,需要在另創(chuàng)建記錄進行段定義的需要,有一點需要說明的是,一旦有注冊了的字段在 Global Data Elements中定義了結(jié)構(gòu)的話,那么用戶自己在創(chuàng)建其他的段結(jié)構(gòu),則不會顯示在Global Data Elements中使用了的字段

具體定義彈性域中需要那些彈性字段,需要在“段”BUTTON里的界面中進行定義

如 彈性一 的段結(jié)構(gòu)

彈性二 的段結(jié)構(gòu)

,

以本文中的為例進行說明: Global Data Elements 段中定義了一個 ATTRIBUTE1字段,那么在彈性一、彈性二中的段定義的時候,無法在選擇 ATTRIBUTE1這個字段。

針對此彈性域的配置,在實際使用中的說明:

圖中紅色框代表的是加載說明性彈性域的字段,點擊此處,便可出現(xiàn)彈性域的結(jié)構(gòu)。 由于在系統(tǒng)設(shè)置彈性域段的時候,給上下文段一個默認值 = “彈性一” 則系統(tǒng)會自動將彈性一的段結(jié)構(gòu)給顯示出來(定義了三個彈性字段TITLE分別為10、15、20),由于此彈性域還定義了一個Global Data Elements 的段結(jié)構(gòu),則系統(tǒng)會將Global Data Elements 顯示在最前面,作為整個彈性域的公共字段(不論彈性域上下文AAAA選擇的是“彈性一、彈性二”)

整個彈性域都將會顯示 Global Data Elements的段結(jié)構(gòu)。

選擇“彈性二”

后的界面如下:

,

下面在圖文說明下 定義的參考字段“NAME ”的作用

在應(yīng)用彈性域界面中 在“NAME ”欄輸入 “彈性一”,選擇彈性欄位 得到的結(jié)果如下

如果在“NAME ”欄輸入 “彈性二” 選擇彈性欄位 得到的結(jié)果如下

從以上兩個圖可以說明 參考字段也可以決定需要顯示的彈性結(jié)構(gòu)。

在這里需要提一個:

參考字段 上下文段(不顯示 不需要) 這樣就可以在界面中動態(tài)的控制彈性的結(jié)構(gòu),而不需要來選擇上下文的內(nèi)容當(dāng)然,參考字段與上下文段還是有所區(qū)別的,在參考字段輸入“彈性一”后,雖然顯示的是彈性一的段結(jié)構(gòu),然而也可以在選擇上下文段的值來重新選擇需要的段結(jié)構(gòu),這樣的話,參考字段的值=彈性一,而上下文的值=彈性二,也就是說,參考字段的作用是在于初始話一個彈性域的結(jié)構(gòu),一旦該彈性段有值以后,就不在作用了。真正跟彈性結(jié)構(gòu)相關(guān)的字段還是結(jié)構(gòu)列字段,也就是上下文段

這里可以看到,雖然參考字段是“彈性二”,但可以在繼續(xù)

選擇上下文來需要相應(yīng)的段結(jié)構(gòu)。

,

編寫FORM設(shè)置和彈性域

1:加入非基表域用于容納彈性域,我們做一個ITEM叫DESC_FLEX 注意這個ITEM的CLASS屬性為 TEXT_ITEM, LOV處選擇ENABLE_LIST_LAMP,并把檢查有效性設(shè)為NO。

2:FORM中要包含所設(shè)置的彈性域如ATTRIBUTE_CATEGORY,ATTRIBUTE1,ATTRIBUTE2…... 注意這些域為基表項, 設(shè)置CANVANS為NULL或者顯示在畫布上都可以

3:把DESC_FLEX放在CANVANS上,弄成彈性域的樣子. 設(shè)置其屬性:值列表=ENABLE_LIST_LAMP 從列表中驗證=否四:在FORM中注冊彈性域

為了FORM識別彈性域,在FORM級別的W HEN -NE W _FORM_INSTANCE 上加上如下的代碼

FND_DESCR_FLEX.DEFINE('FLEX_LN', -- FORM中的BLOCK NAME

FIELD =>'DESC_FLEX', -- FORM中的彈性域的ITEM NAME

APPL_SHORT_NAME=>'EDV', -- 注冊彈性域在那個USER下

DESC_FLEX_NAME=>'FLEX_LN'); -- 注冊彈性域的名稱

具體參數(shù)及意思.如下

含有彈性域的BLOCK叫FLEX_LN

DESC_FLEX我們命名的那個容納彈性域的域.

FLEX_LN 我們注冊的那個彈性域的名稱.

五:加入觸發(fā)器以支持彈性域.

分別在BLOCK級別加入如下的觸發(fā)器.

PRE -Q UERY

PRE -UPDATE

PRE -INSERT

POST -Q UERY

其觸發(fā)器的代碼分別對應(yīng)

FND_FLEX.EVENT('PRE-Q UERY ');

FND_FLEX.EVENT('PRE-UPDATE ');

FND_FLEX.EVENT('PRE-INSERT ');

FND_FLEX.EVENT('POST-Q UERY ');

在容納彈性域的域ITEM級別加入如下的觸發(fā)器

W HEN -VALIDATE_ITEM

FND_FLEX.EVENT('W HEN -VALIDATE -ITEM');

至此我們完成了本FORM ,只要打開彈性域我們就可以像用系統(tǒng)彈性域一樣用這些彈性域了。

手工刪除說明性彈性域腳本:

/* 刪除說明性彈性域的段結(jié)構(gòu) */

DELETE FND_DESCR_FLEX_COL_USAGE_TL W HERE (APPLICATION_ID=660) and (DESCRIPTIVE_FLEXFIELD_NAME LIK E 'FLEX_LN')

/* 刪除說明性彈性域的段 */

DELETE FND_DESCR_FLEX_CONTEXTS_TL W HERE (APPLICATION_ID=660) and (DESCRIPTIVE_FLEXFIELD_NAME LIK E 'FLEX_LN')

DELETE FND_DESCR_FLEX_COLUMN_USAGES W HERE (APPLICATION_ID=660) and (DESCRIPTIVE_FLEXFIELD_NAME LIK E 'FLEX_LN')

/* 刪除說明性彈性域的注冊信息 */

DELETE FND_DESCRIPTIVE_FLEXS_TL A W HERE A.APPLICATION_ID=660 AND A.DESCRIPTIVE_FLEXFIELD_NAME='FLEX_LN';注冊鍵彈性域

鍵彈性域的注冊如下圖

,

應(yīng)用:選擇注冊的應(yīng)用

代碼:填寫注冊鍵彈性域的CODE(必須唯一,最多四個字符,在調(diào)用鍵彈性域必須使用的值) 標(biāo)題:鍵彈性域的標(biāo)題,在今后的應(yīng)用中,此鍵彈性域?qū)诖翱跇?biāo)題上顯示在此定義的標(biāo)題內(nèi)容 說明:

表應(yīng)用:在注冊表,列時指定的應(yīng)用(appl_short_name)

表名: 選擇注冊的表名稱

結(jié)構(gòu)列:必須也是存在于注冊過的列,結(jié)構(gòu)列的意義就是存放鍵彈性域使用的是哪個段結(jié)構(gòu)的代碼 唯一標(biāo)識列:是記錄鍵彈性域唯一的值,要找到健彈性域的具體含義,必須通過此唯一標(biāo)識列 定義鍵彈性域的段結(jié)構(gòu),如下圖

點擊“段”按紐

進行定義:

,

此處定義段結(jié)構(gòu)與說明性彈性域一致,在此不再多說。

鍵彈性域的開發(fā)例子:

/***************************在客戶化的用戶下*******************************/

/* 鍵應(yīng)用表 */

CREATE TABLE T_K EY_FLEX

(

K EY_ID NUMBER , /* 鍵彈性域唯一值 */

AGE NUMBER ,

NAME VARCHAR2(30) ,

DEPT VARCHAR2(30) ,

TYPE VARCHAR2(30)

);

/* 創(chuàng)建存放鍵彈性域的結(jié)構(gòu)表 */

CREATE TABLE FLEX_LN_K EY

(

K EY_FLEX_STRUCTURE_ID NUMBER ,

K EY_FLEX_ID NUMBER ,

SUMMARY_FLAG VARCHAR2(1) , /* 必須有此字段 */

ENABLED_FLAG VARCHAR2(1) , /* 必須有此字段 */

START_DATE_ACTIVE DATE , /* 必須有此字段 */

END_DATE_ACTIVE DATE , /* 必須有此字段 */

LAST_UPDATED_BY NUMBER , /* 必須有此字段 */

LAST_UPDATE_DATE DATE , /* 必須有此字段 */

SEGMENT1 VARCHAR2(30) ,

SEGMENT2 VARCHAR2(30) ,

SEGMENT3 VARCHAR2(30) ,

SEGMENT4 VARCHAR2(30) ,

SEGMENT5 VARCHAR2(30) ,

SEGMENT6 VARCHAR2(30) ,

SEGMENT7 VARCHAR2(30) ,

SEGMENT8 VARCHAR2(30) ,

SEGMENT9 VARCHAR2(30) ,

SEGMENT10 VARCHAR2(30) ,

SEGMENT11 VARCHAR2(30) ,

SEGMENT12 VARCHAR2(30) ,

SEGMENT13 VARCHAR2(30) ,

SEGMENT14 VARCHAR2(30) ,

SEGMENT15 VARCHAR2(30)

);

/* 必須要創(chuàng)建一個與鍵結(jié)構(gòu)表對應(yīng)的序列 */

CREATE SEQ UENCE FLEX_LN_K EY_S START W ITH 1; --創(chuàng)建存放鍵彈性域表的對應(yīng)序列(鍵彈性域表名 "_S" ) /***************************在公共用戶APPS下*******************************/

conn apps/apps@egtc

/* 創(chuàng)建同義詞 */

CREATE SYNONYM FLEX_LN_K EY FOR ERP_dev.FLEX_LN_K EY ;

CREATE SYNONYM T_K EY_FLEXFOR ERP_dev.T_K EY_FLEX ;

CREATE SYNONYM FLEX_LN_K EY_SFOR ERP_dev.FLEX_LN_K EY_S;

/* 注冊鍵結(jié)構(gòu)表和字段 */

EXECUTE ad_dd.register_table('EDV', 'FLEX_LN_K EY', 'T');

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'K EY_FLEX_STRUCTURE_ID', 1, 'NUMBER', 38, 'Y','N' );EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'K EY_FLEX_ID', 2, 'NUMBER', 38, 'Y', 'N' );EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT1', 3, 'VARCHAR2', 30, 'Y', 'N' );

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT2', 4, 'VARCHAR2', 30, 'Y', 'N' );

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT3', 5, 'VARCHAR2', 30, 'Y', 'N' );

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT4', 6, 'VARCHAR2', 30, 'Y', 'N' );

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT5', 7, 'VARCHAR2', 30, 'Y', 'N' );

,

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT6', 8, 'VARCHAR2', 30, 'Y', 'N' );

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT7', 9, 'VARCHAR2', 30, 'Y', 'N' );

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT8', 10, 'VARCHAR2', 30, 'Y', 'N' );

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT9', 11, 'VARCHAR2', 30, 'Y', 'N' );

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT10',12, 'VARCHAR2', 30, 'Y', 'N' );

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT11', 13, 'VARCHAR2', 30, 'Y','N' );

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT12', 14, 'VARCHAR2', 30, 'Y','N' );

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT13', 15, 'VARCHAR2', 30, 'Y','N' );

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT14', 16, 'VARCHAR2', 30, 'Y','N' );

EXECUTE ad_dd.register_column('EDV', 'FLEX_LN_K EY', 'SEGMENT15',17, 'VARCHAR2', 30, 'Y', 'N' );

COMMIT;

FORM程序語法:

FND_K EY_FLEX.DEFINE (

BLOC K => 'T_K EY_FLEX', -- 操作的BLOCK

FIELD => 'K EY_FLEXITEM', -- 創(chuàng)建的ITEM,用來容納鍵彈性域

ID => 'K EY_ID', --保存K EY彈性域的唯一值

APPL_SHORT_NAME => 'EDV',

CODE => 'K _LN', -- 鍵彈性域的注冊代碼 fnd_id_flex_structures.id_flex_code

NUM => '101' --fnd_id_flex_structures.id_flex_num

);

分別在BLOCK級別加入如下的觸發(fā)器(可參考說明性彈性域的應(yīng)用代碼).

PRE -Q UERY

PRE -UPDATE

PRE -INSERT

POST -Q UERY

W HEN -NE W-ITEM -INSTANCE

W HEN -VALIDATE -ITEM

W HEN -VALIDATE -RECORD

其觸發(fā)器的代碼分別對應(yīng)

FND_FLEX.EVENT('PRE-Q UERY ');

FND_FLEX.EVENT('PRE-UPDATE ');

FND_FLEX.EVENT('PRE-INSERT ');

FND_FLEX.EVENT('POST-Q UERY ');

FND_FLEX.EVENT('W HEN -NE W-ITEM -INSTANCE');

FND_FLEX.EVENT('W HEN -VALIDATE -ITEM');

FND_FLEX.EVENT('W HEN -VALIDATE -RECORD');

編寫FORM設(shè)置和彈性域

加入非基表域用于容納彈性域,我們做一個ITEM叫 K EY_FLEXITEM 注意這個ITEM的CLASS屬性為 TEXT_ITEM, LOV處選擇ENABLE_LIST_LAMP,并把檢查有效性設(shè)為NO。

由下圖可以看出鍵彈性域的存放關(guān)系,在應(yīng)用表里存放的是鍵唯一值,而在鍵結(jié)構(gòu)表中存放的是鍵結(jié)構(gòu)值(段結(jié)構(gòu)代碼和

鍵唯一值)

標(biāo)簽: