PROCEDURE process_rcv_online(p_api_version   IN NUMBER,
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_group_id IN NUMBER) IS
l_api_name CONSTANT VARCHAR2(30) := 'process_rcv_online';
l_api_version CONSTANT NUMBER := 1.0;
l_return_code NUMBER := 0; --** E_SUCCESS constant number := 0; -- e_code is success
--** E_TIMEOUT constant number := 1; -- e_code is timeout
--** E_NOMGR constant number := 2; -- e_code is no manager
--** E_OTHER constant number := 3; -- e_code is other l_timeout NUMBER := fnd_profile.VALUE('INV_RPC_TIMEOUT'); -- 1分钟
l_outcome VARCHAR2(200);
l_message VARCHAR2(200);
l_str VARCHAR2(4000); r_val1 VARCHAR2(200) := NULL;
r_val2 VARCHAR2(200) := NULL;
r_val3 VARCHAR2(200) := NULL;
r_val4 VARCHAR2(200) := NULL;
r_val5 VARCHAR2(200) := NULL;
r_val6 VARCHAR2(200) := NULL;
r_val7 VARCHAR2(200) := NULL;
r_val8 VARCHAR2(200) := NULL;
r_val9 VARCHAR2(200) := NULL;
r_val10 VARCHAR2(200) := NULL;
r_val11 VARCHAR2(200) := NULL;
r_val12 VARCHAR2(200) := NULL;
r_val13 VARCHAR2(200) := NULL;
r_val14 VARCHAR2(200) := NULL;
r_val15 VARCHAR2(200) := NULL;
r_val16 VARCHAR2(200) := NULL;
r_val17 VARCHAR2(200) := NULL;
r_val18 VARCHAR2(200) := NULL;
r_val19 VARCHAR2(200) := NULL;
r_val20 VARCHAR2(200) := NULL;
l_rec_count NUMBER;
BEGIN
-- start activity to savepoint, check compatibility
-- and initialize message list, include debug message hint to enter api
x_return_status := cux_api.start_activity(p_pkg_name => g_pkg_name,
p_api_name => l_api_name,
p_api_type => g_api_type,
p_init_msg_list => p_init_msg_list,
l_api_version => l_api_version,
p_api_version => p_api_version);
-- check if activity started successfully
IF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
RAISE fnd_api.g_exc_unexpected_error;
ELSIF (x_return_status = fnd_api.g_ret_sts_error) THEN
RAISE fnd_api.g_exc_error;
END IF;
IF l_debug = 'Y' THEN
cux_debug.log('p_group_id' || p_group_id);
END IF;
SELECT COUNT(*)
INTO l_rec_count
FROM rcv_transactions_interface t
WHERE t.group_id = p_group_id;
IF l_debug = 'Y' THEN
cux_debug.log('l_rec_count :' || l_rec_count);
END IF;
-- API body
IF l_timeout IS NULL THEN
l_timeout := 300;
END IF; l_return_code := fnd_transaction.synchronous(timeout => l_timeout,
outcome => l_outcome,
message => l_message,
application => 'PO',
program => 'RCVTPO',
arg_1 => 'ONLINE',
arg_2 => p_group_id); IF l_debug = 'Y' THEN
cux_debug.log('l_return_code =' || l_return_code);
cux_debug.log('l_outcome =' || l_outcome);
cux_debug.log('l_message =' || l_message);
END IF;
IF (l_return_code = 0 AND (l_outcome NOT IN ('WARNING', 'ERROR'))) THEN
-- 成功
IF l_debug = 'Y' THEN
cux_debug.log('fnd_transaction.synchronous success');
END IF;
delete_rcv_interface(p_group_id);
ELSIF l_return_code = 1 THEN
IF check_group_id(p_group_id) THEN
fnd_message.set_name('FND', 'TM-TIMEOUT');
l_str := fnd_message.get; IF l_debug = 'Y' THEN
cux_debug.log('l_str =' || l_str);
END IF;
-- fnd_message.clear;
fnd_message.set_name(application => 'FND', NAME => 'CONC-Error running standalone');
fnd_message.set_token(token => 'PROGRAM',
VALUE => 'Receiving Transaction Manager - RCVOLTM');
fnd_message.set_token(token => 'REQUEST', VALUE => p_group_id);
fnd_message.set_token(token => 'REASON', VALUE => l_str);
fnd_msg_pub.add;
RAISE fnd_api.g_exc_error;
END IF;
ELSIF l_return_code = 2 THEN
IF check_group_id(p_group_id) THEN
fnd_message.set_name('FND', 'TM-SVC LOCK HANDLE FAILED');
l_str := fnd_message.get;
fnd_message.clear; fnd_message.set_name(application => 'FND', NAME => 'CONC-Error running standalone');
fnd_message.set_token(token => 'PROGRAM',
VALUE => 'Receiving Transaction Manager - RCVOLTM');
fnd_message.set_token(token => 'REQUEST', VALUE => p_group_id);
fnd_message.set_token(token => 'REASON', VALUE => l_str);
fnd_msg_pub.add;
RAISE fnd_api.g_exc_error;
END IF;
ELSIF (l_return_code = 3 OR (l_outcome IN ('WARNING', 'ERROR'))) THEN
IF check_group_id(p_group_id) THEN
l_return_code := fnd_transaction.get_values(r_val1,
r_val2,
r_val3,
r_val4,
r_val5,
r_val6,
r_val7,
r_val8,
r_val9,
r_val10,
r_val11,
r_val12,
r_val13,
r_val14,
r_val15,
r_val16,
r_val17,
r_val18,
r_val19,
r_val20);
l_str := r_val1;
IF (r_val2 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val2;
END IF;
IF (r_val3 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val3;
END IF;
IF (r_val4 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val4;
END IF;
IF (r_val5 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val5;
END IF;
IF (r_val6 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val6;
END IF;
IF (r_val7 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val7;
END IF;
IF (r_val8 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val8;
END IF;
IF (r_val9 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val9;
END IF;
IF (r_val10 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val10;
END IF;
IF (r_val11 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val11;
END IF;
IF (r_val12 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val12;
END IF;
IF (r_val13 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val13;
END IF;
IF (r_val14 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val14;
END IF;
IF (r_val15 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val15;
END IF;
IF (r_val16 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val16;
END IF;
IF (r_val17 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val17;
END IF;
IF (r_val18 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val18;
END IF;
IF (r_val19 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val19;
END IF;
IF (r_val20 IS NOT NULL) THEN
l_str := l_str || chr(10) || r_val20;
END IF;
IF l_debug = 'Y' THEN
cux_debug.log('error or warnning ');
cux_debug.log('l_str =' || l_str);
END IF; SELECT COUNT(*) INTO l_rec_count FROM po_interface_errors t WHERE t.batch_id = p_group_id;
IF l_debug = 'Y' THEN
cux_debug.log('errors count :' || l_rec_count);
END IF;
cux_api.set_message('CUX', 'CUX_TXN_SHIP_RCV_UNEXP', 'MESSAGE', l_str);
RAISE fnd_api.g_exc_error;
END IF;
-- API end body
ELSE
l_str := fnd_message.get; IF l_debug = 'Y' THEN
cux_debug.log('l_str =' || l_str);
END IF;
cux_api.set_message('CUX', 'CUX_TXN_SHIP_RCV_UNEXP', 'MESSAGE', l_str);
RAISE fnd_api.g_exc_error;
END IF;
-- end activity, include debug message hint to exit api
cux_api.end_activity(p_pkg_name => g_pkg_name,
p_api_name => l_api_name,
p_commit => p_commit,
x_msg_count => x_msg_count,
x_msg_data => x_msg_data);
EXCEPTION
WHEN fnd_api.g_exc_error THEN
delete_rcv_interface(p_group_id);
x_return_status := cux_api.handle_exceptions(p_pkg_name => g_pkg_name,
p_api_name => l_api_name,
p_api_type => g_api_type,
p_exc_name => cux_api.g_exc_name_error,
x_msg_count => x_msg_count,
x_msg_data => x_msg_data);
WHEN fnd_api.g_exc_unexpected_error THEN
delete_rcv_interface(p_group_id);
x_return_status := cux_api.handle_exceptions(p_pkg_name => g_pkg_name,
p_api_name => l_api_name,
p_api_type => g_api_type,
p_exc_name => cux_api.g_exc_name_unexp,
x_msg_count => x_msg_count,
x_msg_data => x_msg_data);
WHEN OTHERS THEN
delete_rcv_interface(p_group_id);
x_return_status := cux_api.handle_exceptions(p_pkg_name => g_pkg_name,
p_api_name => l_api_name,
p_api_type => g_api_type,
p_exc_name => cux_api.g_exc_name_others,
x_msg_count => x_msg_count,
x_msg_data => x_msg_data);
END process_rcv_online;

详解EBS接口开发之采购接收&退货处理之关键API--(补充)的更多相关文章

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

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

  2. 详解EBS接口开发之采购订单导入

    采购订单常用标准表简介 1.1   常用标准表 如下表中列出了与采购订单导入相关的表和说明: 表名 说明 其他信息 po.po_headers_all 采购订单头 采购订单号,采购类型,供应商,地点, ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 51nod 1486 大大走格子(容斥原理)

    1486 大大走格子 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题   有一个h行w列的棋盘,里面有一些格子是不能走的,现在要 ...

  2. 2015 多校联赛 ——HDU5303(贪心)

    Delicious Apples Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

  3. [UOJ UR#16]破坏发射台

    来自FallDream的博客,未经允许,请勿转载,谢谢. 传送门 先考虑n是奇数的情况,很容易想到一个dp,f[i][0/1]表示转移到第i个数,第i个数是不是第一个数的方案数,然后用矩阵乘法优化一下 ...

  4. 【bzoj3173-最长上升子序列-一题两解】

    这道题不就是简单的DP吗,BZOJ在水我!不,你是错的. ·本题特点:       不断向不同位置插入数字(按数字1,2,3,4,5,6……),需要求出每一次插入后的最长上升子序列. ·分析      ...

  5. bzoj3561DZY Loves Math VI

    3561: DZY Loves Math VI Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 503  Solved: 333[Submit][Sta ...

  6. HWM、PCTFREE、PCTUSED

    什么是水线(High Water Mark)? HWM通常增长的幅度为一次5个数据块,原则上HWM只会增大,不会缩小,即使将表中的数据全部删除,HWM还是为原值,由于这个特点,使HWM很象一个水库的历 ...

  7. SpringCloud学习之Zuul统一异常处理及回退

    一.Filter中统一异常处理 其实在SpringCloud的Edgware SR2版本中对于ZuulFilter中的错误有统一的处理,但是在实际开发当中对于错误的响应方式,我想每个团队都有自己的处理 ...

  8. C语言第三次程序设计作业

    (一)改错题 计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数. 1)源程序(有错误的程序) #include <stdio.h> int main(v ...

  9. JS中怎样判断undefined(比较不错的方法)

    最近做项目碰到的问题.拿出来跟大家分享一下吧. 用servlet赋值给html页面文本框值后,用alert来弹出这个值.结果显示"undefined".所以我就自然的用这个值和字符 ...

  10. Spring的注解@Qualifier小结

    有以下接口: public interface EmployeeService { public EmployeeDto getEmployeeById(Long id); } 有两个实现类: @Se ...