EBS Form开发中弹性域定义的更新及其语法
(版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处;否则请与本人联系,违者必究)
原文来源:Application Developer Guide
更新弹性域定义
通常一旦在form上定义弹性域,一般是在form的启动事件。但是,有时你需要在稍后修改这个定义。比如,你可能想让这个弹性域变成不可更新和不可插入。替代重新定义弹性域并和之前一样设置UPDATEABLE=>’’和INSERTABLE=>’’和其它参数,你可以使用下面的更新方法来更改仅需要修改的参数。
可以使用更新方法来控制任意你在弹性域定义方法中指定的”其它可选参数”。你不能使用这些方法来改变比如弹性域使用哪些字段的参数,因为这些参数可以有效识别弹性域而不是修改它。比如,你可以指定为VALIDATE参数指定新值,但是你不能为DESCRIPTION或者DATA_FIELD参数指定新值。
启用或者禁用弹性域
一旦在form上定义了弹性域,无论在block或者form级别上的各种触发器调用FND_FLEX.EVENT,这些事件都会应用到定义在block或者form上的所有弹性域。但是这样若只想为一些弹性域而不对其它弹性域调用FND_FLEX.EVENT就会变得困难。比如,你可能不想为一个特定的关键性弹性域在PRE-UPDATE调用VALID,但是你想为block上的所有其它的弹性域调用它。使用更新方法你可以启用和禁用弹性域定义,这样FND_FLEX.EVENT调用不会应用到禁用的弹性域定义上。
更新方法除了你可以指定可选的参数,还提供了特殊的参数,ENABLED。你为这个参数指定N来禁用弹性域,指定为Y来启用弹性域。你不能在通常的弹性域定义方法调用中使用ENABLED(因为定义方法会自动启用这个弹性域)。
关键性弹性域更新定义语法
使用UseFND_KEY_FLEX.UPDATE_DEFINITION来为组合form上的或者外键关键性弹性域来更新定义。除了ENABLED是你仅可以用于更新定义的参数,其它参数都和定义弹性域的一样。
FND_KEY_FLEX.UPDATE_DEFINITION(
/* Arguments thatspecify flexfield location and
thus identify theflexfield */
BLOCK=>’block_name’,
FIELD=>’concatenated_segments_field_name’,
/* Argument toenable or disable flexfield */
[ENABLED=>’{Y|N}’,]
/* Other optionalparameters */
[VALIDATE=>’{FOR_INSERT|FULL|PARTIAL|NONE|
PARTIAL_IF_POSSIBLE}’,]
[VDATE=>’date’,]
[DISPLAYABLE=>’{ALL| flexfield_qualifier |
segment_number}[\\0{ALL|
flexfield_qualifier | segment_number}]’,]
[INSERTABLE=>’{ALL| flexfield_qualifier |
segment_number}[\\0{ALL|
flexfield_qualifier | segment_number}]’,]
[UPDATEABLE=>’{ALL| flexfield_qualifier |
segment_number}[\\0{ALL|
flexfield_qualifier | segment_number}]’,]
[VRULE=>’flexfield qualifier\\n
segmentqualifier\\n
{I[nclude]|E[xclude]}\\n
APPL=application_short_name;
NAME=Message Dictionary message name\\n
validation value1\\n
validation value2...
[\\0flexfield qualifier\\n
segment qualifier\\n
{I[nclude]|E[xclude]}\\n
APPL=application_short_name;
NAME=Message Dictionary message name\\n
validation value1\\n
validation value2...]’,]
[COPY=>’block.field\\n{ALL | flexfield
qualifier | segment_number}
[\\0block.field\\n{ALL | flexfield
qualifier | segment_number}]’,]
[DERIVED=>’block.field\\nSegment qualifier’,]
[DINSERT=>’{Y|N}’,]
[VALATT=>’block.field\\n
flexfield qualifier\\n
segment qualifier’,]
[TITLE =>’Title’,]
[REQUIRED=>’{Y|N}’,]
[AUTOPICK=>’{Y|N}’,]
[USEDBFLDS=>’{Y|N}’,]
[ALLOWNULLS=>’{Y|N}’,]
[DATA_SET=>’set number’,]
[COLUMN=>’{column1(n) | column1 alias(n)
[, column2(n), ...]}’,]
[WHERE_CLAUSE=>’where clause’,]
[COMBQP_WHERE=>’{Y|N}’,]
[WHERE_CLAUSE_MSG=>’APPL=application_short_
name;NAME=message_name’,]
[QUERY_SECURITY=>’{Y|N}’,]
[QBE_IN=>’{Y|N}’,]
[READ_ONLY=>’{Y|N}’,]
[LONGLIST=>’{Y|N}’,]
[NO_COMBMSG=>’{Y|N}’,]
[LOCK_FLAG=>’{Y|N}’,]
[AUTOCOMBPICK=>’{Y|N}’,]
[DERIVE_ALWAYS=>’{Y|N}’,]
[HELP=>’APPL=application_short_name;
TARGET=target_name’]
);
范围类型弹性域更新定义语法
对于范围弹性域,使用FND_RANGE_FLEX.UPDATE_DEFINITION方法。对于”type”弹性域也使用这个方法(它也可能包含范围弹性域分段),它包含额外字段,这些字段对应相关关键性弹性域的每个分段。除了ENABLED是你仅可以用于更新定义的参数,其它参数都和定义弹性域的一样。
注意:你不要附加”_LOW”或者”_HIGH”到FIELD,DESCRIPTION,DATA_FIELD或者其它值,因为这个方法会自动添加它们。当你使用多于一个type列时,保证所有TYPE_参数指定的type列保持同样的顺序,这样可以避免参数值应用到错误的类型列。
FND_RANGE_FLEX.UPDATE_DEFINITION(
/* Arguments thatspecify flexfield location */
BLOCK=>’block_name’,
FIELD=>’concatenated_segments_field_name’,
/* Argument to enableor disable flexfield */
[ENABLED=>’{Y|N}’,]
/* Other optionalparameters */
[VALIDATE=>’{PARTIAL|NONE}’,]
[VDATE=>’date’,]
[DISPLAYABLE=>’{ALL | flexfield_qualifier |
segment_number}[\\0{ALL|
flexfield_qualifier | segment_number}]’,]
[INSERTABLE=>’{ALL| flexfield_qualifier |
segment_number}[\\0{ALL|
flexfield_qualifier | segment_number}]’,]
[UPDATEABLE=>’{ALL| flexfield_qualifier |
segment_number}[\\0{ALL|
flexfield_qualifier | segment_number}]’,]
[VRULE=>’flexfield qualifier\\n
segment qualifier\\n
{I[nclude]|E[xclude]}\\n
APPL=application_short_name;
NAME=Message Dictionary message name\\n
validation value1\\n
validation value2...
[\\0flexfield qualifier\\n
segment qualifier\\n
{I[nclude]|E[xclude]}\\n
APPL=application_short_name;
NAME=Message Dictionary message name\\n
validation value1\\n
validation value2...]’,]
[TITLE =>’Title’,]
[REQUIRED=>’{Y|N}’,]
[AUTOPICK=>’{Y|N}’,]
[USEDBFLDS=>’{Y|N}’,]
[ALLOWNULLS=>’{Y|N}’,]
[DATA_SET=>’set number’,]
[READ_ONLY=>’{Y|N}’,]
/* Parametersspecific to type flexfields */
[TYPE_FIELD=>’block.concatenated_type_values_
field\\ntype field suffix’,]
[TYPE_VALIDATION=>’Value set name\\n
Required\\nDefault value’,]
[TYPE_SIZES=>’type_value_display_
size\\nDescription_display_size’,]
[TYPE_HEADING=>’type column heading’,]
[TYPE_DATA_FIELD=>’block.type_data_field’,]
[TYPE_DESCRIPTION=>’block.type_
description_field’,]
[SCOLUMN=>’single column title’]
[HELP=>’APPL=application_short_name;
TARGET=target_name’]
);
注意:TYPE_FIELD,TYPE_DATA_FIELD和TYPE_DESCRIPTION需要block.fieldname的结构,不像其它的弹性域参数值只需要指定字段名而不需要block的名字。
描述性弹性域更新定义语法
对于描述性弹性域,使用FND_DESCR_FLEX.DEFINE方法。除了ENABLED是你仅可以用于更新定义的参数,其它参数都和定义弹性域的一样。
FND_DESCR_FLEX.UPDATE_DEFINITION(
/* Arguments thatspecify the flexfield location */
BLOCK=>’block_name’,
FIELD=>’field_name’,
/* Argument toenable or disable flexfield */
[ENABLED=>’{Y|N}’,]
/* Other optionalparameters */
[VDATE=>’date’,]
[TITLE =>’Title’,]
[AUTOPICK=>’{Y|N}’,]
[USEDBFLDS=>’{Y|N}’,]
[READ_ONLY=>’{Y|N}’,]
[LOCK_FLAG=>’{Y|N}’,]
[HELP=>’APPL=application_short_name;
TARGET=target_name’,]
[CONTEXT_LIKE=>’WHERE_clause_fragment’}
);
EBS Form开发中弹性域定义的更新及其语法,布布扣,bubuko.com
原文:http://blog.csdn.net/tavor/article/details/21119123