库存事务处理-物料批次导入
--系统批次表
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. 重拾Python(5):数据读取

    本文主要对Python如何读取数据进行总结梳理,涵盖从文本文件,尤其是excel文件(用于离线数据探索分析),以及结构化数据库(以Mysql为例)中读取数据等内容. 约定: import numpy ...

  2. bootStrap Table 如何使用

    最近在使用bootStrap Table 的表格功能有一些自己的理解写下来分享一下主要用的是一个bootStrapTable 和 jquery 的混合开发 具体怎样引入bootStrap Table ...

  3. 实验吧_登陆一下好吗(骚注入)&你真的会PHP吗?(代码审计)

    登陆一下好吗 首先看到两个输入框,分别对应账号密码,随手输个admin,admin进去,提交后发现有回显,既然题目说了过滤了一切,那就先看看过滤了些啥 经过一波测试,发现服务器过滤了union,sel ...

  4. 用Python浅析股票数据

    用Python浅析股票数据 本文将使用Python来可视化股票数据,比如绘制K线图,并且探究各项指标的含义和关系,最后使用移动平均线方法初探投资策略. 数据导入 这里将股票数据存储在stockData ...

  5. [自用]数论和组合计数类数学相关(定理&证明&板子)

    0 写在前面 本文受 NaVi_Awson 的启发,甚至一些地方直接引用,在此说明. 1 数论 1.0 gcd 1.0.0 gcd $gcd(a,b) = gcd(b,a\;mod\;b)$ 证明:设 ...

  6. ●BZOJ 3994 [SDOI2015]约数个数和

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3994 题解: 莫比乌斯反演 (先定义这样一个符号[x],如果x为true,则[x]=1,否则 ...

  7. poj 2653 线段与线段相交

    Pick-up sticks Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 11884   Accepted: 4499 D ...

  8. [BZOJ]1050 旅行comf(HAOI2006)

    图论一直是小C的弱项,相比其它题型,图论的花样通常会更多一点,套路也更难捉摸. Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权 ...

  9. 基于Spark环境对比Python和Scala语言利弊

    在数据挖掘中,Python和Scala语言都是极受欢迎的,本文总结两种语言在Spark环境各自特点. 本文翻译自  https://www.dezyre.com/article/Scala-vs-Py ...

  10. Server-U FTP与AD完美集成方案详解

    最近咱有个任务,那就是把公司的文件服务器.FTP服务器.邮件服务器进行迁移并作相应的整合.登陆后台查看了,公司目前正在使用的方案.FTP服务器使用的是Server-u FTP,验证方式选择的windo ...