使用描述性弹性域

会有一股神秘感。 提交于 2020-03-24 11:00:46

一、创建表,表中包括弹性域结构列和弹性域列

CREATE TABLE RICK_FORM_DFF_TEST(
  ITEM_ID NUMBER NOT NULL,
  ITEM_NUMBER VARCHAR2(30) NOT NULL,
  ITEM_NAME VARCHAR2(100) NOT NULL,
  ITEM_DESCRIPTION VARCHAR2(255),
  START_DATE_ACTIVE DATE,
   END_DATE_ACTIVE DATE,
   ATTRIBUTE_CATEGORY VARCHAR2(30),   --结构列
   ATTRIBUTE1 VARCHAR2(150),      -- 弹性域列的数据库段
   ATTRIBUTE2 VARCHAR2(150),
   ATTRIBUTE3 VARCHAR2(150),
   ATTRIBUTE4 VARCHAR2(150),
   ATTRIBUTE5 VARCHAR2(150),
   ATTRIBUTE6 VARCHAR2(150),
   ATTRIBUTE7 VARCHAR2(150),
   ATTRIBUTE8 VARCHAR2(150),
   ATTRIBUTE9 VARCHAR2(150),
   ATTRIBUTE10 VARCHAR2(150),
   ATTRIBUTE11 VARCHAR2(150),
   ATTRIBUTE12 VARCHAR2(150),
   ATTRIBUTE13 VARCHAR2(150),
   ATTRIBUTE14 VARCHAR2(150),
   ATTRIBUTE15 VARCHAR2(150),
   CREATED_BY NUMBER NOT NULL,
   CREATION_DATE DATE NOT NULL,
   LAST_UPDATED_BY NUMBER NOT NULL,
   LAST_UPDATE_DATE DATE NOT NULL,
   LAST_UPDATE_LOGIN NUMBER
 );

二、创建视图,视图中包括弹性域相关列(非必需)

三、使用AD_DD工具包注册表

应用名简称、表名、T自动扩展/S非自动扩展/F、下一区

 begin
 AD_DD.REGISTER_TABLE('XXSRS2', 'RICK_FORM_DFF_TEST', 'T', 8, 10, 90);
 END;

四、注册列

应用名简称、表名、列名、序号(唯一)、类型、字段宽度、是否为空、是否可以转换

begin
AD_DD.REGISTER_COLUMN('XXSRS2', 'RICK_FORM_DFF_TEST', 'ITEM_ID', 1, 'NUMBER', 38, 'N', 'N');
AD_DD.REGISTER_COLUMN('XXSRS2', 'RICK_FORM_DFF_TEST', 'ITEM_NUMBER', 2, 'VARCHAR2', 30, 'N', 'N');
AD_DD.REGISTER_COLUMN('XXSRS2', 'RICK_FORM_DFF_TEST', 'ITEM_NAME', 3, 'VARCHAR2', 100, 'N', 'N');
AD_DD.REGISTER_COLUMN('XXSRS2', 'RICK_FORM_DFF_TEST', 'ITEM_DESCRIPTION', 4, 'VARCHAR2', 255, 'Y', 'N');
AD_DD.REGISTER_COLUMN('XXSRS2', 'RICK_FORM_DFF_TEST', 'START_DATE_ACTIVE', 5, 'DATE', 9, 'Y', 'N');
AD_DD.REGISTER_COLUMN('XXSRS2', 'RICK_FORM_DFF_TEST', 'END_DATE_ACTIVE', 6, 'DATE', 9, 'Y', 'N');
AD_DD.REGISTER_COLUMN('XXSRS2', 'RICK_FORM_DFF_TEST', 'ATTRIBUTE_CATEGORY', 7, 'VARCHAR2', 30, 'Y', 'N');
AD_DD.REGISTER_COLUMN('XXSRS2', 'RICK_FORM_DFF_TEST', 'ATTRIBUTE1', 8, 'VARCHAR2', 150, 'Y', 'N');
AD_DD.REGISTER_COLUMN('XXSRS2', 'RICK_FORM_DFF_TEST', 'ATTRIBUTE2', 9, 'VARCHAR2', 150, 'Y', 'N');
AD_DD.REGISTER_COLUMN('XXSRS2', 'RICK_FORM_DFF_TEST', 'ATTRIBUTE3', 10, 'VARCHAR2', 150, 'Y', 'N');
AD_DD.REGISTER_COLUMN('XXSRS2', 'RICK_FORM_DFF_TEST', 'ATTRIBUTE4', 11, 'VARCHAR2', 150, 'Y', 'N');
end;

五、注意提交

commit;

六、在EBS中注册描述性弹性域

路径 Application Developer --> Flexfield --> Descriptive --> Register

Application:弹性域注册的应用名称

    Name:描述性弹性域的名称,必须唯一。一般设置成和表名一样

    Title: 弹性域的标题,在今后的应用中,此说描述性弹性域将会在窗口标题上显示在此定义的标题内容

    Description: 说明

    Table Application: 在(第三步)注册表和列时所指定的应用名称

    Table Name: 注册时的表名称

    Structure Column: 结构列,一般为ATTRIBUTE_CATEGORY,必须是存在于注册过的列。结构列的意义就是存放说明性弹性域上下文提示的值

    Context Prompt: 上下文提示,是在描述性弹性域上下文字段的标题描述

    DFV View Name:

    Reference Fields: 参考字段的主要作用与结构列的作用类似,可以在不选择上下文字段的情况下,系统根据参考字段的含义来对应显示不用的弹性域。举例说明,例如参考字段为 NAME,则在系统中输入NAME信息后,系统会自动根据NAME的信息来确定显示什么样的弹性域,这样就可以避免来选择上下文来显示需要的弹性域。

七、启用描述性弹性域

    路径 Application Developer --> Flexfield --> Descriptive --> Segments

    弹性域设置结束后,需要将Freeze Flexfield Definition冻结才能使设置生效

  Application: 弹性域注册的应用名称

    Title: 弹性域标题,打开弹性域窗体时所显示的名称

    Freeze Flexfield Definition: 冻结弹性域定义,修改时需要解除冻结,设置完成之后需要冻结才能生效

    Segment Separator: 段分隔符

    Prompt: 上下文提示

    Value Set: 为上下文内容提供一个LOV值集选择

    Default Value: 上下文默认值

    Reference Field: 参考字段,作用是根据参考字段的值来判断显示哪一中弹性域(上下文)

    Global Data Elements: 每个弹性的段信息中,都有一个默认的段定义 Global Data Elements。如果我们定义的弹性域只有一种段结构的话,可以直接在  Global Data Elements段中进行定义,如果有多个的话,需要在另创建记录进行段定义的需要,有一点需要说明的是,一旦有注册了的字段在 Global Data Elements中定义了结构的话,那么用户自己在创建其他的段结构,则不会显示在Global Data Elements中使用了的字段

    Parts: 自定义段结构

    Vehicle: 自定义段结构

   设置完成之后注意要冻结弹性域定义并保存。

八、开发Form

1)、创建DF项

      在Data Block中新增一个Item,命名为”DF”,其Subclass InfoRMAtion设置为TEXT_ITEM_DESC_FLEX,(List of Values设置为ENABLE_LIST_LAMP,Validate from List设置为NO,非必需)Database Item设置为NO。

2)、给DF项和数据块添加必要的触发器和标准代码

      为DF项添加WHEN-NEW-ITEM-INSTANCE触发器,并将其Execution Hierarchy属性从Override修改为Before,触发器代码如下

      FND_FLEX.EVENT('WHEN-NEW-ITEM-INSTANCE');

 

      为DF项添加WHEN-VALIDATE-ITEM触发器,其代码为

      FND_FLEX.EVENT('WHEN-VALIDATE-ITEM');

 

      在DF项所在Data Block下添加几个Block级别的触发器,分别为

      PRE-QUERY:  FND_FLEX.EVENT('PRE-QUERY');

      POST-QUERY:   FND_FLEX.EVENT('POST-QUERY');

      PRE-INSERT:   FND_FLEX.EVENT('PRE-INSERT');

      PRE-UPDATE:   FND_FLEX.EVENT('PRE-UPDATE');

      WHEN-VALIDATE-RECORD:   FND_FLEX.EVENT('WHEN-VALIDATE-RECORD');

      WHEN-VALIDATE-ITEM:   FND_FLEX.EVENT('WHEN-VALIDATE-ITEM');

 3)、在Form级别的触发器PRE-FORM中注册弹性域

      在Form级别的触发器PRE-FORM中使用FND_DESCR_FLEX.DEFINE来初始化描述性弹性域,如

      FND_DESCR_FLEX.DEFINE(block => 'ITEMS',

                                 field => 'DF',

                                 appl_short_name => 'CUX',

                                 desc_flex_name => 'CUX_FORM_DFF_TEST');

 

      参数说明如下

      block: 弹性域显示项DF所在的Data Block名称

      field: 描述性弹性域显示字段的名称,一般都命名为DF

      appl_short_name: 描述性弹性域注册时的应用简称

      desc_flex_name: 描述性弹性域注册时的名称,一般都与表名一致。

九、验证弹性域

登录EBS中验证开发的描述性弹性域。

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!