inv mtl interface
DESCRIPTION
物料接口导入,包括物料的基本属性、物料的成本、物料的分类TRANSCRIPT
Oracle 完全测试记录 物料接口导入 吴若童
1 / 20
总述总述总述总述
物料导入物料导入物料导入物料导入接口的作用接口的作用接口的作用接口的作用????
可以从任意来源将物料导入到 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
Oracle 完全测试记录 物料接口导入 吴若童
2 / 20
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
Oracle 完全测试记录 物料接口导入 吴若童
3 / 20
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]
Oracle 完全测试记录 物料接口导入 吴若童
4 / 20
测试前的准备测试前的准备测试前的准备测试前的准备
测试环境测试环境测试环境测试环境
Oracle 应用产品 : 11.5.10.2 2007-6-23
组织架构:
以上库存组织在系统中均以设置完成,物料主组织均为 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]库存:设置:单位:单位
定义一个数量单位“个”,将做为导入物料的主要单位。
SOB: 101
OU: T_总部
SOB: 201
OU: T_工厂
INV: TC INV: TCD INV: TM1
Oracle 完全测试记录 物料接口导入 吴若童
5 / 20
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) 将物料的将物料的将物料的将物料的其它其它其它其它组织数据写入接口组织数据写入接口组织数据写入接口组织数据写入接口
Oracle 完全测试记录 物料接口导入 吴若童
6 / 20
[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 上提交导入请求。
注意注意注意注意::::本请求运行完后,可能出现黄色的警告,即使物料已经正确的导入。是否导入成
功请再由下一步验证。
Oracle 完全测试记录 物料接口导入 吴若童
7 / 20
7) 确认确认确认确认导入后的结果导入后的结果导入后的结果导入后的结果
[SQL]查看物料接口的数据,发现原来的两行已经消失。
[N]库存:物料:主组织物料
查到刚才的物料编码 T_ITEM_003
可以看到编码为 T_ITEM_003,名字为测试物料导入的物料已经存在,并分配在 TC,TM1
通过物料模板导入物料通过物料模板导入物料通过物料模板导入物料通过物料模板导入物料
1) 定义物料状态代码定义物料状态代码定义物料状态代码定义物料状态代码
[N] 库存:设置:物料:状态代码
新建一个状态“可采购销售”,启用订单、开票、采购、库存有关的属性控制。
Oracle 完全测试记录 物料接口导入 吴若童
8 / 20
2) 建立物料模板建立物料模板建立物料模板建立物料模板
[N] 库存:设置:物料:模板
新建一个模板“经销商品_含批号效期”
设置以下属性:
主要 User Item Type 经销商品(按实际的任选)
主要 Item Status 可采购销售
库存 Inventory Item 是
库存 Stockable 是
Oracle 完全测试记录 物料接口导入 吴若童
9 / 20
库存 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)为'经销商品_含批号效期'
Oracle 完全测试记录 物料接口导入 吴若童
10 / 20
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
Oracle 完全测试记录 物料接口导入 吴若童
11 / 20
可以看到编码为 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”,基于物料。
Oracle 完全测试记录 物料接口导入 吴若童
12 / 20
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
Oracle 完全测试记录 物料接口导入 吴若童
13 / 20
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_AMOUNT,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
Oracle 完全测试记录 物料接口导入 吴若童
14 / 20
可以看到编码为 T_ITEM_004,菜单[M]工具:物料成本。
导入物料及它的版本导入物料及它的版本导入物料及它的版本导入物料及它的版本
1) 确定物料的初始版本确定物料的初始版本确定物料的初始版本确定物料的初始版本
库存:设置:组织:参数
查看到当前主组织下,物料的起始版本编号。(本例为 0)
Oracle 完全测试记录 物料接口导入 吴若童
15 / 20
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');
--插入另一版本
Oracle 完全测试记录 物料接口导入 吴若童
16 / 20
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
Oracle 完全测试记录 物料接口导入 吴若童
17 / 20
可以看到编码为 T_ITEM_010,有两个版本。
但测试中发现实施日期并没有正确的导入,原因不明。
导入物料类别导入物料类别导入物料类别导入物料类别
注意注意注意注意::::本例在测试 1“简单的物料导入”基础上完成。
为测试 1 新建的物料 T_ITEM_003,分配一个产地分类,类别为“国产”
1) 定义物料类别定义物料类别定义物料类别定义物料类别
[N] 库存:设置:物料:类别:类别集
详细的定义过程略,定义一个“产地分类”的类别集,有两个类别“A国产”、“B 进口”
Oracle 完全测试记录 物料接口导入 吴若童
18 / 20
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) 清除接口数据清除接口数据清除接口数据清除接口数据
Oracle 完全测试记录 物料接口导入 吴若童
19 / 20
[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,并查看其分类
Oracle 完全测试记录 物料接口导入 吴若童
20 / 20