[Home] [Help]
PACKAGE BODY: APPS.BSC_MULTI_USER_PVT
Source
1 package body BSC_MULTI_USER_PVT as
2 /* $Header: BSCVMUFB.pls 120.0 2005/06/01 17:00:01 appldev noship $*/
3
4
5 procedure Apply_Multi_User_Env(
6 p_obj_type IN varchar2
7 ,p_obj_id IN number := 0
8 ,p_obj_id2 IN number := 0
9 ,p_obj_id3 IN number := 0
10 ,p_obj_location IN varchar2 := 'DUMMY'
11 ,p_obj_action IN varchar2
12 ,p_time_stamp IN varchar2
13 ,x_return_status OUT NOCOPY varchar2
14 ,x_msg_count OUT NOCOPY number
15 ,x_msg_data OUT NOCOPY varchar2
16 ) is
17
18 l_obj_action varchar2(10) := null;
19 l_time_stamp date;
20
21 begin
22
23 FND_MSG_PUB.Initialize;
24
25 l_time_stamp := to_date(p_time_stamp, 'DD-MM-YYYY-HH24-MI-SS');
26
27 x_return_status := null;
28
29 if p_obj_type = 'TAB' and p_obj_action = 'LCK' then
30
31 if p_obj_location = 'DETAILS' then
32 -- Lock for Details Scorecard Screen.
33 /* Tab_Details_Lock( p_obj_id
34 ,x_return_status
35 ,x_msg_count
36 ,x_msg_data);*/
37
38 -- Set flag to check time stamp.
39 l_obj_action := 'TST';
40
41 elsif p_obj_location = 'DELETE' then
42 -- Lock for Delete Screen.
43 Tab_Delete_Lock( p_obj_id
44 ,x_return_status
45 ,x_msg_count
46 ,x_msg_data);
47
48 -- Set flag to check time stamp.
49 l_obj_action := 'TST';
50
51 elsif p_obj_location = 'SELECT' then
52 -- Lock for Select Scorecard Item Screen.
53 Tab_Select_Items_Lock( p_obj_id
54 ,x_return_status
55 ,x_msg_count
56 ,x_msg_data);
57
58 -- Set flag to check time stamp.
59 l_obj_action := 'TST';
60
61 end if;
62
63 elsif p_obj_type = 'KPI' and p_obj_action = 'LCK' then
64
65 if p_obj_location = 'ADDMEASURE' then
66
67 Kpi_Lock( p_obj_id
68 ,x_return_status
69 ,x_msg_count
70 ,x_msg_data);
71
72 -- Set flag to check time stamp.
73 l_obj_action := 'TST';
74
75 elsif p_obj_location = 'OPTION' then
76
77 Option_Lock( p_obj_id
78 ,p_obj_id2
79 ,p_obj_id3
80 ,x_return_status
81 ,x_msg_count
82 ,x_msg_data);
83
84 -- Set flag to check time stamp.
85 l_obj_action := 'TST';
86
87 end if;
88
89 elsif p_obj_type = 'SYSTEM' and p_obj_action = 'TST' then
90 if p_obj_location = 'CREATE' then
91 -- Time stamp check for Create Scorecard button.
92 Check_System_Change( 'LOCK_SYSTEM'
93 ,l_time_stamp
94 ,x_msg_count
95 ,x_return_status
96 ,x_msg_data);
97 end if;
98 elsif p_obj_type = 'DIM_LEVEL' and p_obj_action = 'LCK' then
99
100 Dim_Level_Lock( p_obj_id
101 ,p_obj_location /* Short Name */
102 ,x_return_status
103 ,x_msg_count
104 ,x_msg_data);
105
106 elsif p_obj_action = 'TST' then
107
108 l_obj_action := 'TST';
109
110 end if;
111
112 if (l_obj_action = 'TST' and x_return_status is null) then
113 Have_Time_Stamps_Changed( p_obj_type
114 ,p_obj_id
115 ,l_time_stamp
116 ,x_return_status
117 ,x_msg_count
118 ,x_msg_data);
119 end if;
120
121 if x_return_status is null then
122 x_return_status := 'S';
123 end if;
124
125
126 EXCEPTION
127 WHEN FND_API.G_EXC_ERROR THEN
128 rollback;
129 FND_MSG_PUB.Initialize;
130 x_return_status := FND_API.G_RET_STS_ERROR;
131 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
132 ,p_data => x_msg_data);
133 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
134 rollback;
135 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
136 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
137 ,p_data => x_msg_data);
138 WHEN NO_DATA_FOUND THEN
139 rollback;
140 x_return_status := FND_API.G_RET_STS_ERROR;
141 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
142 ,p_data => x_msg_data);
143 WHEN OTHERS THEN
144 rollback;
145 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
146 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
147 ,p_data => x_msg_data);
148
149 end Apply_Multi_User_Env;
150
151 /************************************************************************************
152 ************************************************************************************/
153
154 procedure Have_Time_Stamps_Changed(
155 p_obj_type IN varchar2
156 ,p_obj_id IN number
157 ,p_time_stamp IN date
158 ,x_return_status OUT NOCOPY varchar2
159 ,x_msg_count OUT NOCOPY number
160 ,x_msg_data OUT NOCOPY varchar2
161 ) is
162
163 begin
164
165
166 if p_obj_type = 'TAB' then
167 Check_Tab_Time_Stamp( p_obj_id
168 ,p_time_stamp
169 ,x_return_status
170 ,x_msg_count
171 ,x_msg_data);
172 elsif p_obj_type = 'KPI' then
173 Check_Kpi_Time_Stamp( p_obj_id
174 ,p_time_stamp
175 ,x_return_status
176 ,x_msg_count
177 ,x_msg_data);
178 else
179 RAISE FND_API.G_EXC_ERROR;
180 end if;
181
182 EXCEPTION
183 WHEN FND_API.G_EXC_ERROR THEN
184 rollback;
185 FND_MSG_PUB.Initialize;
186 --x_return_status := FND_API.G_RET_STS_ERROR;
187 x_return_status := 'C';
188 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
189 ,p_data => x_msg_data);
190 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
191 rollback;
192 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
193 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
194 ,p_data => x_msg_data);
195 WHEN NO_DATA_FOUND THEN
196 rollback;
197 x_return_status := FND_API.G_RET_STS_ERROR;
198 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
199 ,p_data => x_msg_data);
200 WHEN OTHERS THEN
201 rollback;
202 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
203 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
204 ,p_data => x_msg_data);
205
206 end Have_Time_Stamps_Changed;
207
208 /************************************************************************************
209 ************************************************************************************/
210
211 procedure Check_Tab_Time_Stamp(
212 p_obj_id IN number
213 ,p_time_stamp IN date
214 ,x_return_status OUT NOCOPY varchar2
215 ,x_msg_count OUT NOCOPY number
216 ,x_msg_data OUT NOCOPY varchar2
217 ) is
218
219 l_time_stamp date;
220
221 begin
222
223 select last_update_date
224 into l_time_stamp
225 from BSC_TABS_B
226 where tab_id = p_obj_id;
227
228 if l_time_stamp > p_time_stamp then
229 RAISE FND_API.G_EXC_ERROR;
230 end if;
231
232 EXCEPTION
233 WHEN FND_API.G_EXC_ERROR THEN
234 rollback;
235 x_return_status := 'C';
236 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
237 ,p_data => x_msg_data);
238 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
239 rollback;
240 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
241 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
242 ,p_data => x_msg_data);
243 WHEN NO_DATA_FOUND THEN
244 rollback;
245 x_return_status := 'D';
246 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
247 ,p_data => x_msg_data);
248 WHEN OTHERS THEN
249 rollback;
250 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
251 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
252 ,p_data => x_msg_data);
253
254 end Check_Tab_Time_Stamp;
255
256 /************************************************************************************
257 ************************************************************************************/
258
259 procedure Check_Kpi_Time_Stamp(
260 p_obj_id IN number
261 ,p_time_stamp IN date
262 ,x_return_status OUT NOCOPY varchar2
263 ,x_msg_count OUT NOCOPY number
264 ,x_msg_data OUT NOCOPY varchar2
265 ) is
266
267 l_time_stamp date;
268
269 begin
270
271 select last_update_date
272 into l_time_stamp
273 from BSC_KPIS_B
274 where indicator = p_obj_id;
275
276 /*
277 if l_time_stamp > p_time_stamp then
278 RAISE FND_API.G_EXC_ERROR;
279 end if;
280 */
281 if to_date(l_time_stamp, 'DD-MM-YYYY-HH24-MI-SS') > to_date(p_time_stamp, 'DD-MM-YYYY-HH24-MI-SS') then
282 RAISE FND_API.G_EXC_ERROR;
283 end if;
284
285
286 EXCEPTION
287 WHEN FND_API.G_EXC_ERROR THEN
288 rollback;
289 x_return_status := 'C';
290 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
291 ,p_data => x_msg_data);
292 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
293 rollback;
294 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
295 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
296 ,p_data => x_msg_data);
297 WHEN NO_DATA_FOUND THEN
298 rollback;
299 x_return_status := 'D';
300 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
301 ,p_data => x_msg_data);
302 WHEN OTHERS THEN
303 rollback;
304 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
305 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
306 ,p_data => x_msg_data);
307
308 end Check_Kpi_Time_Stamp;
309
310 /************************************************************************************
311 ************************************************************************************/
312
313 procedure Check_System_Change(
314 p_property_code IN varchar2
315 ,p_time_stamp IN date
316 ,x_return_status OUT NOCOPY varchar2
317 ,x_msg_count OUT NOCOPY number
318 ,x_msg_data OUT NOCOPY varchar2
319 ) is
320
321 l_time_stamp date;
322
323 begin
324
325 select last_update_date
326 into l_time_stamp
327 from BSC_SYS_INIT
328 where property_code = p_property_code;
329
330 if l_time_stamp > p_time_stamp then
331 RAISE FND_API.G_EXC_ERROR;
332 end if;
333
334
335 EXCEPTION
336 WHEN FND_API.G_EXC_ERROR THEN
337 rollback;
338 x_return_status := 'C';
339 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
340 ,p_data => x_msg_data);
341 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
342 rollback;
343 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
344 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
345 ,p_data => x_msg_data);
346 WHEN NO_DATA_FOUND THEN
347 rollback;
348 x_return_status := FND_API.G_RET_STS_ERROR;
349 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
350 ,p_data => x_msg_data);
351 WHEN OTHERS THEN
352 rollback;
353 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
354 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
355 ,p_data => x_msg_data);
356
357 end Check_System_Change;
358
359 /************************************************************************************
360 ************************************************************************************/
361
362 procedure Tab_Details_Lock(
363 p_obj_id number
364 ,x_return_status OUT NOCOPY varchar2
365 ,x_msg_count OUT NOCOPY number
366 ,x_msg_data OUT NOCOPY varchar2
367 ) is
368
369 -- This procedure locks name for a given tab.
370 -- We lock name so no other "Details" nor "Delete" sessions access it.
371
372 l_dummy1 BSC_TABS_TL.NAME%TYPE;
373
374 begin
375
376 select name
377 into l_dummy1
378 from BSC_TABS_TL
379 where tab_id = p_obj_id
380 and rownum < 2
381 for update nowait;
382
383 EXCEPTION
384 WHEN FND_API.G_EXC_ERROR THEN
385 -- rollback;
386 x_return_status := FND_API.G_RET_STS_ERROR;
387 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
388 ,p_data => x_msg_data);
389 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
390 -- rollback;
391 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
392 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
393 ,p_data => x_msg_data);
394 WHEN NO_DATA_FOUND THEN
395 -- rollback;
396 x_return_status := 'D';
397 -- x_return_status := FND_API.G_RET_STS_ERROR;
398 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
399 ,p_data => x_msg_data);
400 WHEN OTHERS THEN
401 -- rollback;
402 if SQLCODE = -00054 then
403 FND_MESSAGE.SET_NAME('BSC','BSC_MUSERS_LOCKED_TAB');
404 FND_MSG_PUB.ADD;
405 x_return_status := 'L';
406 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
407 ,p_data => x_msg_data);
408 else
409 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
410 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
411 ,p_data => x_msg_data);
412 IF (x_msg_data IS NULL) THEN
413 x_msg_data := SQLERRM||' at BSC_MULTI_USER_PVT.Tab_Details_Lock ';
414 END IF;
415 end if;
416
417 end Tab_Details_Lock;
418
419 /************************************************************************************
420 ************************************************************************************/
421
422 procedure Tab_Delete_Lock(
423 p_obj_id number
424 ,x_return_status OUT NOCOPY varchar2
425 ,x_msg_count OUT NOCOPY number
426 ,x_msg_data OUT NOCOPY varchar2
427 ) is
428
429 -- This procedure locks tab_id for a given Tab.
430 -- We lock tab_id from BSC_TABS_B to prevent "Delete" and "Select Scorecard Items"
431 -- sessions to access the screen.
432 -- We lock name from BSC_TABS_B to lock out NOCOPY "Details".
433
434 l_dummy1 number;
438
435 l_dummy2 BSC_TABS_TL.NAME%TYPE;
436
437 begin
439 select name
440 into l_dummy2
441 from BSC_TABS_TL
442 where tab_id = p_obj_id
443 and rownum < 2
444 for update nowait;
445
446 select tab_id
447 into l_dummy1
448 from BSC_TABS_B
449 where tab_id = p_obj_id
450 for update nowait;
451
452
453 EXCEPTION
454 WHEN FND_API.G_EXC_ERROR THEN
455 rollback;
456 x_return_status := FND_API.G_RET_STS_ERROR;
457 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
458 ,p_data => x_msg_data);
459 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
460 rollback;
461 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
462 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
463 ,p_data => x_msg_data);
464 WHEN NO_DATA_FOUND THEN
465 rollback;
466 x_return_status := 'D';
467 -- x_return_status := FND_API.G_RET_STS_ERROR;
468 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
469 ,p_data => x_msg_data);
470 WHEN OTHERS THEN
471 rollback;
472 if SQLCODE = -00054 then
473 x_return_status := 'L';
474 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
475 ,p_data => x_msg_data);
476 else
477 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
478 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
479 ,p_data => x_msg_data);
480 end if;
481
482 end Tab_Delete_Lock;
483
484 /************************************************************************************
485 ************************************************************************************/
486
487 procedure Tab_Select_Items_Lock(
488 p_obj_id IN number
489 ,x_return_status OUT NOCOPY varchar2
490 ,x_msg_count OUT NOCOPY number
491 ,x_msg_data OUT NOCOPY varchar2
492 ) is
493
494 -- This procedure locks tab_id for a given Tab.
495 -- We lock tab_id from BSC_TABS_B to lock other "Select Scorecard Items"
496 -- sessions and to lock out NOCOPY "Delete".
497
498 l_dummy1 number;
499
500 begin
501
502 select tab_id
503 into l_dummy1
504 from BSC_TABS_B
505 where tab_id = p_obj_id
506 for update nowait;
507
508 EXCEPTION
509 WHEN FND_API.G_EXC_ERROR THEN
510 rollback;
511 x_return_status := FND_API.G_RET_STS_ERROR;
512 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
513 ,p_data => x_msg_data);
514 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
515 rollback;
516 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
517 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
518 ,p_data => x_msg_data);
519 WHEN NO_DATA_FOUND THEN
520 rollback;
521 x_return_status := 'D';
522 -- x_return_status := FND_API.G_RET_STS_ERROR;
523 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
524 ,p_data => x_msg_data);
525 WHEN OTHERS THEN
526 rollback;
527 if SQLCODE = -00054 then
528 x_return_status := 'L';
529 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
530 ,p_data => x_msg_data);
531 else
532 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
533 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
534 ,p_data => x_msg_data);
535 end if;
536
537 end Tab_Select_Items_Lock;
538
539 /************************************************************************************
540 ************************************************************************************/
541
542 procedure Kpi_Lock(
543 p_obj_id number
544 ,x_return_status OUT NOCOPY varchar2
545 ,x_msg_count OUT NOCOPY number
546 ,x_msg_data OUT NOCOPY varchar2
547 ) is
548
549 l_dummy1 number;
550 l_dummy2 varchar2(20);
551
552 begin
553
554 select indicator, property_code
555 into l_dummy1, l_dummy2
556 from bsc_kpi_properties
557 where property_code = 'LOCK_INDICATOR'
558 and indicator = p_obj_id
559 for update nowait;
560
561 select indicator
562 into l_dummy1
563 from BSC_KPIS_B
564 where indicator = p_obj_id
565 for update nowait;
566
567 EXCEPTION
568 WHEN FND_API.G_EXC_ERROR THEN
569 rollback;
570 x_return_status := FND_API.G_RET_STS_ERROR;
571 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
572 ,p_data => x_msg_data);
573 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
574 rollback;
575 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
576 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
577 ,p_data => x_msg_data);
578 WHEN NO_DATA_FOUND THEN
579 rollback;
580 x_return_status := 'D';
584 WHEN OTHERS THEN
581 -- x_return_status := FND_API.G_RET_STS_ERROR;
582 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
583 ,p_data => x_msg_data);
585 rollback;
586 if SQLCODE = -00054 then
587 x_return_status := 'L';
588 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
589 ,p_data => x_msg_data);
590 else
591 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
592 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
593 ,p_data => x_msg_data);
594 end if;
595
596 end Kpi_Lock;
597
598 /************************************************************************************
599 ************************************************************************************/
600
601 procedure Option_Lock(
602 p_obj_id IN number
603 ,p_obj_id2 IN number
604 ,p_obj_id3 IN number
605 ,x_return_status OUT NOCOPY varchar2
606 ,x_msg_count OUT NOCOPY number
607 ,x_msg_data OUT NOCOPY varchar2
608 ) is
609
610 l_dummy1 varchar2(50);
611 l_dummy2 varchar2(50);
612
613 begin
614
615 select indicator, property_code
616 into l_dummy1, l_dummy2
617 from bsc_kpi_properties
618 where property_code = 'LOCK_INDICATOR'
619 and indicator = p_obj_id
620 for update nowait;
621
622 /*
623 select name
624 into l_dummy1
625 from BSC_KPI_ANALYSIS_OPTIONS_TL
626 where indicator = p_obj_id
627 and option_id = p_obj_id2
628 and analysis_group_id = p_obj_id3
629 for update nowait;
630 */
631
632 EXCEPTION
633 WHEN FND_API.G_EXC_ERROR THEN
634 rollback;
635 x_return_status := FND_API.G_RET_STS_ERROR;
636 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
637 ,p_data => x_msg_data);
638 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
639 rollback;
640 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
641 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
642 ,p_data => x_msg_data);
643 WHEN NO_DATA_FOUND THEN
644 rollback;
645 x_return_status := 'D';
646 -- x_return_status := FND_API.G_RET_STS_ERROR;
647 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
648 ,p_data => x_msg_data);
649 WHEN OTHERS THEN
650 rollback;
651 if SQLCODE = -00054 then
652 x_return_status := 'L';
653 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
654 ,p_data => x_msg_data);
655 else
656 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
657 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
658 ,p_data => x_msg_data);
659 end if;
660
661 end Option_Lock;
662
663 /************************************************************************************
664 ************************************************************************************/
665
666 procedure Dim_Level_Lock(
667 p_obj_id IN number
668 ,p_obj_shortName IN varchar2
669 ,x_return_status OUT NOCOPY varchar2
670 ,x_msg_count OUT NOCOPY number
671 ,x_msg_data OUT NOCOPY varchar2
672 ) is
673
674 l_dummy number;
675
676 begin
677
678 IF p_obj_id >= 0 and (p_obj_shortName is null or p_obj_shortName = '' or p_obj_shortName = 'DUMMY' ) then
679 select DIM_LEVEL_ID
680 into l_dummy
681 from BSC_SYS_DIM_LEVELS_B
682 where DIM_LEVEL_ID = p_obj_id
683 for update nowait;
684 else
685 select DIM_LEVEL_ID
686 into l_dummy
687 from BSC_SYS_DIM_LEVELS_B
688 where upper(SHORT_NAME) = upper(p_obj_shortName)
689 for update nowait;
690 end if;
691
692
693 EXCEPTION
694 WHEN FND_API.G_EXC_ERROR THEN
695 rollback;
696 x_return_status := FND_API.G_RET_STS_ERROR;
697 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
698 ,p_data => x_msg_data);
699 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
700 rollback;
701 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
702 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
703 ,p_data => x_msg_data);
704 WHEN NO_DATA_FOUND THEN
705 rollback;
706 x_return_status := 'D';
707 -- x_return_status := FND_API.G_RET_STS_ERROR;
708 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
709 ,p_data => x_msg_data);
710 WHEN OTHERS THEN
711 rollback;
712 if SQLCODE = -00054 then
713 x_return_status := 'L';
714 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
715 ,p_data => x_msg_data);
716 else
717 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
718 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
719 ,p_data => x_msg_data);
720 end if;
721
722 end Dim_Level_Lock;
723
724 /************************************************************************************
725 ************************************************************************************/
726
727 end BSC_MULTI_USER_PVT;