R12 WEBADI 提供了基于Table 的LOV的功能,很方便,但由于LOV的显示或值的提取与component的定义有很大关系,所以特做了几个例子验证一下。
LOV的定义可以在interface的定义界面上做(但component需另外定义),也可以使用API去做,相比较而言,我较倾向于用API. 另外,如用API定义时,不提供component的参数的话,WEBADI会依据LOV的相关信息为我们建立默认的component,但我发现,结果总是差强人意,因此建议,component还是显式定义为好,不要让WEBADI自动建.
有一点不好的是,用API 创建LOV时,依据参数建立的component的默认源是ORACLE,这样的话,我们无法在manager components 的WEB页面中修改这个component(除非你改component code, 好象在前面加_XX_,但这样还要修改bne_interface_cols_b中的component code,很麻烦,因此最好直接后台修改component的信息(在bne_param_list_items_b表中),不要动component code ).
假设
Template 上有三个字段,vendor_id, vendor_num, vendor_name, 要求LOV建在vendor_num上,选择后,提取id, num,name分别到三个字段中。
API 代码:
如果仅提取id, num, 不提取name, 则修改成:
P_TABLE_SELECT_COLUMNS => 'VENDOR_ID,VENDOR_NUM'
但如果你仅想提取Vendor NUM,如果你修改成这样的话:
P_TABLE_SELECT_COLUMNS => 'VENDOR_NUM'
你会发现结果变成了这样:
提取的仍是vendor id, 并且放到了vendor num这个字段上去了...
因此,我们还需要修改这个:
P_TABLE_COLUMNS => 'SEGMENT1,VENDOR_ID,VENDOR_NAME'
P_TABLE_COLUMN_ALIAS => 'VENDOR_NUM,VENDOR_ID,VENDOR_NAME'
P_TABLE_HEADERS => 'Vendor Num,Vendor ID,Vendor Name'
把segment1 提到第一位去,这样的话,它将被第一个提取出来,放到template中的vendor NUM中.
从上可以看出,LOV定义的各字段都可以显示在LOV中,并且提取到template中,但如何提取,这就要看component 的了...
LOV的定义可以在interface的定义界面上做(但component需另外定义),也可以使用API去做,相比较而言,我较倾向于用API. 另外,如用API定义时,不提供component的参数的话,WEBADI会依据LOV的相关信息为我们建立默认的component,但我发现,结果总是差强人意,因此建议,component还是显式定义为好,不要让WEBADI自动建.
有一点不好的是,用API 创建LOV时,依据参数建立的component的默认源是ORACLE,这样的话,我们无法在manager components 的WEB页面中修改这个component(除非你改component code, 好象在前面加_XX_,但这样还要修改bne_interface_cols_b中的component code,很麻烦,因此最好直接后台修改component的信息(在bne_param_list_items_b表中),不要动component code ).
假设
Template 上有三个字段,vendor_id, vendor_num, vendor_name, 要求LOV建在vendor_num上,选择后,提取id, num,name分别到三个字段中。
API 代码:
begin
bne_integrator_utils.CREATE_TABLE_LOV(P_APPLICATION_ID => 20003
,P_INTERFACE_CODE => 'A1_XINTG_INTF1'
,P_INTERFACE_COL_NAME => 'VENDOR_NUM'
--以下为LOV定义参数
--以下为LOV定义参数
,P_ID_COL => 'VENDOR_ID'
,P_MEAN_COL => 'SEGMENT1'
,P_DESC_COL => 'VENDOR_NAME'
,P_TABLE => 'ap_suppliers'
,P_ADDL_W_C => 'ROWNUM<10'
,P_WINDOW_CAPTION => 'Vendor'
,P_WINDOW_WIDTH => null
,P_WINDOW_HEIGHT => null
,P_TABLE_BLOCK_SIZE => null
,P_TABLE_SORT_ORDER => null
,P_USER_ID => 10653
--以下为component的定义参数
--以下为component的定义参数
,P_TABLE_COLUMNS => 'VENDOR_ID,SEGMENT1,VENDOR_NAME'
--提取的表的实际字段,即LOV的显示字段
,P_TABLE_SELECT_COLUMNS => 'VENDOR_ID,VENDOR_NUM,VENDOR_NAME'
--需要提取到template上的字段,需与interface的字段名一致
,P_TABLE_COLUMN_ALIAS => 'VENDOR_ID,VENDOR_NUM,VENDOR_NAME'
--如果提取的LOV字段名与interface的字段名不一样,需要在此为LOV的字段定义别名,与interface 字段名一致即可
,P_TABLE_HEADERS => 'Vendor ID,Vendor Num,Vendor Name'
);
如果仅提取id, num, 不提取name, 则修改成:
P_TABLE_SELECT_COLUMNS => 'VENDOR_ID,VENDOR_NUM'
但如果你仅想提取Vendor NUM,如果你修改成这样的话:
P_TABLE_SELECT_COLUMNS => 'VENDOR_NUM'
你会发现结果变成了这样:
提取的仍是vendor id, 并且放到了vendor num这个字段上去了...
因此,我们还需要修改这个:
P_TABLE_COLUMNS => 'SEGMENT1,VENDOR_ID,VENDOR_NAME'
P_TABLE_COLUMN_ALIAS => 'VENDOR_NUM,VENDOR_ID,VENDOR_NAME'
P_TABLE_HEADERS => 'Vendor Num,Vendor ID,Vendor Name'
把segment1 提到第一位去,这样的话,它将被第一个提取出来,放到template中的vendor NUM中.
从上可以看出,LOV定义的各字段都可以显示在LOV中,并且提取到template中,但如何提取,这就要看component 的了...
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10359218/viewspace-736422/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10359218/viewspace-736422/