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, E...

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/

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
SAP CRM Fiori 应用 My Opportunity 的分页读取逻辑,在 GM4 - AG3 无法正常工作
SAP CRM Fiori 应用 My Opportunity 的分页读取逻辑,在 GM4 - AG3 无法正常工作
105 0
SAP CRM Fiori 应用 My Opportunity 的分页读取逻辑,在 GM4 - AG3 无法正常工作
|
数据挖掘
SAP RETAIL Plant Group里的特性(二)
SAP RETAIL Plant Group里的特性(二)
SAP RETAIL Plant Group里的特性(二)
SAP RETAIL 事务代码RWBE查询界面上的Plant Group(一)
SAP RETAIL 事务代码RWBE查询界面上的Plant Group(一)
SAP RETAIL 事务代码RWBE查询界面上的Plant Group(一)
SAP RETAIL 事务代码RWBE查询界面上的Plant Group(二)
SAP RETAIL 事务代码RWBE查询界面上的Plant Group(二)
SAP RETAIL 事务代码RWBE查询界面上的Plant Group(二)
SAP RETAIL 为门店代码维护Plant Group(二)
SAP RETAIL 为门店代码维护Plant Group(二)
SAP RETAIL 为门店代码维护Plant Group(二)
SAP RETAIL 为门店代码维护Plant Group(一)
SAP RETAIL 为门店代码维护Plant Group(一)
SAP RETAIL 为门店代码维护Plant Group(一)
JAM - how count is got - SAP Fiori和JAM的集成
JAM - how count is got - SAP Fiori和JAM的集成
116 0
JAM - how count is got - SAP Fiori和JAM的集成
|
Go API
SAP CRM One Order函数CREATE_OW的设计原理
SAP CRM One Order函数CREATE_OW的设计原理
153 0
SAP CRM One Order函数CREATE_OW的设计原理