一、建表
create table SGQ_WEBADI_DEMO
(
ADI_ID NUMBER,
ADI_ORGANIZATION_ID NUMBER,
ADI_CODE VARCHAR2(30),
ADI_NAME VARCHAR2(100),
ADI_DATE DATE
);
二、创建同义词
SQL> CREATE PUBLIC SYNONYM SGQ_WEBADI_DEMO FOR SGQ_WEBADI_DEMO;
Synonym created
三、创建序列
SQL> CREATE SEQUENCE SGQ_WEBADI_DEMO_S;
Sequence created
四、创建序列同义词
SQL> CREATE PUBLIC SYNONYM SGQ_WEBADI_DEMO_S FOR SGQ_WEBADI_DEMO_S;
Synonym created
五、插入测试数据
SQL> INSERT INTO SGQ_WEBADI_DEMO VALUES(1,83,'TEST01','青羊支行',SYSDATE);
1 row inserted
SQL> commit;
Commit complete
六、登记表
参数的涵义分别为:所有者、表名、扩展(T自动,S非自动)下一区,自由、已使用
:所有者、表名、列字段名、序号、类型、字段宽度、是否为空,是否可以转换。
SQL> BEGIN
ad_dd.register_table('XXT','SGQ_WEBADI_DEMO','t');
ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_id',1,'number',38,'y','n');
ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_organization_id',2,'number',38,'y','n');
ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_code',3,'varchar2',30,'y','n');
ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_name',4,'varchar2',100,'y','n');
ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_date',5,'date',9,'y','n');
COMMIT;
END;
/
PL/SQL procedure successfully completed
七、创建视图
SQL> create or replace view sgq_webadi_demo_v as select * from sgq_webadi_demo;
View created
八、创建包
SQL> CREATE OR REPLACE PACKAGE SGQ_WEBADI_DEMO_PKG IS
PROCEDURE UPLOAD_DATA(P_ID IN NUMBER,
P_ORGANIZATION_ID NUMBER,
P_CODE IN VARCHAR2,
P_NAME IN VARCHAR2,
P_DATE IN DATE);
END;
/
Package created
SQL> CREATE OR REPLACE PACKAGE BODY SGQ_WEBADI_DEMO_PKG IS
PROCEDURE UPLOAD_DATA(P_ID IN NUMBER,
P_ORGANIZATION_ID NUMBER,
P_CODE IN VARCHAR2,
P_NAME IN VARCHAR2,
P_DATE IN DATE) IS
BEGIN
IF P_ID IS NULL THEN
INSERT INTO SGQ_WEBADI_DEMO
(ADI_ID, ADI_ORGANIZATION_ID, ADI_CODE, ADI_NAME, ADI_DATE)
SELECT SGQ_WEBADI_DEMO_S.NEXTVAL,
P_ORGANIZATION_ID,
P_CODE,
P_NAME,
P_DATE
FROM DUAL;
ELSE
UPDATE SGQ_WEBADI_DEMO T
SET T.ADI_ORGANIZATION_ID = P_ORGANIZATION_ID,
T.ADI_CODE = P_CODE,
T.ADI_NAME = P_NAME,
T.ADI_DATE = P_DATE
WHERE T.ADI_ID = P_ID;
END IF;
END;
END SGQ_WEBADI_DEMO_PKG;
/
Package body created
九、创建集成器
9.1 Desktop Integrator -->创建文档(Create Document)
9.2选择“HR集成器设置”,下一步
9.3 查看程序选择“EXCEL 2003”,否则可能会有问题。 报告框不要选,否则不能编辑上传。下一步。
9.4 内容选择“无”,下一步。
9.5 点击“创建文档”。
9.6 保存并打开文档
9.7 文档创建完成后,点弹出界面的关闭按钮,并编辑(注意点一下加载列的第一个单元格,用来进行标记,本测试后续导入时,只导入标记的行)。
以上内容填写如下:
9.8 加载到EBS(加载项-ORACLE-加载)
9.9选择标记的行,点击加载
9.10 验证,因为在中文环境下创建的集成器,所以查看时如果无数据,则要先初始化语言环境,再进行一遍查询操作。
SQL> alter session set nls_language='SIMPLIFIED CHINESE';
Session altered
SQL> SELECT BNI.APPLICATION_ID, --应用ID
2 BNI.INTEGRATOR_CODE, --集成器代码
3 BNI.USER_NAME --集成器名称
4 FROM BNE_INTEGRATORS_VL BNI
5 WHERE BNI.USER_NAME = 'SGQ_WEBADI_DEMO';
APPLICATION_ID INTEGRATOR_CODE USER_NAME
---------------- ------------------------------ ------------------------------
20003 GENERAL_141_INTG SGQ_WEBADI_DEMO
十、维护集成器表单功能关联
10.1 Desktop Integrator -->创建文档(Create Document)
10.2 选择“HR 维护集成器表单功能关联”(HR Maintain Integrator Form Function Associations),下一步
10.3 选择EXCEL 2003 ,报告前面的框不打勾,理由参见上面说明,,下一步。
10.4 选择内容参数
PS:应用程序简称为本系统的客户化应用名称XXT,其他系统按之前加载时导入的“应用程序简称”填写。同样,集成器用户名也是在之前加载时定义的。填写完成后,继续。
10.5 复查,无问题,则点击“创建文档”。
10.6 保存文件并打开
文档创建后如图:
表单功能列表字段暂不填写,我们定义此功能名称后再进行填写。
十一、定义功能
11.1 进入路径:应用开发员-->应用产品-->功能
a)在说明选项卡,填写如下:
其中,SGQ_WEBADI_FUNCTION为自定义的功能。
b)在特性选项卡,填写如下:
功能: SGQ_WEBADI_FUNCTION
用户功能名:SGQ_WEBADI_FUNCTION
类型:子函数
保存退出当前界面。
十二 添加功能到菜单
12.1 进入路径:应用开发员-->应用产品-->菜单
a)查找DESKTOP INTEGRATION MENU,添加一行,功能列填写:SGQ_WEBADI_FUNCTION,即上面定义的功能。提示列保存为空。然后保存退出。
十三、填写第十步创建的表单功能EXCEL中的表单功能列表,并进行加载
13.1 验证
SQL> alter session set nls_language='SIMPLIFIED CHINESE';
Session altered
SQL> SELECT BNI.APPLICATION_ID,
BNI.INTEGRATOR_CODE, --集成器CODE
BNI.USER_NAME, --集成器名称
BSR.SECURITY_VALUE --功能CODE
FROM BNE_INTEGRATORS_VL BNI
JOIN BNE_SECURITY_RULES BSR ON (BSR.APPLICATION_ID = BNI.APPLICATION_ID AND
BSR.SECURITY_CODE = BNI.INTEGRATOR_CODE)
WHERE BNI.USER_NAME = 'SGQ_WEBADI_DEMO';
APPLICATION_ID INTEGRATOR_CODE USER_NAME SECURITY_VALUE
---------------- ------------------------------ ------------------------------ ------------------------------
20003 GENERAL_141_INTG SGQ_WEBADI_DEMO SGQ_WEBADI_FUNCTION
十四、定义布局
14.1 Desktop Integrator -->定义布局
14.2 选择刚创建的集成器(本例为SGQ_WEBADI_DEMO),查找。再点创建
14.3 填写如下:输入自定义的布局名称SGQ_WEBADI_DEMO_LAYOUT,题头数不用管,下一步。
14.4 选择相关字段展示区域
必须字段里面的ORGANIZATION_ID改为题头,其他全部为行。
改为题头,则字段显示的Header里面,如果改为行,则显示在行里面。必需字段是自动出来的API PROCEDURE NAME里面的参数列表,并去提了前面的P_,我们可以安排这些字段的显示区域,(Header或者Line)
注意:
1.这些值将传给API PROCEDURE NAME,也就是参数列表,一行一次,不管是Header还是Line。
2.视图的字段名和变量名P_XXX,变量名去年P_前缀后,最好不要和视图里面的字段名相同。
因此在EXCEL里面显示的参数是分题头、行、传递给API PRECECURE NAME时是并列的,至于在API PROCEDURE NAME里面,我们又可以自己把头字段和行字段进行区分,以便插入到不同的表中。
可选字段是VIEW的字段,可以不进行显示。
14.4 对字段属性是否只读等进行设置,此处我们只设置行ID为只读。标题为“测试组织ID”,然后应用(设置为只读后,上传时此值为空)。
14.5 应用之后的界面如下:
14.6 验证:
SELECT BNI.APPLICATION_ID,
BNI.INTEGRATOR_CODE, --集成器CODE
BNI.USER_NAME, --集成器名称
BLV.LAYOUT_CODE, --布局代码
BLV.USER_NAME, --布局用户名称
BLC.SEQUENCE_NUM,
BIC.*
FROM BNE_INTEGRATORS_VL BNI,
BNE_LAYOUTS_VL BLV,
BNE_LAYOUT_COLS BLC,
BNE_INTERFACE_COLS_VL BIC
WHERE BNI.USER_NAME = 'SGQ_WEBADI_DEMO'
AND BLV.INTEGRATOR_APP_ID = BNI.APPLICATION_ID
AND BLV.INTEGRATOR_CODE = BNI.INTEGRATOR_CODE
AND BLV.LAYOUT_CODE = BLC.LAYOUT_CODE
AND BLC.INTERFACE_APP_ID = BIC.APPLICATION_ID
AND BLC.INTERFACE_CODE = BIC.INTERFACE_CODE
AND BLC.INTERFACE_SEQ_NUM = BIC.SEQUENCE_NUM;
十五、定义映射
15.1 Desktop Integrator -->定义映射
15.2 查找SGQ_WEBADI_DEMO,然后点“更新”,然后下一步。
15.3 更新映射,这里我们添加5行,和数据库视图列数保持一致。
这里显示界面定义的字段对应到数据库的哪个字段。我们增加4行,把视图出来的值传给API PROCEDURE NAME的参数。
15.4 验证:
SQL> SELECT BNI.APPLICATION_ID,
BNI.INTEGRATOR_CODE, --集成器CODE
BNI.USER_NAME, --集成器名称
BMV.MAPPING_CODE --映射CODE
FROM BNE_INTEGRATORS_VL BNI, BNE_MAPPINGS_VL BMV
WHERE BMV.INTEGRATOR_APP_ID = BNI.APPLICATION_ID
AND BMV.INTEGRATOR_CODE = BNI.INTEGRATOR_CODE
AND BNI.USER_NAME = 'SGQ_WEBADI_DEMO'
AND BMV.INTEGRATOR_APP_ID = BNI.APPLICATION_ID
AND BMV.INTEGRATOR_CODE = BNI.INTEGRATOR_CODE;
APPLICATION_ID INTEGRATOR_CODE USER_NAME MAPPING_CODE
---------------- ------------------------------ ------------------------------ ------------------------------
20003 GENERAL_141_INTG SGQ_WEBADI_DEMO GENERAL_141_MAP
十六、定义查询条件 ,用来定义过滤条件
16.1 Desktop Integrator -->创建文档
16.2 创建独立查询,下一步
注意:这里创建独立查询,以后要修改,则要HR 维护查询(HR Maintain Standalone Query)
16.3,选择EXCEL 2003 ,报告前面的框不选 ,下一步。
16.4 选择对应的应用程序简称和集成器用户名,下一步。
16.5 复查
16.6创建文档,保存并打开,并填写:
16.7 加载到EBS
十七、使用:
17.1 Desktop Integrator -->创建文档
17.2 选择集成器,下一步
17.3 选择EXCEL 2003,报告前面的框不选 ,下一步。
17.4 机构组织ID为83,即前面插入的SQL值,继续。
17.5 复查
17.6 创建文档,保存并打开。
进阶:客户化开发
十八、进阶EXCEL LOV
18.1 定义字段与LOV字段的关系
直接在APPS下面执行:
SELECT BIC.INTERFACE_COL_NAME, --字段名
BIC.VAL_TYPE, --填TABLE
BIC.VAL_ID_COL, --传递给程序参数的字段,填 ORGANIZATION_ID
BIC.VAL_MEAN_COL, --在EXCEL中显示的字段,填ORGANIZATION_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, --组件应用,填20003
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 = 'SGQ_WEBADI_DEMO')
AND BIC.INTERFACE_COL_NAME = 'P_ORGANIZATION_ID'
FOR UPDATE;
注意字段分别填写为注释中标明的值
理解如下字段:
1.VAL_ID_COL 传递给程序参数的字段,本列中只需要传值给P_ORGANIZATION,所以只填写ORGANIZATION_ID,如果还定义了P_CODE,则需要填写CODE
2.VAL_MEAN_COL 在EXCEL中显示的字段,本列中需要显示代码机构组织ID,则需要填写ORGANIZATION_ID,如果还显示机构组织代码,则填写CODE(传值还是给ORGNIZATION_ID,只是在界面上显示的是机构组织代码)
3.VAL_DESC_COL LOV中的说明字段,可以是一个,也可以是多个。
18.2 创建组件
SQL> SELECT B.APPLICATION_ID, B.VAL_COMPONENT_APP_ID, B.VAL_COMPONENT_CODE
FROM BNE_INTERFACE_COLS_B B
WHERE B.VAL_COMPONENT_CODE = 'SGQ_ORGANIZATION';
APPLICATION_ID VAL_COMPONENT_APP_ID VAL_COMPONENT_CODE
---------------- -------------------- ------------------------------
20003 20003 SGQ_ORGANIZATION
18.3向组件表插入记录
SQL> 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
'SGQ_ORGANIZATION',--bne_interface_cols_b.val_component_CODE
1,
'oracle.apps.bne.integrator.component.BneOAValueSetComponent',--oraCLE标准代码
20003,--参数应用ID
'SGQ_ORGANIZATION',--参数的代码名称,重要
-1,
SYSDATE,
-1,
-1,
SYSDATE
);
1 row inserted
SQL> commit;
Commit complete
18.4 向组件语言表插入记录
SQL> 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
'SGQ_ORGANIZATION',--对应BNE_COMPONENTS_B.COMPONENT_CODE
'ZHS',
'ZHS',
'机构组织',
-1,
SYSDATE,
-1,
-1,
SYSDATE
);
1 row inserted
SQL> commit;
Commit complete
18.5 定义功能
路径:应用开发员-->功能,,
功能名称如下:SQL_WEBADI_PARAMETER
类型为:SSWA servlet函数
参数:bne:page=BneParameter
HTML调用:BneApplicationService
18.6 加入菜单
应用开发员-->菜单,查找 DESKTOP INTEGRATION MENU 添加
18.7 定义参数
路径:Desktop Integrator--> SGQ_WEBADI_PARAMETER
18.8 选择Web应用产品桌面集成品,去掉Restrict to this application,下一步
18.9 下一界面
18.10 点击查找,使用Oracle系统的一个原有参数(比如COMP_AVG_JNL_FLAG)来创建客户应用的参数及属性。
18.11 点击右上角的复制 按钮
注意:Application 必须是当前系统应用的名称
code 必须与bne_components_b中的param_list_code一致。
保存退出。
18.12 再次进入 路径:Desktop Integrator--> SGQ_WEBADI_PARAMETER,进入当前系统客户化应用,去掉Restrict to the application
18.13 查找,输入SGQ_ORGANIZATION,查找后选择
18.14 修改Table Columns属性
SELECT T.VAL_OBJ_NAME,
T.VAL_ID_COL,
T.VAL_MEAN_COL,
T.VAL_DESC_COL,
T.INTERFACE_COL_NAME
FROM BNE_INTERFACE_COLS_B T
WHERE T.VAL_COMPONENT_CODE = 'SGQ_ORGANIZATION';
在VALUE中输入各个列名,用“,”分隔,注意这里的字段名必须是BNE_INTERFACE_COLS_B.VAL_OBJ_NAME,也就是ORG_ORGANIZATION_DEFINITIONS表的字段之一
并且出现在BNE_INTERFACE_COLS_B中的VAL_ID_COL,VAL_MEAN_COL或者VAL_DESC_COL中,否则不会显示。
18.15 修改TABLE_COLUMN_ALIASN属性
注意:这一步很重要,必须与18.14 table column的顺序相同,名称必须与以下相同 ,即PACKAGE的参数相同,否则不会返回EXCEL
SELECT BIC.INTERFACE_COL_NAME, BIC.VAL_OBJ_NAME, BIC.*
FROM BNE_INTERFACE_COLS_B BIC,
BNE_INTERFACES_VL INTF,
BNE_INTEGRATORS_VL INTG
WHERE BIC.INTERFACE_CODE = INTF.INTERFACE_CODE
AND INTF.INTEGRATOR_CODE = INTG.INTEGRATOR_CODE
AND BIC.INTERFACE_COL_TYPE = 1
AND INTG.USER_NAME = 'SGQ_WEBADI_DEMO';
18.16 修改table-select-column
注意:VALUE代表返回的字段,该字段必须与bne_interface_cols_b.interface_col_name保持完全一致。并且必须存在于bne_interface_col_b.val_obj_name所在的表的列中,或者使用在table column alias的参数属性中被指定假名。否则值列表挑选后,不会自动更新EXCEL表格中对应的项目。
18.17 修改table header
VALUE:机构组织ID(LOV中第一个字段题头的值)
18.18 修改 window-width
18.19 重启应用,因为LOV调用的是SERVLET类,必须重新加载方可生效,如果只修改了属性值,则不需要重启应用,只有UPDATE基表BNE_INTERFACE_COLS_B中的值的时候,才需要重启应用。
本示例环境为:(Oracle Applications 12.1.2 RDBMS 11.1.0.7.0)
系统应用名称为:XXT客户化应用
简称为:XXT