DBA Data[Home] [Help]

PACKAGE BODY: APPS.PSB_ELEMENT_POS_SET_GROUPS_PVT

Source


1 PACKAGE BODY PSB_ELEMENT_POS_SET_GROUPS_PVT AS
2 /* $Header: PSBVPSGB.pls 120.2 2005/07/13 11:29:13 shtripat ship $ */
3 
4   G_PKG_NAME CONSTANT VARCHAR2(30):= 'PSB_ELEMENT_POS_SET_GROUPS_PVT';
5 
6 /* ----------------------------------------------------------------------- */
7 
8 PROCEDURE INSERT_ROW
9 ( p_api_version                 IN      NUMBER,
10   p_init_msg_list               IN      VARCHAR2 := FND_API.G_FALSE,
11   p_commit                      IN      VARCHAR2 := FND_API.G_FALSE,
12   p_validation_level            IN      NUMBER  := FND_API.G_VALID_LEVEL_FULL,
13   p_return_status               OUT  NOCOPY     VARCHAR2,
14   p_msg_count                   OUT  NOCOPY     NUMBER,
15   p_msg_data                    OUT  NOCOPY     VARCHAR2,
16   --
17   P_POSITION_SET_GROUP_ID            in      NUMBER,
18   P_PAY_ELEMENT_ID                   in      NUMBER,
19   P_NAME                             in      VARCHAR2,
20   P_LAST_UPDATE_DATE                 in      DATE,
21   P_LAST_UPDATED_BY                  in      NUMBER,
22   P_LAST_UPDATE_LOGIN                in      NUMBER,
23   P_CREATED_BY                       in      NUMBER,
24   P_CREATION_DATE                    in      DATE
25 ) IS
26 
27   l_api_name            CONSTANT VARCHAR2(30)   := 'INSERT_ROW';
28   l_api_version         CONSTANT NUMBER         := 1.0;
29   l_row_id              varchar2(40);
30   --
31   cursor c1 is
32      select ROWID from psb_element_pos_set_groups
33      where position_set_group_id = p_position_set_group_id
34      and  pay_element_id = p_pay_element_id;
35 
36 BEGIN
37 
38   -- Standard Start of API savepoint
39 
40   SAVEPOINT     INSERT_ROW_PVT;
41 
42   -- Standard call to check for call compatibility.
43 
44   if not FND_API.Compatible_API_Call (l_api_version,
45 				      p_api_version,
46 				      l_api_name,
47 				      G_PKG_NAME)
48   then
49     raise FND_API.G_EXC_UNEXPECTED_ERROR;
50   end if;
51 
52   -- Initialize message list if p_init_msg_list is set to TRUE.
53 
54   if FND_API.to_Boolean (p_init_msg_list) then
55     FND_MSG_PUB.initialize;
56   end if;
57 
58   -- Initialize API return status to success
59 
60   p_return_status := FND_API.G_RET_STS_SUCCESS;
61 
62 
63   -- API body
64   INSERT INTO psb_element_pos_set_groups
65   (
66  POSITION_SET_GROUP_ID          ,
67  PAY_ELEMENT_ID                 ,
68  NAME                           ,
69  LAST_UPDATE_DATE               ,
70  LAST_UPDATED_BY                ,
71  LAST_UPDATE_LOGIN              ,
72  CREATED_BY                     ,
73  CREATION_DATE
74   )
75   VALUES
76   (
77  P_POSITION_SET_GROUP_ID          ,
78  P_PAY_ELEMENT_ID                 ,
79  P_NAME                           ,
80  P_LAST_UPDATE_DATE               ,
81  P_LAST_UPDATED_BY                ,
82  P_LAST_UPDATE_LOGIN              ,
83  P_CREATED_BY                     ,
84  P_CREATION_DATE
85   );
86 
87   open c1;
88   fetch c1 into l_row_id;
89   if (c1%notfound) then
90     close c1;
91     raise no_data_found;
92   end if;
93   -- End of API body.
94 
95   -- Standard check of p_commit.
96 
97   if FND_API.to_Boolean (p_commit) then
98     commit work;
99   end if;
100 
101   -- Standard call to get message count and if count is 1, get message info.
102 
103   FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
104 			     p_data  => p_msg_data);
105 
106 EXCEPTION
107 
108    when FND_API.G_EXC_ERROR then
109 
110      rollback to INSERT_ROW_PVT;
111 
112      p_return_status := FND_API.G_RET_STS_ERROR;
113 
114      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
115 				p_data  => p_msg_data);
116 
117 
118    when FND_API.G_EXC_UNEXPECTED_ERROR then
119 
120      rollback to INSERT_ROW_PVT;
121 
122      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
123 
124      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
125 				p_data  => p_msg_data);
126 
127 
128    when OTHERS then
129 
130      rollback to INSERT_ROW_PVT;
131 
132      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
133 
134      if FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) then
135 
136        FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,
137 				l_api_name);
138      end if;
139 
140      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
141 				p_data  => p_msg_data);
142 
143 END INSERT_ROW;
144 
145 PROCEDURE UPDATE_ROW
146 ( p_api_version                 IN      NUMBER,
147   p_init_msg_list               IN      VARCHAR2 := FND_API.G_FALSE,
148   p_commit                      IN      VARCHAR2 := FND_API.G_FALSE,
149   p_validation_level            IN      NUMBER  := FND_API.G_VALID_LEVEL_FULL,
150   p_return_status               OUT  NOCOPY     VARCHAR2,
151   p_msg_count                   OUT  NOCOPY     NUMBER,
152   p_msg_data                    OUT  NOCOPY     VARCHAR2,
153   --
154   P_POSITION_SET_GROUP_ID            in      NUMBER,
155   P_PAY_ELEMENT_ID                   in      NUMBER,
156   P_NAME                             in      VARCHAR2,
157   P_LAST_UPDATE_DATE                 in      DATE,
158   P_LAST_UPDATED_BY                  in      NUMBER,
159   P_LAST_UPDATE_LOGIN                in      NUMBER
160 ) IS
161 
162   l_api_name            CONSTANT VARCHAR2(30)   := 'UPDATE_ROW';
163   l_api_version         CONSTANT NUMBER         := 1.0;
164 
165 BEGIN
166 
167   -- Standard Start of API savepoint
168 
169   SAVEPOINT     UPDATE_ROW_PVT;
170 
171   -- Standard call to check for call compatibility.
172 
173   if not FND_API.Compatible_API_Call (l_api_version,
174 				      p_api_version,
175 				      l_api_name,
176 				      G_PKG_NAME)
177   then
178     raise FND_API.G_EXC_UNEXPECTED_ERROR;
179   end if;
180 
181   -- Initialize message list if p_init_msg_list is set to TRUE.
182 
183   if FND_API.to_Boolean (p_init_msg_list) then
184     FND_MSG_PUB.initialize;
185   end if;
186 
187   -- Initialize API return status to success
188 
189   p_return_status := FND_API.G_RET_STS_SUCCESS;
190 
191   -- API body
192   UPDATE psb_element_pos_set_groups SET
193   NAME                   =  P_NAME                     ,
194   LAST_UPDATE_DATE       =  P_LAST_UPDATE_DATE         ,
195   LAST_UPDATED_BY        =  P_LAST_UPDATED_BY          ,
196   LAST_UPDATE_LOGIN      =  P_LAST_UPDATE_LOGIN
197   WHERE position_set_group_id = p_position_set_group_id
198   AND pay_element_id = p_pay_element_id;
199 
200   if (SQL%NOTFOUND) then
201     RAISE NO_DATA_FOUND;
202   end if;
203 
204   -- End of API body.
205 
206   -- Standard check of p_commit.
207 
208   if FND_API.to_Boolean (p_commit) then
209     commit work;
210   end if;
211 
212   -- Standard call to get message count and if count is 1, get message info.
213 
214   FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
215 			     p_data  => p_msg_data);
216 
217 EXCEPTION
218 
219    when FND_API.G_EXC_ERROR then
220 
221      rollback to UPDATE_ROW_PVT;
222 
223      p_return_status := FND_API.G_RET_STS_ERROR;
224 
225      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
226 				p_data  => p_msg_data);
227 
228 
229    when FND_API.G_EXC_UNEXPECTED_ERROR then
230 
231      rollback to UPDATE_ROW_PVT;
232 
233      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
234 
235      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
236 				p_data  => p_msg_data);
237 
238 
239    when OTHERS then
240 
241      rollback to UPDATE_ROW_PVT;
242 
243      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
244 
245      if FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) then
246 
247        FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,
248 				l_api_name);
249      end if;
250 
251      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
252 				p_data  => p_msg_data);
253 
254 END UPDATE_ROW;
255 
256 
257 PROCEDURE DELETE_ROW
258 ( p_api_version         IN      NUMBER,
259   p_init_msg_list       IN      VARCHAR2 := FND_API.G_FALSE,
260   p_commit              IN      VARCHAR2 := FND_API.G_FALSE,
261   p_validation_level    IN      NUMBER  := FND_API.G_VALID_LEVEL_FULL,
262   p_return_status       OUT  NOCOPY     VARCHAR2,
263   p_msg_count           OUT  NOCOPY     NUMBER,
264   p_msg_data            OUT  NOCOPY     VARCHAR2,
265   --
266   P_POSITION_SET_GROUP_ID              IN      NUMBER,
267   P_PAY_ELEMENT_ID                     IN      NUMBER
268 ) IS
269 
270   l_api_name            CONSTANT VARCHAR2(30)   := 'DELETE_ROW';
271   l_api_version         CONSTANT NUMBER         := 1.0;
272 
273 BEGIN
274 
275   -- Standard Start of API savepoint
276 
277   SAVEPOINT     DELETE_ROW_PVT;
278 
279   -- Standard call to check for call compatibility.
280 
281   if not FND_API.Compatible_API_Call (l_api_version,
282 				      p_api_version,
283 				      l_api_name,
284 				      G_PKG_NAME)
285   then
286     raise FND_API.G_EXC_UNEXPECTED_ERROR;
287   end if;
288 
289   -- Initialize message list if p_init_msg_list is set to TRUE.
290 
291   if FND_API.to_Boolean (p_init_msg_list) then
292     FND_MSG_PUB.initialize;
293   end if;
294 
295  --Deleting detail record from psb_pay_element_distributions and
296  --to maintain the isolated delete
297  --relation between the master and detail
298 
299  DELETE FROM psb_pay_element_distributions
300  WHERE position_set_group_id = p_position_set_group_id;
301 
302  --Delete the record in the master table
303  DELETE FROM psb_element_pos_set_groups
304  WHERE position_set_group_id = p_position_set_group_id
305  AND pay_element_id = p_pay_element_id;
306 
307 
308   if (SQL%NOTFOUND) then
309     RAISE NO_DATA_FOUND;
310   end if;
311 
312   -- Standard call to get message count and if count is 1, get message info.
313 
314   FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
315 			     p_data  => p_msg_data);
316 
317   -- Standard check of p_commit.
318 
319   if FND_API.to_Boolean (p_commit) then
320     commit work;
321   end if;
322 
323 
324 EXCEPTION
325 
326    when FND_API.G_EXC_ERROR then
327 
328      rollback to DELETE_ROW_PVT;
329 
330      p_return_status := FND_API.G_RET_STS_ERROR;
331 
332      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
333 				p_data  => p_msg_data);
334 
335 
336    when FND_API.G_EXC_UNEXPECTED_ERROR then
337 
338      rollback to DELETE_ROW_PVT;
339 
340      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
341 
342      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
343 				p_data  => p_msg_data);
344 
345 
346    when OTHERS then
347 
348      rollback to DELETE_ROW_PVT;
349 
350      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
351 
352      if FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) then
353 
354        FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,
355 				l_api_name);
356      end if;
357 
358      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
359 				p_data  => p_msg_data);
360 END DELETE_ROW;
361 
362 PROCEDURE LOCK_ROW(
363   p_api_version                 IN      NUMBER,
364   p_init_msg_list               IN      VARCHAR2 := FND_API.G_FALSE,
365   p_commit                      IN      VARCHAR2 := FND_API.G_FALSE,
366   p_validation_level            IN      NUMBER  := FND_API.G_VALID_LEVEL_FULL,
367   p_return_status               OUT  NOCOPY     VARCHAR2,
368   p_msg_count                   OUT  NOCOPY     NUMBER,
369   p_msg_data                    OUT  NOCOPY     VARCHAR2,
370   --
371   p_row_locked                  OUT  NOCOPY     VARCHAR2,
372   --
373   P_POSITION_SET_GROUP_ID            in      NUMBER,
374   P_PAY_ELEMENT_ID                   in      NUMBER,
375   P_NAME                             in      VARCHAR2
376 
377   ) IS
378 
379   l_api_name            CONSTANT VARCHAR2(30)   := 'LOCK_ROW';
380   l_api_version         CONSTANT NUMBER         := 1.0;
381   --
382   counter number;
383 
384   CURSOR C IS SELECT * FROM PSB_ELEMENT_POS_SET_GROUPS
385   WHERE position_set_group_id = p_position_set_group_id
386   AND pay_element_id = p_pay_element_id
387   FOR UPDATE of POSITION_SET_GROUP_Id NOWAIT;
388   Recinfo C%ROWTYPE;
389 
390   BEGIN
391   --
392   SAVEPOINT Lock_Row_Pvt ;
393   --
394   IF NOT FND_API.Compatible_API_Call ( l_api_version,
395 				       p_api_version,
396 				       l_api_name,
397 				       G_PKG_NAME )
398   THEN
399     RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
400   END IF;
401   --
402 
403   IF FND_API.to_Boolean ( p_init_msg_list ) THEN
404     FND_MSG_PUB.initialize ;
405   END IF;
406   --
407   p_return_status := FND_API.G_RET_STS_SUCCESS ;
408   p_row_locked    := FND_API.G_TRUE ;
409   --
410   OPEN C;
411   --
412   FETCH C INTO Recinfo;
413   IF (C%NOTFOUND) then
414     CLOSE C;
415     FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
416     FND_MSG_PUB.Add;
417     RAISE FND_API.G_EXC_ERROR ;
418   END IF;
419 
420   IF
421   (
422 	 (Recinfo.position_set_group_id =  p_position_set_group_id)
423 	 AND (Recinfo.pay_element_id = p_pay_element_id)
424 	 AND (Recinfo.name = p_name)
425 
426    )
427 
428   THEN
429     Null;
430   ELSE
431     FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_CHANGED');
432     FND_MSG_PUB.Add;
433     RAISE FND_API.G_EXC_ERROR ;
434   END IF;
435 
436   --
437   IF FND_API.To_Boolean ( p_commit ) THEN
438     COMMIT WORK;
439   END iF;
440   --
441   FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
442 			      p_data  => p_msg_data );
443   --
444 EXCEPTION
445   --
446   WHEN APP_EXCEPTION.RECORD_LOCK_EXCEPTION THEN
447     --
448     ROLLBACK TO Lock_Row_Pvt ;
449     p_row_locked := FND_API.G_FALSE;
450     p_return_status := FND_API.G_RET_STS_ERROR;
451     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
452 				p_data  => p_msg_data );
453   --
454   WHEN FND_API.G_EXC_ERROR THEN
455     --
456     ROLLBACK TO Lock_Row_Pvt ;
457     p_return_status := FND_API.G_RET_STS_ERROR;
458     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
459 				p_data  => p_msg_data );
460   --
461   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
462     --
463     ROLLBACK TO Lock_Row_Pvt ;
464     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
465     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
466 				p_data  => p_msg_data );
467   --
468   WHEN OTHERS THEN
469     --
470     ROLLBACK TO Lock_Row_Pvt ;
471     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
472     --
473     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
474       FND_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME,
475 				l_api_name);
476     END if;
477     --
478     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
479 				p_data  => p_msg_data );
480 END LOCK_ROW;
481 
482 
486  +==========================================================================*/
483 
484 /*==========================================================================+
485  |                       PROCEDURE Check_Unique                             |
487 --
488 -- The position set group name must be unique within an element.
489 --
490 PROCEDURE Check_Unique
491 (
492   p_api_version               IN       NUMBER,
493   p_init_msg_list             IN       VARCHAR2 := FND_API.G_FALSE,
494   p_commit                    IN       VARCHAR2 := FND_API.G_FALSE,
495   p_validation_level          IN       NUMBER   := FND_API.G_VALID_LEVEL_FULL,
496   p_return_status             OUT  NOCOPY      VARCHAR2,
497   p_msg_count                 OUT  NOCOPY      NUMBER,
498   p_msg_data                  OUT  NOCOPY      VARCHAR2,
499   --
500   p_position_set_group_id     IN       NUMBER,
501   P_pay_element_id            IN       NUMBER,
502   p_name                      IN       VARCHAR2,
503   p_return_value              IN OUT  NOCOPY   VARCHAR2
504 )
505 IS
506   --
507   l_api_name            CONSTANT VARCHAR2(30)   := 'Check_Unique';
508   l_api_version         CONSTANT NUMBER         :=  1.0;
509   --
510   l_tmp VARCHAR2(1);
511 
512   CURSOR c IS
513 	 SELECT '1'
514 	 FROM   psb_element_pos_set_groups
515 	 WHERE  p_pay_element_id IS NOT NULL
516 	 AND    name = p_name
517 	 AND    pay_element_id = p_pay_element_id
518 	 AND    (
519 		  p_position_set_group_id IS NULL
520 		  OR
521 		  position_set_group_id <> p_position_set_group_id
522 		);
523 BEGIN
524   --
525   SAVEPOINT Check_Unique_Pvt ;
526   --
527   IF NOT FND_API.Compatible_API_Call ( l_api_version,
528 				       p_api_version,
529 				       l_api_name,
530 				       G_PKG_NAME )
531   THEN
532     RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
533   END IF;
534   --
535 
536   IF FND_API.to_Boolean ( p_init_msg_list ) THEN
537     FND_MSG_PUB.initialize ;
538   END IF;
539   --
540   p_return_status := FND_API.G_RET_STS_SUCCESS ;
541   --
542 
543   -- Open the cursor.
544   OPEN c;
545   FETCH c INTO l_tmp;
546   CLOSE c;
547 
548   --
549   -- p_return_value specifies whether duplicate name exists or not.
550   -- ( 'TRUE' means exists, 'FALSE' means does not exist.)
551   --
552   IF l_tmp IS NULL THEN
553     p_return_value := 'FALSE';
554   ELSE
555     p_return_value := 'TRUE';
556   END IF;
557 
558   --
559   IF FND_API.To_Boolean ( p_commit ) THEN
560     COMMIT WORK;
561   END iF;
562   --
563   FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
564 			      p_data  => p_msg_data );
565   --
566 EXCEPTION
567   --
568   WHEN FND_API.G_EXC_ERROR THEN
569     --
570     ROLLBACK TO Check_Unique_Pvt ;
571     p_return_status := FND_API.G_RET_STS_ERROR;
572     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
573 				p_data  => p_msg_data );
574   --
575   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
576     --
577     ROLLBACK TO Check_Unique_Pvt ;
578     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
579     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
580 				p_data  => p_msg_data );
581   --
582   WHEN OTHERS THEN
583     --
584     ROLLBACK TO Check_Unique_Pvt ;
585     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
586     --
587     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
588       FND_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME,
589 				l_api_name);
590     END if;
591     --
592     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
593 				p_data  => p_msg_data );
594   --
595 END Check_Unique;
596 /*---------------------------------------------------------------------------*/
597 
598 
599 
600 PROCEDURE Check_References
601 (
602   p_api_version               IN       NUMBER,
603   p_init_msg_list             IN       VARCHAR2 := FND_API.G_FALSE,
604   p_commit                    IN       VARCHAR2 := FND_API.G_FALSE,
605   p_validation_level          IN       NUMBER   := FND_API.G_VALID_LEVEL_FULL,
606   p_return_status             OUT  NOCOPY      VARCHAR2,
607   p_msg_count                 OUT  NOCOPY      NUMBER,
608   p_msg_data                  OUT  NOCOPY      VARCHAR2,
609   --
610   P_POSITION_SET_GROUP_ID     IN       NUMBER,
611   p_Return_Value              IN OUT  NOCOPY   VARCHAR2
612 )
613 IS
614   --
615   l_api_name            CONSTANT VARCHAR2(30)   := 'Check_References';
616   l_api_version         CONSTANT NUMBER         :=  1.0;
617   --
618   l_tmp VARCHAR2(1);
619 
620   CURSOR c IS
621     SELECT '1'
622     FROM psb_set_relations
623     WHERE position_set_group_id = p_position_set_group_id;
624 
625 BEGIN
626   --
627   SAVEPOINT Check_References_Pvt ;
628   --
629   IF NOT FND_API.Compatible_API_Call ( l_api_version,
630 				       p_api_version,
631 				       l_api_name,
632 				       G_PKG_NAME )
633   THEN
634     RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
635   END IF;
636   --
637 
638   IF FND_API.to_Boolean ( p_init_msg_list ) THEN
639     FND_MSG_PUB.initialize ;
640   END IF;
641   --
642   p_return_status := FND_API.G_RET_STS_SUCCESS ;
643   --
644 
645   -- Checking the Psb_set_relations table for references.
646   OPEN c;
647   FETCH c INTO l_tmp;
648 
649   --
650   -- p_Return_Value tells whether references exist or not.
651   IF  (l_tmp IS NULL)  THEN
652     p_Return_Value := 'FALSE';
653   ELSE
654     p_Return_Value := 'TRUE';
655   END IF;
656 
657   CLOSE c;
658   --
659   IF FND_API.To_Boolean ( p_commit ) THEN
660     COMMIT WORK;
661   END iF;
662   --
663   FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
664 			      p_data  => p_msg_data );
665 
666 EXCEPTION
667   --
668   WHEN FND_API.G_EXC_ERROR THEN
669     --
670     ROLLBACK TO Check_References_Pvt ;
671     p_return_status := FND_API.G_RET_STS_ERROR;
672     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
673 				p_data  => p_msg_data );
674   --
675   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
676     --
677     ROLLBACK TO Check_References_Pvt ;
678     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
679     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
680 				p_data  => p_msg_data );
681   --
682   WHEN OTHERS THEN
683     --
684     ROLLBACK TO Check_References_Pvt ;
685     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
686     --
687     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
688       FND_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME,
689 				l_api_name);
690     END if;
691     --
692     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
693 				p_data  => p_msg_data );
694   --
695 END Check_References;
696 
697 
698 END PSB_ELEMENT_POS_SET_GROUPS_PVT;