1)研究Oracle原有的设置
执行:select *
from BNE_INTERFACE_COLS_B b
where b.LOV_TYPE = 'STANDARD' and b.interface_col_type = 1
and b.interface_col_name = 'ENCUMBRANCE_TYPE_ID'
后找到:INTERFACE_COL_TYPE=1;INTERFACE_COL_NAME=ENCUMBRANCE_TYPE_ID;VAL_TYPE=TABLE;VAL_ID_COL=ENCUMBRANCE_TYPE_ID;VAL_MEAN_COL=ENCUMBRANCE_TYPE;VAL_DESC_COL=;VAL_OBJ_NAME=GL_ENCUMBRANCE_TYPES;VAL_ADDL_W_C=ENABLED_FLAG = 'Y';VAL_COMPONENT_APP_ID=231;VAL_COMPONENT_CODE=OA_ENCUMBRANCES;LOV_TYPE=STANDARD;OFFLINE_LOV_ENABLED_FLAG=Y;MAPPING_ENABLED_FLAG=Y
执行:select *
from BNE_COMPONENTS_B a
where a.component_code in ('OA_ENCUMBRANCES')
后找到PARAM_LIST_CODE=COMP_ENCUMB;param_list_app_id=231
执行:select *
from BNE_PARAM_LIST_ITEMS p
where p.param_list_code = 'COMP_ENCUMB'
后找到以下设置:
APPLICATION_ID |
PARAM_LIST_CODE |
PARAM_DEFN_APP_ID |
PARAM_DEFN_CODE |
STRING_VALUE |
231 |
COMP_ENCUMB |
231 |
OA_ENCUMB_TAB_HDR |
|
231 |
COMP_ENCUMB |
231 |
TABLE_COLUMNS |
ENCUMBRANCE_TYPE |
231 |
COMP_ENCUMB |
231 |
TABLE_SELECT_COLUMN |
ENCUMBRANCE_TYPE_ID |
231 |
COMP_ENCUMB |
231 |
TABLE_COLUMN_ALIAS |
ENCUMBRANCE_TYPE_ID |
231 |
COMP_ENCUMB |
231 |
OA_ENCUMB_WIN_CAP |
|
231 |
COMP_ENCUMB |
231 |
WINDOW_WIDTH |
300 |
231 |
COMP_ENCUMB |
231 |
WINDOW_HEIGHT |
400 |
231 |
COMP_ENCUMB |
231 |
TABLE_BLOCK_SIZE |
25 |
通过以上的设置我们得知:
a.要将参数传入ENCUMBRANCE_TYPE_ID,则使用了GL_ENCUMBRANCE_TYPES的值列表。
b.使用了一个名为'OA_ENCUMBRANCES'的组件,而这个组件使用了名为'COMP_ENCUMB'的参数。
c.参数TABLE_COLUMNS决定在值列表中显示哪些列,如果显示多个列,用,分隔。
d.参数TABLE_SELECT_COLUMN代表返回的字段名,必须与BNE_INTERFACE_COLS_B.INTERFACE_COL_NAME一摸一样的字段。
根据在上一篇中的研究所得,进行测试。由于Oracle不支持客户化定制值列表,因此没有任何的技术资料供参考。以下的内容是本人经过上百次测试摸索的实验结果,难免与Oracle标准的设置步骤存在差异。如有差错遗漏,请见谅。
测试资料如下:
应用名:Tsingtao Customization Applications(CUX,20003)
HR配置器:FSC.单据录入(GENERAL_22_INTG)
HR接口程序:GENERAL_22_INTF
测试字段:现金流项目(P_CASH_FLOW_ITEM)
取值来源:select lookup_code,meaning,description from fsc_lookup_codes_v where lookup_type='FSC_CASH_FLOW_ITEM' and end_date is null
测试步骤如下:
1)修改参数行属性。在此例子中,新建了一个“应用ID”是20003,“名称”为“OA_FSC_CFS_ITEM”的组件。 必须要为每个需要使用值列表的字段设置一个组件。(Oracle对组件的命名规则一般以OA作为前缀,因为是客户化值列表,为避免与将来新的标准功能冲突,建议在组件名中在加入客户化应用名。例如,在本例中,FSC代表“结算中心”。)
update BNE_INTERFACE_COLS_B b
set b.interface_col_type = 1 --代表可传送
,b.val_type = 'TABLE' --代表通过数据库的表或者视图获取值列表
,B.VAL_ID_COL = 'LOOKUP_CODE' --传送到程序的参数的字段
,B.VAL_MEAN_COL = 'MEANING' --在EXCEL中显示的字段
,B.VAL_DESC_COL = 'DESCRIPTION' --描述,可以输入多个字段,用“,”分隔。
,B.VAL_OBJ_NAME = 'fsc_lookup_codes_v' --表或者视图
,B.VAL_ADDL_W_C = 'lookup_type='|| chr(39) || 'FSC_CASH_FLOW_ITEM' || chr(39) || 'AND end_date is null' --查询条件
,B.VAL_COMPONENT_APP_ID = 20003 --新增的组件的应用ID
,B.VAL_COMPONENT_CODE = 'OA_FSC_CFS_ITEM' --新增的组件的应用ID
,B.LOV_TYPE = 'STANDARD' --代表弹出式菜单
,B.OFFLINE_LOV_ENABLED_FLAG ='Y'
,B.MAPPING_ENABLED_FLAG = 'Y'
WHERE b.INTERFACE_CODE = 'GENERAL_22_INTF' and b.interface_col_name LIKE ('P_CASH_FLOW_ITEM')
2)插入组件。Oracle并不没有提供标准的创建方法,只能通过SQL代码了,呵呵。必须要为每个组件设置一个参数。在此例子中,新增了一个“应用ID”是20003,“名称”为“COMP_FSC_CFS_ITEM”的组件。(Oracle对参数的命名规则一般以COMP作为前缀,因为是客户化值列表,为避免与将来新的标准功能冲突,建议在参数名中在加入客户化应用名。例如,在本例中,FSC代表“结算中心”。)
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
,'OA_FSC_CFS_ITEM' --对应BNE_INTERFACE_COLS_B.VAL_COMPONENT_CODE
,1
,'oracle.apps.bne.integrator.component.BneOAValueSetComponent' --Oracle标准的代码
,20003 --参数应用ID
,'COMP_FSC_CFS_ITEM' --参数的代码名称
,-1
,sysdate
,-1
,-1
,sysdate);
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
,'OA_FSC_CFS_ITEM' -- 对应bne_components_b.component_code
,'ZHS'
,'ZHS'
,'FSC现金流量表项目' --说明
,-1
,sysdate
,-1
,-1
,sysdate);
3)设置参数设置表单。查到Oracle在操作这个步骤的标准功能,但隐藏起来了。
新增一个功能,设置如下:
功能:FSC_PARAMETER
用户参数名:FSC:参数设置
类型:SSWA servlet 函数
表单:(空)
参数:bne:page=BneParameter
HTML调用:oracle.apps.bne.webui.BneApplicationService
把该功能加入到WEB ADI的主菜单中,例如“桌面集成菜单(DESKTOP INTEGRATION MENU)”。
4)使用步骤3)中的功能,调用BNE的参数设置界面。每个参数都必须设置属性,而且属性中的特殊字段必须与使用值列表的字段名保持完全一致。通常情况下,只要曾经设置了一个参数,以后都可以通过复制创建新的参数及属性。
在本例子中,介绍如何以Oralce系统原有的一个参数(COMP_AVG_JNL_FLAG)来创建客户化应用的参数及属性。
a.在打开的页面中,选择应用为“Web 应用产品桌面集成器”,并取消“Restrict to this application”的选择,点击“下一步”。
b.在打开的界面中,点击手电筒(Search for Parameter List)。
c.在搜索依据中,选择“appld:code”。并输入COMP_AVG_JNL_FLAG。
d.选择“231:COMP_AVG_JNL_FLAG”,点击“选择”按钮。
e.当看到COMP_AVG_JNL_FLAG组件后,选择“复制”按钮。
f.修改参数,点击保存按钮。此处要注意,APPLICATION必须选择在步骤3)中选择的值必须与bne_components_b.application_id保持一致,CODE中设置的值必须与bne_components_b.component_code保持一致。
g.复制完成后,转入对COMP_FSC_CFS_ITEM的编辑。点击手电筒,进行查找。
h.在搜索依据中,选择“appld:code”。并输入COMP_FSC_CFS_ITEM。点击“查找”按钮。
i.对COMP_FSC_CFS_ITEM的属性进行修改,并保存。
5)设置Windows Caption的属性。该属性控制值列表窗口弹出时标题文本。如果从一个客户化定义的参数复制而来,则可以跳过b到j的步骤。
a.选择“window-caption”的参数属性,点击“编辑(Update parameter)”。
b.点击Parameter Definition的编辑按钮,对Oracle原有的参数属性进行复制。
c.点击“复制”按钮。
d.输入参数。建议有一定的命名规则,例如CODE输入FSC_CFS_ITEM_WIN_CAP。“应用”选择客户化的应用。点击“保存”按钮。
e.此时当前的参数属性仍为“OA_AVG_JNL_F_WIN_CAP”,需要把刚才定义的参数属性查询出来编辑。点击“查询”(Search for Parameter Definition)。
f.在搜索依据中选择“appld:code”,输入FSC_CFS_ITEM_WIN_CAP。
g.从列表中选择“20003:FSC_CFS_ITEM_WIN_CAP”,点击“选择”按钮。
h.对FSC_CFS_ITEM_WIN_CAP的设置进行调整。其中VALUE是默认值,在本例中,输入“搜索并选择 - 代码”。点击“保存”按钮。
i.此时,该参数属性仍为“231:OA_AVG_JVL_F_WIN_CAP”,需要应用刚才上面设置的FSC_CFS_ITEM_TBL_HDR。点击Prameter Definition的查询图标。
j.在搜索依据中选择“appld:code”,输入FSC_CFS_ITEM_TBL_HDR。从列表中选择“20003:FSC_CFS_ITEM_TBL_HDR”,点击“选择”按钮。
k.对当前这个参数调用该参数属性时,如果要求使用的值不等于参数属性的默认值,则临时指定特殊值。在本例中,在value中输入“搜索并选择 - 现金流项目”。点击“保存”按钮。
l.对参数属性进行任何修改后,都需要在参数设置表单进行保存。
6)设置Table Headers的属性。该属性控制值列表窗口弹出时,值列表中显示的每一列的标题。该参数设置时,列的数量和顺序应该与Table Columns的属性保持一致。如果存在多个列,则用“,”分隔。如果从一个客户化定义的参数复制而来,则可以跳过b到j的步骤。
a.选择“table-headers”的参数属性,点击“编辑(Update parameter)”。
b.点击Parameter Definition的编辑按钮,对Oracle原有的参数属性进行复制。
c.点击“复制”按钮。
d.输入参数。建议有一定的命名规则,例如CODE输入FSC_CFS_ITEM_TBL_HDR。“应用”选择客户化的应用。点击“保存”按钮。
e.此时当前的参数属性仍为“OA_AVG_JNL_F_TBL_HDR”,需要把刚才定义的参数属性查询出来编辑。点击“查询”(Search for Parameter Definition)。
f.在搜索依据中选择“appld:code”,输入FSC_CFS_ITEM_TBL_HDR。
g.从列表中选择“20003:FSC_CFS_ITEM_TBL_HDR”,点击“选择”按钮。
h.对FSC_CFS_ITEM_TBL_HDR的设置进行调整。其中VALUE是默认值,在本例中,输入“值,代码”;代表值列表将会有两年,第一列是“值”,第二列是“代码”。点击“保存”按钮。
i.此时,该参数属性仍为“231:OA_AVG_JVL_F_TAB_HDR”,需要应用刚才上面设置的FSC_CFS_ITEM_TBL_HDR。点击Prameter Definition的查询图标。
j.在搜索依据中选择“appld:code”,输入FSC_CFS_ITEM_TBL_HDR。从列表中选择“20003:FSC_CFS_ITEM_TBL_HDR”,点击“选择”按钮。
k.对当前这个参数调用该参数属性时,如果要求使用的值不等于参数属性的默认值,则临时指定特殊值。在本例中,在value中输入“现金流项目,代码”;代表值列表将会有两年,第一列是“现金流项目”,第二列是“代码”。点击“保存”按钮。
l.对参数属性进行任何修改后,都需要在参数设置表单进行保存。
7)设置Tables Columns的参数属性。该属性控制在值列表中显示列,以及列的顺序。从设置规范的角度,Tables Columns参数属性中的列和顺序,应该与Table Column Alias和Table Headers这两个参数属性的列和顺序保持完全一致。
在VALUE中输入各个列名,用“,”分隔。注意这里的字段名必须是BNE_INTERFACE_COLS_B.VAL_OBJ_NAME的字段之一,并且出现在BNE_INTERFACE_COLS_B中的VAL_ID_COL、VAL_MEAN_COL或者Val_Desc_Col中,否则显示不出值。点击“保存”按钮。
对参数属性进行任何修改后,都需要在参数设置表单进行保存。
8)设置Table Column Alias的参数属性。针对Tables Columns参数属性中的列,指定假名。
在VALUE中输入各个列的假名(或者字段名),用“,”分隔。注意,该假名必须与BNE_INTERFACE_COLS_B.interface_col_name 保持完全一致,否则在值列表挑选后,不会自动更新EXCEL表格中对应的项目。可以同时写入EXCEL中的多个字段,用“,”分隔。
对参数属性进行任何修改后,都需要在参数设置表单进行保存。
9)设置TABLE SELECT COLUMN的参数属性。此参数决定通过值列表选择后,返还到EXCEL表格的哪个字段。
在VALUE中输入返还的字段。该字段的名字必须与BNE_INTERFACE_COLS_B.interface_col_name 保持完全一致并且,该字段必须存在于BNE_INTERFACE_COLS_B.VAL_OBJ_NAME的列中,或者在Table Column Alias的参数属性中被指定假名。否则在值列表挑选后,不会自动更新EXCEL表格中对应的项目。
对参数属性进行任何修改后,都需要在参数设置表单进行保存。
10)重启APACHE。
11)重新下载文档,即可看到值列表有效运作。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15725751/viewspace-615792/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15725751/viewspace-615792/