DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_ACTMETRIC_PUB

Source


1 PACKAGE BODY AMS_ActMetric_PUB AS
2 /* $Header: amspamtb.pls 120.0 2005/05/31 16:05:39 appldev noship $ */
3 
4 
5 g_pkg_name  CONSTANT VARCHAR2(30):='AMS_ActMetric_PUB';
6 
7 
8 ---------------------------------------------------------------------
9 -- PROCEDURE
10 --    Create_ActMetric
11 --
12 -- PURPOSE
13 --   Creates a metric in AMS_ACT_METRICS_ALL given the
14 --   record for the metrics.
15 --
16 -- HISTORY
17 --    10/14/99  ptendulk  Created.
18 ---------------------------------------------------------------------
19 AMS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
20 AMS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
21 AMS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
22 
23 PROCEDURE Create_ActMetric(
24    p_api_version       	   IN  NUMBER,
25    p_init_msg_list     	   IN  VARCHAR2  := FND_API.g_false,
26    p_commit            	   IN  VARCHAR2  := FND_API.g_false,
27    p_validation_level  	   IN  NUMBER    := FND_API.g_valid_level_full,
28 
29    x_return_status     	   OUT NOCOPY VARCHAR2,
30    x_msg_count         	   OUT NOCOPY NUMBER,
31    x_msg_data          	   OUT NOCOPY VARCHAR2,
32 
33    p_act_metric_rec        IN  AMS_ACTMETRIC_PVT.act_metric_rec_type,
34    x_activity_metric_id    OUT NOCOPY NUMBER
35 )
36 IS
37 
38    l_api_name       CONSTANT VARCHAR2(30) := 'Create_Metric';
39    l_return_status  VARCHAR2(1);
40    l_act_metric_rec AMS_ActMetric_PVT.act_metric_rec_type := p_act_metric_rec;
41 
42 BEGIN
43 
44    SAVEPOINT create_actmetric_pub;
45 
46    -- initialize the message list;
47    -- won't do it again when calling private API
48    IF FND_API.to_boolean(p_init_msg_list) THEN
49       FND_MSG_PUB.initialize;
50    END IF;
51 
52    -- call business API
53    AMS_ActMetric_PVT.Create_ActMetric(
54       p_api_version      	  => p_api_version,
55       p_init_msg_list    	  => FND_API.g_false, --has done before
56       p_commit           	  => FND_API.g_false, -- will do after
57       p_validation_level 	  => p_validation_level,
58 
59       x_return_status    	  => l_return_status,
60       x_msg_count        	  => x_msg_count,
61       x_msg_data         	  => x_msg_data,
62 
63       p_act_metric_rec        => l_act_metric_rec,
64       x_activity_metric_id    => x_activity_metric_id
65    );
66 
67    IF l_return_status = FND_API.g_ret_sts_error THEN
68       RAISE FND_API.g_exc_error;
69    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
70       RAISE FND_API.g_exc_unexpected_error;
71    END IF;
72 
73 
74    IF FND_API.to_boolean(p_commit) THEN
75       COMMIT;
76    END IF;
77    x_return_status := FND_API.g_ret_sts_success;
78    FND_MSG_PUB.count_and_get(
79          p_encoded => FND_API.g_false,
80          p_count   => x_msg_count,
81          p_data    => x_msg_data
82    );
83 
84 EXCEPTION
85 
86    WHEN FND_API.g_exc_error THEN
87       ROLLBACK TO create_actmetric_pub;
88       x_return_status := FND_API.g_ret_sts_error;
89       FND_MSG_PUB.count_and_get(
90             p_encoded => FND_API.g_false,
91             p_count   => x_msg_count,
92             p_data    => x_msg_data
93       );
94 
95    WHEN FND_API.g_exc_unexpected_error THEN
96       ROLLBACK TO create_actmetric_pub;
97       x_return_status := FND_API.g_ret_sts_unexp_error ;
98       FND_MSG_PUB.count_and_get(
99             p_encoded => FND_API.g_false,
100             p_count   => x_msg_count,
101             p_data    => x_msg_data
102       );
103 
104 
105    WHEN OTHERS THEN
106       ROLLBACK TO create_actmetric_pub;
107       x_return_status := FND_API.g_ret_sts_unexp_error ;
108 
109       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
110 		THEN
111          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
112       END IF;
113 
114       FND_MSG_PUB.count_and_get(
115             p_encoded => FND_API.g_false,
116             p_count   => x_msg_count,
117             p_data    => x_msg_data
118       );
119 
120 END Create_ActMetric;
121 
122 
123 ---------------------------------------------------------------------
124 -- PROCEDURE
125 --    Delete_ActMetric
126 --
127 -- PURPOSE
128 --    Deletes the association of a metric to a business
129 --    object by creating a record in AMS_ACT_METRICS_ALL.
130 --
131 -- HISTORY
132 --    10/14/99  ptendulk  Created.
133 ---------------------------------------------------------------------
134 PROCEDURE Delete_ActMetric(
135    p_api_version       	   IN  NUMBER,
136    p_init_msg_list     	   IN  VARCHAR2 := FND_API.g_false,
137    p_commit            	   IN  VARCHAR2 := FND_API.g_false,
138 
139    x_return_status     	   OUT NOCOPY VARCHAR2,
140    x_msg_count         	   OUT NOCOPY NUMBER,
141    x_msg_data          	   OUT NOCOPY VARCHAR2,
142 
143    p_activity_metric_id    IN  NUMBER,
144    p_object_version    	   IN  NUMBER
145 )
146 IS
147 
148    l_api_name       CONSTANT VARCHAR2(30) := 'Delete_ActMetric';
149    l_return_status  VARCHAR2(1);
150    l_act_metric_id  NUMBER := p_activity_metric_id;
151    l_object_version NUMBER := p_object_version;
152 
153 BEGIN
154 
155    SAVEPOINT delete_actmetric_pub;
156 
157    -- initialize the message list;
158    -- won't do it again when calling private API
159    IF FND_API.to_boolean(p_init_msg_list) THEN
160       FND_MSG_PUB.initialize;
161    END IF;
162 
163    -- call business API
164    AMS_ActMetric_PVT.Delete_ActMetric(
165       p_api_version      		=> p_api_version,
166       p_init_msg_list    		=> FND_API.g_false, --has done before
167       p_commit           		=> FND_API.g_false, -- will do after
168 
169       x_return_status    		=> l_return_status,
170       x_msg_count        		=> x_msg_count,
171       x_msg_data         		=> x_msg_data,
172 
173       p_activity_metric_id      => l_act_metric_id,
174       p_object_version_number   => l_object_version
175    );
176 
177    IF l_return_status = FND_API.g_ret_sts_error THEN
178       RAISE FND_API.g_exc_error;
179    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
180       RAISE FND_API.g_exc_unexpected_error;
181    END IF;
182 
183 
184    IF FND_API.to_boolean(p_commit) THEN
185       COMMIT;
186    END IF;
187    x_return_status := FND_API.g_ret_sts_success;
188    FND_MSG_PUB.count_and_get(
189          p_encoded => FND_API.g_false,
190          p_count   => x_msg_count,
191          p_data    => x_msg_data
192    );
193 
194 
195 EXCEPTION
196 
197    WHEN FND_API.g_exc_error THEN
198       ROLLBACK TO delete_actmetric_pub;
199       x_return_status := FND_API.g_ret_sts_error;
200       FND_MSG_PUB.count_and_get(
201             p_encoded => FND_API.g_false,
202             p_count   => x_msg_count,
203             p_data    => x_msg_data
204       );
205 
206    WHEN FND_API.g_exc_unexpected_error THEN
207       ROLLBACK TO delete_actmetric_pub;
208       x_return_status := FND_API.g_ret_sts_unexp_error ;
209       FND_MSG_PUB.count_and_get(
210             p_encoded => FND_API.g_false,
211             p_count   => x_msg_count,
212             p_data    => x_msg_data
213       );
214 
215 
216    WHEN OTHERS THEN
217       ROLLBACK TO delete_actmetric_pub;
218       x_return_status := FND_API.g_ret_sts_unexp_error ;
219 
220       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
221 		THEN
222          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
223       END IF;
224 
225       FND_MSG_PUB.count_and_get(
226             p_encoded => FND_API.g_false,
227             p_count   => x_msg_count,
228             p_data    => x_msg_data
229       );
230 
231 END Delete_ActMetric;
232 
233 
234 ---------------------------------------------------------------------
235 -- PROCEDURE
236 --    Lock_ActMetric
237 --
238 -- PURPOSE
239 --    Perform a row lock of the Activity metrics identified in the
240 --    given row.
241 -- HISTORY
242 --
243 --    10/14/99  ptendulk  Created.
244 ---------------------------------------------------------------------
245 PROCEDURE Lock_ActMetric(
246    p_api_version       	 IN  NUMBER,
247    p_init_msg_list     	 IN  VARCHAR2 := FND_API.g_false,
248 
249    x_return_status     	 OUT NOCOPY VARCHAR2,
250    x_msg_count         	 OUT NOCOPY NUMBER,
251    x_msg_data          	 OUT NOCOPY VARCHAR2,
252 
253    p_activity_metric_id  IN  NUMBER,
254    p_object_version    	 IN  NUMBER
255 )
256 IS
257 
258    l_api_name       CONSTANT VARCHAR2(30) := 'Lock_ActMetric';
259    l_return_status  VARCHAR2(1);
260    l_act_metric_id  NUMBER := p_activity_metric_id;
261    l_object_version NUMBER := p_object_version;
262 
263 BEGIN
264 
265    SAVEPOINT lock_actmetric_pub;
266 
267    -- initialize the message list;
268    -- won't do it again when calling private API
269    IF FND_API.to_boolean(p_init_msg_list) THEN
270       FND_MSG_PUB.initialize;
271    END IF;
272 
273    -- call business API
274    AMS_ActMetric_PVT.Lock_ActMetric(
275       p_api_version      	  => p_api_version,
276       p_init_msg_list    	  => FND_API.g_false, --has done before
277 
278       x_return_status    	  => l_return_status,
279       x_msg_count        	  => x_msg_count,
280       x_msg_data         	  => x_msg_data,
281 
282       p_activity_metric_id    => l_act_metric_id,
283       p_object_version_number => l_object_version
284    );
285 
286    IF l_return_status = FND_API.g_ret_sts_error THEN
287       RAISE FND_API.g_exc_error;
288    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
289       RAISE FND_API.g_exc_unexpected_error;
290    END IF;
291 
292    x_return_status := FND_API.g_ret_sts_success;
293    FND_MSG_PUB.count_and_get(
294          p_encoded => FND_API.g_false,
295          p_count   => x_msg_count,
296          p_data    => x_msg_data
297    );
298 
299 EXCEPTION
300 
301    WHEN FND_API.g_exc_error THEN
302       ROLLBACK TO lock_actmetric_pub;
303       x_return_status := FND_API.g_ret_sts_error;
304       FND_MSG_PUB.count_and_get(
305             p_encoded => FND_API.g_false,
306             p_count   => x_msg_count,
307             p_data    => x_msg_data
308       );
309 
310    WHEN FND_API.g_exc_unexpected_error THEN
311       ROLLBACK TO lock_actmetric_pub;
312       x_return_status := FND_API.g_ret_sts_unexp_error ;
313       FND_MSG_PUB.count_and_get(
314             p_encoded => FND_API.g_false,
315             p_count   => x_msg_count,
316             p_data    => x_msg_data
317       );
318 
319 
320    WHEN OTHERS THEN
321       ROLLBACK TO lock_actmetric_pub;
322       x_return_status := FND_API.g_ret_sts_unexp_error ;
323 
324       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
325 		THEN
326          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
327       END IF;
328 
329       FND_MSG_PUB.count_and_get(
330             p_encoded => FND_API.g_false,
331             p_count   => x_msg_count,
332             p_data    => x_msg_data
333       );
334 
335 END Lock_ActMetric;
336 
337 
338 ---------------------------------------------------------------------
339 -- PROCEDURE
340 --    Update_ActMetric
341 --
342 -- PURPOSE
343 --   Updates a metric in AMS_ACT_METRICS_ALL given the
344 --   record for the metrics.
345 --
346 -- HISTORY
347 --    10/14/99  ptendulk  created.
348 ---------------------------------------------------------------------
349 PROCEDURE Update_ActMetric(
350    p_api_version       IN  NUMBER,
351    p_init_msg_list     IN  VARCHAR2  := FND_API.g_false,
352    p_commit            IN  VARCHAR2  := FND_API.g_false,
353    p_validation_level  IN  NUMBER    := FND_API.g_valid_level_full,
354 
355    x_return_status     OUT NOCOPY VARCHAR2,
356    x_msg_count         OUT NOCOPY NUMBER,
357    x_msg_data          OUT NOCOPY VARCHAR2,
358 
359    p_act_metric_rec    IN  AMS_ActMetric_PVT.act_metric_rec_type
360 )
361 IS
362 
363    l_api_name       CONSTANT VARCHAR2(30) := 'Update_ActMetric';
364    l_return_status  VARCHAR2(1);
365    l_act_metric_rec AMS_ActMetric_PVT.act_metric_rec_type := p_act_metric_rec;
366 
367 BEGIN
368 
369    SAVEPOINT update_actmetric_pub;
370 
371    -- initialize the message list;
372    -- won't do it again when calling private API
373    IF FND_API.to_boolean(p_init_msg_list) THEN
374       FND_MSG_PUB.initialize;
375    END IF;
376 
377    -- call business API
378    AMS_ActMetric_PVT.Update_ActMetric(
379       p_api_version      => p_api_version,
380       p_init_msg_list    => FND_API.g_false, --has done before
381       p_commit           => FND_API.g_false, -- will do after
382       p_validation_level => p_validation_level,
383 
384       x_return_status    => l_return_status,
385       x_msg_count        => x_msg_count,
386       x_msg_data         => x_msg_data,
387 
388       p_act_metric_rec   => l_act_metric_rec
389    );
390 
391    IF l_return_status = FND_API.g_ret_sts_error THEN
392       RAISE FND_API.g_exc_error;
393    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
394       RAISE FND_API.g_exc_unexpected_error;
395    END IF;
396 
397 
398    IF FND_API.to_boolean(p_commit) THEN
399       COMMIT;
400    END IF;
401    x_return_status := FND_API.g_ret_sts_success;
402    FND_MSG_PUB.count_and_get(
403          p_encoded => FND_API.g_false,
404          p_count   => x_msg_count,
405          p_data    => x_msg_data
406    );
407 
408 EXCEPTION
409 
410    WHEN FND_API.g_exc_error THEN
411       ROLLBACK TO update_actmetric_pub;
412       x_return_status := FND_API.g_ret_sts_error;
413       FND_MSG_PUB.count_and_get(
414             p_encoded => FND_API.g_false,
415             p_count   => x_msg_count,
416             p_data    => x_msg_data
417       );
418 
419    WHEN FND_API.g_exc_unexpected_error THEN
420       ROLLBACK TO update_actmetric_pub;
421       x_return_status := FND_API.g_ret_sts_unexp_error ;
422       FND_MSG_PUB.count_and_get(
423             p_encoded => FND_API.g_false,
424             p_count   => x_msg_count,
425             p_data    => x_msg_data
426       );
427 
428 
429    WHEN OTHERS THEN
430       ROLLBACK TO update_actmetric_pub;
431       x_return_status := FND_API.g_ret_sts_unexp_error ;
432 
433       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
434 		THEN
435          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
436       END IF;
437 
438       FND_MSG_PUB.count_and_get(
439             p_encoded => FND_API.g_false,
440             p_count   => x_msg_count,
441             p_data    => x_msg_data
442       );
443 
444 END Update_ActMetric;
445 
446 
447 ---------------------------------------------------------------------
448 -- PROCEDURE
449 --    Validate_ActMetric
450 --
451 -- PURPOSE
452 --   Validation API for Activity metrics.
453 --
454 --
455 -- HISTORY
456 --    10/01/99  ptendulk  validated.
457 ---------------------------------------------------------------------
458 PROCEDURE Validate_ActMetric(
462 
459    p_api_version       IN  NUMBER,
460    p_init_msg_list     IN  VARCHAR2  := FND_API.g_false,
461    p_validation_level  IN  NUMBER    := FND_API.g_valid_level_full,
463    x_return_status     OUT NOCOPY VARCHAR2,
464    x_msg_count         OUT NOCOPY NUMBER,
465    x_msg_data          OUT NOCOPY VARCHAR2,
466 
467    p_act_metric_rec    IN  AMS_ActMetric_PVT.act_metric_rec_type
468 )
469 IS
470 
471    l_api_name       CONSTANT VARCHAR2(30) := 'Validate_ActMetric';
472    l_return_status  VARCHAR2(1);
473    l_act_metric_rec AMS_ActMetric_PVT.act_metric_rec_type := p_act_metric_rec;
474 
475 BEGIN
476 
477    SAVEPOINT validate_actmetric_pub;
478 
479    -- initialize the message list;
480    -- won't do it again when calling private API
481    IF FND_API.to_boolean(p_init_msg_list) THEN
482       FND_MSG_PUB.initialize;
483    END IF;
484 
485    -- call business API
486    AMS_ActMetric_PVT.Validate_ActMetric(
487       p_api_version      => p_api_version,
488       p_init_msg_list    => FND_API.g_false, --has done before
489       p_validation_level => p_validation_level,
490 
491       x_return_status    => l_return_status,
492       x_msg_count        => x_msg_count,
493       x_msg_data         => x_msg_data,
494 
495       p_act_metric_rec   => l_act_metric_rec
496    );
497 
498    IF l_return_status = FND_API.g_ret_sts_error THEN
499       RAISE FND_API.g_exc_error;
500    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
501       RAISE FND_API.g_exc_unexpected_error;
502    END IF;
503 
504    x_return_status := FND_API.g_ret_sts_success;
505    FND_MSG_PUB.count_and_get(
506          p_encoded => FND_API.g_false,
507          p_count   => x_msg_count,
508          p_data    => x_msg_data
509    );
510 
511 EXCEPTION
512 
513    WHEN FND_API.g_exc_error THEN
514       ROLLBACK TO validate_actmetric_pub;
515       x_return_status := FND_API.g_ret_sts_error;
516       FND_MSG_PUB.count_and_get(
517             p_encoded => FND_API.g_false,
518             p_count   => x_msg_count,
519             p_data    => x_msg_data
520       );
521 
522    WHEN FND_API.g_exc_unexpected_error THEN
523       ROLLBACK TO validate_actmetric_pub;
524       x_return_status := FND_API.g_ret_sts_unexp_error ;
525       FND_MSG_PUB.count_and_get(
526             p_encoded => FND_API.g_false,
527             p_count   => x_msg_count,
528             p_data    => x_msg_data
529       );
530 
531 
532    WHEN OTHERS THEN
533       ROLLBACK TO validate_actmetric_pub;
534       x_return_status := FND_API.g_ret_sts_unexp_error ;
535 
536       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
537 		THEN
538          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
539       END IF;
540 
541       FND_MSG_PUB.count_and_get(
542             p_encoded => FND_API.g_false,
543             p_count   => x_msg_count,
544             p_data    => x_msg_data
545       );
546 
547 END Validate_ActMetric;
548 
549 ---------------------------------------------------------------------
550 -- PROCEDURE
551 --    Invalidate_Rollup
552 --
553 -- PURPOSE
554 --    Invalidate to rollup pointers.
555 --
556 -- PARAMETERS
557 --    p_used_by_type: Object type, eg. 'CAMP', 'EVEO', etc.
558 --    p_used_by_id: Identifier for the object.
559 --
560 -- NOTES
561 --    1. Set the dirty flags for all related rollups.
562 --    2. Set the rollup_to_metric fields to null for this object.
563 --    3. When the hierarchy of business objects gets changed including deletion
564 --       and modification, this stored procedure needs to be called for the
565 --       child business object.  For example, when a user modifies the parent
566 --       of a campaign, call this procedure against the child campaign.
567 --       Another example, when a user changes an event associated with a
568 --       campaign, call this stored procedure for old event object.  One more
569 --       example, when a user delete a deliverable from a campaign, call
570 --       this stored procedure for the deliverable being deleted.  You do
571 --       not need to call this module when you add parent or child
572 --       to a businness object.
573 --
574 ----------------------------------------------------------------------
575 PROCEDURE Invalidate_Rollup(
576    p_api_version       IN  NUMBER,
577    p_init_msg_list     IN  VARCHAR2  := FND_API.g_false,
578    p_commit            IN  VARCHAR2  := FND_API.g_false,
579 
580    x_return_status     OUT NOCOPY VARCHAR2,
581    x_msg_count         OUT NOCOPY NUMBER,
582    x_msg_data          OUT NOCOPY VARCHAR2,
583 
584    p_used_by_type      IN VARCHAR2,
585    p_used_by_id        IN NUMBER
586 )
587 IS
588 
589    l_api_name       CONSTANT VARCHAR2(30) := 'Invalidate_Rollup';
590    l_return_status  VARCHAR2(1);
591 
592 BEGIN
593 
594    SAVEPOINT invalidate_rollup_pub;
595 
596    -- initialize the message list;
597    -- won't do it again when calling private API
598    IF FND_API.to_boolean(p_init_msg_list) THEN
599       FND_MSG_PUB.initialize;
600    END IF;
601 
605       p_init_msg_list    => FND_API.g_false, --has done before
602    -- call business API
603    AMS_ActMetric_PVT.Invalidate_Rollup(
604       p_api_version      => p_api_version,
606       p_commit           => p_commit,
607 
608       x_return_status    => l_return_status,
609       x_msg_count        => x_msg_count,
610       x_msg_data         => x_msg_data,
611 
612 		p_used_by_type     => p_used_by_type,
613 		p_used_by_id       => p_used_by_id
614    );
615 
616    IF l_return_status = FND_API.g_ret_sts_error THEN
617       RAISE FND_API.g_exc_error;
618    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
619       RAISE FND_API.g_exc_unexpected_error;
620    END IF;
621 
622    x_return_status := FND_API.g_ret_sts_success;
623    FND_MSG_PUB.count_and_get(
624          p_encoded => FND_API.g_false,
625          p_count   => x_msg_count,
626          p_data    => x_msg_data
627    );
628 
629 EXCEPTION
630 
631    WHEN FND_API.g_exc_error THEN
632       ROLLBACK TO invalidate_rollup_pub;
633       x_return_status := FND_API.g_ret_sts_error;
634       FND_MSG_PUB.count_and_get(
635             p_encoded => FND_API.g_false,
636             p_count   => x_msg_count,
637             p_data    => x_msg_data
638       );
639 
640    WHEN FND_API.g_exc_unexpected_error THEN
641       ROLLBACK TO invalidate_rollup_pub;
642       x_return_status := FND_API.g_ret_sts_unexp_error ;
643       FND_MSG_PUB.count_and_get(
644             p_encoded => FND_API.g_false,
645             p_count   => x_msg_count,
646             p_data    => x_msg_data
647       );
648 
649 
650    WHEN OTHERS THEN
651       ROLLBACK TO invalidate_rollup_pub;
655 		THEN
652       x_return_status := FND_API.g_ret_sts_unexp_error ;
653 
654       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
656          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
657       END IF;
658 
659       FND_MSG_PUB.count_and_get(
660             p_encoded => FND_API.g_false,
661             p_count   => x_msg_count,
662             p_data    => x_msg_data
663       );
664 
665 END Invalidate_Rollup;
666 
667 END AMS_ActMetric_PUB;