EBS Form开发中弹性域的定义语法
(版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处;否则请与本人联系,违者必究)
来源:Oracle Applications Developers Guide
关键性弹性域定义语法
在外键form或者组合form上,使用FND_KEY_FLEX.DEFINE方法定义关键性弹性域。
注意:Oracle提供了组合form语法,这样你就可以把现存的子SQL*Forms2.3到Oracle Forms4.5的非OracleApplications 组合form进行转换。但是,关键性弹性域的API在未来版本的Oracle Applications中还可以能更改,因此,Oracle建议不要创建任何新的非Oracle Applications提供的关键性弹性域。
FND_KEY_FLEX.DEFINE( /* Arguments thatspecify flexfield location */ BLOCK=>’block_name’, FIELD=>’concatenated_segments_field_name’, [DESCRIPTION=>’description_field_name’,] [ID=>’Unique_ID_field’,] [DATA_FIELD=>’concatenated_hidden_IDs_field’,] /* Arguments thatspecify the flexfield */ APPL_SHORT_NAME=>’application_short_name’, CODE=>’key_flexfield_code’, NUM=>’structure_number’, /* 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 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...]’,] [COPY=>’block.field\\n{ALL | flexfield qualifier | segment_number} [\\0block.field\\n{ALL | flexfield qualifier | segment_number}]’,] [DERIVED=>’block.field\\nSegment qualifier’,] [DERIVE_ALWAYS=>’{Y|N}’,] [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), ...] [INTO block.field]}’,] [WHERE_CLAUSE=>’where clause’,] [COMBQP_WHERE=>’{where clause|NONE}’,] [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=>’APPL=application_short_ name;NAME=message_name’,] [AUTOCOMBPICK=>’{Y|N}’,] [LOCK_FLAG=>’{Y|N}’,] [HELP=>’APPL=application_short_name; TARGET=target_name’] );
对于参数VALATT,COPY或者DERIVED参数,不要在block.field引用中使用冒号(:)。这些方法的参数会走到OracleApplication Object Library的外层程序,而不是直接为PL/SQL解析。
范围类型弹性域定义语法
对于范围弹性域,使用FND_RANGE_FLEX.DEFINE。对于”type”弹性域也使用这个方法(它也可能包含范围弹性域分段),它包含额外字段,这些字段对应相关关键性弹性域的每个分段。比如,一个Accouting 弹性域的type弹性域可能为每个Accouting弹性域分段包含一个字段,但是你可能在这些字段只能输入Yes或者No值,而不是通常的分段值。Assign Function Parameter form为分段使用字段使用了type弹性域(你可以为任何你想使用的分段输入”YES”).你可能需要构建一个type弹性域,其中包含多于一个“类型列”(一个在弹性域弹出窗口中字段’列’, 其对应于实际分段的字段)。如果你这么做,你可以指定TYPE_参数值多次,使用\\0来隔离多个值。
注意:你不要附加”_LOW”或者”_HIGH”到FIELD,DESCRIPTION,DATA_FIELD或者其它值,因为这个方法会自动添加它们。当你使用多于一个type列时,保证所有TYPE_参数指定的type列保持同样的顺序,这样可以避免参数值应用到错误的类型列。
FND_RANGE_FLEX.DEFINE( /* Arguments thatspecify flexfield location */ BLOCK=>’block_name’, FIELD=>’concatenated_segments_field_name’, [DESCRIPTION=>’description_field_name’,] [DATA_FIELD=>’concatenated_hidden_IDs_field’,] /* Arguments thatspecify the flexfield */ APPL_SHORT_NAME=>’application_short_name’, CODE=>’key_flexfield_code’, NUM=>’structure_number’, /* 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\\nDefaultvalue’,] [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方法。
FND_DESCR_FLEX.DEFINE( /* Arguments thatspecify the flexfield location */ BLOCK=>’block_name’, FIELD=>’field_name’, [DESCRIPTION=>’description_field_name’,] [DATA_FIELD=>’concatenated_hidden_IDs_field’,] /* Arguments thatspecify the flexfield */ APPL_SHORT_NAME=>’application_short_name’, DESC_FLEX_NAME=>’descriptive flexfield_name’ /* 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’} );