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:
[email protected] 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