上一页  下一页          目录  索引  定位  词汇表  程序库

外部关键字参考弹性域

外部关键字参考弹性域的 POPID/LOADID/VALID 调用序列(用于大多数弹性域报表参数)为:

语法


#FND {POPID|LOADID|VALID}
CODE="flexfield code"
APPL_SHORT_NAME="application_short_name"
VALIDATE="{FULL|PARTIAL|NONE|QUERY}"
SEG="block.concatenated values field name"
[BLOCK="block_name"]
[FIELD="field_name"]
[DERIVED=":block.field\nSegment qualifier"]
[READ_ONLY="{Y|N}"]
[DINSERT="{Y|N}"]
[WINDOW="{Y|N}"]
[ID="block.unique ID field"]
[REQUIRED="{Y|N}"]
[DISPLAY="{ALL | flexfield qualifier |
segment number
}"]
[UPDATE="{ALL | flexfield qualifier |
segment number
}"]
[INSERT="{ALL | flexfield qualifier |
segment number
}"]
[DATA_FIELD="concatenated hidden IDs field"]
[DESC="block.concatenated description field name"]
[TITLE="window title"]
[VDATE="date"]
[NAVIGATE="{Y|N}"]
[AUTOPICK="{Y|N}"]
[NUM=":structure defining field"]
[COPY=":block.field\n{ALL | flexfield qualifier}"]
[VRULE="flexfield qualifier\n
segment qualifier\n
{I[nclude]|E[xclude]}\n APPL=shortname;
NAME=Message Dictionary message name\n
validation value1\n
validation value2..."]
[VALATT=":block.field\n
flexfield qualifier\n
segment qualifier"]
[USEDBFLDS="{Y|N}"]
[COLUMN="{column1(n) | column1 alias(n)
[, column2(n), ...]}]
[WHERE="where clause"]
[SET="set number"]
[ALLOWNULLS="{Y|N}"]
[QUERY_SECURITY="{Y|N}"]
[QBE_IN="{Y|N}"]
[LONGLIST="{Y|N}"]
[NO_COMBMSG="MESG_NAME"]

代码在您使用“注册键弹性域”表单设置此弹性域时指定的弹性域代码。此代码必须与您注册的代码相匹配。
APPL_SHORT_ NAME 用来注册您的弹性域的应用简称。
VALIDATE FULL(完全)验证类型用来验证所有段值,并生成新的代码组合,然后在必要时动态地将其插入组合表中。如果您指定了 FULL,Oracle 应用对象程序库将依据代码组合中的现有代码组合检查用户输入的值。如果此组合存在,则 Oracle 应用对象程序库将检索代码组合标识。如果代码组合不存在,则 Oracle 应用对象程序库将创建代码组合标识,并将此组合插入组合表中。如果您(或安装员)在定义弹性域结构时,将“允许动态插入”设置为“否”,则 Oracle 应用对象程序库会在用户输入已经不存在的组合时发出错误信息。在这种情况下,Oracle 应用对象程序库并不创建新的代码组合。FULL 是具有外部关键字参考表单的一个通用变元。
PARTIAL(部分)用来验证每个单独的段值,但并创建新的有效组合或检查组合表中的现有组合。在您希望具有的应用逻辑仅要求弹性域段值而不要求实际代码组合时,请使用 PARTIAL。例如,Oracle 应用对象程序库的“定义速记别名”表单要求用户为每个段输入有效的值,但不要求(或检查)实际代码组合已经存在于组合表中。“定义速记别名”表单也不会创建此组合。
如果不要求验证,请使用 NONE(无)。对于 FND_PRE_QUERY 触发器中的 POPID,请使用“查询”(而非 QUERY_BASE)。默认值为 FULL。
当用于 KEY_PREFIELD 触发器中的 POPID 时,请在 LOADID 和 VALID 中使用同一值。切勿对含外部关键字参考的表单使用 FOR_INSERT。
如果您要对含外部关键字参考的表单执行速记弹性域录入,则必须对 KEY_PREFIELD 触发器中的 POPID 使用 FULL(以及 LOADID 和 VALID)。
SEG block.concatenated values field name 就是会显示的包含级联段值加分隔符的非数据库表单字段。
DERIVED DERIVED 用来获取某人键入的组合段限定词的导出值。使用 block.field 可指定您要 Oracle 应用对象程序库将导出值装入的块和字段。使用段限定词以指定您需要的段限定词。注:切勿将空格加在 \n 周围,并且 \n 必须为小写。
Oracle 应用对象程序库使用以下规则从单个段限定词值获取导出的限定词值:如果段限定词是唯一的,则导出的值就是段限定词值;对于非唯一的段限定词,如果任何段限定词值 = N,则导出的值就是 N,否则导出的值为 Y。此规则的唯一例外就是内部 SUMMARY_FLAG 段限定词;此规则为:如果任何段值为父段值,则 SUMMARY_FLAG 导出的值就是 Y。Oracle 应用对象程序库将导出的值装入到您在定义限定词时指定的组合表限定词列。
对于含外部关键字参考的表单,您不需要三个参数:DERIVED=":block. SUMMARY_FLAG\n SUMMARY_FLAG"、DERIVED=":block.START_DATE_ACTIVE\n START_DATE_ACTIVE" 和 DERIVED=":block.END_DATE_ACTIVE\nEND_DATE_ACTIVE" 参数。
READ_ONLY 此参数可以防止对您的弹性域进行更新,无论是采用速记别名、复制还是任何其它方法。
DINSERT DINSERT 参数会为此表单关闭或打开动态插入。您必须为弹性域中的弹性域将此参数设置为“N”,如“特殊”验证值集中的弹性域。
WINDOW 如果弹性域只包含单个显示的段,并且需要用户直接将值输入此字段而不是输入一个不可见的弹出式窗口中,请指定“N”。
ID 为此弹性域指定包含唯一标识的 block.field。默认值为“block.ID column name”,此处的是当前的块,并且 ID column name 是使用“注册键弹性域”表单为此弹性域指定的“唯一标识列名”。
REQUIRED 指定用户是否可以不用输入段值即可退出弹性域窗口。
您应该在 POPID、LOADID 和 VALID 触发器中为 REQUIRED 指定同一个值。在 FND_PRE_QUERY 触发器中的 POPID 不需要 REQUIRED 参数。默认值为 Y。
如果您指定 Y,则 Oracle 应用对象程序库可以防止用户离开任何要求的段(值集中将“要求值”设置为“是”的段),除非输入有效的值。而且,如果用户尝试在弹性域弹出式窗口中未输入值的情况下保存行,则 VALID 将尝试使用默认值来填入任何要求的段,并且,如果并非所有的段均可以填入值,将出现错误信息。
如果指定了 Y 和 VALIDATE =“FULL”,然后在用户查询与弹性域(包含 NULL 的外部键弹性域标识)不关联的行时,Oracle 应用对象程序库会发出一条错误信息以警告用户要求的弹性域已经返回一个 NULL ID。LOADID 例行程序返回也将失败。
如果您指定 N,Oracle 应用对象程序库会允许用户在弹性域弹出式窗口中未输入值的情况下保存行。如果您指定了 N,Oracle 应用对象程序库也会允许用户在不输入或更改任何值的情况下,在弹性域窗口定位(不中断)。但是,如果用户在弹性域中输入或更改了任何段值,则 Oracle 应用对象程序库会阻止用户离开弹性域窗口,直至所有要求的段中均输入了值。如果您指定了 N 并且用户未打开窗口或未在窗口中输入值,VALID 将允许用户保存行,而不管此弹性域是否要求段。在这种情况下,VALID 不会将默认值另存为要求段的段值,并且不会发出一条错误信息。
如果您指定了 N 和 VALIDATE =“FULL”,然后在用户查询与弹性域(包含 NULL 的外部键弹性域标识)不关联的行时,Oracle 应用对象程序库会验证查询所返回的单个段值。如果您希望在查询非要求的弹性域时不出现错误信息,请指定 N。
请注意即使 REQUIRED =“N”,开始为此弹性域输入段值的用户也必须完全输入此弹性域,或者放弃此弹性域。
DISPLAY DISPLAY 参数允许您显示代表指定的 flexfield qualifiers segment number 的段,此处的 segment number 是在弹性域窗口中段显示的顺序,而不是在“定义关键字段”表单中指定的段号。例如,如果您指定只显示段号 1,则弹性域会只显示第一个段,它通常出现在弹出式窗口中(采用您在 NUM 中指定的结构)。
如果您在 POPID 中包括 DISPLAY 的参数,则在调用 LOADID 和 VALID 时必须包括变元完全相同的 DISPLAY 参数。
DISPLAY 默认值为 ALL,可使弹性域显示所有的段。或者,您可以指定 flexfield qualifier name segment number
您可以为 DISPLAY 指定一次以上的值,将其用作切换开关。例如,如果您需要弹性域显示所有值(第一个段除外)则应该指定:

				DISPLAY="ALL"
				DISPLAY="1" 

如果您未显示所有段,但使用了默认值来填入非显示的段,则也必须隐藏表单中的 SEGMENT1 到 SEGMENTn 字段。您需要这些隐藏字段,因为 Oracle 应用对象程序库将所有显示字段的值写入到级联值字段中,但不会写入非显示默认字段的值。由于 Oracle 应用对象程序库一般使用级联值字段中要更新的值,并插入到数据库,因此非显示字段的默认值将不会被提交。但是,如果您具有额外的隐藏字段(类似于组合表单),Oracle 应用对象程序库会将弹性域值写入那些字段以及级联段值字段。对于非显示值,它只会写入到隐藏字段,而不会用来更新和插入到数据库。
UPDATE INSERT UPDATE/INSERT 参数可确定用户是否可以更新或插入表示指定唯一 flexfield qualifiers segment numbers 的段,此处 segment numbers 就是弹性域窗口中段显示的顺序,而不是“定义关键字段”表单中指定的段号。
对于 LOADID 或 VALID,则不需要 UPDATE 和 INSERT 参数。
每个参数的默认值为 ALL,允许用户更新/插入所有的段。或者,您可以指定 flexfield qualifier name segment number。您可以输入 UPDATE="" 或 INSERT="" 以防止用户更新或插入任何段值。
通过为这些参数指定一次以上的值,您可以将它们作为切换开关来使用。例如,如果您需要用户能够更新所有段(第一个段除外),应该指定:

				UPDATE="ALL"
				UPDATE="1" 

如果您使用 INSERT="" 以防止用户插入任何段值,请禁用该表单的“速记弹性域录入”。
DATA_FIELD concatenated hidden IDs field 就是包含级联段隐藏标识的非显示表单字段。
DESC block.concatenated description field name 就是显示的包含段值级联说明的非数据库和不可输入的字段。如果您未指定 DESC 参数,则 Oracle 应用对象程序库不会显示级联段的说明。
TITLE window title 在弹出式窗口的顶部显示。默认值就是您在使用“定义关键字段”表单设置此弹性域时指定的“弹性域名”。
VDATE date 就是选定单个段值的“起始日期”和“终止日期”时所依据的验证日期。您可以使用“定义关键字段值”表单为每个定义的段值输入“起始日期”和“终止日期”。请参阅:定义段值
例如,如果您要依据已经过去的日期(也就是说,会计期关闭时的日期)对值进行检查,则可以使用字段参考 (VDATE=:block.field) 将该日期指定为 VDATE,并将该日期与您的段值比较。
默认值为当前日期。
NAVIGATE 如果要求弹性域自动确定退出弹性域弹出式窗口时的定位情况,请指定 Y(也就是说,如果用户按 [下一个字段] 来退出此窗口,然后光标会显示在弹性域后面的字段中。或者,如果用户通过按 [上一个字段] 来退出此弹性域,则光标会显示在弹性域前面的字段中)。
对于 KEY_PREFIELD 触发器中的 POPID,此值必须为 Y,但对 LOADID 或 VALID,此值却是不必要的。对于 FND_PRE_QUERY 触发器中的 POPID,此变元可以省略。此默认值为 N 以提供向后兼容性。
AUTOPICK 如果在用户输入无效值时弹性域不会弹出值列表窗口,请指定 N。
对于 LOADID 或 VALID,则不需要 AUTOPICK 参数。默认值为 Y。
NUM 非显示数据库 :block.field 包含您的弹性域结构标号。您也可以指定 :$PROFILES$.your_profile_option_name 来检索在用户预置文件选项中设置的值。您可以将结构编号(如,101)“硬编码”到此参数中,来取代提供字段参考,但是,这样一个编号有碍您为弹性域使用多重结构。如果您要使用多重结构,则必须使用此选项。
您可以使用以下 SQL 语句来检索弹性域的结构标识号:

			SELECT ID_FLEX_NUM, ID_FLEX_STRUCTURE_NAME
			FROM FND_ID_FLEX_STRUCTURES
			WHERE ID_FLEX_CODE = 'flexfield code'; 

此处的 flexfield code 是您在注册弹性域时指定的代码。
NUM 的默认值为 101。
COPY 在弹性域窗口弹出之前,将非空值从 :block.field 复制到表示指定 qualifier segment number 的段中。或者,如果您指定 ALL,则 COPY 会将:block.field 中所具有的一组非空的级联段值集(及其段分隔符)复制到所有的段中。例如,如果您有一个三段结构的弹性域,并且 :block.field 包含 001.ABC.05,则 COPY 会将 001 放入第一个段中,将 ABC 放入第二个段中,并将 05 放入第三个段中。
您 COPY 到段中的值必须是该段的有效值。您 COPY 的值会改写使用“定义关键字段”表单为段设置的默认值。但是,速记弹性域录入值会改写 COPY 值。COPY 不会复制 NULL 值来覆盖现有(默认)值。但是,如果您为该段复制了无效的值,则表现为以 NULL 值改写默认值:无效值改写默认值,但 Oracle 应用对象程序库会清除复制的值,因为它无效。您应该确保从中复制值的字段包含有效的值。
在弹性域窗口关闭时,Oracle 应用对象程序库自动将段中表示 flexfield qualifier segment number 的值复制到 :block.field 中。或者,如果您指定 ALL,则 Oracle 应用对象程序库会自动将所有段的级联值复制到 :block.field 中。
您可以指定一个或多个 COPY 参数。后面的 COPY 参数将改写前面的 COPY 参数。例如,假定您有包含级联弹性域值的字段,称为 Concatenated_field,并包含字符串 01-ABC-680。您也有包含要复制到第二段中单个值的字段,Value_field,并且含有值 XYZ,则您可以指定:

				COPY="block.Concatenated_field\nALL"
				COPY="block.Value_field\n2" 

在用户打开弹性域窗口时,Oracle 应用对象程序库会按顺序执行这两个 COPY 参数,并且用户会在窗口中看到以下的值:

				01
				XYZ
				680 

关闭了弹性域窗口后,Oracle 应用对象程序库会将值分别复制回这两个字段,01-XYZ-680 和 XYZ。请注意此时 XYZ 改写了 ABC。
对于 FND_PRE_QUERY 中的 LOADID、VALID 或 POPID,则不需要 COPY 参数。分隔符 \n 必须为小写。
VRULE VRULE 可用来额外限制用户基于段限定词值(附加至单个段值上)可以在弹性域段中输入的值。您可以指定 flexfield qualifier segment qualifier 的名称,并指定是否“包括”或“排除”validation values ,如果用户输入了不正确的值,则也可以指定 Oracle 应用对象程序库显示信息的 Message Dictionary message name。分隔符 \n 必须为小写。
例如,假定您建立了一个表单,在此表单您要防止用户输入不允许明细过帐到所有 Oracle 总帐管理系统会计弹性域段的段值。DETAIL_POSTING_ALLOWED 就是一个段限定词,它基于要在规则中使用的全局弹性域限定词 GL_GLOBAL。您要排除所有值,其中 DETAIL_POSTING_ALLOWED 的值为 N(否)。您的信息名为“不允许 GL 明细过帐”,并且它对应于“您不能使用不允许明细过帐的值”的信息。请将您的规则指定为:

			VRULE="GL_GLOBAL\nDETAIL_POSTING_ALLOWED\nE
			\nNAME=GL Detail Posting Not Allowed\nN" 

如果用户在受此限定词影响的一个段中输入排除的值,则该用户可以获得您指定的信息。此外,排除的值不会在段的“值列表”中显示。但所有其它值(未特别排除的值)均会包括在其中。
您可以指定一个或多个 VRULE 参数。Oracle 应用对象程序库会以您所列的顺序自下向上对多个 VRULE 参数进行检查。您应该仔细对规则进行排序以便用户首先看到最有帮助的错误信息。
VALATT 在弹性域窗口关闭时,VALATT 将表示唯一的 flexfield qualifier 段的 segment qualifier 值复制到 :block.field 中。分隔符 \n 必须为小写。
POPID (KEY_PREFIELD)、LOADID 和 VALID 中包括同一 VALATT 参数值。在 FND_PRE_QUERY 的 POPID 中则不需要此参数。
USEDBFLDS 如果您的表单是基于具有参考两个或多个弹性域外部关键字的表,并且表单上的 N 个字段中具有非数据库 SEGMENT1(其中 N 是组合表中的段数),请指定此参数。如果这样的字段存在,则按默认值,Oracle 应用对象程序库会将值装入对应于当前弹性域中段值组合的字段。如果将此参数设置为 N,则 Oracle 应用对象程序库不会为当前弹性域装入段字段。如果在您的表单中具有多个弹性域,请使用此参数来指定哪一个弹性域应该使用段字段(为一个弹性域例行程序调用指定 Y,而为其它弹性域例行程序调用指定 N)。默认值为 Y。
COLUMN COLUMN 除了用来显示当前段列还显示自组合表的其它列,其中 n 是列的显示宽度。您可以将其它列的值安排到当前表单的字段中。在用户选择现有弹性域时,此值会自动复制到字段中。
例如,要显示称为 SEG_DESC 说明列和来自含列标题 DESCRIPTION 和 ERROR FLAG 的 E_FLAG 的错误信息,您应该设置 COLUMN="SEG_DESC DESCRIPTION(15), E_FLAG\"ERROR FLAG\"(*)"。(*) 用来设置动态列宽度,其大小由选定的值来确定。如果您要将说明包括到字段 block_1.field_1 中,将错误信息包括到 block_1.field_2 中,您应该将
COLUMN="SEG_DESC DESCRIPTION(15) INTO BLOCK_1.FIELD_1, E_FLAG\" ERROR FLAG\"(*) 设置到 BLOCK1_FIELD_2" 中。
在 COLUMN= 子句中,您只可以使用 32 个不同 INTO 列。附加列的最大宽度为 240 个字符。
WHERE 指定 WHERE 子句可以指定在组合层的“值列表”弹出式窗口中显示哪些代码组合。一般来说,在段值集的验证类型为 NONE 时,“值列表”显示的是所有当前有效组合的“值列表”,而不是单个段的“值列表”。
此变元也可以防止用户选择不适合 WHERE 子句的组合。如果单个段弹性域中的段使用已验证的值集,则可能影响用户一开始在“值列表”(段层值列表)中将看到的所有值,但在动态插入被不允许时,如果选定的值不存在现有组合(以及有效的单个段值),则会显示错误信息。
您应该将此标记与不允许动态插入的弹性域一起使用,您也可以使用 DINSERTS="N" 或防止在结构层动态插入。切勿在此条件子句变元中指定字“WHERE”。
SET 指定含有弹性域集标识符的 :block.field。SET 用来指定此弹性域要使用哪些代码组合集。对于每个弹性域结构,您可以将组合表中的代码组合划分为集(例如,将零件划分为高价,中等价格和低价格的零件)。如果您执行定义列的结构,则只能使用 SET(也就是说,您必须指定 NUM)。SET 的默认值为结构编号(按 NUM 中所指定)。如果您使用 SET,则应用产品必须维护包含集和键弹性域结构之间对应的独立表。例如,您的对应表可以包含这样的值:
如果您使用 SET,则 Oracle 应用对象程序库会以定义列的结构存储集编号,而不是结构编号。请注意,您不能在对应表中具有重复的集编号,尽管给定的结构编号可以具有多个集编号。您必须从不同的 :block.fields(或预置文件选项,或“硬编码”编号)中导出 SET 和 NUM,因为它们是不同的编号。
如果在 FND_PRE_QUERY 触发器中具有按实例查询的弹性域 POPID,则除了复制结构编号 (NUM) 的步骤,您还应该添加复制集编号 (SET) 的附加步骤。
为 POPID、LOADID 和 VALID 中的 SET 指定相同的值。
ALLOWNULLS 确定是否所有段均允许为 NULL。只有在您为 VALIDATE 参数指定了 PARTIAL 或 NONE 时,ALLOWNULLS 才会改写每个段的值集定义(要求值为“是”)。
QUERY_ SECURITY 确定弹性域值安全性是否用于查询以及插入和更新。如果您指定 Y,则用户无法查询包含受限制值的现有代码组合。如果您指定 N,用户可以查询和查看包含受限制值的代码组合。用户可以将受限制的值更新为不受限制的值,但他们无法输入受限制的值或将值更新为受限制的值。默认值为 N。此选项没有任何作用,除非您的用户已经启用并定义了弹性域值集的弹性域值安全性(使用“定义值集”表单、“弹性域安全性规则”表单以及“指定弹性域安全性规则”表单)。
仅将此选项加入您的 LOADID 调用中。在 POPID 或 VALID 中不需要 QUERY_SECURITY。
QBE_IN 控制 Oracle 应用对象程序库用来选择弹性域按实例查询中要求行的子查询类型。
请只在 FND_PRE_QUERY 触发器的 POPID 中使用此选项。切勿在 KEY_PREFIELD 触发器 POPID 中或者在 LOADID 或 VALID 中使用。默认值为 N。
如果您指定 N,Oracle 应用对象程序库会生成有相互关联的子查询。每个由主查询(由表单的其它地方产生)返回的行均会进行一次有效地查询,并将代码组合标识用作唯一的索引。如果您期望主查询返回较少的行数,并期望弹性域按实例查询返回许多行,请选择 N。
如果您指定 Y,Oracle 应用对象程序库会使用“IN”SQL 子句生成一个无相互关联的子查询。Oracle 应用对象程序库只进行一次查询,但会返回组合表中所有与您的弹性域按实例查询标准相符合的行。在您期望主查询返回许多行而弹性域按实例查询返回较少的行数(少于 100)时,请选择 Y。这种情况通常对应于组合表中较少的行数和应用表中的许多行。例如,假定您具有一个“零件弹性域”,在其中公司只处理有限的零件数(如 75),但具有数千个零件顺序(并对应一个大的顺序表)。对于这种情况,选择 Y 会大大提高弹性域按实例查询的应用性能。
LONGLIST 指定 Y 或 N 确定是否允许对此弹性域使用 LongList。在查询弹性域组合时,LongList 允许用户以指定部分值。
NO_COMBMSG 如果您要在用户输入无效组合时显示您自己的信息,请在此处指定此信息名称。否则,弹性域会使用标准“应用对象程序库信息”。


         上一页  下一页          目录  索引  定位  词汇表  程序库