• EBS描述性弹性域及键弹性域总结


    一.描述性弹性域

      前言介绍:    

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

      1.注册表和字段到EBS(记得COMMIT):  

        说明:

          注册表 :

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

      3.创建非数据库项:

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

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

      4.触发器:

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

          fnd_descr_flex.define(BLOCK           => 'BLOCKNAME',

                                     field           => 'DESC_FLEX', 

                                  appl_short_name => 'SCF',   

                                  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)。

            1、 Override模式,默认模式,不再触发高级别事件(执行顺序是Item级别——》Block级别——》Form级别);
            2、 Before模式,触发完本级别的事件后,再触发高级别事件;
            3、 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.效果:

  • 相关阅读:
    gtest ASSERT_TRUE和EXPECT_TRUE
    linux中文乱码
    [转]linux实时查看更新日志命令
    显示log里的ansi codecs颜色字符
    批量注释LOG
    Winrm远程命令/端口复用后门复现运用
    SSM整合Redis中的小记录
    从《MySQL蜜罐攻击反制微信ID》中的启发与复现
    CSharp插件编写-GetPwd密码获取器
    从pipePotato中学习Windows Access Token令牌模拟
  • 原文地址:https://www.cnblogs.com/lyq-biu/p/11283628.html
Copyright © 2020-2023  润新知