1.apps下创建临时表,用以存储新导入的数据
-- Create table
create table INV.STD_MTL_SYSTEM_ITEMS_2205_B
(
SET_PROCESS_ID NUMBER not null,
ITEM_DESCRIPTION VARCHAR2(240) not null,
ITEM_SEGMENT1 VARCHAR2(40) not null,
PRIMARY_UOM_CODE VARCHAR2(3) not null,
ORGANIZATION_CODE VARCHAR2(30)
)
tablespace APPS_TS_TX_DATA
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 128K
next 128K
minextents 1
maxextents unlimited
pctincrease 0
);
2.整理形成 csv 原始数据文件ifacle_format.csv如
process id,Item Code,Description,UOM,Organization Code
20090011,ben20090001011,ben011,Ea,A1
20090011,ben20090001012,ben012,Ea,A1
3. 创建control文件STDITEMIPT_2205.ctl
options (skip=1)
Load data
CHARACTERSET UTF8
infile 'ifacle_format_2205.csv'
append
into table std_mtl_system_items_2205_b
fields terminated by "," optionally enclosed by '"'
( set_process_id,
item_segment1,
item_description,
primary_uom_code,
organization_code
)
4.将.csv 和 .ctl 文件上传至数据库服务器目录
5.运行
sqlldr apps/apps control=STDITEMIPT_2215.ctl
将数据从csv中导入至临时表。此时临时表中应有导入数据。
6.在pl/sql中创建自己的包,用以将临时表中的数据插入Item 接口表 MTL_SYSTEM_ITEMS_INTERFACE
CREATE OR REPLACE PACKAGE std_iface_pkg IS
PROCEDURE item_iface_example(errbuf OUT VARCHAR2,
retcode OUT VARCHAR2,
p_template_id IN NUMBER,
p_set_process_id IN NUMBER,
p_organization_id IN NUMBER);
END std_iface_pkg;
/
CREATE OR REPLACE PACKAGE BODY std_iface_pkg IS
--物料接口例子
PROCEDURE item_iface_example(errbuf OUT VARCHAR2,
retcode OUT VARCHAR2,
p_template_id IN NUMBER,
p_set_process_id IN NUMBER,
p_organization_id IN NUMBER) IS
l_iface_rec mtl_system_items_interface%ROWTYPE;
l_master_org_id NUMBER;
--l_std_id NUMBER := 900001; --90000+ID
l_template_id NUMBER;
BEGIN
DELETE mtl_system_items_interface msii
WHERE msii.set_process_id = p_set_process_id;
FOR rec IN (SELECT msi.*
FROM std_mtl_system_items_b msi
WHERE msi.set_process_id = p_set_process_id) LOOP
-----------------------------------------------------------------
--1 pending
--2 assign complete
--3 assign/validation failed
--4 validation succeeded, imported failed
--5 import in process
--7 import succeeded
-----------------------------------------------------------------
l_iface_rec.process_flag := 1;
l_iface_rec.transaction_type := 'CREATE';
l_iface_rec.set_process_id := p_set_process_id;
l_iface_rec.organization_id := p_organization_id;
l_iface_rec.description := rec.item_description;
l_iface_rec.segment1 := rec.item_segment1;
l_iface_rec.primary_uom_code := rec.primary_uom_code;
l_iface_rec.template_id := p_template_id;
l_iface_rec.last_update_date := SYSDATE;
l_iface_rec.last_updated_by := fnd_global.user_id;
l_iface_rec.creation_date := SYSDATE;
l_iface_rec.created_by := fnd_global.user_id;
l_iface_rec.last_update_login := fnd_global.login_id;
l_iface_rec.request_id := fnd_global.conc_request_id;
l_iface_rec.program_id := fnd_global.conc_program_id;
l_iface_rec.program_update_date := SYSDATE;
l_iface_rec.program_application_id := fnd_global.prog_appl_id;
INSERT INTO mtl_system_items_interface VALUES l_iface_rec;
END LOOP;
COMMIT;
END std_iface_pkg;
7.在ebs中注册该包的并发程序application developer->Concurrent->Executable
application developer->Concurrent->Program
具体过程不赘述,有需要请留言,我会再写详细些。
8. 将定义的Program赋给自己职责的Request Group
System administrator->responsibility->request
9.在该指责下运行刚定义的并发请求,该并发请求将把数据从临时表中插入到接口表。
至此在 MTL_SYSTEM_ITEMS_INTERFACE 中应该已经存在临时表中导入进来的数据。请检查。
注意,请不要在pl/sql环境下直接调用包进行该操作,而必须为包定义并发请求,在ebs系统中进行该操作,否则一些环境列将无法传入正常值,比如更新人,创建人等等,因为在pl/sql中无法得到您的ebs登陆环境。
10.在Inventory,Vision Operation职责下,运行并发请求 ‘import item’
并填入以下的参数值:
所有组织:是
验证物料:是
流程物料:是
删除处理的行:是
流程集(全部为空):该处填写csv文件中的process id字段值
创建或更新物料:1
11.检查 MTL_SYSTEM_ITEMS_INTERFACE 中是否有遗留的数据,如果数据全部成功导入ebs系统,该数据表应为空。如果有数据未能正确导入,请重设process id,更正数据后进行新一轮的导入。
12.至此物料数据导入完毕。可以在ebs系统中查找已导入的物品。