描述性弹性域

 

 

一.描述性弹性域

  前言介绍:    

    描述性弹性域的实质就是系统预留自定字段,系统可使用说明性弹性域来获取业务所特有的重要附加信息。系统可能自定义说明性弹性域,以显示存储更多信息的字段,提供一套完整的“自定义”机制,能够用值集来验证字段、字段间能够设置依赖关系等等。数据库

  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字段:post

  3.建立非数据库项:

    在块中手工建立一个字段,名字一般叫DESC_FLEX,子类为TEXT­ITEM­DESCFLEX,Prompt为一对大括号"[]",布局时一般放在最后,但不随滚动条滚动: flex

注:为非数据库字段,Database Item属性为Noui

  4.触发器:

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

      fnd_descr_flex.define(BLOCK           => 'BLOCKNAME',编码

                                 field           => 'DESC_FLEX', spa

                              appl_short_name => 'SCF',   3d

                              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.效果:

 

 
标签:  EBS
相关文章
相关标签/搜索