QQ:886922 MSN:Johnson_hsz@hotmail.com
3.2 Form Function
可以使用Form Function控制权;当有多支Web ADI时,为达到权限的控制,就需要通过Function的方式来实现了。开发Form时需要先建立一Form,再建立一Form Function与该Form Mapping。Web ADI程式在安全控管上,只需要建立一Form Function,并通过HR Maintain Integrator Form Function Associations将Form Function与Web ADI建立relationship,再将该Form Function Assign给不同的Menu即可
一个Form Function可以assign一个Integrator,也可以assign多个Integrator;同样,一个Integrator也可以Assign给多个Form Function。
4. Web ADI程式开发 开发步骤
1. Create Database Object(Required) 2. Register Table and column(Required) 3. Create Package(Required) 4. Create Integrator(Required)
5. Associate Integrator and Function(Required) 6. Define Layout(Required) 7. Define Mapping(Optional) 8. Modify Excel Prompt(Optional) 4.1 Create Database Object(Required)
一般Web ADI程式是将Excel中的资料Import到客户化的Temp table中,然后根据需要,将Temp table的
资料抛至系统标准的接口或做其他用途。本文将举例,如何通过Web ADI实现料号接口的导入。需要建立以下Database Object:
1. Table:CUX_ITEM_IMPORT_TEMP
Oracle EBS Customization—Web ADI
11
QQ:886922
该table用来保存Web ADI import到系统中的料号 CREATE TABLE CUX_ITEM_IMPORT_TEMP( BATCH_ID NUMBER, ORGANIZATION_CODE VARCHAR2(3), ITEM_NO VARCHAR2(30), PRIMARY_UOM_CODE VARCHAR2(3), ITEM_TEMPLATE VARCHAR2(20), DESCRIPTION VARCHAR2(240), STATUS VARCHAR2(1), ERROR_MESSAGE VARCHAR2(240), CREATION_DATE DATE NOT NULL, CREATED_BY NUMBER NOT NULL, LAST_UPDATED_BY NUMBER NOT NULL, LAST_UPDATE_DATE DATE NOT NULL, LAST_UPDATE_LOGIN NUMBER );
MSN:Johnson_hsz@hotmail.com
2. Sequence:CUX_ITEM_IMPORT_TEMP _S
Create Sequence CUX_ITEM_IMPORT_TEMP_S; 3. View:CUX_ITEM_IMPORT_TEMP_V
Create view CUX_ITEM_IMPORT_TEMP_V as Select *from CUX_ITEM_IMPORT_TEMP;
4.2 Register Table and column(Required)
使用下列SQL进行table及column的注册:
BEGIN
--register table
AD_DD.REGISTER_TABLE('INV','CUX_ITEM_IMPORT_TEMP','T'); --register column
AD_DD.REGISTER_COLUMN('INV','CUX_ITEM_IMPORT_TEMP','BATCH_ID',1,'NUMBER',3,'N','N');
AD_DD.REGISTER_COLUMN('INV','CUX_ITEM_IMPORT_TEMP','ORGANIZATION_CODE',2,'VARCHAR2',3,'N','N');
AD_DD.REGISTER_COLUMN('INV','CUX_ITEM_IMPORT_TEMP','ITEM_NO',3,'VARCHAR2',30,'N','N');
AD_DD.REGISTER_COLUMN('INV','CUX_ITEM_IMPORT_TEMP','PRIMARY_UOM_CODE',4,'VARCHAR2',3,'N','N');
AD_DD.REGISTER_COLUMN('INV','CUX_ITEM_IMPORT_TEMP','ITEM_TEMPLATE',5,'VARCHAR2',20,'N','N'); AD_DD.REGISTER_COLUMN('INV','CUX_ITEM_IMPORT_TEMP','DESCRIPTION',6,'VARCHAR2',240,'Y','N'); AD_DD.REGISTER_COLUMN('INV','CUX_ITEM_IMPORT_TEMP','STATUS',7,'VARCHAR2',1,'Y','N');
AD_DD.REGISTER_COLUMN('INV','CUX_ITEM_IMPORT_TEMP','ERROR_MESSAGE',8,'VARCHAR2',240,'Y','N'); AD_DD.REGISTER_COLUMN('INV','CUX_ITEM_IMPORT_TEMP','CREATION_DATE',9,'DATE',20,'N','N'); AD_DD.REGISTER_COLUMN('INV','CUX_ITEM_IMPORT_TEMP','CREATED_BY',10,'NUMBER',20,'N','N'); AD_DD.REGISTER_COLUMN('INV','CUX_ITEM_IMPORT_TEMP','LAST_UPDATED_BY',11,'NUMBER',20,'N','N'); AD_DD.REGISTER_COLUMN('INV','CUX_ITEM_IMPORT_TEMP','LAST_UPDATE_DATE',12,'DATE',20,'N','N');
AD_DD.REGISTER_COLUMN('INV','CUX_ITEM_IMPORT_TEMP','LAST_UPDATE_LOGIN',13,'NUMBER',20,'N','N');
COMMIT; END;
Oracle EBS Customization—Web ADI 12
QQ:886922
注:参数中的第一个Y/N代表该栏位是否可为Null
MSN:Johnson_hsz@hotmail.com
4.3 Create Package(Required)
Web ADI在设置Layout时,可以设定Header Line的样式。但是时间在import时,Header与Line其实是作
为同一笔数据Import进去的,是无法分Header、Line去调用不同的Import Procedure。若需要Import有主从关系的资料时,需要在Import的Procedure中自行处理【Header Import一次、Line Import多次】,这个在后面的章节,将会详细介绍。
本例在做Item Import时,没有使用到主从关系的table,即使用单一table。需要建立一procedure,供Web ADI调用。通过这个Procedure做数据正确性的Check、将数据insert到对应的table,具体如下:
CREATE OR REPLACE PACKAGE CUX_ITEM_IMPORT_PKG IS
-- $Header: CUX_ITEM_IMPORT_PKG.pck 120.1.1 2011/03/20 16:53:01 $ --
--+=======================================================================+
--| Copyright (c) 2011 AdvancedTek Shanghai | --| All rights reserved. |
--+=======================================================================+
--| FILENAME | --| CUX_ITEM_IMPORT_PKG.pck | --| | --| DESCRIPTION | --| Item Import Procedure For Web ADI Test | --| HISTORY | --| 03/20/2011 Johnson Huang Created |
--+========================================================================
PROCEDURE CUX_ITEM_IMPORT_P(P_ORGANIZATION_CODE VARCHAR2, P_ITEM_NO VARCHAR2, P_PRIMARY_UOM_CODE VARCHAR2, P_ITEM_TEMPLATE VARCHAR2, P_DESCRIPTION VARCHAR2);
END CUX_ITEM_IMPORT_PKG; /
CREATE OR REPLACE PACKAGE BODY CUX_ITEM_IMPORT_PKG IS
/*参数的名字为TABLE COLUMN前加'_P',在DEFINE LAYOUT时,可挑到的栏位, 即为这个PROCEDURE中所列的参数,系统会自动将参数前的'_P'删除*/ V_BATCH_ID NUMBER := CUX_ITEM_IMPORT_TEMP_S.NEXTVAL;
PROCEDURE CUX_ITEM_IMPORT_P(P_ORGANIZATION_CODE VARCHAR2, P_ITEM_NO VARCHAR2, P_PRIMARY_UOM_CODE VARCHAR2, P_ITEM_TEMPLATE VARCHAR2, P_DESCRIPTION VARCHAR2) IS V_TEMPLATE_ID NUMBER; V_COUNT NUMBER; V_ERROR_MESSAGE VARCHAR2(240); BEGIN BEGIN
Oracle EBS Customization—Web ADI 13
QQ:886922
SELECT TEMPLATE_ID INTO V_TEMPLATE_ID FROM MTL_ITEM_TEMPLATES
WHERE TEMPLATE_NAME = P_ITEM_TEMPLATE; EXCEPTION
WHEN OTHERS THEN
V_ERROR_MESSAGE := 'ITEM TEMPLATE IS ERROR!;'; END;
SELECT COUNT(*) INTO V_COUNT
FROM MTL_UNITS_OF_MEASURE
WHERE UOM_CODE = P_PRIMARY_UOM_CODE; IF V_COUNT = 0 THEN
V_ERROR_MESSAGE := V_ERROR_MESSAGE || 'UOM IS ERROR!;'; END IF;
--CHECK 是否为MASTER ORG SELECT COUNT(*) INTO V_COUNT
FROM MTL_PARAMETERS MP
WHERE MP.ORGANIZATION_CODE = P_ORGANIZATION_CODE AND MP.MASTER_ORGANIZATION_ID = MP.ORGANIZATION_ID; IF V_COUNT = 0 THEN
MSN:Johnson_hsz@hotmail.com
V_ERROR_MESSAGE := V_ERROR_MESSAGE || 'ORGANIZATION CODE IS ERROR!;'; END IF;
--如果有错,则抛出Error Message.该Error Message会显示在Excel中 IF V_ERROR_MESSAGE IS NOT NULL THEN
RAISE_APPLICATION_ERROR(-20000, V_ERROR_MESSAGE); END IF;
INSERT INTO CUX_ITEM_IMPORT_TEMP (BATCH_ID,
ORGANIZATION_CODE, ITEM_NO,
PRIMARY_UOM_CODE, ITEM_TEMPLATE, DESCRIPTION, CREATION_DATE, CREATED_BY, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN) VALUES (V_BATCH_ID,
P_ORGANIZATION_CODE, P_ITEM_NO,
P_PRIMARY_UOM_CODE, P_ITEM_TEMPLATE,
Oracle EBS Customization—Web ADI 14
QQ:886922
P_DESCRIPTION, SYSDATE,
FND_GLOBAL.USER_ID, FND_GLOBAL.USER_ID, SYSDATE,
FND_GLOBAL.LOGIN_ID); END;
END CUX_ITEM_IMPORT_PKG;
MSN:Johnson_hsz@hotmail.com
4.4 Create Integrator(Required)
使用系统自带的Web ADI程式HR Integrator Setup 建立客户化的Integrator
1. Path: Desktop Integrator->Create Document:
如上图,选择HR Integrator Setup,然后点击Next按钮
2. 在这一步,需要选择Client端电脑上的Excel版本:
如上图,Reporting的Check Box不要打钩 3. Content选择None
若Content选择Text File,需要实现准备好csv文档,在csv档内维护好下面第5个步骤要填写的资料,这样在执行到第5个步骤时,Excel会自动把csv档导入到Excel中
4. 接下来点击Create Document按钮,系统自动生成Setup Integrator的Excel档
Oracle EBS Customization—Web ADI 15