在Oracle EBS二次开发中经常会使用下拉列表,下拉列表一般是写死的,实际上也是可以使用Record Group进行动态设置,实现的步骤如下:
1,首先定义一个Record Group
假设为TEST_REC_GP,SQL如下:
- SELECT cr.general_name lookup_code,
- cr.medicament_category value
- FROM cux_catalog_53_rules cr
必须注意一点,SQL必须是两列,并且类型都是VARCHAR2,第一列作为显示的列,第二列作为后台的值。如果列和值都一样,那么就用别名查询两次就好了,类似
2,LIST的设置
然后需要注意一点,需要关联Record Group的下拉列表中,其中至少一个值必须是和检索出来的值是一样的,上例的SQL查询结果如下
那么下拉列表中至少有一条和查询结果一样
3,触发器代码
在List所在的块的WHEN-NEW-BLOCK-INSTANCE触发器中,写如下代码
- Declare
- i number;
- begin
- i := populate_group('TEST_REC_GP');
- if i = 0 then
- clear_list('CATALOG_RULES.RULE_TYPES');
- populate_list('CATALOG_RULES.RULE_TYPES','TEST_REC_GP');
- end if;
- end;