You are on page 1of 20

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 cost_element_id cost_code_type

Material 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.CATEGORY_ID,


mcv.DESCRIPTION
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, organization_id , set_process_id,
transaction_type)
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

You might also like