详解EBS接口开发之库存事务处理-物料批次导入
库存事务处理-物料批次导入
--系统批次表
SELECT * FROM MTL_LOT_NUMBERS T;
--API创建批次
inv_lot_api_pub.create_inv_lot(x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
x_row_id => l_row_id,
x_lot_rec => x_mtl_lot_numbers,
p_lot_rec => l_mtl_lot_numbers,
p_source => l_source,
p_api_version => l_api_version,
p_init_msg_list => l_init_msg_list,
p_commit => l_commit,
p_validation_level => l_validation_level,
p_origin_txn_id => l_origin_txn_id);
--API更新批次
inv_lot_api_pub.update_inv_lot(
x_return_status OUT NOCOPY VARCHAR2
, x_msg_count OUT NOCOPY NUMBER
, x_msg_data OUT NOCOPY VARCHAR2
, x_lot_rec OUT NOCOPY MTL_LOT_NUMBERS%ROWTYPE
, p_lot_rec IN MTL_LOT_NUMBERS%ROWTYPE
, p_source IN NUMBER
, p_api_version IN NUMBER
, p_init_msg_list IN VARCHAR2 := fnd_api.g_false
, p_commit IN VARCHAR2 := fnd_api.g_false); --验证批次唯一性
inv_lot_api_pub.validate_unique_lot(
p_org_id IN NUMBER
, p_inventory_item_id IN NUMBER
, p_lot_uniqueness IN NUMBER
, p_auto_lot_number IN VARCHAR2
, p_check_same_item IN VARCHAR2
, x_is_unique OUT NOCOPY VARCHAR2
); --物料批次数量验证
-----------------------------------------------------------------------
-- Name : validate_quantities
-- Desc : This procedure is used to validate transaction quantity2
--
-- I/P Params :
-- All the relevant transaction details :
-- - organization id
-- - item_id
-- - lot, revision, subinventory
-- - transaction quantities
-- O/P Params :
-- x_rerturn_status.
-- RETURN VALUE :
-- TRUE : IF the transaction is valid regarding Quantity2 and lot indivisible
-- FALSE : IF the transaction is NOT valid regarding Quantity2 and lot indivisible
--
-----------------------------------------------------------------------
inv_lot_api_pub.validate_quantities(
p_api_version IN NUMBER
, p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
, p_transaction_type_id IN NUMBER
, p_organization_id IN NUMBER
, p_inventory_item_id IN NUMBER
, p_revision IN VARCHAR2
, p_subinventory_code IN VARCHAR2
, p_locator_id IN NUMBER
, p_lot_number IN VARCHAR2
, p_transaction_quantity IN OUT NOCOPY NUMBER
, p_transaction_uom_code IN VARCHAR2
, p_primary_quantity IN OUT NOCOPY NUMBER
, p_primary_uom_code OUT NOCOPY VARCHAR2
, p_secondary_quantity IN OUT NOCOPY NUMBER
, p_secondary_uom_code IN OUT NOCOPY VARCHAR2
, x_return_status OUT NOCOPY VARCHAR2
, x_msg_count OUT NOCOPY NUMBER
, x_msg_data OUT NOCOPY VARCHAR2); --简单参考例子
/**==================================================
Procedure Name :
create_inv_lot
Description:
This procedure is concurrent entry, perform:
库存事务处理批号生成 api
Argument:
p_inventory_item_id 库存物料id,
p_organization_id 组织id,
p_lot_number 批号:
History:
1.00 2013-10-29 cxy Creation
==================================================*/
PROCEDURE create_inv_lot(p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,
p_commit IN VARCHAR2 DEFAULT fnd_api.g_false,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_inventory_item_id IN NUMBER,
p_organization_id IN NUMBER,
p_lot_number VARCHAR2) IS
l_api_name CONSTANT VARCHAR2(30) := 'create_inv_lot'; l_count NUMBER;
x_mtl_lot_numbers mtl_lot_numbers%ROWTYPE;
l_mtl_lot_numbers mtl_lot_numbers%ROWTYPE;
/* Defined new variables for overloaded API call */ l_api_version NUMBER := 1.0;
l_init_msg_list VARCHAR2(100) := fnd_api.g_false; -- bug 7513308;
l_commit VARCHAR2(100) := fnd_api.g_false;
l_validation_level NUMBER := fnd_api.g_valid_level_full;
l_origin_txn_id NUMBER := NULL;
l_source NUMBER := 2;
l_return_status VARCHAR2(1);
l_msg_data VARCHAR2(3000);
l_msg_count NUMBER;
l_row_id ROWID; BEGIN
SAVEPOINT inv_lot_1;
-- start activity to create savepoint, check compatibility
-- and initialize message list, include debug message hint to enter api
SELECT COUNT(1)
INTO l_count
FROM cux_inv_lot_number
WHERE lot_number = p_lot_number; IF l_count = 0 THEN
fnd_message.set_name('INV',
'在系统中不存在此批号:CUX_INV_LOT_NUMBER.lot_number');
fnd_message.set_token('LOT_NUMBER', to_char(p_lot_number));
fnd_msg_pub.add;
RAISE fnd_api.g_exc_error;
END IF; FOR rec_inv_lot IN cur_inv_lot LOOP l_mtl_lot_numbers.inventory_item_id := p_inventory_item_id;
l_mtl_lot_numbers.organization_id := p_organization_id;
l_mtl_lot_numbers.lot_number := p_lot_number;
l_mtl_lot_numbers.last_update_date := SYSDATE;
l_mtl_lot_numbers.last_updated_by := g_user_id;
l_mtl_lot_numbers.creation_date := rec_inv_lot.lot_date;
l_mtl_lot_numbers.created_by := rec_inv_lot.created_by;
l_mtl_lot_numbers.last_update_login := g_login_id;
l_mtl_lot_numbers.program_application_id := g_prog_appl_id;
l_mtl_lot_numbers.program_id := g_conc_program_id;
l_mtl_lot_numbers.program_update_date := SYSDATE;
l_mtl_lot_numbers.expiration_date := NULL;
l_mtl_lot_numbers.disable_flag := NULL;
l_mtl_lot_numbers.attribute_category := NULL;
l_mtl_lot_numbers.attribute1 := NULL;
l_mtl_lot_numbers.attribute2 := NULL;
l_mtl_lot_numbers.attribute3 := NULL;
l_mtl_lot_numbers.attribute4 := NULL;
l_mtl_lot_numbers.attribute5 := NULL;
l_mtl_lot_numbers.attribute6 := NULL;
l_mtl_lot_numbers.attribute7 := NULL;
l_mtl_lot_numbers.attribute8 := NULL;
l_mtl_lot_numbers.attribute9 := NULL;
l_mtl_lot_numbers.attribute10 := NULL;
l_mtl_lot_numbers.attribute11 := NULL;
l_mtl_lot_numbers.attribute12 := NULL;
l_mtl_lot_numbers.attribute13 := NULL;
l_mtl_lot_numbers.attribute14 := NULL;
l_mtl_lot_numbers.attribute15 := NULL;
l_mtl_lot_numbers.request_id := NULL;
l_mtl_lot_numbers.gen_object_id := NULL;
l_mtl_lot_numbers.description := NULL;
l_mtl_lot_numbers.vendor_name := NULL;
l_mtl_lot_numbers.supplier_lot_number := NULL;
l_mtl_lot_numbers.country_of_origin := NULL;
l_mtl_lot_numbers.grade_code := NULL;
l_mtl_lot_numbers.origination_date := NULL;
l_mtl_lot_numbers.date_code := NULL;
l_mtl_lot_numbers.status_id := NULL;
l_mtl_lot_numbers.change_date := NULL;
l_mtl_lot_numbers.age := NULL;
l_mtl_lot_numbers.retest_date := NULL;
l_mtl_lot_numbers.maturity_date := NULL;
l_mtl_lot_numbers.lot_attribute_category := NULL;
l_mtl_lot_numbers.item_size := NULL;
l_mtl_lot_numbers.color := NULL;
l_mtl_lot_numbers.volume := NULL;
l_mtl_lot_numbers.volume_uom := NULL;
l_mtl_lot_numbers.place_of_origin := NULL;
l_mtl_lot_numbers.kill_date := NULL;
l_mtl_lot_numbers.best_by_date := NULL;
l_mtl_lot_numbers.length := NULL;
l_mtl_lot_numbers.length_uom := NULL;
l_mtl_lot_numbers.recycled_content := NULL;
l_mtl_lot_numbers.thickness := NULL;
l_mtl_lot_numbers.thickness_uom := NULL;
l_mtl_lot_numbers.width := NULL;
l_mtl_lot_numbers.width_uom := NULL;
l_mtl_lot_numbers.curl_wrinkle_fold := NULL;
l_mtl_lot_numbers.c_attribute1 := NULL;
l_mtl_lot_numbers.c_attribute2 := NULL;
l_mtl_lot_numbers.c_attribute3 := NULL;
l_mtl_lot_numbers.c_attribute4 := NULL;
l_mtl_lot_numbers.c_attribute5 := NULL;
l_mtl_lot_numbers.c_attribute6 := NULL;
l_mtl_lot_numbers.c_attribute7 := NULL;
l_mtl_lot_numbers.c_attribute8 := NULL;
l_mtl_lot_numbers.c_attribute9 := NULL;
l_mtl_lot_numbers.c_attribute10 := NULL;
l_mtl_lot_numbers.c_attribute11 := NULL;
l_mtl_lot_numbers.c_attribute12 := NULL;
l_mtl_lot_numbers.c_attribute13 := NULL;
l_mtl_lot_numbers.c_attribute14 := NULL;
l_mtl_lot_numbers.c_attribute15 := NULL;
l_mtl_lot_numbers.c_attribute16 := NULL;
l_mtl_lot_numbers.c_attribute17 := NULL;
l_mtl_lot_numbers.c_attribute18 := NULL;
l_mtl_lot_numbers.c_attribute19 := NULL;
l_mtl_lot_numbers.c_attribute20 := NULL;
l_mtl_lot_numbers.c_attribute21 := NULL;
l_mtl_lot_numbers.c_attribute22 := NULL;
l_mtl_lot_numbers.c_attribute23 := NULL;
l_mtl_lot_numbers.c_attribute24 := NULL;
l_mtl_lot_numbers.c_attribute25 := NULL;
l_mtl_lot_numbers.c_attribute26 := NULL;
l_mtl_lot_numbers.c_attribute27 := NULL;
l_mtl_lot_numbers.c_attribute28 := NULL;
l_mtl_lot_numbers.c_attribute29 := NULL;
l_mtl_lot_numbers.c_attribute30 := NULL;
l_mtl_lot_numbers.d_attribute1 := NULL;
l_mtl_lot_numbers.d_attribute2 := NULL;
l_mtl_lot_numbers.d_attribute3 := NULL;
l_mtl_lot_numbers.d_attribute4 := NULL;
l_mtl_lot_numbers.d_attribute5 := NULL;
l_mtl_lot_numbers.d_attribute6 := NULL;
l_mtl_lot_numbers.d_attribute7 := NULL;
l_mtl_lot_numbers.d_attribute8 := NULL;
l_mtl_lot_numbers.d_attribute9 := NULL;
l_mtl_lot_numbers.d_attribute10 := NULL;
l_mtl_lot_numbers.d_attribute11 := NULL;
l_mtl_lot_numbers.d_attribute12 := NULL;
l_mtl_lot_numbers.d_attribute13 := NULL;
l_mtl_lot_numbers.d_attribute14 := NULL;
l_mtl_lot_numbers.d_attribute15 := NULL;
l_mtl_lot_numbers.d_attribute16 := NULL;
l_mtl_lot_numbers.d_attribute17 := NULL;
l_mtl_lot_numbers.d_attribute18 := NULL;
l_mtl_lot_numbers.d_attribute19 := NULL;
l_mtl_lot_numbers.d_attribute20 := NULL;
l_mtl_lot_numbers.n_attribute1 := NULL;
l_mtl_lot_numbers.n_attribute2 := NULL;
l_mtl_lot_numbers.n_attribute3 := NULL;
l_mtl_lot_numbers.n_attribute4 := NULL;
l_mtl_lot_numbers.n_attribute5 := NULL;
l_mtl_lot_numbers.n_attribute6 := NULL;
l_mtl_lot_numbers.n_attribute7 := NULL;
l_mtl_lot_numbers.n_attribute8 := NULL;
l_mtl_lot_numbers.n_attribute9 := NULL;
l_mtl_lot_numbers.n_attribute10 := NULL;
l_mtl_lot_numbers.n_attribute11 := NULL;
l_mtl_lot_numbers.n_attribute12 := NULL;
l_mtl_lot_numbers.n_attribute13 := NULL;
l_mtl_lot_numbers.n_attribute14 := NULL;
l_mtl_lot_numbers.n_attribute15 := NULL;
l_mtl_lot_numbers.n_attribute16 := NULL;
l_mtl_lot_numbers.n_attribute17 := NULL;
l_mtl_lot_numbers.n_attribute18 := NULL;
l_mtl_lot_numbers.n_attribute19 := NULL;
l_mtl_lot_numbers.n_attribute20 := NULL;
l_mtl_lot_numbers.n_attribute21 := NULL;
l_mtl_lot_numbers.n_attribute22 := NULL;
l_mtl_lot_numbers.n_attribute23 := NULL;
l_mtl_lot_numbers.n_attribute24 := NULL;
l_mtl_lot_numbers.n_attribute25 := NULL;
l_mtl_lot_numbers.n_attribute26 := NULL;
l_mtl_lot_numbers.n_attribute27 := NULL;
l_mtl_lot_numbers.n_attribute28 := NULL;
l_mtl_lot_numbers.n_attribute29 := NULL;
l_mtl_lot_numbers.n_attribute30 := NULL;
l_mtl_lot_numbers.vendor_id := NULL;
l_mtl_lot_numbers.territory_code := NULL;
l_mtl_lot_numbers.parent_lot_number := NULL;
l_mtl_lot_numbers.origination_type := NULL;
l_mtl_lot_numbers.availability_type := NULL;
l_mtl_lot_numbers.expiration_action_code := NULL;
l_mtl_lot_numbers.expiration_action_date := NULL;
l_mtl_lot_numbers.hold_date := NULL;
l_mtl_lot_numbers.inventory_atp_code := NULL;
l_mtl_lot_numbers.reservable_type := NULL;
l_mtl_lot_numbers.sampling_event_id := NULL; inv_lot_api_pub.create_inv_lot(x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
x_row_id => l_row_id,
x_lot_rec => x_mtl_lot_numbers,
p_lot_rec => l_mtl_lot_numbers,
p_source => l_source,
p_api_version => l_api_version,
p_init_msg_list => l_init_msg_list,
p_commit => l_commit,
p_validation_level => l_validation_level,
p_origin_txn_id => l_origin_txn_id); IF l_return_status = g_ret_sts_success THEN
UPDATE cux_inv_lot_number h
SET h.process_status = 'COMPLETE',
h.process_date = SYSDATE,
h.process_message = NULL,
h.row_version_number = h.row_version_number + 1,
h.last_updated_by = g_user_id,
h.last_update_date = SYSDATE,
h.last_update_login = g_login_id
WHERE h.id = rec_inv_lot.id;
ELSE
UPDATE cux_inv_lot_number h
SET h.process_status = 'ERROR',
h.process_date = SYSDATE,
h.process_message = '创建批次失败-' || l_msg_data,
h.row_version_number = h.row_version_number + 1,
h.last_updated_by = g_user_id,
h.last_update_date = SYSDATE,
h.last_update_login = g_login_id
WHERE h.id = rec_inv_lot.id;
IF l_return_status = g_ret_sts_error THEN RAISE g_exc_error;
ELSIF l_return_status = g_ret_sts_unexp_error THEN fnd_message.set_name('INV', 'INV_PROGRAM_ERROR');
fnd_message.set_token('PROG_NAME',
'inv_lot_api_pub.Create_Inv_lot');
fnd_msg_pub.add;
RAISE g_exc_unexpected_error;
END IF;
END IF;
END LOOP; -- API end body
-- end activity, include debug message hint to exit api EXCEPTION WHEN no_data_found THEN
x_return_status := g_ret_sts_error;
ROLLBACK TO inv_lot_1;
fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
p_count => x_msg_count,
p_data => x_msg_data);
IF (x_msg_count > 1) THEN
x_msg_data := fnd_msg_pub.get(x_msg_count, fnd_api.g_false);
END IF;
-- print_debug('In No data found Create_Inv_Lot ' || SQLERRM, 9);
WHEN g_exc_error THEN
x_return_status := g_ret_sts_error;
ROLLBACK TO inv_lot_1;
fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
p_count => x_msg_count,
p_data => x_msg_data);
IF (x_msg_count > 1) THEN
x_msg_data := fnd_msg_pub.get(x_msg_count, fnd_api.g_false);
END IF;
--print_debug('In g_exc_error Create_Inv_Lot ' || SQLERRM, 9);
WHEN g_exc_unexpected_error THEN
x_return_status := g_ret_sts_unexp_error;
ROLLBACK TO inv_lot_1;
fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
p_count => x_msg_count,
p_data => x_msg_data);
IF (x_msg_count > 1) THEN
x_msg_data := fnd_msg_pub.get(x_msg_count, fnd_api.g_false);
END IF;
WHEN OTHERS THEN
x_return_status := g_ret_sts_unexp_error;
ROLLBACK TO inv_lot_1;
fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
p_count => x_msg_count,
p_data => x_msg_data);
IF (x_msg_count > 1) THEN
x_msg_data := fnd_msg_pub.get(x_msg_count, fnd_api.g_false);
END IF; END create_inv_lot;
详解EBS接口开发之库存事务处理-物料批次导入的更多相关文章
- 详解EBS接口开发之库存事务处理批次更新
库存事务处理批次有时候出现导入错误需要更新可使用次程序更新,批次导入可参考博客 详解EBS接口开发之库存事务处理-物料批次导入 http://blog.csdn.net/cai_xingyun/art ...
- 详解EBS接口开发之库存事务处理采购接收--补充
除了可以用 详解EBS接口开发之库存事务处理采购接收的方法还可以用一下方法,不同之处在于带有批次和序列控制的时候实现方式不同 The script will load records into ...
- 详解EBS接口开发之库存事务处理采购接收和退货
(一)接收&退货常用标准表简介 1.1 常用标准表 如下表中列出了与采购接收&退货导入相关的表和说明: 表名 说明 其他信息 RCV_TRANSACTIONS 采购接收事务表 事务 ...
- 详解EBS接口开发之库事务处理带提前发运通知(ASN)采购接收入库-补充
A) Via ROI Create a ASN [ship,ship] for a quantity =3 on STANDARD PURCHASE ORDER Create via R ...
- 详解EBS接口开发之采购申请导入
更多内容可以参考我的博客 详解EBS接口开发之采购订单导入 http://blog.csdn.net/cai_xingyun/article/details/17114697 /*+++++++ ...
- 供应商API补充(详解EBS接口开发之供应商导入)(转)
原文地址 供应商导入的API补充(详解EBS接口开发之供应商导入) --供应商 --创建 AP_VENDOR_PUB_PKG.Create_Vendor ( p_api_version IN NUM ...
- 详解EBS接口开发之应收款处理
参考实例参考:杜春阳 R12应收模块收款API研究 (一)应收款常用标准表简介 1.1 常用标准表 如下表中列出了与应收款处理相关的表和说明: 表名 说明 其他信息 AR_BATCHES_ALL ...
- 详解EBS接口开发之销售订单挑库发放
1. 对销售订单的有效性验证 1)检查销售订单的行是否被完全传回客户化表 2)验证销售订单的关键字段 3)检查子库存是否启用了货位控制,如果启用了货位控制,没有生成货位, ...
- 详解EBS接口开发之应收INVOICE导入
(一)应收INVOICE常用标准表简介 1.1 常用标准表 如下表中列出了与应收INVOICE导入相关的表和说明: 表名 说明 其他信息 RA_BATCH_SOURCES_ALL AR事务处理来源 ...
随机推荐
- [LeetCode] Maximum Average Subarray I 子数组的最大平均值
Given an array consisting of n integers, find the contiguous subarray of given length k that has the ...
- [LeetCode] Detect Capital 检测大写格式
Given a word, you need to judge whether the usage of capitals in it is right or not. We define the u ...
- 实验吧_程序逻辑问题(代码审计)&上传绕过
一开始我先随便输入了几个账号名字进行测试,发现当输入的账号名为admin时会发生报错 经过测试果然是一个注入点 当拿到admin密码后发现根本没用,没办法另寻他路 审查元素时发现提示index.txt ...
- [HNOI 2001]求正整数
Description 对于任意输入的正整数n,请编程求出具有n个不同因子的最小正整数m.例如:n=4,则m=6,因为6有4个不同整数因子1,2,3,6:而且是最小的有4个因子的整数. Input n ...
- [HNOI2008]遥远的行星
题目描述 直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量,故直观上说每颗行 ...
- TopCoder SRM 566 Div 1 - Problem 1000 FencingPenguins
传送门:https://284914869.github.io/AEoj/566.html 题目简述: 平面上有中心在原点,一个点在(r,0)处的正n边形的n个顶点.平面上还有m个企鹅,每个企鹅有一个 ...
- bzoj 5287: [Hnoi2018]毒瘤
Description Solution \(dfs\) 出一棵生成树之后,多出来的边就都是反祖边了 把反祖边两个端点都拿出来,就会得到最多 \(k=2*(m-n+1)\) 个关键点 除了关键点以外的 ...
- C++Primer学习——类
我们在创建类的对象时,类不应该仅仅被声明,还应该被定义过,否则无法知道类占用了多少的内存 但是如果一个类的名字已经出现过就被认为是已经声明过了,所以允许包含自己的指针或者引用. 默认构造函数: 当类中 ...
- codeforces round #405 B. Bear and Friendship Condition
B. Bear and Friendship Condition time limit per test 1 second memory limit per test 256 megabytes in ...
- 【bzoj4570 scoi2016】妖怪
题目描述 邱老师是妖怪爱好者,他有n只妖怪,每只妖怪有攻击力atk和防御力dnf两种属性.邱老师立志成为妖怪大师,于是他从真新镇出发,踏上未知的旅途,见识不同的风景. 环境对妖怪的战斗力有很大影响,在 ...