90: p_is_srs_call => Nvl(p_is_srs_call, 'Y')
91: );
92:
93:
94: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
95: IF (l_return_status = fnd_api.g_ret_sts_error) THEN
96: RAISE fnd_api.g_exc_error;
97: ELSE
98: RAISE fnd_api.g_exc_unexpected_error;
91: );
92:
93:
94: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
95: IF (l_return_status = fnd_api.g_ret_sts_error) THEN
96: RAISE fnd_api.g_exc_error;
97: ELSE
98: RAISE fnd_api.g_exc_unexpected_error;
99: END IF;
92:
93:
94: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
95: IF (l_return_status = fnd_api.g_ret_sts_error) THEN
96: RAISE fnd_api.g_exc_error;
97: ELSE
98: RAISE fnd_api.g_exc_unexpected_error;
99: END IF;
100: ELSE
94: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
95: IF (l_return_status = fnd_api.g_ret_sts_error) THEN
96: RAISE fnd_api.g_exc_error;
97: ELSE
98: RAISE fnd_api.g_exc_unexpected_error;
99: END IF;
100: ELSE
101: IF (l_partial_success = 'Y') THEN
102: fnd_message.set_name('WMS', 'WMS_LPN_PROC_WARN');
101: IF (l_partial_success = 'Y') THEN
102: fnd_message.set_name('WMS', 'WMS_LPN_PROC_WARN');
103: fnd_msg_pub.add;
104: print_message();
105: l_msg := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
106: l_conc_status := fnd_concurrent.set_completion_status('WARNING',l_msg);
107: x_retcode := RETCODE_WARNING;
108: x_errorbuf := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
109: ELSE
104: print_message();
105: l_msg := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
106: l_conc_status := fnd_concurrent.set_completion_status('WARNING',l_msg);
107: x_retcode := RETCODE_WARNING;
108: x_errorbuf := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
109: ELSE
110: print_message();
111: l_conc_status := fnd_concurrent.set_completion_status('NORMAL','NORMAL');
112: x_retcode := RETCODE_SUCCESS;
115: END IF;
116:
117:
118: EXCEPTION
119: WHEN fnd_api.g_exc_error THEN
120:
121: print_message();
122: l_conc_status := fnd_concurrent.set_completion_status('ERROR','ERROR');
123: x_retcode := RETCODE_ERROR;
120:
121: print_message();
122: l_conc_status := fnd_concurrent.set_completion_status('ERROR','ERROR');
123: x_retcode := RETCODE_ERROR;
124: x_errorbuf := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
125:
126: WHEN fnd_api.g_exc_unexpected_error THEN
127:
128: print_message();
122: l_conc_status := fnd_concurrent.set_completion_status('ERROR','ERROR');
123: x_retcode := RETCODE_ERROR;
124: x_errorbuf := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
125:
126: WHEN fnd_api.g_exc_unexpected_error THEN
127:
128: print_message();
129: l_conc_status := fnd_concurrent.set_completion_status('ERROR','ERROR');
130: x_retcode := RETCODE_ERROR;
127:
128: print_message();
129: l_conc_status := fnd_concurrent.set_completion_status('ERROR','ERROR');
130: x_retcode := RETCODE_ERROR;
131: x_errorbuf := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
132:
133: WHEN OTHERS THEN
134:
135: print_message();
134:
135: print_message();
136: l_conc_status := fnd_concurrent.set_completion_status('ERROR','ERROR');
137: x_retcode := RETCODE_ERROR;
138: x_errorbuf := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
139:
140: END conc_pre_generate;
141:
142:
159:
160: l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
161: BEGIN
162:
163: x_return_status := FND_API.G_RET_STS_SUCCESS;
164: IF (l_debug = 1) THEN
165: print_debug('Entered start_pregenerate_program');
166: print_debug('Org:'||p_org_id);
167: print_debug('LPN:'||p_lpn_id);
177:
178: IF (NOT l_wms_install) THEN
179: fnd_message.set_name('WMS', 'WMS_NOT_INSTALLED');
180: fnd_msg_pub.add;
181: RAISE fnd_api.g_exc_error;
182: END IF;
183: */
184:
185: IF (p_org_id is null) THEN
184:
185: IF (p_org_id is null) THEN
186: fnd_message.set_name('INV', 'INV_ORG_REQUIRED');
187: fnd_msg_pub.add;
188: RAISE fnd_api.g_exc_error;
189: END IF;
190:
191: --Added for Bug 13789232
192: BEGIN
235: IF l_req_id = 0 THEN
236: IF (l_debug = 1) THEN
237: print_debug('error calling the conc. request');
238: END IF;
239: RAISE fnd_api.g_exc_error;
240: END IF;
241: END IF; -- Added for bug 13789232
242:
243: x_return_status := FND_API.G_RET_STS_SUCCESS;
239: RAISE fnd_api.g_exc_error;
240: END IF;
241: END IF; -- Added for bug 13789232
242:
243: x_return_status := FND_API.G_RET_STS_SUCCESS;
244:
245: EXCEPTION
246: WHEN FND_API.G_EXC_ERROR THEN
247: x_return_status := FND_API.G_RET_STS_ERROR;
242:
243: x_return_status := FND_API.G_RET_STS_SUCCESS;
244:
245: EXCEPTION
246: WHEN FND_API.G_EXC_ERROR THEN
247: x_return_status := FND_API.G_RET_STS_ERROR;
248: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
249:
250: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
243: x_return_status := FND_API.G_RET_STS_SUCCESS;
244:
245: EXCEPTION
246: WHEN FND_API.G_EXC_ERROR THEN
247: x_return_status := FND_API.G_RET_STS_ERROR;
248: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
249:
250: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
251: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
246: WHEN FND_API.G_EXC_ERROR THEN
247: x_return_status := FND_API.G_RET_STS_ERROR;
248: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
249:
250: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
251: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
252: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
253:
254: WHEN OTHERS THEN
247: x_return_status := FND_API.G_RET_STS_ERROR;
248: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
249:
250: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
251: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
252: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
253:
254: WHEN OTHERS THEN
255: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
251: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
252: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
253:
254: WHEN OTHERS THEN
255: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
256: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
257:
258: END start_pregenerate_program;
259:
436:
437:
438: l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
439: BEGIN
440: x_return_status := fnd_api.g_ret_sts_success;
441:
442: IF (l_debug = 1) THEN
443: print_debug('pre_generate: Starting pre_generate API');
444: print_debug('p_from_conc_pgm => ' || p_from_conc_pgm);
456: IF (l_debug = 1) THEN
457: print_debug('pre_generate: p_organization_ID is null');
458: END IF;
459:
460: RAISE fnd_api.g_exc_error;
461: END IF;
462:
463: --This savepoint is used to rollback if p_commit = 'N' and an error
464: --ocurrs.
489: IF (l_debug = 1) THEN
490: print_debug('pre_generate: p_lpn_id '||p_lpn_id||' does not exist. ' );
491: END IF;
492:
493: RAISE fnd_api.g_exc_error;
494:
495: WHEN record_locked THEN
496: fnd_message.set_name('WMS', 'WMS_LPN_UNAVAIL');
497: fnd_msg_pub.ADD;
499: IF (l_debug = 1) THEN
500: print_debug('pre_generate: LPN not available. It is locked by someone else, either by different pre-generate process, or putaway load page');
501: END IF;
502:
503: RAISE fnd_api.g_exc_error;
504:
505: END;
506:
507: IF (l_debug = 1) THEN
515: IF (l_debug = 1) THEN
516: print_debug('pre_generate: l_lpn_context is not WIP or Receiving, do not pre-generate.' );
517: END IF;
518:
519: RAISE fnd_api.g_exc_error;
520: END IF;
521:
522: -- Do not pre-generate if any move order line in this LPN with wms_process_flag = 2
523:
544: IF (l_debug = 1) THEN
545: print_debug('pre_generate: move order wms_process_flag indicates allocation is not yet allowed.');
546: END IF;
547:
548: RAISE fnd_api.g_exc_error;
549: END IF;
550:
551: -- End of validation added in ATF_J
552: END IF; --BUG3497572 p_lpn_id is an optional when pre_generate called from concurrent request
584: print_debug('l_msg_count = '||l_msg_count);
585: print_debug('l_msg_data = '||l_msg_data);
586: END IF;
587:
588: IF (l_return_status = fnd_api.g_ret_sts_success) THEN
589: IF (l_debug = 1) THEN
590: print_debug('pre_generate: Success returned from WMS_Cross_Dock_Pvt.crossdock API');
591: END IF;
592: ELSE
592: ELSE
593: IF (l_debug = 1) THEN
594: print_debug('pre_generate: Failure returned from WMS_Cross_Dock_Pvt.crossdock API');
595: END IF;
596: RAISE fnd_api.g_exc_error;
597:
598: END IF; -- (l_return_status = fnd_api.g_ret_sts_success)
599:
600: IF l_ret_crossdock <> 0 THEN
594: print_debug('pre_generate: Failure returned from WMS_Cross_Dock_Pvt.crossdock API');
595: END IF;
596: RAISE fnd_api.g_exc_error;
597:
598: END IF; -- (l_return_status = fnd_api.g_ret_sts_success)
599:
600: IF l_ret_crossdock <> 0 THEN
601: IF (l_debug = 1) THEN
602: print_debug('pre_generate:Crossdock did not happen, get org level flag');
653:
654: --Calling Rules Engine.
655: INV_PPEngine_PVT.create_suggestions
656: (p_api_version => 1.0,
657: p_init_msg_list => FND_API.G_TRUE,
658: p_commit => FND_API.G_FALSE,
659: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
660: x_return_status => l_return_status,
661: x_msg_count => l_msg_count,
654: --Calling Rules Engine.
655: INV_PPEngine_PVT.create_suggestions
656: (p_api_version => 1.0,
657: p_init_msg_list => FND_API.G_TRUE,
658: p_commit => FND_API.G_FALSE,
659: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
660: x_return_status => l_return_status,
661: x_msg_count => l_msg_count,
662: x_msg_data => l_msg_data,
655: INV_PPEngine_PVT.create_suggestions
656: (p_api_version => 1.0,
657: p_init_msg_list => FND_API.G_TRUE,
658: p_commit => FND_API.G_FALSE,
659: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
660: x_return_status => l_return_status,
661: x_msg_count => l_msg_count,
662: x_msg_data => l_msg_data,
663: p_transaction_temp_id => l_mol_line_id,
673: -- the MOL that might have been set by crossdock. However,
674: -- l_return_status is always success even though the rules engine cannot create suggestion
675: -- thus, this if statement will never be true until the rules engine is fixed
676: -- for now, a work around is to check the mmtt cursor record count. if it is 0, then
677: -- we raise the fnd_api.g_exc_error
678: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
679: l_error := TRUE;
680: l_partial_success := 'Y';
681:
674: -- l_return_status is always success even though the rules engine cannot create suggestion
675: -- thus, this if statement will never be true until the rules engine is fixed
676: -- for now, a work around is to check the mmtt cursor record count. if it is 0, then
677: -- we raise the fnd_api.g_exc_error
678: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
679: l_error := TRUE;
680: l_partial_success := 'Y';
681:
682: --Log Errored lpn_id and line_id with the error msg in msg file.
692:
693: IF (l_from_conc_pgm = 'Y') THEN
694: print_message();
695: END IF;
696: --RAISE fnd_api.g_exc_error;
697: --11685037 move handling of problematic lpn to lpn_errored, also print stuff for concurrent program there instead
698:
699: goto lpn_errored;
700: ELSE
799: /* End of fix for bug # 4964866*/
800:
801: END IF;
802:
803: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
804:
805: IF (l_debug = 1) THEN
806: print_debug('pre_generate: Label printing failed. Continue');
807: END IF;
850: print_debug('pre_generate: After calling wms_rule_pvt.assign_operation_plan');
851: print_debug('l_return_status = ' || l_return_status);
852: END IF;
853:
854: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
855:
856: IF (l_debug = 1) THEN
857: print_debug('pre_generate: wms_rule_pvt.assign_operation_plan failed.');
858: END IF;
862: --set these variables so we automatically rollback to the savepoint properly
863: l_error := TRUE;
864: l_partial_success := 'Y';
865: exit;
866: --RAISE fnd_api.g_exc_error;
867:
868: END IF; -- (l_return_status <> fnd_api.g_ret_sts_success)
869:
870: IF (l_debug = 1) THEN
864: l_partial_success := 'Y';
865: exit;
866: --RAISE fnd_api.g_exc_error;
867:
868: END IF; -- (l_return_status <> fnd_api.g_ret_sts_success)
869:
870: IF (l_debug = 1) THEN
871: --Following API initializes the operation plan instance
872: print_debug('pre_generate: Before calling wms_op_runtime_pub_apis.init_op_plan_instance with following parameters: ');
889: print_debug('pre_generate: After calling wms_op_runtime_pub_apis.init_plan_instance');
890: print_debug('l_return_status = ' || l_return_status);
891: END IF;
892:
893: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
894:
895: IF (l_debug = 1) THEN
896: print_debug('pre_generate: wms_op_runtime_pub_apis.init_plan_instance failed.');
897: END IF;
901: --set these variables so we automatically rollback to the savepoint properly
902: l_error := TRUE;
903: l_partial_success := 'Y';
904: exit;
905: --RAISE fnd_api.g_exc_error;
906:
907: END IF; -- (l_return_status <> fnd_api.g_ret_sts_success)
908:
909: END IF; -- (l_operation_plan_id IS NULL)
903: l_partial_success := 'Y';
904: exit;
905: --RAISE fnd_api.g_exc_error;
906:
907: END IF; -- (l_return_status <> fnd_api.g_ret_sts_success)
908:
909: END IF; -- (l_operation_plan_id IS NULL)
910:
911: -- End new API calls added for ATF_J
995: );
996: print_debug(' After calling the revert_loc_suggested_capacity');
997: ROLLBACK;
998:
999: RAISE fnd_api.g_exc_error;
1000: else
1001: if (p_commit = 'Y') then
1002: print_debug(' Before LPN Commit');
1003: commit;
1020: fnd_msg_pub.add;
1021:
1022: --If all the lpns have failed then we raise ERROR.
1023: IF (l_cnt_success = 0) AND (l_cnt_failed > 0) THEN
1024: RAISE fnd_api.g_exc_error;
1025: END IF;
1026:
1027: IF (l_from_conc_pgm = 'Y') THEN
1028: print_message();
1033: print_debug('pre_generate: End of pre_generate API');
1034: END IF;
1035:
1036: EXCEPTION
1037: WHEN fnd_api.g_exc_error THEN
1038: x_return_status := fnd_api.g_ret_sts_error;
1039:
1040: IF (l_from_conc_pgm = 'Y') THEN
1041: print_message();
1034: END IF;
1035:
1036: EXCEPTION
1037: WHEN fnd_api.g_exc_error THEN
1038: x_return_status := fnd_api.g_ret_sts_error;
1039:
1040: IF (l_from_conc_pgm = 'Y') THEN
1041: print_message();
1042: END IF;
1041: print_message();
1042: END IF;
1043:
1044: IF (l_debug = 1) THEN
1045: print_debug('pre_generate: fnd_api.g_exc_error');
1046: END IF;
1047:
1048: IF ((p_commit = 'N') OR (NOT(l_entry_loop))) THEN
1049: ROLLBACK TO SAVEPOINT suggestions_start_sp;
1058: IF mmtt_cursor%isopen THEN
1059: CLOSE mmtt_cursor;
1060: END IF;
1061:
1062: WHEN fnd_api.g_exc_unexpected_error THEN
1063: x_return_status := fnd_api.g_ret_sts_unexp_error ;
1064:
1065: IF (l_from_conc_pgm = 'Y') THEN
1066: print_message();
1059: CLOSE mmtt_cursor;
1060: END IF;
1061:
1062: WHEN fnd_api.g_exc_unexpected_error THEN
1063: x_return_status := fnd_api.g_ret_sts_unexp_error ;
1064:
1065: IF (l_from_conc_pgm = 'Y') THEN
1066: print_message();
1067: END IF;
1066: print_message();
1067: END IF;
1068:
1069: IF (l_debug = 1) THEN
1070: print_debug('pre_generate: fnd_api.g_exc_unexpected_error');
1071: END IF;
1072:
1073: IF ((p_commit = 'N') OR (NOT(l_entry_loop))) THEN
1074: ROLLBACK TO SAVEPOINT suggestions_start_sp;
1084: CLOSE mmtt_cursor;
1085: END IF;
1086:
1087: WHEN OTHERS THEN
1088: x_return_status := fnd_api.g_ret_sts_unexp_error ;
1089:
1090: IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error)) THEN
1091: fnd_msg_pub.add_exc_msg(g_pkg_name, 'PRE_GENERATE');
1092: END IF;
1213: print_debug('cleanup_suggestions: After calling inv_loc_wms_utils.revert_loc_suggested_capacity');
1214: print_debug(' x_return_status = ' || x_return_status);
1215: END IF;
1216:
1217: IF x_return_status = fnd_api.g_ret_sts_error THEN
1218: -- Bug 5393727: do not raise an exception if locator API returns an error
1219: -- RAISE fnd_api.g_exc_error;
1220: NULL;
1221: END IF ;
1215: END IF;
1216:
1217: IF x_return_status = fnd_api.g_ret_sts_error THEN
1218: -- Bug 5393727: do not raise an exception if locator API returns an error
1219: -- RAISE fnd_api.g_exc_error;
1220: NULL;
1221: END IF ;
1222:
1223: IF x_return_status = fnd_api.g_ret_sts_unexp_error THEN
1219: -- RAISE fnd_api.g_exc_error;
1220: NULL;
1221: END IF ;
1222:
1223: IF x_return_status = fnd_api.g_ret_sts_unexp_error THEN
1224: -- Bug 5393727: do not raise an exception if locator API returns an error
1225: -- RAISE fnd_api.g_exc_unexpected_error;
1226: NULL;
1227: END IF;
1221: END IF ;
1222:
1223: IF x_return_status = fnd_api.g_ret_sts_unexp_error THEN
1224: -- Bug 5393727: do not raise an exception if locator API returns an error
1225: -- RAISE fnd_api.g_exc_unexpected_error;
1226: NULL;
1227: END IF;
1228:
1229: END IF;
1264: print_debug('cleanup_suggestions: After calling wms_op_runtime_pub_apis.Abort_Operation_Plan');
1265: print_debug(' l_return_status = ' || l_return_status);
1266: END IF;
1267:
1268: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
1269:
1270: IF (l_debug = 1) THEN
1271: print_debug('cleanup_suggestions: wms_op_runtime_pub_apis.Abort_Operation_Plan failed.');
1272: END IF;
1270: IF (l_debug = 1) THEN
1271: print_debug('cleanup_suggestions: wms_op_runtime_pub_apis.Abort_Operation_Plan failed.');
1272: END IF;
1273:
1274: RAISE fnd_api.g_exc_error;
1275:
1276: END IF; -- (l_return_status <> fnd_api.g_ret_sts_success)
1277:
1278:
1272: END IF;
1273:
1274: RAISE fnd_api.g_exc_error;
1275:
1276: END IF; -- (l_return_status <> fnd_api.g_ret_sts_success)
1277:
1278:
1279: END IF; -- current_suggestion.operation_plan_id IS NOT
1280: -- End ATF_J
1304: EXCEPTION
1305: WHEN NO_DATA_FOUND THEN NULL;
1306: END;
1307:
1308: x_return_status := FND_API.G_RET_STS_SUCCESS;
1309: IF (l_debug = 1) THEN
1310: print_debug('clean_up suggestions: End of cleanup_suggestions API');
1311: END IF;
1312:
1311: END IF;
1312:
1313:
1314: EXCEPTION
1315: WHEN FND_API.G_EXC_ERROR THEN
1316: x_return_status := FND_API.G_RET_STS_ERROR;
1317: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
1318: ROLLBACK TO sp_cleanup_suggs;
1319:
1312:
1313:
1314: EXCEPTION
1315: WHEN FND_API.G_EXC_ERROR THEN
1316: x_return_status := FND_API.G_RET_STS_ERROR;
1317: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
1318: ROLLBACK TO sp_cleanup_suggs;
1319:
1320: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1316: x_return_status := FND_API.G_RET_STS_ERROR;
1317: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
1318: ROLLBACK TO sp_cleanup_suggs;
1319:
1320: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1321: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1322: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
1323: ROLLBACK TO sp_cleanup_suggs;
1324:
1317: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
1318: ROLLBACK TO sp_cleanup_suggs;
1319:
1320: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1321: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1322: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
1323: ROLLBACK TO sp_cleanup_suggs;
1324:
1325: WHEN OTHERS THEN
1322: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
1323: ROLLBACK TO sp_cleanup_suggs;
1324:
1325: WHEN OTHERS THEN
1326: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1327: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
1328: ROLLBACK TO sp_cleanup_suggs;
1329:
1330: END cleanup_suggestions;