154:
155: BEGIN
156:
157: -- check version compatibility
158: IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
159: l_api_name, g_pkg_name)
160: THEN
161: RAISE fnd_api.g_exc_unexpected_error;
162: END IF;
157: -- check version compatibility
158: IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
159: l_api_name, g_pkg_name)
160: THEN
161: RAISE fnd_api.g_exc_unexpected_error;
162: END IF;
163: -- initialize message stack if required
164: IF fnd_api.to_boolean(p_init_msg_list)
165: THEN
160: THEN
161: RAISE fnd_api.g_exc_unexpected_error;
162: END IF;
163: -- initialize message stack if required
164: IF fnd_api.to_boolean(p_init_msg_list)
165: THEN
166: fnd_msg_pub.initialize;
167: END IF;
168: -- initialize return status
165: THEN
166: fnd_msg_pub.initialize;
167: END IF;
168: -- initialize return status
169: x_return_status := fnd_api.g_ret_sts_success;
170:
171: -- call current shift api to get resource shifts
172: JTF_CALENDAR_PUB_24HR.GET_RESOURCE_SHIFTS
173: ( p_api_version => 1.0
179: , x_msg_count => l_msg_count
180: , x_msg_data => l_msg_data
181: , x_shift => l_shift
182: );
183: IF l_return_status <> fnd_api.g_ret_sts_success
184: THEN
185: IF l_return_status = fnd_api.g_ret_sts_error
186: THEN
187: RAISE fnd_api.g_exc_error;
181: , x_shift => l_shift
182: );
183: IF l_return_status <> fnd_api.g_ret_sts_success
184: THEN
185: IF l_return_status = fnd_api.g_ret_sts_error
186: THEN
187: RAISE fnd_api.g_exc_error;
188: ELSE
189: RAISE fnd_api.g_exc_unexpected_error;
183: IF l_return_status <> fnd_api.g_ret_sts_success
184: THEN
185: IF l_return_status = fnd_api.g_ret_sts_error
186: THEN
187: RAISE fnd_api.g_exc_error;
188: ELSE
189: RAISE fnd_api.g_exc_unexpected_error;
190: END IF;
191: END IF;
185: IF l_return_status = fnd_api.g_ret_sts_error
186: THEN
187: RAISE fnd_api.g_exc_error;
188: ELSE
189: RAISE fnd_api.g_exc_unexpected_error;
190: END IF;
191: END IF;
192:
193: l_tbl_count := 0;
190: END IF;
191: END IF;
192:
193: l_tbl_count := 0;
194: l_Populate_ID := fnd_api.to_boolean(p_Populate_ID);
195: l_idx := l_shift.FIRST;
196:
197: WHILE (l_idx IS NOT NULL)
198: LOOP
219:
220: -- Fetch tasks now
221: l_tbl_count := 0;
222: l_idx := x_object_capacity.FIRST;
223: IF fnd_api.to_boolean(p_Fetch_Tasks)
224: THEN
225: -- to take care of any boundry condition fetch tasks with -+ 1 days of the start and end
226: FOR ref_tasks IN c_tasks(p_object_type,p_object_id,p_start_date-1,p_end_date+1)
227: LOOP
288: , p_data => x_msg_data
289: );
290: EXCEPTION
291:
292: WHEN fnd_api.g_exc_error THEN
293: x_return_status := fnd_api.g_ret_sts_error;
294: fnd_msg_pub.count_and_get( p_encoded => 'F'
295: , p_count => x_msg_count
296: , p_data => x_msg_data
289: );
290: EXCEPTION
291:
292: WHEN fnd_api.g_exc_error THEN
293: x_return_status := fnd_api.g_ret_sts_error;
294: fnd_msg_pub.count_and_get( p_encoded => 'F'
295: , p_count => x_msg_count
296: , p_data => x_msg_data
297: );
295: , p_count => x_msg_count
296: , p_data => x_msg_data
297: );
298:
299: WHEN fnd_api.g_exc_unexpected_error THEN
300: x_return_status := fnd_api.g_ret_sts_unexp_error;
301: fnd_msg_pub.count_and_get( p_encoded => 'F'
302: , p_count => x_msg_count
303: , p_data => x_msg_data
296: , p_data => x_msg_data
297: );
298:
299: WHEN fnd_api.g_exc_unexpected_error THEN
300: x_return_status := fnd_api.g_ret_sts_unexp_error;
301: fnd_msg_pub.count_and_get( p_encoded => 'F'
302: , p_count => x_msg_count
303: , p_data => x_msg_data
304: );
303: , p_data => x_msg_data
304: );
305:
306: WHEN OTHERS THEN
307: x_return_status := fnd_api.g_ret_sts_unexp_error;
308: IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error)
309: THEN
310: fnd_msg_pub.add_exc_msg( g_pkg_name
311: , l_api_name
358:
359: BEGIN
360:
361: -- check version compatibility
362: IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
363: l_api_name, g_pkg_name)
364: THEN
365: RAISE fnd_api.g_exc_unexpected_error;
366: END IF;
361: -- check version compatibility
362: IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
363: l_api_name, g_pkg_name)
364: THEN
365: RAISE fnd_api.g_exc_unexpected_error;
366: END IF;
367: -- initialize message stack if required
368: IF fnd_api.to_boolean(p_init_msg_list)
369: THEN
364: THEN
365: RAISE fnd_api.g_exc_unexpected_error;
366: END IF;
367: -- initialize message stack if required
368: IF fnd_api.to_boolean(p_init_msg_list)
369: THEN
370: fnd_msg_pub.initialize;
371: END IF;
372: -- initialize return status
369: THEN
370: fnd_msg_pub.initialize;
371: END IF;
372: -- initialize return status
373: x_return_status := fnd_api.g_ret_sts_success;
374:
375: l_current_date := SYSDATE;
376: l_user := FND_GLOBAL.USER_ID;
377: l_login := FND_GLOBAL.LOGIN_ID;
382: LOOP
383: -- validate if the record is correct
384: IF NOT validate_object_capacity(p_Object_Capacity(l_idx))
385: THEN
386: RAISE fnd_api.g_exc_unexpected_error;
387: END IF;
388: -- populate the primary key if needed
389: IF p_Object_Capacity(l_idx).OBJECT_CAPACITY_ID IS NULL
390: THEN
419: l_idx := p_Object_Capacity.NEXT(l_idx);
420: END LOOP;
421:
422: -- check if task assignments need to be updated
423: IF fnd_api.to_boolean(p_Update_Tasks)
424: THEN
425: l_idx := p_Object_Tasks.FIRST;
426: WHILE l_idx IS NOT NULL
427: LOOP
433: l_ovn := p_Object_Tasks(l_idx).TASK_ASSIGNMENT_OVN;
434: JTF_TASK_ASSIGNMENTS_PUB.UPDATE_TASK_ASSIGNMENT
435: (
436: p_api_version => 1.0,
437: p_commit => fnd_api.G_FALSE,
438: p_object_version_number => l_ovn,
439: p_task_assignment_id => p_Object_Tasks(l_idx).TASK_ASSIGNMENT_ID,
440: p_enable_workflow => NULL,
441: p_abort_workflow => NULL,
443: x_return_status => l_return_status,
444: x_msg_count => l_msg_count,
445: x_msg_data => l_msg_data
446: );
447: IF l_return_status <> fnd_api.g_ret_sts_success
448: THEN
449: IF l_return_status = fnd_api.g_ret_sts_error
450: THEN
451: RAISE fnd_api.g_exc_error;
445: x_msg_data => l_msg_data
446: );
447: IF l_return_status <> fnd_api.g_ret_sts_success
448: THEN
449: IF l_return_status = fnd_api.g_ret_sts_error
450: THEN
451: RAISE fnd_api.g_exc_error;
452: ELSE
453: RAISE fnd_api.g_exc_unexpected_error;
447: IF l_return_status <> fnd_api.g_ret_sts_success
448: THEN
449: IF l_return_status = fnd_api.g_ret_sts_error
450: THEN
451: RAISE fnd_api.g_exc_error;
452: ELSE
453: RAISE fnd_api.g_exc_unexpected_error;
454: END IF;
455: END IF;
449: IF l_return_status = fnd_api.g_ret_sts_error
450: THEN
451: RAISE fnd_api.g_exc_error;
452: ELSE
453: RAISE fnd_api.g_exc_unexpected_error;
454: END IF;
455: END IF;
456: END IF;
457: l_idx := p_Object_Tasks.NEXT(l_idx);
463: , p_data => x_msg_data
464: );
465: EXCEPTION
466:
467: WHEN fnd_api.g_exc_error THEN
468: x_return_status := fnd_api.g_ret_sts_error;
469: fnd_msg_pub.count_and_get( p_encoded => 'F'
470: , p_count => x_msg_count
471: , p_data => x_msg_data
464: );
465: EXCEPTION
466:
467: WHEN fnd_api.g_exc_error THEN
468: x_return_status := fnd_api.g_ret_sts_error;
469: fnd_msg_pub.count_and_get( p_encoded => 'F'
470: , p_count => x_msg_count
471: , p_data => x_msg_data
472: );
470: , p_count => x_msg_count
471: , p_data => x_msg_data
472: );
473:
474: WHEN fnd_api.g_exc_unexpected_error THEN
475: x_return_status := fnd_api.g_ret_sts_unexp_error;
476: fnd_msg_pub.count_and_get( p_encoded => 'F'
477: , p_count => x_msg_count
478: , p_data => x_msg_data
471: , p_data => x_msg_data
472: );
473:
474: WHEN fnd_api.g_exc_unexpected_error THEN
475: x_return_status := fnd_api.g_ret_sts_unexp_error;
476: fnd_msg_pub.count_and_get( p_encoded => 'F'
477: , p_count => x_msg_count
478: , p_data => x_msg_data
479: );
478: , p_data => x_msg_data
479: );
480:
481: WHEN OTHERS THEN
482: x_return_status := fnd_api.g_ret_sts_unexp_error;
483: IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error)
484: THEN
485: fnd_msg_pub.add_exc_msg( g_pkg_name
486: , l_api_name
509: , p_available_hours IN NUMBER DEFAULT NULL -- The new value of available hours
510: -- If it is NULL then no change is done to the existing data
511: , p_available_hours_before IN NUMBER DEFAULT NULL -- The new value of available before hours.
512: -- If it is NULL then no change is done to the existing data
513: -- If it is FND_API.G_MISS_NUM then the value will be set to NULL in the database
514: , p_available_hours_after IN NUMBER DEFAULT NULL -- The new value of available before hours.
515: -- If it is NULL then no change is done to the existing data
516: -- If it is FND_API.G_MISS_NUM then the value will be set to NULL in the database
517: , p_status IN NUMBER DEFAULT NULL -- The new value of the status
512: -- If it is NULL then no change is done to the existing data
513: -- If it is FND_API.G_MISS_NUM then the value will be set to NULL in the database
514: , p_available_hours_after IN NUMBER DEFAULT NULL -- The new value of available before hours.
515: -- If it is NULL then no change is done to the existing data
516: -- If it is FND_API.G_MISS_NUM then the value will be set to NULL in the database
517: , p_status IN NUMBER DEFAULT NULL -- The new value of the status
518: -- If it is NULL then no change is done to the existing data
519: , x_return_status OUT NOCOPY VARCHAR2 -- 'S': API completed without errors
520: -- 'E': API completed with recoverable errors; explanation on errorstack
550:
551: BEGIN
552:
553: -- check version compatibility
554: IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
555: l_api_name, g_pkg_name)
556: THEN
557: RAISE fnd_api.g_exc_unexpected_error;
558: END IF;
553: -- check version compatibility
554: IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
555: l_api_name, g_pkg_name)
556: THEN
557: RAISE fnd_api.g_exc_unexpected_error;
558: END IF;
559: -- initialize message stack if required
560: IF fnd_api.to_boolean(p_init_msg_list)
561: THEN
556: THEN
557: RAISE fnd_api.g_exc_unexpected_error;
558: END IF;
559: -- initialize message stack if required
560: IF fnd_api.to_boolean(p_init_msg_list)
561: THEN
562: fnd_msg_pub.initialize;
563: END IF;
564: -- initialize return status
561: THEN
562: fnd_msg_pub.initialize;
563: END IF;
564: -- initialize return status
565: x_return_status := fnd_api.g_ret_sts_success;
566:
567: l_Object_Capacity.OBJECT_CAPACITY_ID := p_object_capacity_id;
568:
569: OPEN C_ObjCap(l_Object_Capacity.OBJECT_CAPACITY_ID);
582: THEN
583: CLOSE C_ObjCap;
584: fnd_message.set_name('FND', 'FND_RECORD_DELETED_ERROR');
585: fnd_msg_pub.add;
586: RAISE fnd_api.g_exc_unexpected_error;
587: END IF;
588: CLOSE C_ObjCap;
589:
590: -- check if record updated by another user
592: l_Object_Capacity.OBJECT_VERSION_NUMBER)
593: THEN
594: fnd_message.set_name('FND', 'FND_RECORD_CHANGED_ERROR');
595: fnd_msg_pub.add;
596: RAISE fnd_api.g_exc_unexpected_error;
597: END IF;
598:
599: -- Copy the changed values
600:
599: -- Copy the changed values
600:
601: -- Available hours is mandatory field, so update only if a new valid
602: -- value is passed.
603: IF ((p_available_hours IS NULL) OR (p_available_hours = FND_API.G_MISS_NUM))
604: THEN
605: NULL;
606: ELSE
607: l_Object_Capacity.AVAILABLE_HOURS := p_available_hours;
610: -- Available hours before can be set to NULL or a new value
611: IF (p_available_hours_before IS NULL)
612: THEN
613: NULL;
614: ELSIF (p_available_hours_before = FND_API.G_MISS_NUM)
615: THEN
616: l_Object_Capacity.AVAILABLE_HOURS_BEFORE := NULL;
617: ELSE
618: l_Object_Capacity.AVAILABLE_HOURS_BEFORE := p_available_hours_before;
621: -- Available hours after can be set to NULL or a new value
622: IF (p_available_hours_after IS NULL)
623: THEN
624: NULL;
625: ELSIF (p_available_hours_after = FND_API.G_MISS_NUM)
626: THEN
627: l_Object_Capacity.AVAILABLE_HOURS_AFTER := NULL;
628: ELSE
629: l_Object_Capacity.AVAILABLE_HOURS_AFTER := p_available_hours_after;
629: l_Object_Capacity.AVAILABLE_HOURS_AFTER := p_available_hours_after;
630: END IF;
631:
632: -- Status is mandatory field, so update only if a new valid value is passed.
633: IF ((p_status IS NULL) OR (p_status = FND_API.G_MISS_NUM))
634: THEN
635: NULL;
636: ELSE
637: l_Object_Capacity.STATUS := p_status;
670: , p_data => x_msg_data
671: );
672: EXCEPTION
673:
674: WHEN fnd_api.g_exc_error THEN
675: x_return_status := fnd_api.g_ret_sts_error;
676: fnd_msg_pub.count_and_get( p_encoded => 'F'
677: , p_count => x_msg_count
678: , p_data => x_msg_data
671: );
672: EXCEPTION
673:
674: WHEN fnd_api.g_exc_error THEN
675: x_return_status := fnd_api.g_ret_sts_error;
676: fnd_msg_pub.count_and_get( p_encoded => 'F'
677: , p_count => x_msg_count
678: , p_data => x_msg_data
679: );
677: , p_count => x_msg_count
678: , p_data => x_msg_data
679: );
680:
681: WHEN fnd_api.g_exc_unexpected_error THEN
682: x_return_status := fnd_api.g_ret_sts_unexp_error;
683: fnd_msg_pub.count_and_get( p_encoded => 'F'
684: , p_count => x_msg_count
685: , p_data => x_msg_data
678: , p_data => x_msg_data
679: );
680:
681: WHEN fnd_api.g_exc_unexpected_error THEN
682: x_return_status := fnd_api.g_ret_sts_unexp_error;
683: fnd_msg_pub.count_and_get( p_encoded => 'F'
684: , p_count => x_msg_count
685: , p_data => x_msg_data
686: );
685: , p_data => x_msg_data
686: );
687:
688: WHEN OTHERS THEN
689: x_return_status := fnd_api.g_ret_sts_unexp_error;
690: IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error)
691: THEN
692: fnd_msg_pub.add_exc_msg( g_pkg_name
693: , l_api_name
756:
757: BEGIN
758:
759: -- check version compatibility
760: IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
761: l_api_name, g_pkg_name)
762: THEN
763: RAISE fnd_api.g_exc_unexpected_error;
764: END IF;
759: -- check version compatibility
760: IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
761: l_api_name, g_pkg_name)
762: THEN
763: RAISE fnd_api.g_exc_unexpected_error;
764: END IF;
765: -- initialize message stack if required
766: IF fnd_api.to_boolean(p_init_msg_list)
767: THEN
762: THEN
763: RAISE fnd_api.g_exc_unexpected_error;
764: END IF;
765: -- initialize message stack if required
766: IF fnd_api.to_boolean(p_init_msg_list)
767: THEN
768: fnd_msg_pub.initialize;
769: END IF;
770: -- initialize return status
767: THEN
768: fnd_msg_pub.initialize;
769: END IF;
770: -- initialize return status
771: x_return_status := fnd_api.g_ret_sts_success;
772:
773: OPEN C_ObjCap(p_object_capacity_id);
774: FETCH C_ObjCap
775: INTO l_object_version_number;
777: THEN
778: CLOSE C_ObjCap;
779: fnd_message.set_name('FND', 'FND_RECORD_DELETED_ERROR');
780: fnd_msg_pub.add;
781: RAISE fnd_api.g_exc_unexpected_error;
782: END IF;
783: CLOSE C_ObjCap;
784:
785: -- check if record updated by another user
786: IF (NVL(p_object_version_number, -1) <> l_object_version_number)
787: THEN
788: fnd_message.set_name('FND', 'FND_RECORD_CHANGED_ERROR');
789: fnd_msg_pub.add;
790: RAISE fnd_api.g_exc_unexpected_error;
791: END IF;
792:
793: -- check if task assignments need to be updated
794: IF fnd_api.to_boolean(p_Update_Tasks)
790: RAISE fnd_api.g_exc_unexpected_error;
791: END IF;
792:
793: -- check if task assignments need to be updated
794: IF fnd_api.to_boolean(p_Update_Tasks)
795: THEN
796: -- First get all the open task assignments and remove the object capacity
797: FOR ref_tasks IN c_tasks(p_object_capacity_id)
798: LOOP
799: -- Call assignments api to update object capacity id
800: JTF_TASK_ASSIGNMENTS_PUB.UPDATE_TASK_ASSIGNMENT
801: (
802: p_api_version => 1.0,
803: p_commit => fnd_api.G_FALSE,
804: p_object_version_number => ref_tasks.OBJECT_VERSION_NUMBER,
805: p_task_assignment_id => ref_tasks.TASK_ASSIGNMENT_ID,
806: p_enable_workflow => NULL,
807: p_abort_workflow => NULL,
809: x_return_status => l_return_status,
810: x_msg_count => l_msg_count,
811: x_msg_data => l_msg_data
812: );
813: IF l_return_status <> fnd_api.g_ret_sts_success
814: THEN
815: IF l_return_status = fnd_api.g_ret_sts_error
816: THEN
817: RAISE fnd_api.g_exc_error;
811: x_msg_data => l_msg_data
812: );
813: IF l_return_status <> fnd_api.g_ret_sts_success
814: THEN
815: IF l_return_status = fnd_api.g_ret_sts_error
816: THEN
817: RAISE fnd_api.g_exc_error;
818: ELSE
819: RAISE fnd_api.g_exc_unexpected_error;
813: IF l_return_status <> fnd_api.g_ret_sts_success
814: THEN
815: IF l_return_status = fnd_api.g_ret_sts_error
816: THEN
817: RAISE fnd_api.g_exc_error;
818: ELSE
819: RAISE fnd_api.g_exc_unexpected_error;
820: END IF;
821: END IF;
815: IF l_return_status = fnd_api.g_ret_sts_error
816: THEN
817: RAISE fnd_api.g_exc_error;
818: ELSE
819: RAISE fnd_api.g_exc_unexpected_error;
820: END IF;
821: END IF;
822: END LOOP;
823: END IF;
833: , p_data => x_msg_data
834: );
835: EXCEPTION
836:
837: WHEN fnd_api.g_exc_error THEN
838: x_return_status := fnd_api.g_ret_sts_error;
839: fnd_msg_pub.count_and_get( p_encoded => 'F'
840: , p_count => x_msg_count
841: , p_data => x_msg_data
834: );
835: EXCEPTION
836:
837: WHEN fnd_api.g_exc_error THEN
838: x_return_status := fnd_api.g_ret_sts_error;
839: fnd_msg_pub.count_and_get( p_encoded => 'F'
840: , p_count => x_msg_count
841: , p_data => x_msg_data
842: );
840: , p_count => x_msg_count
841: , p_data => x_msg_data
842: );
843:
844: WHEN fnd_api.g_exc_unexpected_error THEN
845: x_return_status := fnd_api.g_ret_sts_unexp_error;
846: fnd_msg_pub.count_and_get( p_encoded => 'F'
847: , p_count => x_msg_count
848: , p_data => x_msg_data
841: , p_data => x_msg_data
842: );
843:
844: WHEN fnd_api.g_exc_unexpected_error THEN
845: x_return_status := fnd_api.g_ret_sts_unexp_error;
846: fnd_msg_pub.count_and_get( p_encoded => 'F'
847: , p_count => x_msg_count
848: , p_data => x_msg_data
849: );
848: , p_data => x_msg_data
849: );
850:
851: WHEN OTHERS THEN
852: x_return_status := fnd_api.g_ret_sts_unexp_error;
853: IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error)
854: THEN
855: fnd_msg_pub.add_exc_msg( g_pkg_name
856: , l_api_name
895:
896: BEGIN
897:
898: -- check version compatibility
899: IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
900: l_api_name, g_pkg_name)
901: THEN
902: RAISE fnd_api.g_exc_unexpected_error;
903: END IF;
898: -- check version compatibility
899: IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
900: l_api_name, g_pkg_name)
901: THEN
902: RAISE fnd_api.g_exc_unexpected_error;
903: END IF;
904: -- initialize message stack if required
905: IF fnd_api.to_boolean(p_init_msg_list)
906: THEN
901: THEN
902: RAISE fnd_api.g_exc_unexpected_error;
903: END IF;
904: -- initialize message stack if required
905: IF fnd_api.to_boolean(p_init_msg_list)
906: THEN
907: fnd_msg_pub.initialize;
908: END IF;
909: -- initialize return status
906: THEN
907: fnd_msg_pub.initialize;
908: END IF;
909: -- initialize return status
910: x_return_status := fnd_api.g_ret_sts_success;
911:
912: fnd_msg_pub.count_and_get( p_encoded => 'F'
913: , p_count => x_msg_count
914: , p_data => x_msg_data
914: , p_data => x_msg_data
915: );
916: EXCEPTION
917:
918: WHEN fnd_api.g_exc_error THEN
919: x_return_status := fnd_api.g_ret_sts_error;
920: fnd_msg_pub.count_and_get( p_encoded => 'F'
921: , p_count => x_msg_count
922: , p_data => x_msg_data
915: );
916: EXCEPTION
917:
918: WHEN fnd_api.g_exc_error THEN
919: x_return_status := fnd_api.g_ret_sts_error;
920: fnd_msg_pub.count_and_get( p_encoded => 'F'
921: , p_count => x_msg_count
922: , p_data => x_msg_data
923: );
921: , p_count => x_msg_count
922: , p_data => x_msg_data
923: );
924:
925: WHEN fnd_api.g_exc_unexpected_error THEN
926: x_return_status := fnd_api.g_ret_sts_unexp_error;
927: fnd_msg_pub.count_and_get( p_encoded => 'F'
928: , p_count => x_msg_count
929: , p_data => x_msg_data
922: , p_data => x_msg_data
923: );
924:
925: WHEN fnd_api.g_exc_unexpected_error THEN
926: x_return_status := fnd_api.g_ret_sts_unexp_error;
927: fnd_msg_pub.count_and_get( p_encoded => 'F'
928: , p_count => x_msg_count
929: , p_data => x_msg_data
930: );
929: , p_data => x_msg_data
930: );
931:
932: WHEN OTHERS THEN
933: x_return_status := fnd_api.g_ret_sts_unexp_error;
934: IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error)
935: THEN
936: fnd_msg_pub.add_exc_msg( g_pkg_name
937: , l_api_name