14:
15: PROCEDURE Pick_Confirm
16: (
17: p_api_version_number IN NUMBER
18: , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
19: , p_commit IN VARCHAR2 := FND_API.G_FALSE
20: , x_return_status OUT NOCOPY VARCHAR2
21: , x_msg_count OUT NOCOPY NUMBER
22: , x_msg_data OUT NOCOPY VARCHAR2
15: PROCEDURE Pick_Confirm
16: (
17: p_api_version_number IN NUMBER
18: , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
19: , p_commit IN VARCHAR2 := FND_API.G_FALSE
20: , x_return_status OUT NOCOPY VARCHAR2
21: , x_msg_count OUT NOCOPY NUMBER
22: , x_msg_data OUT NOCOPY VARCHAR2
23: , p_move_order_type IN NUMBER
78: -- Standard call to check for call compatibility
79: IF (l_debug = 1) THEN
80: TraceLog('Inside pick_wave_pick_confirm', 'Pick_confirm');
81: END IF;
82: IF NOT FND_API.Compatible_API_Call
83: ( l_api_version_number
84: , p_api_version_number
85: , l_api_name
86: , G_PKG_NAME
85: , l_api_name
86: , G_PKG_NAME
87: )
88: THEN
89: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
90: END IF;
91:
92: l_return_status := FND_API.G_RET_STS_SUCCESS;
93:
88: THEN
89: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
90: END IF;
91:
92: l_return_status := FND_API.G_RET_STS_SUCCESS;
93:
94: -- bug 2307057 Initialize message list if p_init_msg_list is set to TRUE.
95: IF FND_API.to_Boolean( p_init_msg_list ) THEN
96: FND_MSG_PUB.initialize;
91:
92: l_return_status := FND_API.G_RET_STS_SUCCESS;
93:
94: -- bug 2307057 Initialize message list if p_init_msg_list is set to TRUE.
95: IF FND_API.to_Boolean( p_init_msg_list ) THEN
96: FND_MSG_PUB.initialize;
97: END IF;
98:
99:
107: if( l_trolin_tbl.count = 0 AND l_mold_tbl.count = 0) then
108:
109: FND_MESSAGE.SET_NAME('INV', 'INV_NO_LINES_TO_PICK_CONFIRM');
110: FND_MSG_PUB.add;
111: l_return_status := FND_API.G_RET_STS_ERROR;
112: raise FND_API.G_EXC_ERROR;
113: end if;
114:
115: select mtl_material_transactions_s.nextval
108:
109: FND_MESSAGE.SET_NAME('INV', 'INV_NO_LINES_TO_PICK_CONFIRM');
110: FND_MSG_PUB.add;
111: l_return_status := FND_API.G_RET_STS_ERROR;
112: raise FND_API.G_EXC_ERROR;
113: end if;
114:
115: select mtl_material_transactions_s.nextval
116: into l_transaction_header_id
129: IF (l_debug = 1) THEN
130: TraceLog('mo line_id is = ' || l_trolin_tbl(i).line_id, 'Pick_Confirm');
131: END IF;
132: -- only process the valid move order, fix bug 1540709.
133: IF (l_trolin_tbl(i).return_status <> FND_API.G_RET_STS_UNEXP_ERROR and
134: l_trolin_tbl(i).return_status <> FND_API.G_RET_STS_ERROR) THEN
135:
136: --if( l_trolin_tbl(i) is not null ) then
137: l_trolin_rec := INV_Trolin_Util.Query_Row(l_trolin_tbl(i).line_id);
130: TraceLog('mo line_id is = ' || l_trolin_tbl(i).line_id, 'Pick_Confirm');
131: END IF;
132: -- only process the valid move order, fix bug 1540709.
133: IF (l_trolin_tbl(i).return_status <> FND_API.G_RET_STS_UNEXP_ERROR and
134: l_trolin_tbl(i).return_status <> FND_API.G_RET_STS_ERROR) THEN
135:
136: --if( l_trolin_tbl(i) is not null ) then
137: l_trolin_rec := INV_Trolin_Util.Query_Row(l_trolin_tbl(i).line_id);
138: l_trolin_tbl(i) := l_trolin_rec;
145: if( L_qty_detailed = l_qty_delivered OR l_qty_detailed = 0 ) then
146: FND_MESSAGE.SET_NAME('INV', 'INV_PICK_QTY_ERROR');
147: FND_MSG_PUB.ADD;
148: --rollback to TO_TRX_LINE_SAVE;
149: --raise FND_API.G_EXC_ERROR;
150: else
151: l_mold_tbl := INV_MO_LINE_DETAIL_UTIL.Query_Rows( p_line_id => l_trolin_tbl(i).line_id);
152: IF (l_debug = 1) THEN
153: TraceLog('mold records = ' || l_mold_tbl.count, 'Pick_Confirm');
176: IF p_transaction_date > sysdate THEN
177: TraceLog('Error: Transaction date cannot be a future date', 'Pick_confirm');
178: FND_MESSAGE.SET_NAME('INV', 'INV_INT_TDATEEX');
179: FND_MSG_PUB.add;
180: raise FND_API.G_EXC_ERROR;
181: END IF;
182: l_mold_tbl(j).transaction_date := p_transaction_date;
183: END IF;
184:
196: TraceLog('l_period_id: '||l_period_id, 'Pick_confirm');
197: IF (l_period_id = -1 or l_period_id = 0) THEN
198: FND_MESSAGE.SET_NAME('INV', 'INV_NO_OPEN_PERIOD');
199: FND_MSG_PUB.add;
200: l_return_status := FND_API.G_RET_STS_ERROR;
201: raise FND_API.G_EXC_ERROR;
202: END IF;
203:
204: END IF;
197: IF (l_period_id = -1 or l_period_id = 0) THEN
198: FND_MESSAGE.SET_NAME('INV', 'INV_NO_OPEN_PERIOD');
199: FND_MSG_PUB.add;
200: l_return_status := FND_API.G_RET_STS_ERROR;
201: raise FND_API.G_EXC_ERROR;
202: END IF;
203:
204: END IF;
205: l_mold_tbl(j).acct_period_id := l_period_id;
222: inv_mo_line_detail_util.update_row(l_return_status, l_mold_tbl(j));
223: IF (l_debug = 1) THEN
224: TraceLog('after update transaction_status = 3', 'Pick_Confirm');
225: END IF;
226: if( l_return_status = FND_API.G_RET_STS_ERROR ) then
227: fnd_message.set_name('INV', 'INV_COULD_NOT_UPATE_RECORD');
228: fnd_msg_pub.add;
229: IF (l_debug = 1) THEN
230: TraceLog('error in update mold', 'Pick_Confirm');
229: IF (l_debug = 1) THEN
230: TraceLog('error in update mold', 'Pick_Confirm');
231: END IF;
232: rollback to TO_TRX_LINE_SAVE;
233: raise FND_API.G_EXC_ERROR;
234: elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
235: IF (l_debug = 1) THEN
236: TraceLog('error in update mold', 'Pick_Confirm');
237: END IF;
230: TraceLog('error in update mold', 'Pick_Confirm');
231: END IF;
232: rollback to TO_TRX_LINE_SAVE;
233: raise FND_API.G_EXC_ERROR;
234: elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
235: IF (l_debug = 1) THEN
236: TraceLog('error in update mold', 'Pick_Confirm');
237: END IF;
238: fnd_message.set_name('INV', 'INV_COULD_NOT_UPATE_RECORD');
237: END IF;
238: fnd_message.set_name('INV', 'INV_COULD_NOT_UPATE_RECORD');
239: fnd_msg_pub.add;
240: rollback to TO_TRX_LINE_SAVE;
241: raise FND_API.G_EXC_UNEXPECTED_ERROR;
242: end if;
243: IF (l_debug = 1) THEN
244: TraceLog('end of loop of mold, still inside loop', 'Pick Confirm');
245: END IF;
288: if( l_qty_detailed = l_qty_delivered OR l_qty_detailed = 0 ) then
289: FND_MESSAGE.SET_NAME('INV', 'INV_PICK_QTY_ERROR');
290: FND_MSG_PUB.ADD;
291: rollback to TO_TRX_LINE_SAVE;
292: raise FND_API.G_EXC_ERROR;
293: end if;
294: l_mold_tbl(j).transaction_status := 3;
295: l_mold_tbl(j).transaction_mode := p_transaction_mode;
296: l_mold_tbl(j).transaction_header_id := l_transaction_header_id;
308: IF p_transaction_date > sysdate THEN
309: TraceLog('Error: Transaction date cannot be a future date', 'Pick_confirm');
310: FND_MESSAGE.SET_NAME('INV', 'INV_INT_TDATEEX');
311: FND_MSG_PUB.add;
312: raise FND_API.G_EXC_ERROR;
313: END IF;
314: l_mold_tbl(j).transaction_date := p_transaction_date;
315: END IF;
316:
326: TraceLog('l_period_id: '||l_period_id, 'Pick_confirm');
327: IF (l_period_id = -1 or l_period_id = 0) THEN
328: FND_MESSAGE.SET_NAME('INV', 'INV_NO_OPEN_PERIOD');
329: FND_MSG_PUB.add;
330: l_return_status := FND_API.G_RET_STS_ERROR;
331: raise FND_API.G_EXC_ERROR;
332: END IF;
333:
334: END IF;
327: IF (l_period_id = -1 or l_period_id = 0) THEN
328: FND_MESSAGE.SET_NAME('INV', 'INV_NO_OPEN_PERIOD');
329: FND_MSG_PUB.add;
330: l_return_status := FND_API.G_RET_STS_ERROR;
331: raise FND_API.G_EXC_ERROR;
332: END IF;
333:
334: END IF;
335:
339: inv_mo_line_detail_util.update_row(l_return_status, l_mold_tbl(j));
340: IF (l_debug = 1) THEN
341: TraceLog('after update transaction_status = 3', 'Pick_Confirm');
342: END IF;
343: if( l_return_status = FND_API.G_RET_STS_ERROR ) then
344: IF (l_debug = 1) THEN
345: TraceLog('error in update mold', 'Pick_Confirm');
346: END IF;
347: fnd_message.set_name('INV', 'INV_COULD_NOT_UPATE_RECORD');
346: END IF;
347: fnd_message.set_name('INV', 'INV_COULD_NOT_UPATE_RECORD');
348: fnd_msg_pub.add;
349: rollback to TO_TRX_LINE_SAVE;
350: raise FND_API.G_EXC_ERROR;
351: elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
352: IF (l_debug = 1) THEN
353: TraceLog('error in update mold', 'Pick_Confirm');
354: END IF;
347: fnd_message.set_name('INV', 'INV_COULD_NOT_UPATE_RECORD');
348: fnd_msg_pub.add;
349: rollback to TO_TRX_LINE_SAVE;
350: raise FND_API.G_EXC_ERROR;
351: elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
352: IF (l_debug = 1) THEN
353: TraceLog('error in update mold', 'Pick_Confirm');
354: END IF;
355: fnd_message.set_name('INV', 'INV_COULD_NOT_UPATE_RECORD');
354: END IF;
355: fnd_message.set_name('INV', 'INV_COULD_NOT_UPATE_RECORD');
356: fnd_msg_pub.add;
357: rollback to TO_TRX_LINE_SAVE;
358: raise FND_API.G_EXC_UNEXPECTED_ERROR;
359: end if;
360: l_trolin_tbl(1).transaction_header_id :=
361: l_transaction_header_id;
362:
407: END IF;
408: rollback to TO_TRX_LINE_SAVE;
409: FND_Message.Set_Name('INV','INV_ORPHAN_CLEANUP_ERROR');
410: FND_MSG_PUB.add;
411: raise FND_API.G_EXC_ERROR;
412: ELSIF ( lot_success = '-2' ) THEN
413: IF (l_debug = 1) THEN
414: TraceLog('lot success= -2', 'Pick_Confirm');
415: END IF;
415: END IF;
416: rollback to TO_TRX_LINE_SAVE;
417: FND_Message.Set_Name('INV', 'INV_LOTNULL_ERROR');
418: FND_MSG_PUB.add;
419: raise FND_API.G_EXC_ERROR;
420: ELSIF ( lot_success = '-3' ) THEN
421: IF (l_debug = 1) THEN
422: TraceLog('lot success= -3', 'Pick_Confirm');
423: END IF;
423: END IF;
424: rollback to TO_TRX_LINE_SAVE;
425: FND_Message.Set_Name('INV', 'INV_LOTCOPY_ERROR');
426: FND_MSG_PUB.add;
427: raise FND_API.G_EXC_ERROR;
428: ELSIF ( lot_success = '-4' ) THEN
429: IF (l_debug = 1) THEN
430: TraceLog('lot success= -4', 'Pick_Confirm');
431: END IF;
431: END IF;
432: rollback to TO_TRX_LINE_SAVE;
433: FND_Message.Set_Name('INV', 'INV_DYNAMIC_SERIAL_ERROR');
434: FND_MSG_PUB.Add;
435: raise FND_API.G_EXC_ERROR;
436: END IF;
437:
438: /* Bug 1620487 - Performance
439: We no longer need to call do_check, since we lock the quantity
440: Tree during pick release. This was causing a huge performance hit.
441: INV_Quantity_Tree_Pub.Do_Check
442: (
443: p_api_version_number => 1.0,
444: p_init_msg_lst => FND_API.G_FALSE,
445: x_return_status => l_return_status,
446: x_msg_count => l_msg_count,
447: x_msg_data => l_msg_data,
448: x_no_violation => l_no_violation
450:
451: IF (l_debug = 1) THEN
452: TraceLog('after quantity_tree.do_check', 'Pick_Confirm');
453: END IF;
454: if( l_return_status = FND_API.G_RET_STS_ERROR ) then
455: rollback to TO_TRX_LINE_SAVE;
456: raise FND_API.G_EXC_ERROR;
457: elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
458: rollback to TO_TRX_LINE_SAVE;
452: TraceLog('after quantity_tree.do_check', 'Pick_Confirm');
453: END IF;
454: if( l_return_status = FND_API.G_RET_STS_ERROR ) then
455: rollback to TO_TRX_LINE_SAVE;
456: raise FND_API.G_EXC_ERROR;
457: elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
458: rollback to TO_TRX_LINE_SAVE;
459: raise FND_API.G_EXC_UNEXPECTED_ERROR;
460: end if;
453: END IF;
454: if( l_return_status = FND_API.G_RET_STS_ERROR ) then
455: rollback to TO_TRX_LINE_SAVE;
456: raise FND_API.G_EXC_ERROR;
457: elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
458: rollback to TO_TRX_LINE_SAVE;
459: raise FND_API.G_EXC_UNEXPECTED_ERROR;
460: end if;
461: */
455: rollback to TO_TRX_LINE_SAVE;
456: raise FND_API.G_EXC_ERROR;
457: elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
458: rollback to TO_TRX_LINE_SAVE;
459: raise FND_API.G_EXC_UNEXPECTED_ERROR;
460: end if;
461: */
462: IF (P_MOVE_ORDER_TYPE <> 5 OR P_MOVE_ORDER_TYPE is null) then
463: -- Calling new Java transaction manager instread of pro C version
482: END IF;
483: END IF;
484: FND_MESSAGE.SET_NAME('INV', 'INV_TM_TIME_OUT');
485: FND_MSG_PUB.ADD;
486: l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
487: raise FND_API.G_EXC_UNEXPECTED_ERROR;
488: elsif l_rc_field = 2 then
489: IF (l_debug = 1) THEN
490: IF (l_debug = 1) THEN
483: END IF;
484: FND_MESSAGE.SET_NAME('INV', 'INV_TM_TIME_OUT');
485: FND_MSG_PUB.ADD;
486: l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
487: raise FND_API.G_EXC_UNEXPECTED_ERROR;
488: elsif l_rc_field = 2 then
489: IF (l_debug = 1) THEN
490: IF (l_debug = 1) THEN
491: TraceLog('l_rc_field = ' || l_rc_field);
492: END IF;
493: END IF;
494: FND_MESSAGE.SET_NAME('INV', 'INV_TM_MGR_NOT_AVAIL');
495: FND_MSG_PUB.ADD;
496: l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
497: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
498: elsif l_rc_field <> 0 then
499: IF (l_debug = 1) THEN
500: IF (l_debug = 1) THEN
493: END IF;
494: FND_MESSAGE.SET_NAME('INV', 'INV_TM_MGR_NOT_AVAIL');
495: FND_MSG_PUB.ADD;
496: l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
497: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
498: elsif l_rc_field <> 0 then
499: IF (l_debug = 1) THEN
500: IF (l_debug = 1) THEN
501: TraceLog('l_rc_field = ' || l_rc_field);
500: IF (l_debug = 1) THEN
501: TraceLog('l_rc_field = ' || l_rc_field);
502: END IF;
503: END IF;
504: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
505: end if; */
506: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
507: else
508: IF (l_debug = 1) THEN
502: END IF;
503: END IF;
504: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
505: end if; */
506: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
507: else
508: IF (l_debug = 1) THEN
509: IF (l_debug = 1) THEN
510: TraceLog('Success from inv_trx_mgr.process_trx_batch', 'Pick_Confirm');
509: IF (l_debug = 1) THEN
510: TraceLog('Success from inv_trx_mgr.process_trx_batch', 'Pick_Confirm');
511: END IF;
512: END IF;
513: x_return_status := FND_API.G_RET_STS_SUCCESS;
514: end if;
515: ELSE
516: l_program := 'INXTPU';
517: l_func := l_program;
533: /*if( l_rc_field = 1) then
534: TraceLog('l_rc_field = ' || l_rc_field);
535: FND_MESSAGE.SET_NAME('INV', 'INV_TM_TIME_OUT');
536: FND_MSG_PUB.ADD;
537: l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
538: raise FND_API.G_EXC_UNEXPECTED_ERROR;
539: elsif l_rc_field = 2 then
540: TraceLog('l_rc_field = ' || l_rc_field);
541: FND_MESSAGE.SET_NAME('INV', 'INV_TM_MGR_NOT_AVAIL');
534: TraceLog('l_rc_field = ' || l_rc_field);
535: FND_MESSAGE.SET_NAME('INV', 'INV_TM_TIME_OUT');
536: FND_MSG_PUB.ADD;
537: l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
538: raise FND_API.G_EXC_UNEXPECTED_ERROR;
539: elsif l_rc_field = 2 then
540: TraceLog('l_rc_field = ' || l_rc_field);
541: FND_MESSAGE.SET_NAME('INV', 'INV_TM_MGR_NOT_AVAIL');
542: FND_MSG_PUB.ADD;
539: elsif l_rc_field = 2 then
540: TraceLog('l_rc_field = ' || l_rc_field);
541: FND_MESSAGE.SET_NAME('INV', 'INV_TM_MGR_NOT_AVAIL');
542: FND_MSG_PUB.ADD;
543: l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
544: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
545: elsif l_rc_field <> 0 then
546: TraceLog('l_rc_field = ' || l_rc_field);
547: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
540: TraceLog('l_rc_field = ' || l_rc_field);
541: FND_MESSAGE.SET_NAME('INV', 'INV_TM_MGR_NOT_AVAIL');
542: FND_MSG_PUB.ADD;
543: l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
544: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
545: elsif l_rc_field <> 0 then
546: TraceLog('l_rc_field = ' || l_rc_field);
547: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
548: end if;*/
543: l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
544: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
545: elsif l_rc_field <> 0 then
546: TraceLog('l_rc_field = ' || l_rc_field);
547: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
548: end if;*/
549: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
550: else
551: TraceLog('Success from Old INVTM', 'Pick_Confirm');
545: elsif l_rc_field <> 0 then
546: TraceLog('l_rc_field = ' || l_rc_field);
547: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
548: end if;*/
549: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
550: else
551: TraceLog('Success from Old INVTM', 'Pick_Confirm');
552: x_return_status := FND_API.G_RET_STS_SUCCESS;
553: end if;
548: end if;*/
549: raise fnd_api.G_EXC_UNEXPECTED_ERROR;
550: else
551: TraceLog('Success from Old INVTM', 'Pick_Confirm');
552: x_return_status := FND_API.G_RET_STS_SUCCESS;
553: end if;
554: END IF; --Call Old tm for WIP Picking records
555:
556: -- Insert_Row.Clear_Orphan_Lots_Serials(l_transaction_header_id,-999);
607:
608: EXCEPTION
609: WHEN OTHERS then
610: -- TraceLog('error in cleanup orphan lot serial');
611: x_return_status := FND_API.G_RET_STS_ERROR;
612: rollback to TO_TRX_LINE_SAVE;
613: FND_MESSAGE.SET_NAME('INV', 'INV_ORPHAN_CLEANUP_ERROR');
614: FND_MSG_PUB.ADD;
615: END;
612: rollback to TO_TRX_LINE_SAVE;
613: FND_MESSAGE.SET_NAME('INV', 'INV_ORPHAN_CLEANUP_ERROR');
614: FND_MSG_PUB.ADD;
615: END;
616: if( p_commit = FND_API.G_TRUE ) then
617: commit;
618: end if;
619: x_return_status := FND_API.G_RET_STS_SUCCESS;
620: EXCEPTION
615: END;
616: if( p_commit = FND_API.G_TRUE ) then
617: commit;
618: end if;
619: x_return_status := FND_API.G_RET_STS_SUCCESS;
620: EXCEPTION
621: WHEN FND_API.G_EXC_ERROR THEN
622: x_return_status := FND_API.G_RET_STS_ERROR;
623: -- Get message count and data
617: commit;
618: end if;
619: x_return_status := FND_API.G_RET_STS_SUCCESS;
620: EXCEPTION
621: WHEN FND_API.G_EXC_ERROR THEN
622: x_return_status := FND_API.G_RET_STS_ERROR;
623: -- Get message count and data
624: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data =>
625: x_msg_data);
618: end if;
619: x_return_status := FND_API.G_RET_STS_SUCCESS;
620: EXCEPTION
621: WHEN FND_API.G_EXC_ERROR THEN
622: x_return_status := FND_API.G_RET_STS_ERROR;
623: -- Get message count and data
624: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data =>
625: x_msg_data);
626: ROLLBACK TO TO_TRX_LINE_SAVE; /* Bug 7014473 */
623: -- Get message count and data
624: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data =>
625: x_msg_data);
626: ROLLBACK TO TO_TRX_LINE_SAVE; /* Bug 7014473 */
627: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
628: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
629: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data =>
630: x_msg_data);
631: ROLLBACK TO TO_TRX_LINE_SAVE; /* Bug 7014473 */
624: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data =>
625: x_msg_data);
626: ROLLBACK TO TO_TRX_LINE_SAVE; /* Bug 7014473 */
627: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
628: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
629: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data =>
630: x_msg_data);
631: ROLLBACK TO TO_TRX_LINE_SAVE; /* Bug 7014473 */
632: WHEN OTHERS THEN
632: WHEN OTHERS THEN
633: IF (l_debug = 1) THEN
634: TraceLog('Exception when others', 'Pick_Confirm');
635: END IF;
636: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
637: -- Get message count and data
638: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
639: ROLLBACK TO TO_TRX_LINE_SAVE; /* Bug 7014473 */
640: