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

20 篇文章 0 订阅
3 篇文章 0 订阅

摘自:https://blog.csdn.net/cai_xingyun/article/details/17884107 

 

  1. PROCEDURE process_rcv_online(p_api_version IN NUMBER,

  2. p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,

  3. p_commit IN VARCHAR2 DEFAULT fnd_api.g_false,

  4. x_return_status OUT NOCOPY VARCHAR2,

  5. x_msg_count OUT NOCOPY NUMBER,

  6. x_msg_data OUT NOCOPY VARCHAR2,

  7. p_group_id IN NUMBER) IS

  8. l_api_name CONSTANT VARCHAR2(30) := 'process_rcv_online';

  9. l_api_version CONSTANT NUMBER := 1.0;

  10. l_return_code NUMBER := 0;

  11.  
  12. --** E_SUCCESS constant number := 0; -- e_code is success

  13. --** E_TIMEOUT constant number := 1; -- e_code is timeout

  14. --** E_NOMGR constant number := 2; -- e_code is no manager

  15. --** E_OTHER constant number := 3; -- e_code is other

  16.  
  17. l_timeout NUMBER := fnd_profile.VALUE('INV_RPC_TIMEOUT'); -- 1分钟

  18. l_outcome VARCHAR2(200);

  19. l_message VARCHAR2(200);

  20. l_str VARCHAR2(4000);

  21.  
  22. r_val1 VARCHAR2(200) := NULL;

  23. r_val2 VARCHAR2(200) := NULL;

  24. r_val3 VARCHAR2(200) := NULL;

  25. r_val4 VARCHAR2(200) := NULL;

  26. r_val5 VARCHAR2(200) := NULL;

  27. r_val6 VARCHAR2(200) := NULL;

  28. r_val7 VARCHAR2(200) := NULL;

  29. r_val8 VARCHAR2(200) := NULL;

  30. r_val9 VARCHAR2(200) := NULL;

  31. r_val10 VARCHAR2(200) := NULL;

  32. r_val11 VARCHAR2(200) := NULL;

  33. r_val12 VARCHAR2(200) := NULL;

  34. r_val13 VARCHAR2(200) := NULL;

  35. r_val14 VARCHAR2(200) := NULL;

  36. r_val15 VARCHAR2(200) := NULL;

  37. r_val16 VARCHAR2(200) := NULL;

  38. r_val17 VARCHAR2(200) := NULL;

  39. r_val18 VARCHAR2(200) := NULL;

  40. r_val19 VARCHAR2(200) := NULL;

  41. r_val20 VARCHAR2(200) := NULL;

  42. l_rec_count NUMBER;

  43. BEGIN

  44. -- start activity to savepoint, check compatibility

  45. -- and initialize message list, include debug message hint to enter api

  46. x_return_status := cux_api.start_activity(p_pkg_name => g_pkg_name,

  47. p_api_name => l_api_name,

  48. p_api_type => g_api_type,

  49. p_init_msg_list => p_init_msg_list,

  50. l_api_version => l_api_version,

  51. p_api_version => p_api_version);

  52. -- check if activity started successfully

  53. IF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN

  54. RAISE fnd_api.g_exc_unexpected_error;

  55. ELSIF (x_return_status = fnd_api.g_ret_sts_error) THEN

  56. RAISE fnd_api.g_exc_error;

  57. END IF;

  58. IF l_debug = 'Y' THEN

  59. cux_debug.log('p_group_id' || p_group_id);

  60. END IF;

  61. SELECT COUNT(*)

  62. INTO l_rec_count

  63. FROM rcv_transactions_interface t

  64. WHERE t.group_id = p_group_id;

  65. IF l_debug = 'Y' THEN

  66. cux_debug.log('l_rec_count :' || l_rec_count);

  67. END IF;

  68. -- API body

  69. IF l_timeout IS NULL THEN

  70. l_timeout := 300;

  71. END IF;

  72.  
  73. l_return_code := fnd_transaction.synchronous(timeout => l_timeout,

  74. outcome => l_outcome,

  75. message => l_message,

  76. application => 'PO',

  77. program => 'RCVTPO',

  78. arg_1 => 'ONLINE',

  79. arg_2 => p_group_id);

  80.  
  81. IF l_debug = 'Y' THEN

  82. cux_debug.log('l_return_code =' || l_return_code);

  83. cux_debug.log('l_outcome =' || l_outcome);

  84. cux_debug.log('l_message =' || l_message);

  85. END IF;

  86. IF (l_return_code = 0 AND (l_outcome NOT IN ('WARNING', 'ERROR'))) THEN

  87. -- 成功

  88. IF l_debug = 'Y' THEN

  89. cux_debug.log('fnd_transaction.synchronous success');

  90. END IF;

  91. delete_rcv_interface(p_group_id);

  92. ELSIF l_return_code = 1 THEN

  93. IF check_group_id(p_group_id) THEN

  94. fnd_message.set_name('FND', 'TM-TIMEOUT');

  95. l_str := fnd_message.get;

  96.  
  97. IF l_debug = 'Y' THEN

  98. cux_debug.log('l_str =' || l_str);

  99. END IF;

  100. -- fnd_message.clear;

  101. fnd_message.set_name(application => 'FND', NAME => 'CONC-Error running standalone');

  102. fnd_message.set_token(token => 'PROGRAM',

  103. VALUE => 'Receiving Transaction Manager - RCVOLTM');

  104. fnd_message.set_token(token => 'REQUEST', VALUE => p_group_id);

  105. fnd_message.set_token(token => 'REASON', VALUE => l_str);

  106. fnd_msg_pub.add;

  107. RAISE fnd_api.g_exc_error;

  108. END IF;

  109. ELSIF l_return_code = 2 THEN

  110. IF check_group_id(p_group_id) THEN

  111. fnd_message.set_name('FND', 'TM-SVC LOCK HANDLE FAILED');

  112. l_str := fnd_message.get;

  113. fnd_message.clear;

  114.  
  115. fnd_message.set_name(application => 'FND', NAME => 'CONC-Error running standalone');

  116. fnd_message.set_token(token => 'PROGRAM',

  117. VALUE => 'Receiving Transaction Manager - RCVOLTM');

  118. fnd_message.set_token(token => 'REQUEST', VALUE => p_group_id);

  119. fnd_message.set_token(token => 'REASON', VALUE => l_str);

  120. fnd_msg_pub.add;

  121. RAISE fnd_api.g_exc_error;

  122. END IF;

  123. ELSIF (l_return_code = 3 OR (l_outcome IN ('WARNING', 'ERROR'))) THEN

  124. IF check_group_id(p_group_id) THEN

  125. l_return_code := fnd_transaction.get_values(r_val1,

  126. r_val2,

  127. r_val3,

  128. r_val4,

  129. r_val5,

  130. r_val6,

  131. r_val7,

  132. r_val8,

  133. r_val9,

  134. r_val10,

  135. r_val11,

  136. r_val12,

  137. r_val13,

  138. r_val14,

  139. r_val15,

  140. r_val16,

  141. r_val17,

  142. r_val18,

  143. r_val19,

  144. r_val20);

  145. l_str := r_val1;

  146. IF (r_val2 IS NOT NULL) THEN

  147. l_str := l_str || chr(10) || r_val2;

  148. END IF;

  149. IF (r_val3 IS NOT NULL) THEN

  150. l_str := l_str || chr(10) || r_val3;

  151. END IF;

  152. IF (r_val4 IS NOT NULL) THEN

  153. l_str := l_str || chr(10) || r_val4;

  154. END IF;

  155. IF (r_val5 IS NOT NULL) THEN

  156. l_str := l_str || chr(10) || r_val5;

  157. END IF;

  158. IF (r_val6 IS NOT NULL) THEN

  159. l_str := l_str || chr(10) || r_val6;

  160. END IF;

  161. IF (r_val7 IS NOT NULL) THEN

  162. l_str := l_str || chr(10) || r_val7;

  163. END IF;

  164. IF (r_val8 IS NOT NULL) THEN

  165. l_str := l_str || chr(10) || r_val8;

  166. END IF;

  167. IF (r_val9 IS NOT NULL) THEN

  168. l_str := l_str || chr(10) || r_val9;

  169. END IF;

  170. IF (r_val10 IS NOT NULL) THEN

  171. l_str := l_str || chr(10) || r_val10;

  172. END IF;

  173. IF (r_val11 IS NOT NULL) THEN

  174. l_str := l_str || chr(10) || r_val11;

  175. END IF;

  176. IF (r_val12 IS NOT NULL) THEN

  177. l_str := l_str || chr(10) || r_val12;

  178. END IF;

  179. IF (r_val13 IS NOT NULL) THEN

  180. l_str := l_str || chr(10) || r_val13;

  181. END IF;

  182. IF (r_val14 IS NOT NULL) THEN

  183. l_str := l_str || chr(10) || r_val14;

  184. END IF;

  185. IF (r_val15 IS NOT NULL) THEN

  186. l_str := l_str || chr(10) || r_val15;

  187. END IF;

  188. IF (r_val16 IS NOT NULL) THEN

  189. l_str := l_str || chr(10) || r_val16;

  190. END IF;

  191. IF (r_val17 IS NOT NULL) THEN

  192. l_str := l_str || chr(10) || r_val17;

  193. END IF;

  194. IF (r_val18 IS NOT NULL) THEN

  195. l_str := l_str || chr(10) || r_val18;

  196. END IF;

  197. IF (r_val19 IS NOT NULL) THEN

  198. l_str := l_str || chr(10) || r_val19;

  199. END IF;

  200. IF (r_val20 IS NOT NULL) THEN

  201. l_str := l_str || chr(10) || r_val20;

  202. END IF;

  203. IF l_debug = 'Y' THEN

  204. cux_debug.log('error or warnning ');

  205. cux_debug.log('l_str =' || l_str);

  206. END IF;

  207.  
  208. SELECT COUNT(*) INTO l_rec_count FROM po_interface_errors t WHERE t.batch_id = p_group_id;

  209. IF l_debug = 'Y' THEN

  210. cux_debug.log('errors count :' || l_rec_count);

  211. END IF;

  212. cux_api.set_message('CUX', 'CUX_TXN_SHIP_RCV_UNEXP', 'MESSAGE', l_str);

  213. RAISE fnd_api.g_exc_error;

  214. END IF;

  215. -- API end body

  216. ELSE

  217. l_str := fnd_message.get;

  218.  
  219. IF l_debug = 'Y' THEN

  220. cux_debug.log('l_str =' || l_str);

  221. END IF;

  222. cux_api.set_message('CUX', 'CUX_TXN_SHIP_RCV_UNEXP', 'MESSAGE', l_str);

  223. RAISE fnd_api.g_exc_error;

  224. END IF;

  225. -- end activity, include debug message hint to exit api

  226. cux_api.end_activity(p_pkg_name => g_pkg_name,

  227. p_api_name => l_api_name,

  228. p_commit => p_commit,

  229. x_msg_count => x_msg_count,

  230. x_msg_data => x_msg_data);

  231. EXCEPTION

  232. WHEN fnd_api.g_exc_error THEN

  233. delete_rcv_interface(p_group_id);

  234. x_return_status := cux_api.handle_exceptions(p_pkg_name => g_pkg_name,

  235. p_api_name => l_api_name,

  236. p_api_type => g_api_type,

  237. p_exc_name => cux_api.g_exc_name_error,

  238. x_msg_count => x_msg_count,

  239. x_msg_data => x_msg_data);

  240. WHEN fnd_api.g_exc_unexpected_error THEN

  241. delete_rcv_interface(p_group_id);

  242. x_return_status := cux_api.handle_exceptions(p_pkg_name => g_pkg_name,

  243. p_api_name => l_api_name,

  244. p_api_type => g_api_type,

  245. p_exc_name => cux_api.g_exc_name_unexp,

  246. x_msg_count => x_msg_count,

  247. x_msg_data => x_msg_data);

  248. WHEN OTHERS THEN

  249. delete_rcv_interface(p_group_id);

  250. x_return_status := cux_api.handle_exceptions(p_pkg_name => g_pkg_name,

  251. p_api_name => l_api_name,

  252. p_api_type => g_api_type,

  253. p_exc_name => cux_api.g_exc_name_others,

  254. x_msg_count => x_msg_count,

  255. x_msg_data => x_msg_data);

  256. END process_rcv_online;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值