库存事务处理-物料批次导入
--系统批次表
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接口开发之库存事务处理-物料批次导入的更多相关文章

  1. 详解EBS接口开发之库存事务处理批次更新

    库存事务处理批次有时候出现导入错误需要更新可使用次程序更新,批次导入可参考博客 详解EBS接口开发之库存事务处理-物料批次导入 http://blog.csdn.net/cai_xingyun/art ...

  2. 详解EBS接口开发之库存事务处理采购接收--补充

    除了可以用  详解EBS接口开发之库存事务处理采购接收的方法还可以用一下方法,不同之处在于带有批次和序列控制的时候实现方式不同 The script will load records into ...

  3. 详解EBS接口开发之库存事务处理采购接收和退货

    (一)接收&退货常用标准表简介 1.1   常用标准表 如下表中列出了与采购接收&退货导入相关的表和说明: 表名 说明 其他信息 RCV_TRANSACTIONS 采购接收事务表 事务 ...

  4. 详解EBS接口开发之库事务处理带提前发运通知(ASN)采购接收入库-补充

     A)   Via ROI Create a ASN [ship,ship]  for a quantity =3 on STANDARD PURCHASE ORDER Create  via R ...

  5. 详解EBS接口开发之采购申请导入

    更多内容可以参考我的博客  详解EBS接口开发之采购订单导入 http://blog.csdn.net/cai_xingyun/article/details/17114697 /*+++++++ ...

  6. 供应商API补充(详解EBS接口开发之供应商导入)(转)

    原文地址  供应商导入的API补充(详解EBS接口开发之供应商导入) --供应商 --创建 AP_VENDOR_PUB_PKG.Create_Vendor ( p_api_version IN NUM ...

  7. 详解EBS接口开发之应收款处理

    参考实例参考:杜春阳 R12应收模块收款API研究 (一)应收款常用标准表简介 1.1   常用标准表 如下表中列出了与应收款处理相关的表和说明: 表名 说明 其他信息 AR_BATCHES_ALL ...

  8. 详解EBS接口开发之销售订单挑库发放

     1. 对销售订单的有效性验证     1)检查销售订单的行是否被完全传回客户化表     2)验证销售订单的关键字段     3)检查子库存是否启用了货位控制,如果启用了货位控制,没有生成货位, ...

  9. 详解EBS接口开发之应收INVOICE导入

    (一)应收INVOICE常用标准表简介 1.1   常用标准表 如下表中列出了与应收INVOICE导入相关的表和说明: 表名 说明 其他信息 RA_BATCH_SOURCES_ALL AR事务处理来源 ...

随机推荐

  1. jQuery动画使用总结

    jQuery动画我用的比较多的仅仅只有show和hide,但是作为一个被我们大多数人所熟知的框架,相信他的动画功能还是比较多样的,这里做个小总结. 1.jQuery animate(),用于创建自定义 ...

  2. python day two,while

    一.运算符号 算数运算符:+ .-.*././/(取整除).%(去余).** 比较运算符:>.< .>=.<=.== 赋值运算符:=.+=.-=./=.%=.**= 逻辑预算符 ...

  3. 《C++ Primer》学习笔记:3.3.3其他vector操作

    <C++ Primer>(第五版)中计算vector对象中的索引这一小节中,举例要求计算各个分数段各有多少个成绩. 代码如下: #include <iostream> #inc ...

  4. [HNOI2002]彩票

    题目描述 某地发行一套彩票.彩票上写有1到M这M个自然数.彩民可以在这M个数中任意选取N个不同的数打圈.每个彩民只能买一张彩票,不同的彩民的彩票上的选择不同. 每次抽奖将抽出两个自然数X和Y.如果某人 ...

  5. C++多态?

    以前看资料只是理解多态是"一个接口,多种调用" ,但是没有理解其真正意思,不明白具体咋么实现. 不过看了这位博主的博客后对多态有了一些理解,链接:https://www.cnblo ...

  6. mooc-python语言语法week3-6

    week3 1.类型的概念:程序编程不允许有歧义的数据类型存在,所以对数据进行了划分,python语言类型分为,数字类型.字符串类型.元组类型.列表类型.文件类型.字典类型. i:数字类型: pyth ...

  7. MySQl之最全且必会的sql语句

    创建一个名称为mydb1的数据库,如果有mydb1数据库则直接使用,如果无则创建mydb1数据库 create database if not exists mydb1; create databas ...

  8. c语言第五次作业0

    ---恢复内容开始--- (一)改错题 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如 ...

  9. Oracle 导入、导出DMP(备份)文件

    首先说明dmp文件: Oracle备份文件是以dmp结尾,这种文件是oracle的逻辑备份文件,常用于数据库逻辑备份,数据库迁移等操作. 一.Oracle导入备份文件步骤:我用的是Oracle 11g ...

  10. 【vuejs深入二】vue源码解析之一,基础源码结构和htmlParse解析器

    写在前面 一个好的架构需要经过血与火的历练,一个好的工程师需要经过无数项目的摧残. vuejs是一个优秀的前端mvvm框架,它的易用性和渐进式的理念可以使每一个前端开发人员感到舒服,感到easy.它内 ...