1.从属值集 在EBS系统中建立
独立值集,从属值集,当父集被更选择填入之后,子集才能根据父集的选项填写内容,以下是链接,,我认为这个是讲的很清楚的,推荐一下
https://wenku.baidu.com/view/67d5d492dd88d0d233d46a40.html
2.从属值集 在form表单程序单元中写入
建块名为包名的包
在包头中写入
PACKAGE CMS_CMP_ACC IS
PROCEDURE ERP_ACCOUNT_CODE(EVENT VARCHAR2);
PROCEDURE ERP_SUBACCOUNT_CODE(EVENT VARCHAR2);
END CMS_CMP_ACC;
在包体中写入
PACKAGE BODY CMS_CMP_ACC IS
PROCEDURE ERP_ACCOUNT_CODE(EVENT VARCHAR2) IS
BEGIN
IF (EVENT = ‘WHEN-VALIDATE-ITEM’) THEN
– Any validation logic goes here.
ERP_SUBACCOUNT_CODE(‘INIT’);
:CMS_CMP_ACC.ERP_SUBACCOUNT_CODE_DESC:=null;–注意注意
–此处,有一个LOV带出的字段,当父集被改变时,子集自动清空,子集带出的字段也要被清空,这种方法不是正常的方法,但是可以实现清除功能。
ELSE
fnd_message.debug('Invalid event passed to
CMS_CMP_ACC.ERP_ACCOUNT_CODE: ’ || EVENT);
END IF;
END ERP_ACCOUNT_CODE;
PROCEDURE ERP_SUBACCOUNT_CODE(EVENT VARCHAR2) IS
BEGIN
IF ((EVENT = 'PRE-RECORD') OR
(EVENT = 'INIT')) THEN
APP_FIELD.SET_DEPENDENT_FIELD(EVENT,
'CMS_CMP_ACC.ERP_ACCOUNT_CODE',
'CMS_CMP_ACC.ERP_SUBACCOUNT_CODE');
ELSE
fnd_message.debug('Invalid event passed to
CMS_CMP_ACC.ERP_SUBACCOUNT_CODE: '|| EVENT);
END IF;
END ERP_SUBACCOUNT_CODE;
END CMS_CMP_ACC;
–Trigger: WHEN–VALIDATE–ITEM on ERP_ACCOUNT_CODE: 这个触发器写在父集ERP_ACCOUNT_CODE这个item的触发器中,代码如下
CMS_CMP_ACC.ERP_ACCOUNT_CODE(’WHEN–VALIDATE–ITEM’);
–Trigger: PRE–RECORD on CMS_CMP_ACC (Fire in Enter–Query Mode: No): 这个触发器写在块级触发器下
CMS_CMP_ACC.ERP_SUBACCOUNT_CODE(’PRE–RECORD’);
此段代码中,CMS_CMP_ACC为块名,也是包名,ERP_ACCOUNT_CODE为父集,ERP_SUBACCOUNT_CODE为子集
3.从属值集 LOV查询
当使用了父集子集之后,当父集填入之后,子集才可以填写,子集带出的LOV字段需要在进行LOV查询或者块查询时自动带出,以下是代码实例
BEGIN
SELECT FVL.DESCRIPTION
INTO :CMS_CMP_ACC.ERP_SUBACCOUNT_CODE_DESC
FROM FND_FLEX_VALUES_VL FVL, FND_FLEX_VALUE_SETS FVS
WHERE FVL.FLEX_VALUE_SET_ID = FVS.FLEX_VALUE_SET_ID
AND FVL.PARENT_FLEX_VALUE_LOW = :CMS_CMP_ACC.ERP_ACCOUNT_CODE–父集
AND FVS.FLEX_VALUE_SET_NAME = ‘GFS_B00_COA_SUBACCOUNT’;–子集字段
AND FVL.FLEX_VALUE = :CMS_CMP_ACC.ERP_SUBACCOUNT_CODE;–子集LOV带出字段
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;