Oracle 完全测试记录 物料接口导入

吴若童

总述
物料导入接口的作用
物料导入接口的作用?
接口的作用?
可以从任意来源将物料导入到 Oracle 库存及工程模块。在与外部系统集成或项目初期数据导
入时将用到。
通过物料接口,你可以:
1、 在主组织新建物料,或将现有物料分配到其它组织中。
2、 可以为物料的所有或部分属性赋值。
3、 也可以导入时通过物料模板新建物料。
4、 通过物料接口可以导入物料的版本明细,将来的版本及过去的版本都可导入。
在导入时系统会同定义物料一样,去验证字段的正确性。导入的物料数据将是完整、安全的。
物料导入的原理?
物料导入的原理?
系统从两个表导入物料和物料明细。MTL_SYSTEMS_ITEM_INTERFACE 表记录物料编码和物料
属性。这是物料接口的主表。MTL_ITEM_REVISIONS_INTERFACE 表为版本明细,不是必须的。
MTL_ITEM_CATEGORIES_INTERFACE 表记录着物料的类别。
步骤:
步骤:
1、 在导入前必须写入 MTL_SYSTEMS_ITEM_INTERFACE
2、 如果有版本还要写入 MTL_ITEM_REVISIONS_INTERFACE。
3、 在完成后,运行物料接口导入请求。请求会对数据做验证,因此在导入其它组织前
必须保证正确导入了主组织物料。(建议分步进行,第一轮导入主组织;第二轮再
去处理其它组织)

目录
总述 ........................................................................................................................................... 1
目录 ........................................................................................................................................... 1
参考 ........................................................................................................................................... 3
测试前的准备 ............................................................................................................................ 4
测试环境 ............................................................................................................................ 4
1)

确定各库存组织的物料主组织 ................................................................................. 4

简单的物料导入 ........................................................................................................................ 4
1)

定义物料单位 ............................................................................................................ 4
1 / 20

Oracle 完全测试记录 物料接口导入

吴若童

2)

清除接口数据 ............................................................................................................ 5

2)

将物料的主组织数据写入接口 ................................................................................. 5

3)

将物料的其它组织数据写入接口.............................................................................. 5

4)

查看接口数据 ............................................................................................................ 6

5)

确认提交 ................................................................................................................... 6

6)

执行物料导入 ............................................................................................................ 6

7)

确认导入后的结果 .................................................................................................... 7

通过物料模板导入物料 ............................................................................................................. 7
1)

定义物料状态代码 .................................................................................................... 7

2)

建立物料模板 ............................................................................................................ 8

3)

清除接口数据 ............................................................................................................ 9

4)

将物料的主组织数据写入接口 ................................................................................. 9

5)

查看接口数据 .......................................................................................................... 10

6)

确认提交 ................................................................................................................. 10

7)

执行物料导入 .......................................................................................................... 10

8)

确认导入后的结果 .................................................................................................. 10

导入物料成本 .......................................................................................................................... 11
1)

定义成本子要素 ...................................................................................................... 11

2)

查看成本要素代码 .................................................................................................. 12

3)

查看成本子要素代码 .............................................................................................. 12

4)

查看物料编码 .......................................................................................................... 12

5)

清除接口数据 .......................................................................................................... 13

6)

将物料成本数据写入接口 ....................................................................................... 13

7)

确认提交 ................................................................................................................. 13

8)

执行物料导入 .......................................................................................................... 13

9)

确认导入后的结果 .................................................................................................. 13

导入物料及它的版本 ............................................................................................................... 14
1)

确定物料的初始版本 .............................................................................................. 14

2)

清除接口数据 .......................................................................................................... 15
2 / 20

Oracle 完全测试记录 物料接口导入

吴若童

3)

将物料的主组织数据写入接口 ............................................................................... 15

4)

将物料版本数据写入接口 ....................................................................................... 15

5)

确认提交 ................................................................................................................. 16

6)

执行物料导入 .......................................................................................................... 16

7)

确认导入后的结果 .................................................................................................. 16

导入物料类别 .......................................................................................................................... 17
1)

定义物料类别 .......................................................................................................... 17

2)

取得物料类别编码 .................................................................................................. 18

3)

清除接口数据 .......................................................................................................... 18

4)

将物料类别据写入接口........................................................................................... 19

5)

确认提交 ................................................................................................................. 19

6)

执行物料类别导入 .................................................................................................. 19

7)

确认导入后的结果 .................................................................................................. 19

参考
测试记录由 吴若童 实测,参考了 metalink 及 user guide 中相关文档。你可以任意的传播本文件。
MSN:toney_wu@hotmail.com SPACE: http://toney-wu.spaces.live.com/ 

Understanding Item Import and Debugging Problems with Item Import [NOTE:268968.1]

3 / 20

Oracle 完全测试记录 物料接口导入

吴若童

测试前的准备
测试环境
Oracle 应用产品 : 11.5.10.2

2007-6-23

组织架构:
SOB: 101

SOB: 201

OU: T_总部

OU: T_工厂

INV: TC

INV: TCD

INV: TM1

以上库存组织在系统中均以设置完成,物料主组织均为 INT:TC

1) 确定各库存组织的物料主组织
确定各库存组织的物料主组织
通过以下 SQL 语句,查到组织对应的主组织:
select a.organization_id ,a.organization_code,a.master_organization_id, b.organization_code

from mtl_parameters a, org_organization_definitions b
where a.master_organization_id = b.organization_id
order by a.organization_code;
组织 ID

组织代码

主组织 ID

主组织代码

281

TC

281

TC

321

TCD

281

TC

282

TM1

281

TC

简单的物料导入
1) 定义物料单位
[N]库存:设置:单位:单位
定义一个数量单位“个”,将做为导入物料的主要单位。

4 / 20

Oracle 完全测试记录 物料接口导入

吴若童

2) 清除接口数据
[SQL]每次导入前通过 TRUNCATE 命令,在导入前将接口中的数据清理干净
TRUNCATE TABLE INV.MTL_SYSTEM_ITEMS_INTERFACE;
TRUNCATE TABLE INV.MTL_INTERFACE_ERRORS;
TRUNCATE TABLE INV.MTL_ITEM_REVISIONS_INTERFACE;
TRUNCATE TABLE INV.MTL_ITEM_CATEGORIES_INTERFACE;

2) 将物料的主组织数据写入接口
[SQL]插入物料编码“T_ITEM_003”,说明“测试物料导入”,到主组织 TC(ID 为 281)
insert into mtl_system_items_interface

(process_flag,set_process_id,transaction_type,organization_id,segment1,description,
primary_uom_code)
values

(1,1,'CREATE',281,'T_ITEM_003', '测试物料导入', '个');
注意:
注意:不要直接执行以上代码,请将 organization_id 修改为你当前测试环境中的实际值。
注意以下值的意义 

process_flag=1,系统只处理此值为 1 的行。实际应用中可以在导入后写程序将此值改
为其实值,防止重复导入。 

set_process_id=1,系统没有值要求。在实际应用中可以分组编号,实现分批导入。 

Transaction_type=’CREATE’,表示新建物料。如果要更新物料,此值为’UPDATE’

3) 将物料的其它
将物料的其它组织数据写入接口
其它组织数据写入接口
5 / 20

Oracle 完全测试记录 物料接口导入

吴若童

[SQL]将刚才的物料,分配到组织 TM1(ID 为 282)
insert into mtl_system_items_interface

(process_flag,set_process_id,transaction_type,organization_id,segment1,description,
primary_uom_code)
values

(1,1,'CREATE',282,'T_ITEM_003', '测试物料导入', '个');
注意:
注意:不要直接执行以上代码,请将 organization_id 修改为你当前测试环境中的实际值。

4) 查看接口数据
[SQL]通过以下命令,确保上两步正确插入:
Select * from mtl_system_items_interface

5) 确认提交
[SQL]完成后执行 commit;

6) 执行物料导入
[M]查看:请求:导入物料
导入前要求选择库存组织,可选择在主组织 TC 上提交导入请求。

注意:
注意:本请求运行完后,可能出现黄色的警告,即使物料已经正确的导入。是否导入成
功请再由下一步验证。

6 / 20

Oracle 完全测试记录 物料接口导入

吴若童

7) 确认导入后的结果
确认导入后的结果
[SQL]查看物料接口的数据,发现原来的两行已经消失。
[N]库存:物料:主组织物料
查到刚才的物料编码 T_ITEM_003

可以看到编码为 T_ITEM_003,名字为测试物料导入的物料已经存在,并分配在 TC,TM1

通过物料模板导入物料
1) 定义物料状态代码
[N] 库存:设置:物料:状态代码
新建一个状态“可采购销售”,启用订单、开票、采购、库存有关的属性控制。

7 / 20

Oracle 完全测试记录 物料接口导入

吴若童

2) 建立物料模板
[N] 库存:设置:物料:模板
新建一个模板“经销商品_含批号效期”

设置以下属性:
主要

User Item Type

经销商品(按实际的任选)

主要

Item Status

可采购销售

库存

Inventory Item

库存

Stockable

8 / 20

Oracle 完全测试记录 物料接口导入

吴若童

库存

Transactable

库存

Lot Control

全部批次控制

库存

Starting Lot Number

000001

库存

Starting Lot Prefix

L

库存

Lot Expiration

自定义到期日

成本

Costing Enabled

成本

Inventory Asset Value

采购

Purchased

采购

Purchasable

采购

Taxable

接收

Receipt Routing

直接交货

订单管理

Customer Ordered

订单管理

Customer Orders Enabled

订单管理

Internal Ordered

订单管理

Internal Orders Enabled

订单管理

Shippable

订单管理

OE Transactable

开票

Invoiceable Item

开票

Invoice Enabled

3) 清除接口数据
[SQL]每次导入前通过 TRUNCATE 命令,在导入前将接口中的数据清理干净
TRUNCATE TABLE INV.MTL_SYSTEM_ITEMS_INTERFACE;
TRUNCATE TABLE INV.MTL_INTERFACE_ERRORS;
TRUNCATE TABLE INV.MTL_ITEM_REVISIONS_INTERFACE;
TRUNCATE TABLE INV.MTL_ITEM_CATEGORIES_INTERFACE;

4) 将物料的主组织数据写入接口
[SQL]插入物料编码“T_ITEM_004”,说明“测试经销商品导入”,到主组织 TC(ID 为 281)。
物料的模板(TEMPLATE_NAME)为'经销商品_含批号效期'
9 / 20

Oracle 完全测试记录 物料接口导入

吴若童

insert into mtl_system_items_interface

(process_flag,set_process_id,transaction_type,organization_id,segment1,description,
primary_uom_code, TEMPLATE_NAME)
values

(1,1,'CREATE',281,'T_ITEM_004', '测试经销商品导入', '个','经销商品_含批号效期');

5) 查看接口数据
[SQL]通过以下命令,确保上两步正确插入:
Select * from mtl_system_items_interface

6) 确认提交
[SQL]完成后执行 commit;

7) 执行物料导入
[M]查看:请求:导入物料
导入前要求选择库存组织,可选择在主组织 TC 上提交导入请求。

8) 确认导入后的结果
[SQL]查看物料接口的数据,发现原来的两行已经消失。
[N]库存:物料:主组织物料
查到刚才的物料编码 T_ITEM_003

10 / 20

Oracle 完全测试记录 物料接口导入

吴若童

可以看到编码为 T_ITEM_004,物料状态等属性已经按模板中的值设置。

导入物料成本
本测试在之前的测试 2 通过物料模板导入基础上完成。需要已经存在物料 T_ITEM_004。请

确定物料属性中启用了成本计算。
确定物料属性中启用了成本计算。
将物料 T_ITEM_003 设置上物料成本 15 元。
物料的成本新建可以将成本的类型、子要素名称、成本值写入 mtl_system_items_interface
完成。本例演示的是另一种方法,通过物料的成本接口表来完成。
注意:
注意:只能通过物料新加入成本,不可更新成本。
主要有以下成本接口表:
Only item cost:cst_item_cst_dtls_interface
Only resource costs:cst_resource_costs_interface
Only overhead rates:cst_res_overheads_interface , cst_dept_overheads_interface

1) 定义成本子要素
[N]库存:设置:成本:子要素:物料
定义一个成本子要素,名称为“Material”,基于物料。

11 / 20

Oracle 完全测试记录 物料接口导入

吴若童

2) 查看成本要素代码
查看成本要素代码
[SQL]通过以下代码,查看到已经有的成本类型
select cost_type_id,cost_type,description from CST_COST_TYPES;
目前查询到的值如下:
cost_type_id

cost_type

description

1

Frozen

Frozen Standard Cost Type

2

Average

Average Cost Type

3

Pending

Pending Standard Cost Type

5

FIFO

FIFO Cost Type

6

LIFO

LIFO Cost Type

7

CTO

Simulation cost type used by CTO's autocreate configuration process

3) 查看成本子
查看成本子要素代码
[SQL]通过以下代码,查看到已经有的成本子要素类型,281 为主组织的代码
select resource_code,description,cost_element_id,cost_code_type
from bom_resources where organization_id = 281
目前查询到的值如下:
resource_code

description

Material

cost_element_id

cost_code_type

1

1

4) 查看物料编码
[SQL]通过以下语句,找到物料对应的 ID
12 / 20

Oracle 完全测试记录 物料接口导入

吴若童

select msib.inventory_item_id,msib.segment1,msib.description from mtl_system_items_b msib
where msib.segment1='&itemnum';

查到到物料 T_ITEM_004 的 ID 为“66246”

5) 清除接口数据
[SQL]每次导入前通过 TRUNCATE 命令,在导入前将接口中的数据清理干净
TRUNCATE TABLE BOM.CST_ITEM_CST_DTLS_INTERFACE;

6) 将物料成本
将物料成本数据写入接口
成本数据写入接口
[SQL]插入物料编码“T_ITEM_004”,成本类型 Pending,要素 Material,子要素 Material,成
本为 15 元

INSERT INTO CST_ITEM_CST_DTLS_INTERFACE

(Inventory_item_id,ORGANIZATION_ID,COST_TYPE,RESOURCE_CODE,USAGE_RATE_OR_AMOUN
T,COST_ELEMENT_ID,PROCESS_FLAG)

VALUES (66246,281,'Pending','Material',15,1,1);
经过测试,只能试用 Inventory_item_id 不可使用物料编码。

7) 确认提交
[SQL]完成后执行 commit;

8) 执行物料导入
[M]查看:请求:成本导入流程
导入前要求选择库存组织,可选择在主组织 TC 上提交导入请求。
提交请求时可以将删除成功行设置为“是”

9) 确认导入后的结果
[N]库存:物料:主组织物料
查到刚才的物料编码 T_ITEM_003
13 / 20

Oracle 完全测试记录 物料接口导入

吴若童

可以看到编码为 T_ITEM_004,菜单[M]工具:物料成本。

导入物料及它的版本
1) 确定物料的初始版本
库存:设置:组织:参数
查看到当前主组织下,物料的起始版本编号。(本例为 0)

14 / 20

Oracle 完全测试记录 物料接口导入

吴若童

2) 清除接口数据
清除接口数据
[SQL]每次导入前通过 TRUNCATE 命令,在导入前将接口中的数据清理干净
TRUNCATE TABLE INV.MTL_SYSTEM_ITEMS_INTERFACE;
TRUNCATE TABLE INV.MTL_INTERFACE_ERRORS;
TRUNCATE TABLE INV.MTL_ITEM_REVISIONS_INTERFACE;
TRUNCATE TABLE INV.MTL_ITEM_CATEGORIES_INTERFACE;

3) 将物料的主组织数据写入接口
[SQL]插入物料编码“T_ITEM_010”,说明“测试有版本的物料导入”,到主组织 TC(ID 为 281)。
insert into mtl_system_items_interface

(process_flag,set_process_id,transaction_type,organization_id,segment1,description,
primary_uom_code)
values

(1,1,'CREATE',281,'T_ITEM_010', '测试有版本的商品导入', '个');

4) 将物料版本
将物料版本数据写
版本数据写入接口
数据写入接口
[SQL]两个版本,版本“A”有效期为当天,版本“B”有效期为当天到 2100 年 10 月 10 日。
将步骤一查看到的初始版本 0 插入到第一行。
insert into MTL_ITEM_REVISIONS_INTERFACE

(item_number,revision, revision_label,implementation_date, effectivity_date, process_flag,
organization_id ,set_process_id, transaction_type)
values

('T_ITEM_010','0','A',sysdate,sysdate,1,281,1,'CREATE');
--插入另一版本
15 / 20

Oracle 完全测试记录 物料接口导入

吴若童

insert into MTL_ITEM_REVISIONS_INTERFACE

(item_number,revision, revision_label,implementation_date, effectivity_date, process_flag,
organization_id ,set_process_id, transaction_type)
Values

('T_ITEM_010','1','B',sysdate+.0003472, to_date('2100-10-10','yyyy-mm-dd'),1,281,1,'CREATE');

5) 确认提交
[SQL]完成后执行 commit;

6) 执行物料导入
[M]查看:请求:导入物料
导入前要求选择库存组织,可选择在主组织 TC 上提交导入请求。

注意:
注意:一般情况下,如果一行导入失败,所有都会不导入。

7) 确认导入后的结果
[SQL]查看物料接口的数据,发现原来的两行已经消失。
[N]库存:物料:主组织物料
查到刚才的物料编码 T_ITEM_010

16 / 20

Oracle 完全测试记录 物料接口导入

吴若童

可以看到编码为 T_ITEM_010,有两个版本。
但测试中发现实施日期并没有正确的导入,原因不明。

导入物料类别
注意:
注意:本例在测试 1“简单的物料导入”基础上完成。
为测试 1 新建的物料 T_ITEM_003,分配一个产地分类,类别为“国产”

1) 定义物料类别
[N] 库存:设置:物料:类别:类别集
详细的定义过程略,定义一个“产地分类”的类别集,有两个类别“A 国产”、“B 进口”

17 / 20

Oracle 完全测试记录 物料接口导入

吴若童

2) 取得物料类别编码
[N] 通过以下代码,查到当前定义的物料类别集
select category_set_id,category_set_name,description,structure_name,structure_id

from mtl_category_sets_v
查看到的结果如下:
category_set_id

category_set_name

description

structure_name

structure_id

1100000028

产地分类

产地分类

产地分类

50309

[N] 通过以下代码,查到当前定义的物料类别明细
Select

mcsv.CATEGORY_SET_ID,mcsv.CATEGORY_SET_NAME,

mcv.DESCRIPTION

mcv.CATEGORY_ID,

from mtl_categories_v mcv, mtl_category_sets_v mcsv

where mcv.STRUCTURE_ID=mcsv.STRUCTURE_ID and mcsv.CATEGORY_SET_ID='1100000028'
注意:请修改对应的
CATEGORY_SET_ID
注意
CATEGORY_SET_ID

CATEGORY_SET_NAME

CATEGORY_ID

DESCRIPTION

1100000028

产地分类

313

缺省

1100000028

产地分类

314

A 国产

1100000028

产地分类

315

B 进口

3) 清除接口数据
18 / 20

Oracle 完全测试记录 物料接口导入

吴若童

[SQL]每次导入前通过 TRUNCATE 命令,在导入前将接口中的数据清理干净
TRUNCATE TABLE INV.MTL_ITEM_CATEGORIES_INTERFACE;

4) 将物料类别
将物料类别据写入接口
类别据写入接口
[SQL]插入物料编码“T_ITEM_003”,产地分类:国产
insert into MTL_ITEM_CATEGORIES_INTERFACE

(item_number,category_set_id, category_id,process_flag,
transaction_type)

organization_id , set_process_id,

values ('T_ITEM_003',1100000028,314,1,281,1,'CREATE');

5) 确认提交
[SQL]完成后执行 commit;

6) 执行物料类别导入
执行物料类别导入
[M]查看:请求:物料类别分配开放接口
第 4 步录入的 set_process_id 为 1,在提交请求时录入

7) 确认导入后的结果
[SQL]查看物料接口的数据,发现原来的两行已经消失。
[N]库存:物料:主组织物料
查到测试 1 建立的物料编码 T_ITEM_003,并查看其分类

19 / 20

Oracle 完全测试记录 物料接口导入

吴若童

20 / 20

Sign up to vote on this title
UsefulNot useful