EBS描述性彈性域及鍵彈性域總結

一.描述性彈性域

  前言介紹:    

    描述性彈性域的實質就是系統預留自定字段,系統可使用說明性彈性域來獲取業務所特有的重要附加信息。系統可能自定義說明性彈性域,以顯示存儲更多信息的字段,提供一套完整的「自定義」機制,能夠用值集來驗證字段、字段間能夠設置依賴關係等等。數據庫

  1.註冊表和字段到EBS(記得COMMIT):  

    說明:app

      註冊表 :ide

AD_DD.REGISTER_TABLE(p_appl_short_name in varchar2, --應用名簡稱/全部者 
p_tab_name in varchar2, --表名 
p_tab_type in varchar2, --T 自動擴展/S 非自動擴展/F 
p_next_extent in number, --下一區 
p_pct_free in number, 
p_pct_used in number) 

      註冊列:佈局

AD_DD.REGISTER_COLUMN(p_appl_short_name in varchar2, 
p_tab_name in varchar2, --應用名簡稱/全部者 
p_col_name in varchar2, --列名 
p_col_seq in number, --序號,惟一 
p_col_type in varchar2, --類型 
p_col_width in number, --字段寬度 
p_nullable in varchar2, --是否爲空 
p_translate in varchar2, --是否能夠轉換 
p_precision in number default null, 
p_scale in number default null)

 

  2.在應用開發員>彈性域>說明性>註冊 中註冊說明性彈性域,一般NAME 起名和表名一致,Title的值爲可明顯區分:

 

    保存後,點擊Columns,能夠看到,系統自動選中了全部Attribute字段:flex

  3.建立非數據庫項:

    在塊中手工建立一個字段,名字一般叫DESC_FLEX,子類爲TEXT­ITEM­DESCFLEX,Prompt爲一對大括號"[]",佈局時一般放在最後,但不隨滾動條滾動: ui

注:爲非數據庫字段,Database Item屬性爲No編碼

  4.觸發器:

    4.1Form級:WHEN­-NEW­-FORM­-INSTANCE

      fnd_descr_flex.define(BLOCK           => 'BLOCKNAME',spa

                                 field           => 'DESC_FLEX', code

                              appl_short_name => 'SCF',   orm

                              desc_flex_name  => 'CUX_FLEXFIELD_DEMO');  

      例:

 fnd_descr_flex.define(BLOCK           => 'ORDER_HEADERS'  
                        ,field           => 'DESC_FLEX'                         
               ,appl_short_name => 'CUX'                          
              ,desc_flex_name  => 'CUX_OE_ORDER_HEADERS_25305_ALL'

 

    4.2塊級 :

      PRE­INSERT中追加:  fnd_flex.event('PRE­INSERT');

        PRE­UPDATE中追加:  fnd_flex.event('PRE­UPDATE'); 

      PRE­QUERY中追加:  fnd_flex.event('PRE­QUERY'); 

      POST­QUERY中追加:  fnd_flex.event('POST­QUERY'); 

      WHEN­VALIDATE­RECORD中追加:  fnd_flex.event('WHEN­VALIDATE­RECORD');  

    

     4.3Item級:

      WHEN­NEW­ITEM­INSTANCE中追加:  fnd_flex.event('WHEN­NEW­ITEM­INSTANCE'); 

      WHEN­VALIDATE­ITEM中追加:  fnd_flex.event('WHEN­VALIDATE­ITEM');  

    注意::能夠把這些觸發器(Block級和Item級)寫在Form級,這樣不須要每一個塊都寫,不過若是爲了其它功能 在塊級寫了同名觸發器,執行層次須要改成Before(修改觸發器的Execution Hierarchy屬性,該屬性默認爲Override,能夠改成After,Before)。

        一、 Override模式,默認模式,再也不觸發高級別事件(執行順序是Item級別——》Block級別——》Form級別);
        二、 Before模式,觸發完本級別的事件後,再觸發高級別事件;
        三、 After模式,先觸發高級別事件,再回來觸發本級別事件

 

  5.啓用彈性域:

    經過Application Developer職責/Flexfield/Descriptive/Segments啓用彈性域:選擇相應字段並保存 。

  

 

   6.效果:

  

 

 

 

二.鍵彈性域

  前言介紹:

    鍵彈性域具備足夠的「彈性」,它容許根據須要使用任意的代碼組合以描述實體。系統可爲每一個鍵彈性域肯定一個實體具備多少段、每一個段的含義、每一個段可具備的值以及每一個段值表示的含義。系統也能夠定義管理段值組合有效的規則(交叉驗證規則),或定義段與段之間的相關性。從而系統可使用其所需的代碼。鍵彈性域一般用來處理有層次結構的編碼,好比帳戶、類別等,極少自行客戶化開發,通常都是使用系統標準的鍵彈性域而已。

  1.要求:

    1.1基表要求:

      鍵彈性域對應的表都有一個ID字段,若是在客戶化開發中須要使用該表 做爲外鍵,固然須要一個外鍵ID字段,名字根據須要起便可。

    1.2字段要求:

      字段要求:一個鍵代碼組合字段+一個可選的鍵描述組合字段 :這兩個字段能夠是數據庫項,也能夠不是。 代碼組合字段子類是Text_Item,描述組合字段子類一般是 Text_Item_Display_Only;注意它們的長度要足夠,否則可能放不下組合。 對代碼組合字段,須要設置其Lov屬性(List of Values設置爲 ENABLE_LIST_LAMP,Validate from List設置爲NO,非必需)。

    

  2.觸發器:

    2.1Form級:

      WHEN-NEW-FORM-INSTANCE:

fnd_key_flex.define(BLOCK           => 'FLEXFIELD_DEMO',                             
                              field           => 'ACCOUNT_CODE',                    
                              description     => 'ACCOUNT_DESC',                     
                              appl_short_name => 'SQLGL',                     
                               code            => 'GL#', 
                               id              => 'CODE_COMBINATION_ID',                     
                               required        => 'N',
                               usedbflds       => 'N',                     
                               validate        => 'FULL',                    
                               vrule           => 

 '\\nSUMMARY_FLAG\\nI\\nAPPL=SQLGL;NAME=GL_NO_PARENT_SEGMENT_ALLOWED\\nN\\0GL_GLOBAL\\nDETAIL_POSTING_ALLOWED\\nE\\nAPPL=INV;NAME=INV_VRULE_POSTING\\nN',  
--由於不一樣公司啓用的Structure不一樣,實際開發中不要寫死Num值。                    
                                num             => 101);                                                  

 

      注:可使用如下SQL查詢不一樣鍵彈性域的定義: 

SELECT app.application_short_name,
       app.application_name,
       flx.id_flex_code,
       flx.id_flex_name,
       str.id_flex_num,
       str.id_flex_structure_code,
       str.id_flex_structure_name
  FROM fnd_id_flexs              flx,
       fnd_id_flex_structures_vl str,
       fnd_application_vl        app
 WHERE flx.application_id = str.application_id
   AND flx.id_flex_code = str.id_flex_code
   AND flx.application_id = app.application_id
 ORDER BY 1, 3, 5

 

    2.2塊級:     

      PRE-INSERT中追加:
        fnd_flex.event('PRE-INSERT');

      PRE-UPDATE中追加:
        fnd_flex.event('PRE-UPDATE');

      PRE-QUERY中追加:
        fnd_flex.event('PRE-QUERY');

      POST-QUERY中追加:
        fnd_flex.event('POST-QUERY');

      WHEN-VALIDATE-RECORD中追加:
        fnd_flex.event('WHEN-VALIDATE-RECORD');

    2.3Item級:     

      WHEN-NEW-ITEM-INSTANCE中追加:
        fnd_flex.event('WHEN-NEW-ITEM-INSTANCE');

      WHEN-VALIDATE-ITEM中追加:
        fnd_flex.event('WHEN-VALIDATE-ITEM');

    注:能夠把這些觸發器(Block級和Item級)寫在Form級,這樣不須要每一個塊都寫,不過若是爲了其它功能 在塊級寫了同名觸發器,執行層次須要改成Before(同說明性彈性域)

  3.效果:

相關文章
相關標籤/搜索