本例是基于上一章节进行的,主要是实现Excel中LOV的功能。
1. 定义字段与LOV组件的关系
在PL\SQL select … for update 直接修改基表
SELECT bic.interface_col_name --字段名
,bic.val_type --填 TABLE
,bic.val_id_col --传递给程序参数的字段,填 ORGANIZATION_ID
,bic.val_mean_col --在Ecxel中显示的字段, 填ORANIZATION_ID
,bic.val_desc_col --LOV中说明字段,填ORGANIZATION_CODE,ORGANIZATION_NAME
,bic.val_obj_name --列表所在的表明,填ORG_ORGANIZATION_DEFINITIONS
,bic.val_addl_w_c --where语句,可不填
,bic.val_component_app_id --application id,SELECT bni.application_id FROM bne_integrators_vl bni WHERE bni.user_name = 'CUX_WEBADI_DEMO';
,bic.val_component_code --组件代码,填 CUX_ORGANIZATION
,bic.lov_type --填POPLIST或STANDARD,也可以填NONE
,bic.offline_lov_enabled_flag --离线编辑EXCEL表格时是否可用,填Y
FROM bne_interface_cols_b bic
WHERE EXISTS (
SELECT NULL
FROM bne_interfaces_vl intf ,bne_integrators_vl intg --集成器
WHERE bic.interface_code = intf.interface_code
AND intf.integrator_code = intg.integrator_code
AND intg.user_name = 'CUX_WEBADI_DEMO')
AND bic.interface_col_name = 'P_ORGANIZATION_ID'
FOR UPDATE;
val_id_col:传递给程序参数字段。本列中只需要传值给P_ORGANIZATION_ID,故 只需要填 ORGANIZATION_ID
如果还定义了参数P_ORGANIZATION_CODE,则需要填写ORGANIZATION_ID, ORGANIZATION_CODE。
val_mean_col:在Excel中显示的字段。本列中需要显示的是库存组织ID,故只需要填写一个ORGANIZATION_ID。
如果需要显示的是库存组织代码,则填写 ORGNIZATION_CODE(传值还是可以传给ORGANIZATION_ID的,只是在界面上显示的 是库存组织代码)。如果同时在excle界面上显示库存组织ID,库存组织代码,则
ORANIZATION_ID,ORGANIZATION_CODE两个都需要输入。
val_desc_col:LOV中的说明字段,可以是一个字段,也可以是多个字段。
2. 创建LOV组件
--通过前面定义的val_component_code来获取application_id, val_component_app_id, val_component_code
SELECT b.application_id,
b.val_component_app_id,
b.val_component_code
FROM bne_interface_cols_b b
WHERE b.val_component_code = 'CUX_ORGANIZATION';
--LOV组件基表中插入数据
--select * from bne_components_b where component_code = 'CUX_ORGANIZATION';
INSERT INTO bne_components_b (application_id, component_code, object_version_number
,component_java_class, param_list_app_id, param_list_code
,created_by,creation_date,last_updated_by,last_update_login,last_update_date)
VALUES (20003 --对应BNE_INTERFACE_COLS_B.VAL_COMPONENT_APP_ID
,'CUX_ORGANIZATION' --对应BNE_INTERFACE_COLS_B.VAL_COMPONENT_CODE
,1
,'oracle.apps.bne.integrator.component.BneOAValueSetComponent' --Oracle标准的代码
,20003 --参数应用ID
,'CUX_ORGANIZATION' --参数的代码名称,这个参数很重要
,-1,SYSDATE,-1,-1,SYSDATE);
--LOV组件语言表中插入记录
--select * from bne_components_tl where component_code = 'CUX_ORGANIZATION';
INSERT INTO bne_components_tl(application_id,component_code,LANGUAGE
,source_lang,user_name,created_by,creation_date,last_updated_by
,last_update_login,last_update_date)
VALUES (20003 --对应bne_components_b.application_id
,'CUX_ORGANIZATION' --对应bne_components_b.component_code
,'ZHT' --ZHS:简体 ZHT:繁体 US:英文
,'ZHT' --ZHS:简体 ZHT:繁体 US:英文
,'库存组织' --参数说明
,-1,SYSDATE,-1,-1,SYSDATE);
3. 定义参数
基于现有参数复制参数 (Desktop Integration Manager -> Define Parameter)
把Restrict to this application前面的勾去掉
可以使用Oracle系统原有的一个参数(如:COMP_AVG_JNL_FLAG)来创建客户化应用的参数及属性。
CUX_ORGANIZATION 库存组织
CUX Customized Application
CUX_ORGANIZATION
更改参数属性
同上,%CUX_ORGANIZATION 查找
修改table-columns属性
修改table-column-alias属性
修改table-select-column属性
修改table-headers属性
修改window-width属性
4. 使用LOV
重启Apache服务器
LOV调用的是Servlet类,必须重新加载方能够生效。 如果修改了属性值,是不需要重启应用的。
只有update基表 bne_interface_cols_b中的值的时候,才需要重启应用。
测试LOV
没有重启Apache服务器的权限,暂时没有测试
5. 补充. Excel中实现日期LOV功能
通过如下的标准API来创建:
BEGIN
bne_integrator_utils.create_calendar_lov
(p_application_id => 20003, --Your custom application
p_interface_code => 'GENERAL_1_INTF',--Your custom interface code
p_interface_col_name=> 'P_DATE', --Your date_item ininterface
p_window_caption => '选择日期', --Window Prompt
p_window_width => NULL, --Use default
p_window_height => NULL, --Use default
p_table_columns => 'ADI_DATE', --Your table date_fields
p_user_id => 0);
END;
--参数可通过如下SQL查询
select *
from bne_interface_cols_b bic
where application_id = (SELECT bni.application_id
FROM bne_integrators_vl bni
WHERE bni.user_name = 'CUX_WEBADI_DEMO')
and bic.interface_code =
(SELECT distinct intf.interface_code
FROM bne_interfaces_vl intf ,bne_integrators_vl intg
WHERE intf.integrator_code = intg.integrator_code
AND intg.user_name = 'CUX_WEBADI_DEMO')