EBS版本:11i
今天做了一外围接口,需要用到替代接收,以前没做过,现研究了下。
1、设置物料可替代接收属性:
职责:库存超级用户
菜单:物料-》主组织物料-》接收-》允许替代接收:“是”
此处对应 mtl_system_items_b.allow_substitute_receipts_flag 字段,存储为'Y'/'N',默认空为不允许替代接收。
2、复制一个物料用于测试:
新建一个物料301000010000010,输入物料描述后,工具菜单-》复制自。输入要复制的物料编码,即30100001000001,完成即可。 然后将此物料分配给某个组织。
3、维护一个替代接收关系:
菜单:物料-》产品关系
在弹出的快捷窗口中选择“新建”,起始物料输入源物料,终止物料输入新建的物料,类型选择“替代”,保存。
4、创建采购订单并审批:
职责:采购超级用户
菜单:采购订单-》采购订单
采购物料录入源物料30100001000001,数量100。
在发运-》接收控制中,选择“允许替代接收”并选择接收方式为“直接交货”。
发运组织选择给新物料分配的那个组织。
依次填写发运、分配信息,保存并审批。
订单编号:810007928
5、接收:
职责:采购超级用户
菜单:接收-》接收
选择发运填写的组织,输入订单编号:810007928并查找,弹出窗口中选新建接收,关闭此小窗口。
在行标签页可以看到默认显示物料是订单物料,可以在此字段上选择,即可看到刚维护的替代接收的物料。
该行信息录入完毕后,勾选此行前的复选框,保存即可。
6、查询接收事务处理:
稍等几十秒,等待接收事务处理完成后即可查询是否替代接收成功。
职责:采购超级用户
菜单:接收-》接收事务处理汇总
查询界面输入采购订单编号:810007928, 亦可在物料栏位输入替代接收的物料编码,查找。
选择查出的记录,点击事务处理按钮。
可以看到接收物料是新建的替代接收物料,成功了!
相关SQL:
1、物料是否允许替代接收:
SELECT Nvl(Msi.Allow_Substitute_Receipts_Flag, 'N')
FROM Mtl_System_Items_b Msi
WHERE Msi.Inventory_Item_Id = Pi_Item_Id
AND Msi.Organization_Id = Pi_Organization_Id
AND Inventory_Item_Status_Code IN ('有效', 'Active')
AND Nvl(Enabled_Flag, 'N') = 'Y'
AND Nvl(Start_Date_Active, Trunc(Pi_Transaction_Date)) <=
Trunc(Pi_Transaction_Date)
AND Nvl(End_Date_Active, Trunc(Pi_Transaction_Date) + 1) >
Trunc(Pi_Transaction_Date);
2、订单发运行是否允许替代接收
SELECT Nvl(Plla.Allow_Substitute_Receipts_Flag, 'N')
FROM Po_Headers_All Pha,
Po_Lines_All Pla,
Po_Distributions_All Pda,
Po_Line_Locations_All Plla
WHERE 1 = 1
AND Pda.Po_Distribution_Id = Pi_Distribution_Id
AND Pda.Line_Location_Id = Plla.Line_Location_Id
AND Pda.Po_Header_Id = Pha.Po_Header_Id
AND Pla.Po_Header_Id = Pha.Po_Header_Id
AND Pla.Po_Line_Id = Pda.Po_Line_Id
AND Pha.Po_Header_Id = Pi_Header_Id
AND Nvl(Plla.Cancel_Flag, 'N') <> 'Y'
AND Nvl(Plla.Closed_Code, 'OPEN') NOT IN
('CLOSED', 'CLOSED FOR RECEIVING', 'FINALLY CLOSED')
AND Nvl(Plla.Approved_Flag, 'N') = 'Y';
3、供应商是否允许替代接收
SELECT Nvl(Pv.Allow_Substitute_Receipts_Flag, 'N')
FROM Po_Vendors Pv
WHERE Vendor_Id = Vn_Vendor_Id;
4、是否存在产品关系
SELECT COUNT(1)
FROM Mtl_Related_Items_All_v Mri
WHERE 1 = 1
AND Mri.Inventory_Item_Id = Vn_Item_Id
AND Mri.Related_Item_Id = Vn_Substitute_Item_Id
AND Mri.Relationship_Type_Id = 2
AND Mri.Reciprocal_Flag = 'Y'
AND SYSDATE BETWEEN Nvl(Mri.Start_Date, SYSDATE) AND
Nvl(Mri.End_Date, SYSDATE);
接口程序:
相比普通物料的采购接收,在插入RTI(RCV_TRANSACTION_INTERFACE)时,替代接收需注意以下字段。
1、Inspection_Status_Code
替代接收:'NOT INSPECTED'
普通接收:null。
2、Substitute_Unordered_Code
替代接收:'SUBSTITUTE'
普通接收:null
3、Substitute_Item_Id
替代接收:替代接收物料ID
普通接收:null
另,退货时,RTI中所填写的item_id为接收物料的ID,并非订单物料ID。
附:接口程序样例及测试脚本。
转载于:https://blog.51cto.com/baser/1341364