WebADI_案例实施02_开发一个基于R12.1.3的复杂WebADI Desktop
http://www.docin.com/p-922235111.html
--Created by Tony Liu.
CREATE TABLE APPS.BXJ_WEBADI_EMPLOYEES ( EMPLOYEE_ID NUMBER, EMPLOYEE_NUM VARCHAR2(100), EMPLOYEE_NAME VARCHAR2(100), EMPLOYEE_COUNTRY VARCHAR2(100), EMPLOYEE_ADDRESS VARCHAR2(500), EMPLOYEE_TYPE VARCHAR2(10), DESCRIPTION VARCHAR2(500), MANAGER_ID NUMBER, DEPARTMENT_ID NUMBER, SALARY NUMBER, HIRE_DATE DATE, JOB_ID NUMBER, LAST_UPDATE_DATE DATE NOT NULL ENABLE, LAST_UPDATED_BY NUMBER(15,0) NOT NULL ENABLE, LAST_UPDATE_LOGIN NUMBER(15,0), CREATED_BY NUMBER(15,0) NOT NULL ENABLE, CREATION_DATE DATE NOT NULL ENABLE );
CREATE OR REPLACE PACKAGE bxj_webadi_emp_pkg AS PROCEDURE create_employee(p_employee_id number, p_employee_num varchar2(100), p_employee_name varchar2(100), p_employee_country varchar2(100), p_employee_address varchar2(500), p_employee_type varchar2(100), p_description varchar2(500), p_manager_id number, p_department_id number, p_salary number, p_hire_date date, p_job_id number, p_last_update_date date, p_last_updated_by number, p_last_update_login number, p_created_by number, p_creation_date date); END bxj_webadi_emp_pkg;
CREATE OR REPLACE PACKAGE BODY bxj_webadi_emp_pkg AS PROCEDURE create_employee(p_employee_id number, p_employee_num varchar2(100), p_employee_name varchar2(100), p_employee_country varchar2(100), p_employee_address varchar2(500), p_employee_type varchar2(100), p_description varchar2(500), p_manager_id number, p_department_id number, p_salary number, p_hire_date date, p_job_id number, p_last_update_date date, p_last_updated_by number, p_last_update_login number, p_created_by number, p_creation_date date) IS BEGIN INSERT INTO apps.bxj_webadi_employees VALUES (p_employee_id, p_employee_num, p_employee_name, p_employee_country, p_employee_address, p_employee_type, p_description, p_manager_id, p_department_id, p_salary, p_hire_date, p_job_id, p_last_update_date, p_last_updated_by, p_last_update_login, p_created_by, p_creation_date); COMMIT; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(errcode || errmsg); END; END bxj_webadi_emp_pkg;
这两天做了一个R12 WEBADI的开发任务,任务描述如下:
1. 根据用户的data file, 导入数据至XLA, 生成Journals, 然后再调用标准请求,生成GL Journals
2. 建立staging table, 用来存放WEBADI导入的数据, 表名为c_xla_je_load_staging
3. 调用API 来生成XLA Journals
xla_journal_entries_pub_pkg.create_journal_entry_header 生成Journal header
xla_journal_entries_pub_pkg.create_journal_entry_line 生成Journal lines
4. 调用标准请求生成GL Journals
5. 建立Package :c_xla_je_load_pkg, 完成数据校验/数据导入到XLA/调用标准请求
6. 注册请求CUST XLA Journal Entry Load,调用上述package.
7. 在WEBADI 中调用上述请求.
如果上述工作在11i里做的话,估计得把我做吐血,因为11i的WEBADI还不是很完备,很多功能ORACLE没有提供开放的接口,只能用insert table来做。但是现在在R12中,做起来就简单多了。
R12 WEBADI比11i的强大了许多,反映在如下几方面:
1. 多了一个新的职责: Desktop integration manager, 在此职责下可完成所有的WEBADI的开发工作。
2. 现在可以在Excel 模板中定义Lov值验证
3. 增加了Interface 的定义,可以灵活定义Layout的数据源。
4. Layout中的定义多了一些选项,使得Layout的定义更加完善。
5. 增加了uploader的定义,可以灵活定义导入参数
6. 增加了importer的定义,可以灵活定义数据导入后的工作。
7. FNDLOAD 更加完善,可通过bneintegrator.lct 导出大多数的WEBADI定义。
所以这个Task 还真没花多少时间,就完成了。
---------------------------------以下是WEBADI 定义-----------------------------------
Navigater: Desktop Integration Manager/Manager Integrators
1. Integrator
Name: CUST XLA Journal Entry Load
Code: C_XLA_JE_LOAD
Application: Custom Application
Enabled: Y
Display in Create Document Page: Y
Security ruls: function: C_XLA_JE_LOAD
2. Interfaces
Name: C_XLA_JE_LOAD_STAGING
Type: Table
Entity name: C_XLA_JE_LOAD_STAGING (实际表名,注意,需在数据库中注册此表,否则找不到)
无任何default value and LOV validation
3. Contents
此步根据需要设置,如果希望用户导出的是空的模板文件,则无需设置,如果希望用户在导出的同时把数据文件加进去,则需设置,我这里设了一下:
Name: C_XLA_JE_LOAD_CONTENT
Type: TEXT
Reporting: N
做了这个设置后,后面还要做Mapping的设置,设置数据文件列与Interface列的对应关系
4. Uploader
Select " Copy from Template "
Uplaoder name: do not change
Title: do not change
Header: do not change
修改bne: import (用来启动后面的importer 的运行)的定义
Description: Automatically Submit CUST XLA Journal Import
Prompt left: Automatically Submit CUST XLA Journal Import
Default value : Y
Enabled: N (必选且用户无法修改,因为如用户不选的话,后面的Request无法调用,需要人为手工调用)
5. Importer
Importer type: Asynchronous concurrent request (导步请求,WEBADI无需等待请求执行结果)
Importer name: C_XLA_JE_LOAD_IMPORTER
Concurrent Program Request Submission: Program: CUST XLA Journal Entry Load (注意: 使用此WEBADI的职责需要能够调用此请求)
Success Message Definition: CUST XLA Journal Import Request ID $import$.requestid
保存生成Integrator
----------------以下是Layout (必须) 及 Mapping(不必须) 的定义-------------------
最后需要定义Layout 及 Mapping (如无Contents定义,无需定义Mapping)
1. Layout
Layout name: C_XLA_JE_LOAD_LAYOUT
Set all columns to LINES
Protect sheet: Y (Excel模板是否保护)
Style. sheet: Default
Apply filter: Y
Data entry rows: 2000(此项是很大的一个改进,可以定义模板的初始行数,不再受10行的困扰了)
定义字段顺序(此项定义本人觉得设计的很垃圾,直接用sequence number就行了,非要搞两个按钮去点,麻烦死了)
定义显示宽度(此项也是很好的一个改进,增加了用户体验)
Mapping 定义略。
FNDLOAD DOWNLOAD:
FNDLOAD apps/apps 0 Y DOWNLOAD bneintegrator.lct C_XLA_JE_LOAD.ldt
BNE_INTEGRATORS INTEGRATOR_ASN=C_APPS
INTEGRATOR_CODE=C_XLA_JE_LOAD_XINTG
http://blog.itpub.net/10359218/viewspace-682043/
http://blog.itpub.net/10359218/viewspace-702819/
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建