DBA Data[Home] [Help]

PACKAGE BODY: APPS.BIS_PMV_PORTAL_UTIL_PUB

Source


1 package body BIS_PMV_PORTAL_UTIL_PUB as
2 /* $Header: BISPPUTB.pls 120.3 2005/12/01 15:18:28 serao noship $ */
3 -- dbdrv: sql ~PROD ~PATH ~FILE none none none package &phase=plb \
4 -- dbdrv: checkfile(115.28=120.3):~PROD:~PATH:~FILE
5 
6 /*
7 REM +=======================================================================+
8 REM |    Copyright (c) 1998 Oracle Corporation, Redwood Shores, CA, USA     |
9 REM |                         All rights reserved.                          |
10 REM +=======================================================================+
11 REM | FILENAME                                                              |
12 REM |     BISVPARB.pls                                                      |
13 REM |                                                                       |
14 REM | DESCRIPTION                                                           |
15 REM |     This is the Query Pkg. for PMV.				    |
16 REM |                                                                       |
17 REM | HISTORY                                                               |
18 REM | amkulkar, 04/06/2002, Initial Creation				    |
19 REM | nkishore, 12/26/2002, bug 2726787 - Java Api returns As of Date as    |
20 REM | 						ranking parameter
21 REM +=======================================================================+
22 */
23 
24 TYPE CHAR_TABLE IS TABLE OF VARCHAR2(150);
25 
26 DIMENSION_GROUP CHAR_TABLE := CHAR_TABLE('ISC_DBI_PLAN_PERF_GROUP' );
27 RANK_PARAM CHAR_TABLE := CHAR_TABLE('ORGANIZATION+ORGANIZATION');
28 
29 
30 PROCEDURE GET_DIMENSION_GROUP ( pRegionCode In VARCHAR2
31   ,xDimensionGroup  OUT NOCOPY VARCHAR2)
32 IS
33 
34  CURSOR getDimensionGroup IS
35   SELECT attribute12
36   FROM ak_regions
37   WHERE region_code = pRegionCode;
38 BEGIN
39 
40   IF (getDimensionGroup%ISOPEN ) THEN
41      CLOSE getDimensionGroup;
42   END IF;
43   OPEN getDimensionGroup;
44   FETCH getDimensionGroup INTO xDimensionGroup;
45   CLOSE getDimensionGroup;
46 
47   EXCEPTION
48     WHEN OTHERS THEN
49       IF (getDimensionGroup%ISOPEN ) THEN
50          CLOSE getDimensionGroup;
51       END IF;
52       NULL;
53 END GET_DIMENSION_GROUP;
54 
55 
56 FUNCTION GET_DIM_GROUP_RANK (pDimensionGroup IN VARCHAR2 )
57  RETURN VARCHAR2
58  IS
59  BEGIN
60 
61    IF pDimensionGroup IS NOT NULL THEN
62      IF (DIMENSION_GROUP IS NOT NULL AND DIMENSION_GROUP.COUNT > 0) THEN
63       FOR i IN DIMENSION_GROUP.FIRST..DIMENSION_GROUP.LAST LOOP
64         IF (DIMENSION_GROUP(i)= pDimensionGroup) THEN
65           IF (RANK_PARAM.EXISTS(i)) THEN
66             RETURN  RANK_PARAM(i);
67           END IF;
68         END IF;
69       END LOOP;
70      END IF;
71    END IF;
72 
73    RETURN NULL;
74 
75    EXCEPTION
76     WHEN OTHERS THEN
77       NULL;
78  END GET_DIM_GROUP_RANK;
79 
80 
81 PROCEDURE GET_RANKING_AND_REGION_CODE( p_page_id            IN    VARCHAR2
82 ,p_user_id            IN     VARCHAR2
83 ,x_ranking_param      OUT    NOCOPY VARCHAR2
84 ,x_region_code OUT NOCOPY VARCHAR2
85 ,x_function_name OUT NOCOPY VARCHAR2
86 ,x_lov_where OUT NOCOPY VARCHAR2
87 ,x_return_Status      OUT    NOCOPY VARCHAR2
88 ,x_msg_count          OUT    NOCOPY NUMBER
89 ,x_msg_data           OUT    NOCOPY VARCHAR2
90 )
91 IS
92   -- get the first pop down which is the first dimnsion other than time, time_comaprison_type
93    CURSOR c_akitems(pRegionCode in varchar2) IS
94    select nvl(attribute2, attribute_code), attribute4
95    from ak_region_items
96    where region_code = pRegionCode
97    and display_sequence = (
98       select min(display_sequence)
99      from ak_region_items
100      where region_code = pRegionCode
101     and node_query_flag = 'Y'
102     and  nvl( substr(attribute2, 1, instr(attribute2, '+')-1), attribute_code) NOT IN ('TIME', 'TIME_COMPARISON_TYPE', 'EDW_TIME_M', 'CURRENCY', 'FII_CURRENCIES','AS_OF_DATE')
103     -- and nvl(attribute2, attribute_code) <> 'AS_OF_DATE'  (reverting the fix for 2726787)
104     ); --BugFix 2726787, filtered As Of Date
105 
106    CURSOR c_func IS
107    SELECT function_name
108    FROM bis_user_Attributes
109    where page_id = p_page_id
110    and user_id=p_user_id;
111 
112    l_param_name         VARCHAR2(32000);
113    lDimensionGroup VARCHAR2(150);
114 
115 BEGIN
116 
117   x_return_Status := FND_API.G_RET_STS_SUCCESS;
118 
119     --First get the function_name for this pagE_id
120     IF (c_func%ISOPEN ) THEN
121        CLOSE c_func;
122     END IF;
123 
124     OPEN c_func;
125     FETCH c_func INTO x_function_name;
126     CLOSE c_func;
127 
128     --Get the region code
129     x_region_code := BIS_PMV_UTIL.getReportRegion(x_function_name);
130 
131     -- dimension group changes
132     GET_DIMENSION_GROUP (x_region_code, lDimensionGroup);
133     IF lDImensionGroup IS NOT NULL THEN
134       x_ranking_param := GET_DIM_GROUP_RANK (lDimensionGroup);
135     END IF;
136 
137     IF (x_Ranking_param IS NULL ) THEN
138         OPEN c_akitems(x_region_code);
139         FETCH c_akitems INTO x_ranking_param, x_lov_where;
140         CLOSE c_akitems;
141     END IF;
142 
143 EXCEPTION
144 
145  WHEN FND_API.G_EXC_ERROR THEN
146        x_return_status := FND_API.G_RET_STS_ERROR;
147        FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
148   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
149        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
150        FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
151   WHEN OTHERS THEN
152        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
153        FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
154 
155 END GET_RANKING_AND_REGION_CODE;
156 
157 
158 PROCEDURE GET_RANKING_PARAMETER(
159  p_page_id            IN    VARCHAR2
160 ,p_user_id            IN    VARCHAR2
161 ,x_ranking_param      OUT    NOCOPY VARCHAR2
162 ,x_return_Status      OUT    NOCOPY VARCHAR2
163 ,x_msg_count          OUT    NOCOPY NUMBER
164 ,x_msg_data           OUT    NOCOPY VARCHAR2
165 )
166 IS
167 
168    l_region_code        VARCHAR2(30);
169    l_function_name      VARCHAR2(32000);
170    l_param_name         VARCHAR2(32000);
171    l_lov_where VARCHAR2(150);
172 BEGIN
173   GET_RANKING_AND_REGION_CODE( p_page_id     => p_page_id,
174                                p_useR_id     => p_user_id
175                                       ,x_ranking_param    => x_ranking_param
176                                       ,x_region_code => l_region_code
177                                       ,x_function_name => l_function_name
178                                       ,x_lov_where => l_lov_where
179                                       ,x_return_Status   => x_return_status
180                                       ,x_msg_count       => x_msg_count
181                                       ,x_msg_data        => x_msg_data
182                               );
183 
184 END;
185 
186 PROCEDURE GET_TIME_LEVEL_LABEL
187 (p_page_id           IN     VARCHAR2
188 ,p_user_id           IN     VARCHAR2
189 ,x_time_level_label  OUT    NOCOPY VARCHAR2
190 ,x_return_Status     OUT    NOCOPY VARCHAR2
191 ,x_msg_count         OUT    NOCOPY NUMBER
192 ,x_msg_data          OUT    NOCOPY VARCHAR2
193 )
194 IS
195   CURSOR c_time IS
196   SELECT attribute_name FROM
197   bis_user_attributes
198   WHERE page_id = p_page_id and
199   user_id = p_user_id and
200   attribute_name like '%_FROM' and
201   dimension in ('TIME','EDW_TIME_M');
202   l_time_level_label   varchar2(2000);
203   l_time_param_name    varchar2(2000);
204 BEGIN
205   IF (c_time%ISOPEN) THEN
206      close c_time;
207   END IF;
208   OPEN c_time;
209   FETCH c_time INTO l_time_param_name;
210   CLOSE c_time;
211   l_time_level_label := UPPER(BIS_PMV_QUERY_PVT.getParameterAcronym('BIS_TIME_LEVEL_VALUES', l_time_param_name));
212   x_time_level_label := l_time_level_label;
213 EXCEPTION
214  WHEN FND_API.G_EXC_ERROR THEN
215        x_return_status := FND_API.G_RET_STS_ERROR;
216        FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
217   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
218        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
219        FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
220   WHEN OTHERS THEN
221        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
222        FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
223 END;
224 
225 -- added user_id for bug 4752246
226 PROCEDURE GET_TIME_LABEL_FROM_SESSION
227 (p_session_id           IN     VARCHAR2
228 ,p_function_name           IN     VARCHAR2
229 ,p_user_id IN VARCHAR2
230 ,x_time_level_label  OUT    NOCOPY VARCHAR2
231 ,x_return_Status     OUT    NOCOPY VARCHAR2
232 ,x_msg_count         OUT    NOCOPY NUMBER
233 ,x_msg_data          OUT    NOCOPY VARCHAR2
234 )
235 IS
236   CURSOR c_time IS
237   SELECT attribute_name FROM
238   bis_user_attributes
239   WHERE session_id = p_session_id and
240   function_name = p_function_name and
241   user_id = p_user_id and
242   attribute_name like '%_FROM' and
243   dimension in ('TIME','EDW_TIME_M');
244   l_time_level_label   varchar2(2000);
245   l_time_param_name    varchar2(2000);
246 BEGIN
247   IF (c_time%ISOPEN) THEN
248      close c_time;
249   END IF;
250   OPEN c_time;
251   FETCH c_time INTO l_time_param_name;
252   CLOSE c_time;
253   l_time_level_label := UPPER(BIS_PMV_QUERY_PVT.getParameterAcronym('BIS_TIME_LEVEL_VALUES', l_time_param_name));
254   x_time_level_label := l_time_level_label;
255 EXCEPTION
256  WHEN FND_API.G_EXC_ERROR THEN
257        x_return_status := FND_API.G_RET_STS_ERROR;
258        FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
259   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
260        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
261        FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
262   WHEN OTHERS THEN
263        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
264        FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
265 END GET_TIME_LABEL_FROM_SESSION;
266 
267 
268 --creating a wrap ard the procedure since the getDyanamicLabel call in java expects a function
269 FUNCTION getTimeLevelLabel (
270 p_page_id           IN     VARCHAR2
271 ,p_user_id           IN     VARCHAR2
272 ,p_session_id           IN     VARCHAR2
273 ,p_function_name           IN     VARCHAR2
274 ) RETURN VARCHAR2
275 IS
276  lLabel VARCHAR2(2000);
277  l_return_status VARCHAR2(80);
278  l_msg_data VARCHAR2(80);
279  l_msg_count NUMBER;
280 BEGIN
281   if (p_page_id IS NOT NULL) THEN
282     GET_TIME_LEVEL_LABEL(p_page_id => p_page_id
283       ,p_user_id =>p_user_id
284       ,x_time_level_label => lLabel
285       ,x_return_Status => l_return_status
286       ,x_msg_count => l_msg_count
287       ,x_msg_data  => l_msg_data
288     );
289   ELSE
290     GET_TIME_LABEL_FROM_SESSION(
291       p_session_id => p_session_id
292       ,p_function_name => p_function_name
293       ,p_user_id => p_user_id
294       ,x_time_level_label => lLabel
295       ,x_return_Status => l_return_status
296       ,x_msg_count => l_msg_count
297       ,x_msg_data  => l_msg_data
298   );
299   END IF;
300   IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
301     lLabel := '';
302   END IF;
303 
304   RETURN lLabel ;
305 END getTimeLevelLabel;
306 
307 --This pvt funnction added to handle exceptins thrown by the fii api
308 FUNCTION get_asOfDate_Label (
309   pAsOfDate IN DATE
310 ) RETURN VARCHAR2 IS
311 lASOfDateLabel VARCHAR2(80);
312 lASOfDateLabel_function VARCHAR2(2000);
313 BEGIN
314   --lASOfDateLabel := FII_TIME_API.day_left_in_qtr(pAsOfDate);
315   lASOfDateLabel_function := 'begin :1 := FII_TIME_API.day_left_in_qtr(:2); end;';
316   execute immediate lASOfDateLabel_function  using OUT lasofdateLabel , IN pAsOfDate ;
317   RETURN lASOfDateLabel;
318   EXCEPTION
319     WHEN OTHERS THEN
320      lASOfDateLabel :='';
321 END get_asOfDate_Label;
322 
323 PROCEDURE getAsOfDateAndLabel(
324   pAsOfDate IN VARCHAR2,
325   xAsOfDate OUT NOCOPY VARCHAR2,
326   xAsOfDateLabel OUT NOCOPY VARCHAR2
327 ) IS
328  lDate DATE;
329  --l_date_format varchar2(2000) := 'Mon dd,yyyy';
330 BEGIN
331 
332   IF (pAsOfDate IS NULL) THEN
333     SELECT TRUNC(SYSDATE, 'DD') INTO lDate FROM dual;
334     --xAsOfDate := TO_CHAR(lDate, l_date_format);
335     xAsOfDate := TO_CHAR(lDate);
336     xASOfDateLabel := get_asOfDate_Label(lDate);
337   ELSE
338     xAsOfDate := pAsOfDate;
339     --xASOfDateLabel := get_asOfDate_Label(to_date(xAsOfDate,l_date_format));
340     xASOfDateLabel := get_asOfDate_Label(xAsOfDate);
341   END IF;
342 
343  EXCEPTION
344     WHEN OTHERS THEN
345      xAsOfDate := pAsOfDate;
346      xAsOfDateLabel := '';
347 END getAsOfDateAndLabel;
348 
349 
350 --KPI Portlet Pesonalization -ansingh
351 PROCEDURE GET_RANK_LEVEL_SHRT_NAME
352 (  p_region_code					IN  VARCHAR2,
353 	 x_rank_level_shrt_name	OUT NOCOPY VARCHAR2,
354 	 x_return_status        OUT NOCOPY VARCHAR2,
355 	 x_msg_count            OUT NOCOPY NUMBER,
356 	 x_msg_data             OUT NOCOPY VARCHAR2
357 ) IS
358 
359 l_dimension_group VARCHAR2(150);
360 
361 CURSOR c_RnkLvlShrtName (pRegionCode IN VARCHAR2) IS
362 	SELECT nvl(attribute2, attribute_code)
363 	FROM ak_region_items
364 	WHERE region_code = pRegionCode
365 	AND display_sequence = (
366 		SELECT min(display_sequence)
367 		FROM ak_region_items
368 		WHERE region_code = pRegionCode
369 		AND NVL(substr(attribute2, 1, instr(attribute2, '+')-1), attribute_code)
370 		NOT IN ('TIME', 'TIME_COMPARISON_TYPE', 'EDW_TIME_M', 'AS_OF_DATE')
371 	);
372 
373 
374 BEGIN
375 
376     GET_DIMENSION_GROUP (p_region_code, l_dimension_group);
377     IF l_dimension_group IS NOT NULL THEN
378         x_rank_level_shrt_name := GET_DIM_GROUP_RANK (l_dimension_group);
379     END IF;
380 
381     IF (x_rank_level_shrt_name IS NULL) THEN
382         OPEN c_RnkLvlShrtName(p_region_code);
383         FETCH c_RnkLvlShrtName INTO x_rank_level_shrt_name;
384         CLOSE c_RnkLvlShrtName;
385     END IF;
386 
387 		x_return_status := FND_API.G_RET_STS_SUCCESS;
388 
389 EXCEPTION
390 
391  WHEN FND_API.G_EXC_ERROR THEN
392        x_return_status := FND_API.G_RET_STS_ERROR;
393        FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
394   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
395        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
396        FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
397   WHEN OTHERS THEN
398        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
399        FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
400 
401 END GET_RANK_LEVEL_SHRT_NAME;
402 
403 
404 
405 
406 
407 -- This should actually be in the pmv portal pub package
408 PROCEDURE get_rank_level_and_num_values(
409   p_page_id            IN    VARCHAR2
410   ,p_user_id            IN VARCHAR2
411   ,p_responsibility_id IN VARCHAR2
412   ,x_ranking_param OUT NOCOPY VARCHAR2
413   ,x_number_values      OUT    NOCOPY NUMBER
414   ,x_return_Status      OUT    NOCOPY VARCHAR2
415   ,x_msg_count          OUT    NOCOPY NUMBER
416   ,x_msg_data           OUT    NOCOPY VARCHAR2
417 ) IS
418 l_return_status VARCHAR2(80);
419 l_msg_count NUMBER;
420 l_msg_data VARCHAR2(2000);
421 l_region_code VARCHAR2(30);
422 l_function_name fnd_form_functions.function_name%TYPE;
423 l_parameter_rec	BIS_PMV_PARAMETERS_PVT.parameter_rec_type;
424 l_user_session_rec BIS_PMV_SESSION_PVT.SESSION_REC_TYPE;
425 v_lov_sql_stmt VARCHAR2(32000);
426 v_bind_sql  VARCHAR2(32000);
427 v_bind_variables VARCHAR2(32000);
428 v_bind_count NUMBER;
429 l_lov_where VARCHAR2(150);
430 BEGIN
431 
432  -- get the rank level
433   GET_RANKING_AND_REGION_CODE( p_page_id     => p_page_id
434                                ,p_user_id    => p_user_id
435                                       ,x_ranking_param    => x_ranking_param
436                                       ,x_region_code => l_region_code
437                                       , x_function_name => l_function_name
438                                       , x_lov_where => l_lov_where
439                                       ,x_return_Status   => x_return_status
440                                       ,x_msg_count       => x_msg_count
441                                       ,x_msg_data        => x_msg_data
442                               );
443   IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
444       RETURN;
445   END IF;
446   /* PMF team no longer needs the number of values for that dimension level . Commenting this code
447      out
448   l_user_session_rec.function_name := l_function_name;
449   l_user_session_rec.region_code := l_region_code;
450   l_user_session_rec.page_id := p_page_id;
451   l_user_session_rec.user_id := p_user_id;
452   l_user_session_rec.responsibility_id := p_responsibility_id;
453 
454   l_parameter_rec.parameter_name := x_ranking_param;
455   BIS_PMV_PARAMETERS_PVT.RETRIEVE_PAGE_PARAMETER(p_parameter_rec	=> l_parameter_rec
456                                                 ,p_schedule_id => NULL
457                                                 ,p_user_session_rec	=> l_user_session_rec
458                                                 ,p_page_dims  => NULL
459                                                 ,x_return_status	=> l_return_status
460                                                 ,x_msg_count		=> l_msg_count
461                                                 ,x_msg_data	        => l_msg_data );
462 
463   IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
464       RETURN;
465   END IF;
466 
467  -- replace with all so that the query picks up all the values,
468  -- restricted only by the lov where clause
469    l_parameter_rec.parameter_description := BIS_PMV_PARAMETERS_PVT.G_ALL;
470  -- get the lov sql for this level
471  IF (x_ranking_param = 'TIME' OR x_ranking_param = 'EDW_TIME') THEN
472     BIS_PMV_PARAMETERS_PVT.getTimeLovSql(p_parameter_name => x_ranking_param
473                                         ,p_parameter_description => l_parameter_rec.parameter_description
474                                         ,p_region_code           => l_region_code
475                                         ,p_responsibility_id     => l_user_session_rec.responsibility_id
476                                         ,p_org_name              => NULL
477                                         ,p_org_value             => NULL
478                                         ,x_sql_statement        => v_lov_sql_stmt
479                                         ,x_bind_sql             => v_bind_sql
480                                         ,x_bind_variables       => v_bind_variables
481                                         ,x_bind_count           => v_bind_count
482                                         ,x_return_status	=> l_return_status
483                                         ,x_msg_count		=> l_msg_count
484                                         ,x_msg_data		=> l_msg_data
485     );
486  ELSE
487     BIS_PMV_PARAMETERS_PVT.getLovSql(p_parameter_name => x_ranking_param
488                             ,p_parameter_description => l_parameter_rec.parameter_description
489                             ,p_sql_type => NULL
490                             ,p_region_code => l_region_code
491                             ,p_responsibility_id => l_user_session_rec.responsibility_id
492                             ,x_sql_statement => v_lov_sql_stmt
493                             ,x_bind_sql             => v_bind_sql
494                             ,x_bind_variables       => v_bind_variables
495                             ,x_bind_count           => v_bind_count
496                             ,x_return_status => l_return_status
497                             ,x_msg_count => l_msg_count
498                             ,x_msg_data	=> l_msg_data);
499  END IF;
500 
501   IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
502       RETURN;
503   END IF;
504 
505   BIS_PMV_QUERY_PVT.substitute_lov_where (
506     pUserSession_rec => l_user_session_rec,
507     pSchedule_id => NULL,
508     pSource => NULL,
509     x_lov_where => l_lov_where,
510     x_return_status => l_return_status,
511     x_msg_count => l_msg_count,
512     x_msg_data => l_msg_data
513   ) ;
514 
515   IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
516       RETURN;
517   END IF;
518 
519   -- remove the order by from the lov_sql_stmt and append the lov where to it
520     v_lov_sql_stmt := substr( v_lov_sql_stmt, 1, instr (v_lov_sql_stmt, 'order by')-1);
521     v_lov_sql_stmt :=     v_lov_sql_stmt || ' '||l_lov_where;
522 
523   -- run the sql and obtain the count
524   execute immediate 'SELECT count(*) FROM ('||v_lov_sql_stmt||') ' INTO x_number_values;*/
525 EXCEPTION
526 
527  WHEN FND_API.G_EXC_ERROR THEN
528        x_return_status := FND_API.G_RET_STS_ERROR;
529        FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
530   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
531        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
532        FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
533   WHEN OTHERS THEN
534        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
535        FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
536 
537 END get_rank_level_and_num_values;
538 
539 -- jprabhud - 04/23/04 - Bug 3573468
540 PROCEDURE clean_portlets
541 (
542 	 p_user_name in VARCHAR2 DEFAULT NULL-- jprabhud - 04/23/04 - Bug 3573468
543 	,p_page_id in NUMBER DEFAULT NULL-- jprabhud - 04/23/04 - Bug 3573468
544 	,p_page_name in VARCHAR2 DEFAULT NULL-- jprabhud - 04/23/04 - Bug 3573468
545         ,p_function_name in VARCHAR2 DEFAULT NULL-- jprabhud - 04/23/04 - Bug 3573468
546 	,x_return_status  OUT NOCOPY VARCHAR2
547 	,x_msg_count   OUT NOCOPY NUMBER
548 	,x_msg_data    OUT NOCOPY VARCHAR2
549 )
550 IS
551 BEGIN
552 
553      BIS_PMV_PORTAL_UTIL_PVT.clean_portlets
554      (   p_user_name => p_user_name
555 	,p_page_id => p_page_id
556 	,p_page_name => p_page_name
557 	,x_return_status  => x_return_status
558 	,x_msg_count  => x_msg_count
559 	,x_msg_data   => x_msg_data
560 	,p_function_name => p_function_name
561      );
562 
563 
564 EXCEPTION
565   WHEN FND_API.G_EXC_ERROR THEN
566         x_return_status := FND_API.G_RET_STS_ERROR;
567         FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data) ;
568 
569   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
570         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
571         FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data) ;
572   WHEN OTHERS THEN
573         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
574         FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
575 
576 END clean_portlets ;
577 
578 END BIS_PMV_PORTAL_UTIL_PUB;