DBA Data[Home] [Help]

PACKAGE BODY: APPS.BIS_RSG_PUB_API_PKG

Source


1 PACKAGE BODY bis_rsg_pub_api_pkg AS
2 /* $Header: BISRSGPB.pls 120.3 2005/11/14 01:44:41 amitgupt noship $ */
3    version          CONSTANT CHAR (80)
4             := '$Header: BISRSGPB.pls 120.3 2005/11/14 01:44:41 amitgupt noship $';
5 
6    g_pkg_name VARCHAR2(50) := 'bis_rsg_pub_api_pkg';
7 
8    g_curr_user_id         NUMBER  :=  FND_GLOBAL.User_id;
9    g_curr_login_id        NUMBER  :=  FND_GLOBAL.Login_id;
10 
11 -- As per discussion with Tiwang, Ian, the logic of this function is the following:
12 -- for given function name A, we will first try to find if there is A_OA page object
13 -- in RSG repository, if there is, return A_OA, otherwise, return A
14 -- Potential problem: if in a migrated environment, user indeed has A_OA and A in
15 -- fnd_form_function, and user intend to add dependencies for A, we will end up with
16 -- add dependencies to A_OA with this logic, currently there is no way for lct to handle this case
17 -- although we can handle it correctly by investigating if there is really a A_OA in
18 -- fnd_form_functions if there is, return A; if there is not, return A_OA
19 FUNCTION get_page_name_by_func (
20  p_func_name   IN VARCHAR2) RETURN VARCHAR2
21 IS
22    CURSOR c_page_object_name(p_func_name VARCHAR2) IS
23       SELECT object_name FROM bis_obj_dependency
24 	WHERE object_type = 'PAGE' AND object_name = p_func_name || '_OA'
25       UNION ALL
26       SELECT object_name FROM bis_obj_properties
27 	WHERE object_type = 'PAGE' AND object_name = p_func_name || '_OA';
28 
29    v_object_name bis_obj_dependency.object_name%type; --Enhancement 4106617
30 BEGIN
31    IF (p_func_name IS NULL OR p_func_name = '') THEN
32       RETURN NULL;
33    END IF;
34    OPEN c_page_object_name(p_func_name);
35    FETCH c_page_object_name INTO v_object_name;
36    IF (c_page_object_name%notfound) THEN
37       v_object_name := p_func_name;
38    END IF;
39    CLOSE c_page_object_name;
40    RETURN v_object_name;
41 EXCEPTION
42    WHEN OTHERS THEN
43       RETURN NULL;
44 END get_page_name_by_func;
45 
46 /* notice that this function has to work either for OA pages with or
47  * without _OA attached to the object name
48  */
49 PROCEDURE page_name_validation(
50  P_OBJECT_NAME          IN VARCHAR2,
51  X_RETURN_STATUS        OUT NOCOPY VARCHAR2)
52 IS
53    v_dummy                VARCHAR(5);
54 BEGIN
55    x_return_status := 'Y';
56 
57    -- those with _OA attached must have already exist in RSG repository
58    BEGIN
59       execute immediate 'select 1 from bis_obj_properties
60 	WHERE object_type = :1 AND object_name = :2'
61 	INTO v_dummy
62 	using 'PAGE', p_object_name;
63       RETURN;
64    EXCEPTION
65       WHEN no_data_found THEN
66 	 NULL;
67    END;
68 
69    execute immediate 'select 1 from fnd_form_functions
70      WHERE ( Upper(web_html_call) = :1 AND substr(parameters,10) = :2)
71      OR ( Upper(web_html_call) LIKE :3 AND function_name = :4)'
72      INTO v_dummy
73      using 'ORACLESSWA.SWITCHPAGE', p_object_name, '%BIS_COMPONENT_PAGE'||'&'||'AKREGIONAPPLICATIONID=191%', p_object_name;
74 
75 EXCEPTION
76    WHEN OTHERS THEN
77       x_return_status := 'N';
78 END;
79 
80 PROCEDURE object_name_validation (
81  P_OBJECT_TYPE          IN VARCHAR2,
82  P_OBJECT_NAME          IN VARCHAR2,
83  X_RETURN_STATUS        OUT NOCOPY VARCHAR2
84 ) IS
85    v_dummy              VARCHAR2(5);
86 BEGIN
87    IF (p_object_type IS NULL OR p_object_name IS NULL) THEN
88       x_return_status := 'N';
89       RETURN;
90    END IF;
91 
92    x_return_status := 'Y';
93    IF (p_object_type = 'TABLE' OR p_object_type = 'VIEW'
94        OR p_object_type = 'MV' ) THEN
95       x_return_status := 'Y';
96     ELSIF (p_object_type = 'PORTLET') THEN
97       execute immediate 'select 1 from fnd_form_functions
98 	WHERE TYPE in (''WEBPORTLET'',''WEBPORTLETX'') AND function_name = :1'
99 	INTO v_dummy
100 	using  p_object_name;
101     ELSIF (p_object_type = 'REPORT') THEN
102        execute immediate 'select 1 from fnd_form_functions
103 	WHERE TYPE in (:1,:2) AND function_name = :3'
104 	INTO v_dummy
105 	using 'WWW', 'JSP',p_object_name;
106     ELSIF(p_object_type = 'PAGE') THEN
107       page_name_validation(p_object_name, x_return_status);
108     ELSE
109       x_return_status := 'N';
110    END IF;
111 EXCEPTION
112    WHEN OTHERS THEN
113       x_return_status := 'N';
114 END object_name_validation;
115 
116 PROCEDURE object_owner_validation(
117   p_object_owner VARCHAR2,
118   x_return_status OUT nocopy VARCHAR2)
119 IS
120   v_dummy VARCHAR2(5);
121 BEGIN
122   X_RETURN_STATUS := 'Y';  --default as Y.
123 
124   IF (P_OBJECT_OWNER IS NULL) THEN
125      X_RETURN_STATUS := 'N';
126      RETURN;
127   END IF;
128 
129   execute immediate 'SELECT 1
130     FROM FND_APPLICATION
131     WHERE APPLICATION_SHORT_NAME = :1'
132     INTO v_dummy
133     using p_object_owner;
134 
135 EXCEPTION
136    WHEN OTHERS THEN
137       x_return_status := 'N';
138 END object_owner_validation;
139 
140 -- this procedure can only be invoked in create_dependency
141 -- thus here we don't need to call get_page_name_by_func
142 PROCEDURE create_property(
143  P_OBJECT_TYPE		in VARCHAR2,
144  P_OBJECT_OWNER		in VARCHAR2,
145  P_OBJECT_NAME		in VARCHAR2,
146  x_return_status        OUT NOCOPY  VARCHAR2,
147  x_msg_data             OUT NOCOPY  VARCHAR2
148 ) IS
149    v_procedure_name VARCHAR2(50) := 'Create_Property';
150 BEGIN
151    x_return_status := FND_API.G_RET_STS_SUCCESS;
152 
153    execute immediate 'insert into bis_obj_properties (
154 	object_type, OBJECT_NAME, OBJECT_OWNER,
155         CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
156         LAST_UPDATE_LOGIN, LAST_UPDATE_DATE)
157      values(:1, :2, :3, :4, :5, :6, :7, :8)'
158      using  P_OBJECT_TYPE, p_object_name, P_OBJECT_OWNER,
159      g_curr_user_id, Sysdate, g_curr_user_id,
160      g_curr_login_id, Sysdate;
161 EXCEPTION
162    WHEN dup_val_on_index THEN
163       RETURN;
164    WHEN OTHERS THEN
165       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
166       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
167           FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
168       END IF;
169       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
170 END create_property;
171 
172 -- for page definer
173 -- try to find object owner in RSG repository first
174 FUNCTION get_appl_short_name_for_obj(p_object_name VARCHAR2,
175 				     p_object_type VARCHAR2) RETURN VARCHAR2 IS
176 
177    CURSOR c_obj_appl_short_name IS
178       SELECT DISTINCT object_owner
179 	FROM bis_obj_dependency
180 	WHERE object_name = p_object_name AND object_type = p_object_type;
181 
182    CURSOR c_depend_obj_appl_short_name IS
183       SELECT DISTINCT depend_object_owner
184 	FROM bis_obj_dependency
185 	WHERE depend_object_name = p_object_name AND depend_object_type = p_object_type;
186 
187    l_obj_owner VARCHAR(50);
188 BEGIN
189    OPEN c_obj_appl_short_name;
190    FETCH c_obj_appl_short_name INTO l_obj_owner;
191    CLOSE c_obj_appl_short_name;
192 
193    IF (l_obj_owner IS NOT NULL) THEN
194       RETURN l_obj_owner;
195    END IF;
196 
197    OPEN c_depend_obj_appl_short_name;
198    FETCH c_depend_obj_appl_short_name INTO l_obj_owner;
199    CLOSE c_depend_obj_appl_short_name;
200 
201    RETURN l_obj_owner;
202 EXCEPTION
203    WHEN OTHERS THEN
204       RETURN NULL;
205 END get_appl_short_name_for_obj;
206 
207 PROCEDURE Create_Dependency (
208  P_OBJECT_TYPE		in VARCHAR2,
209  P_OBJECT_OWNER		in VARCHAR2,
210  P_OBJECT_NAME		in VARCHAR2,
211  P_ENABLED_FLAG		in VARCHAR2,
212  P_DEPEND_OBJECT_TYPE	in VARCHAR2,
213  P_DEPEND_OBJECT_OWNER	in VARCHAR2,
214  P_DEPEND_OBJECT_NAME	in VARCHAR2,
215  x_return_status        OUT NOCOPY  VARCHAR2,
216  x_msg_data             OUT NOCOPY  VARCHAR2
217 ) IS
218    v_procedure_name VARCHAR2(50) := 'Create_Dependency';
219    l_object_owner VARCHAR2(50);
220    l_depend_object_owner VARCHAR2(50);
221    l_object_name bis_obj_dependency.object_name%type; --Enhancement 4106617
222 BEGIN
223    FND_MSG_PUB.initialize;
224 
225    -- since page designer passes in fnd_form_function name instead of object name
226    -- we need take care of _OA problem by calling get_page_name_by_func, if object type is PAGE
227    IF (p_object_type = 'PAGE') THEN
228      l_object_name := get_page_name_by_func(p_object_name);
229     ELSE
230       l_object_name := p_object_name;
231    END IF;
232 
233    l_object_owner := get_appl_short_name_for_obj(l_object_name, p_object_type);
234    l_depend_object_owner := get_appl_short_name_for_obj(p_depend_object_name, p_depend_object_type);
235 
236    IF (l_object_owner IS NULL) THEN
237       l_object_owner := p_object_owner;
238    END IF;
239 
240    IF (l_depend_object_owner IS NULL) THEN
241       l_depend_object_owner := p_depend_object_owner;
242    END IF;
243 
244    x_return_status := FND_API.G_RET_STS_SUCCESS;
245 
246    -- validate (object_type, object_name)
247    object_name_validation(p_object_type, l_object_name, x_return_status);
248    IF (x_return_status = 'N') THEN
249       --CHANGE FOR BUG 4698254
250       IF (p_object_type <> 'PORTLET') THEN
251         x_msg_data := 'BIS_BIA_RSG_INVALID_OBJ';
252       ELSE
253         x_msg_data := 'BIS_REGION_NOT_EXISTING_MSG';
254       END IF;
255       x_return_status := fnd_api.g_ret_sts_error;
256       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
257 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, x_msg_data);
258       END IF;
259       RETURN;
260    END IF;
261 
262    -- validate object_owner
263    object_owner_validation(l_object_owner, x_return_status);
264    IF (x_return_status = 'N') THEN
265       x_msg_data := 'BIS_BIA_RSG_INVALID_OBJ_OWNER';
266       x_return_status := fnd_api.g_ret_sts_error;
267       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
268 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INVALID_OBJ_OWNER');
269       END IF;
270       RETURN;
271    END IF;
272 
273    -- validate (depend_object_type, depend_object_name)
274    object_name_validation(p_depend_object_type, p_depend_object_name, x_return_status);
275    IF (x_return_status = 'N') THEN
276       --added for bug 4698254
277       IF (p_depend_object_type <> 'PORTLET') THEN
278         x_msg_data := 'BIS_BIA_RSG_INVALID_DEP_OBJ';
279       ELSE
280         x_msg_data := 'BIS_REGION_NOT_EXISTING_MSG';
281       END IF;
282       x_return_status := fnd_api.g_ret_sts_error;
283       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
284 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, x_msg_data);
285       END IF;
286       RETURN;
287    END IF;
288 
289    -- validate depend_object_owner
290    object_owner_validation(l_depend_object_owner, x_return_status);
291    IF (x_return_status = 'N') THEN
292       x_msg_data := 'BIS_BIA_RSG_INV_DEP_OBJ_OWNER';
293       x_return_status := fnd_api.g_ret_sts_error;
294       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
295 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INV_DEP_OBJ_OWNER');
296       END IF;
297       RETURN;
298    END IF;
299 
300    -- validate enabled flag
301    IF (p_enabled_flag IS NOT NULL AND p_enabled_flag <> 'Y'
302        AND p_enabled_flag <> 'N') THEN
303       x_return_status := fnd_api.g_ret_sts_error;
304       x_msg_data := 'BIS_BIA_RSG_INV_ENABLED_FLAG';
305       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
306 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INV_ENABLED_FLAG');
307       END IF;
308       RETURN;
309    END IF;
310 
311    execute immediate 'insert into bis_obj_dependency (
312      OBJECT_TYPE, OBJECT_OWNER, OBJECT_NAME,
313      ENABLED_FLAG,
314      DEPEND_OBJECT_TYPE, DEPEND_OBJECT_OWNER, DEPEND_OBJECT_NAME,
315      CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
316      LAST_UPDATE_LOGIN, LAST_UPDATE_DATE)
317      values(:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12)'
318      using p_object_type, l_OBJECT_OWNER, l_object_name,
319      P_ENABLED_FLAG,
320      P_DEPEND_OBJECT_TYPE, l_DEPEND_OBJECT_OWNER, P_DEPEND_OBJECT_NAME,
321      g_curr_user_id, sysdate, g_curr_user_id,
322      g_curr_login_id, sysdate;
323 
324    -- create corresponding object property if it doesn't exist in RSG previously
325    -- note that x_return_status and x_msg_data are set appropriately in create_property
326    create_property(p_object_type, l_object_owner, l_object_name,
327 		   x_return_status, x_msg_data);
328    IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
329       RETURN;
330    END IF;
331 
332    --create corresponding depend object property if it doesn't exist in RSG previously
333    -- note that x_return_status and x_msg_data are set appropriately in create_property
334    create_property(p_depend_object_type, l_depend_object_owner,
335 		   p_depend_object_name,
336 		   x_return_status, x_msg_data);
337    IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
338       RETURN;
339    END IF;
340 
341 EXCEPTION
342    WHEN dup_val_on_index THEN -- unique constraint violation
343       x_return_status := FND_API.G_RET_STS_ERROR;
344       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
345           FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
346       END IF;
347       x_msg_data := 'BIS_BIA_RSG_DUP_DEP_REC';
348    WHEN OTHERS THEN
349       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
350       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
351           FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
352       END IF;
353       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
354 END create_dependency;
355 
356 
357 PROCEDURE Update_Dependency (
358  P_OBJECT_TYPE		in VARCHAR2,
359  P_OBJECT_NAME		in VARCHAR2,
360  P_ENABLED_FLAG		in VARCHAR2,
361  P_DEPEND_OBJECT_TYPE	in VARCHAR2,
362  P_DEPEND_OBJECT_NAME	in VARCHAR2,
363  x_return_status        OUT NOCOPY  VARCHAR2,
364  x_msg_data             OUT NOCOPY  VARCHAR2
365 ) IS
366    v_procedure_name VARCHAR2(50) := 'Update_Dependency';
367    l_object_name bis_obj_dependency.object_name%type; --Enhancement 4106617
368 BEGIN
369    FND_MSG_PUB.initialize;
370 
371    -- since page designer passes in fnd_form_function name instead of object name
372    -- we need take care of _OA problem by calling get_page_name_by_func, if object type is PAGE
373    IF (p_object_type = 'PAGE') THEN
374      l_object_name := get_page_name_by_func(p_object_name);
375     ELSE
376       l_object_name := p_object_name;
377    END IF;
378 
379    -- validate enabled_flag
380    IF (p_enabled_flag IS NOT NULL AND p_enabled_flag <> 'Y'
381        AND p_enabled_flag <> 'N') THEN
382       x_return_status := fnd_api.g_ret_sts_error;
383       x_msg_data := 'BIS_BIA_RSG_INV_ENABLED_FLAG';
384       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
385 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INV_ENABLED_FLAG');
386       END IF;
387       RETURN;
388    END IF;
389 
390    --dbms_output.put_line('enabled flag validated');
391 
392    x_return_status := FND_API.G_RET_STS_SUCCESS;
393 
394    execute immediate 'update bis_obj_dependency
395      set enabled_flag = :1,
396          last_updated_by = :2,
397  	 last_update_login = :3,
398 	 last_update_date = :4
399      WHERE object_name = :5 AND object_type = :6
400      AND depend_object_name = :7 AND depend_object_type = :8'
404    --IF (SQL%notfound) THEN
401      using p_enabled_flag, g_curr_user_id, g_curr_login_id, Sysdate,
402      l_object_name, p_object_type, p_depend_object_name, p_depend_object_type;
403 
405    --   x_return_status := FND_API.G_RET_STS_ERROR;
406    --   IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
407    --	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
408    --  END IF;
409    --  x_msg_data := 'BIS_BIA_RSG_DEP_NOT_EXISTS';
410    --END IF;
411 
412 EXCEPTION
413    WHEN OTHERS THEN
414       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
415       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
416           FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
417       END IF;
418       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
419 END Update_Dependency;
420 
421 -- this procedure will only be called from delete_dependencies procedure
422 -- no need to call get_page_object_name_by_func
423 PROCEDURE delete_property (
424  P_OBJECT_TYPE		in VARCHAR2,
425  P_OBJECT_NAME		in VARCHAR2
426 ) IS
427    CURSOR c_dependencies (p_obj_name VARCHAR2, p_obj_type VARCHAR2) IS
428       SELECT depend_object_name
429 	FROM bis_obj_dependency
430 	WHERE (object_name = p_obj_name AND object_type = p_obj_type)
431 	OR (depend_object_name = p_obj_name AND depend_object_type = p_obj_type);
432 
433    v_dep_obj_name bis_obj_dependency.depend_object_name%TYPE;  --Enhancement 4106617
434 BEGIN
435    OPEN c_dependencies(p_object_name, p_object_type);
436    FETCH c_dependencies INTO v_dep_obj_name;
437    IF (c_dependencies%notfound) THEN
438       execute immediate 'delete from bis_obj_properties
439 	where object_type = :1 and object_name = :2'
440 	using p_object_type, p_object_name;
441    END IF;
442    CLOSE c_dependencies;
443 EXCEPTION
444    WHEN OTHERS THEN
445       RETURN;
446 END delete_property;
447 
448 PROCEDURE Delete_Dependency (
449  P_OBJECT_TYPE		in VARCHAR2,
450  P_OBJECT_NAME		in VARCHAR2,
451  P_DEPEND_OBJECT_TYPE	in VARCHAR2,
452  P_DEPEND_OBJECT_NAME	in VARCHAR2,
453  x_return_status        OUT NOCOPY  VARCHAR2,
454  x_msg_data             OUT NOCOPY  VARCHAR2
455 ) IS
456    v_procedure_name VARCHAR2(50) := 'Delete_Dependency';
457    l_object_name VARCHAR2(480); --Enhancement 4106617
458 BEGIN
459    FND_MSG_PUB.initialize;
460 
461    -- since page designer passes in fnd_form_function name instead of object name
462    -- we need take care of _OA problem by calling get_page_name_by_func, if object type is PAGE
463    IF (p_object_type = 'PAGE') THEN
464      l_object_name := get_page_name_by_func(p_object_name);
465     ELSE
466       l_object_name := p_object_name;
467    END IF;
468 
469    x_return_status := FND_API.G_RET_STS_SUCCESS;
470 
471    execute immediate 'delete from bis_obj_dependency
472      WHERE object_name = :1 AND object_type = :2
473      AND depend_object_name = :3 AND depend_object_type = :4'
474      using l_object_name, p_object_type, p_depend_object_name, p_depend_object_type;
475 
476    -- as per discussion with Tianyi, comment out the following code
477    -- IF (SQL%notfound) THEN
478    --   x_return_status := FND_API.G_RET_STS_ERROR;
479    --   IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
480    --	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
481    --   END IF;
482    --   x_msg_data := 'BIS_BIA_RSG_DEP_NOT_EXISTS';
483    -- END IF;
484 
485    -- delete the corresponding properties if neccessary
486    delete_property(p_object_type, l_object_name);
487    delete_property(p_depend_object_type, p_depend_object_name);
488 
489 EXCEPTION
490    WHEN OTHERS THEN
491       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
492       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
493 	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
494       END IF;
495       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
496 END Delete_Dependency;
497 
498 --Added for bug 4606455
499 -- is to delete depdendency based on rowid instead of object name
500 -- this will in turn call the above function
501 PROCEDURE Delete_Dependency (
502  P_ROWID		in ROWID,
503  x_return_status        OUT NOCOPY  VARCHAR2,
504  x_msg_data             OUT NOCOPY  VARCHAR2
505 ) IS
506    l_object_type             VARCHAR2(30);
507    l_object_name             VARCHAR2(480);
508    l_depend_object_type      VARCHAR2(30);
509    l_depend_object_name	     VARCHAR2(480);
510    cursor get_names(rid varchar2) is
511    select object_name,object_type,depend_object_name,depend_object_type
512    from bis_obj_dependency where rowid = rid;
513 BEGIN
514    open get_names(P_ROWID);
515    fetch get_names into l_object_name,l_object_type,l_depend_object_name,l_depend_object_type;
516    if get_names%NOTFOUND then
517     close get_names;
518     return;
519    end if;
520    close get_names;
521 
522    delete_dependency(l_object_type,l_object_name,l_depend_object_type,l_depend_object_name,
523                      x_return_status,x_msg_data);
524 EXCEPTION
525    WHEN OTHERS THEN
526      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
527      x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
528 END Delete_Dependency;
529 
533  x_msg_data             OUT NOCOPY  VARCHAR2
530 PROCEDURE Delete_Page_Dependencies (
531  P_OBJECT_NAME		in VARCHAR2,
532  x_return_status        OUT NOCOPY  VARCHAR2,
534 ) IS
535    v_procedure_name VARCHAR2(50) := 'Delete_Page_Dependencies';
536    l_object_name bis_obj_dependency.object_name%type;  --Enhancement 4106617
537    CURSOR c_deps (p_page_name VARCHAR2) IS
538       SELECT object_name, object_type, depend_object_name, depend_object_type
539 	FROM bis_obj_dependency
540 	WHERE object_type = 'PAGE' AND object_name = p_page_name;
541    v_dep c_deps%ROWTYPE;
542 BEGIN
543    FND_MSG_PUB.initialize;
544 
545    -- since page designer passes in fnd_form_function name instead of object name
546    -- we need take care of _OA problem by calling get_page_name_by_func, if object type is PAGE
547    l_object_name := get_page_name_by_func(p_object_name);
548 
549    x_return_status := FND_API.G_RET_STS_SUCCESS;
550 
551    -- execute immediate 'delete from bis_obj_dependency
552    --   WHERE object_name = :1 AND object_type = :2'
553    --   using l_object_name, 'PAGE';
554 
555    -- IF (SQL%notfound) THEN
556    --   x_return_status := FND_API.G_RET_STS_ERROR;
557    --   IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
558    --	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
559    --   END IF;
560    --   x_msg_data := 'BIS_BIA_RSG_PAGE_NOT_EXISTS';
561    -- END IF;
562 
563    -- execute immediate 'delete from bis_obj_properties
564    --   WHERE object_name = :1 AND object_type = :2'
565    --   using l_object_name, 'PAGE';
566 
567    OPEN c_deps(l_object_name);
568    LOOP
569       FETCH c_deps INTO v_dep;
570       EXIT WHEN c_deps%notfound;
571       Delete_Dependency (v_dep.object_type,
572 			 v_dep.OBJECT_NAME,
573 			 v_dep.depend_object_type,
574 			 v_dep.depend_object_name,
575 			 x_return_status,
576 			 x_msg_data);
577       EXIT WHEN (x_return_status <> FND_API.g_ret_sts_success);
578    END LOOP;
579    CLOSE c_deps;
580 EXCEPTION
581    WHEN OTHERS THEN
582       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
583       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
584 	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
585       END IF;
586       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
587 END Delete_Page_Dependencies;
588 
589 PROCEDURE Update_Property(
590  P_OBJECT_TYPE 		in VARCHAR2,
591  P_OBJECT_NAME		in VARCHAR2,
592  P_DIMENSION_FLAG       in VARCHAR2,
593  P_CUSTOM_API           in VARCHAR2,
594  x_return_status        OUT NOCOPY  VARCHAR2,
595  x_msg_data             OUT NOCOPY  VARCHAR2
596 ) IS
597    v_procedure_name VARCHAR2(50) := 'Update_Property';
598    l_object_name VARCHAR2(480); --Enhancement 4106617
599 BEGIN
600    FND_MSG_PUB.initialize;
601 
602    -- since page designer passes in fnd_form_function name instead of object name
603    -- we need take care of _OA problem by calling get_page_name_by_func, if object type is PAGE
604    IF (p_object_type = 'PAGE') THEN
605      l_object_name := get_page_name_by_func(p_object_name);
606     ELSE
607       l_object_name := p_object_name;
608    END IF;
609 
610    -- validate dimension_flag
611    IF (p_dimension_flag IS NOT NULL AND p_dimension_flag <> 'Y'
612        AND p_dimension_flag <> 'N') THEN
613       x_return_status := fnd_api.g_ret_sts_error;
614       x_msg_data := 'BIS_BIA_RSG_INVALID_DIM_FLAG';
615       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
616 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INVALID_DIM_FLAG');
617       END IF;
618       RETURN;
619    END IF;
620 
621    x_return_status := FND_API.G_RET_STS_SUCCESS;
622 
623    execute immediate 'update bis_obj_properties
624      set dimension_flag = :1,
625          custom_api = :2,
626          last_updated_by = :3,
627  	 last_update_login = :4,
628 	 last_update_date = :5
629      WHERE object_name = :6 AND object_type = :7'
630      using p_dimension_flag, p_custom_api, g_curr_user_id, g_curr_login_id, Sysdate,
631      l_object_name, p_object_type;
632 
633    --IF (SQL%notfound) THEN
634    --   x_return_status := FND_API.G_RET_STS_ERROR;
635    --   IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
636    -- FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
637    --   END IF;
638    --  x_msg_data := 'BIS_BIA_RSG_PROP_NOT_EXISTS';
639    --END IF;
640 
641 EXCEPTION
642    WHEN OTHERS THEN
643       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
644       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
645           FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
646       END IF;
647       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
648 END update_property;
649 
650 
651 PROCEDURE Update_Property_Dim_Flag(
652  P_OBJECT_TYPE 		in VARCHAR2,
653  P_OBJECT_NAME		in VARCHAR2,
654  P_DIMENSION_FLAG       in VARCHAR2,
658    v_procedure_name VARCHAR2(50) := 'Update_Property_Dim_Flag';
655  x_return_status        OUT NOCOPY  VARCHAR2,
656  x_msg_data             OUT NOCOPY  VARCHAR2
657 ) IS
659    l_object_name VARCHAR2(480); --Enhancement 4106617
660 BEGIN
661    FND_MSG_PUB.initialize;
662 
663    -- since page designer passes in fnd_form_function name instead of object name
664    -- we need take care of _OA problem by calling get_page_name_by_func, if object type is PAGE
665    IF (p_object_type = 'PAGE') THEN
666      l_object_name := get_page_name_by_func(p_object_name);
667     ELSE
668       l_object_name := p_object_name;
669    END IF;
670 
671    -- validate dimension_flag
672    IF (p_dimension_flag IS NOT NULL AND p_dimension_flag <> 'Y'
673        AND p_dimension_flag <> 'N') THEN
674       x_return_status := fnd_api.g_ret_sts_error;
675       x_msg_data := 'BIS_BIA_RSG_INVALID_DIM_FLAG';
676       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
677 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INVALID_DIM_FLAG');
678       END IF;
679       RETURN;
680    END IF;
681 
682    x_return_status := FND_API.G_RET_STS_SUCCESS;
683 
684    execute immediate 'update bis_obj_properties
685      set dimension_flag = :1,
686          last_updated_by = :2,
687  	 last_update_login = :3,
688 	 last_update_date = :4
689      WHERE object_name = :5 AND object_type = :6'
690      using p_dimension_flag, g_curr_user_id, g_curr_login_id, Sysdate,
691      l_object_name, p_object_type;
692 
693    --IF (SQL%notfound) THEN
694    --  x_return_status := FND_API.G_RET_STS_ERROR;
695    --   IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
696    --	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
697    --   END IF;
698    --   x_msg_data := 'BIS_BIA_RSG_PROP_NOT_EXISTS';
699    --  END IF;
700 
701 EXCEPTION
702    WHEN OTHERS THEN
703       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
704       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
705           FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
706       END IF;
707       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
708 END update_property_dim_flag;
709 
710 PROCEDURE Update_Property_Custom_API(
711  P_OBJECT_TYPE 		in VARCHAR2,
712  P_OBJECT_NAME		in VARCHAR2,
713  P_CUSTOM_API           in VARCHAR2,
714  x_return_status        OUT NOCOPY  VARCHAR2,
715  x_msg_data             OUT NOCOPY  VARCHAR2
716 ) IS
717    v_procedure_name VARCHAR2(50) := 'Update_Property_Custom_API';
718    l_object_name VARCHAR2(480); --Enhancement 4106617
719 BEGIN
720    FND_MSG_PUB.initialize;
721 
722    -- since page designer passes in fnd_form_function name instead of object name
723    -- we need take care of _OA problem by calling get_page_name_by_func, if object type is PAGE
724    IF (p_object_type = 'PAGE') THEN
725      l_object_name := get_page_name_by_func(p_object_name);
726     ELSE
727       l_object_name := p_object_name;
728    END IF;
729 
730    x_return_status := FND_API.G_RET_STS_SUCCESS;
731 
732    execute immediate 'update bis_obj_properties
733      set custom_api = :1,
734          last_updated_by = :2,
735  	 last_update_login = :3,
736 	 last_update_date = :4
737      WHERE object_name = :5 AND object_type = :6'
738      using p_custom_api, g_curr_user_id, g_curr_login_id, Sysdate,
739      l_object_name, p_object_type;
740 
741    --IF (SQL%notfound) THEN
745    --  END IF;
742    --   x_return_status := FND_API.G_RET_STS_ERROR;
743    --  IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
744    --	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
746    --  x_msg_data := 'BIS_BIA_RSG_PROP_NOT_EXISTS';
747    --END IF;
748 
749 EXCEPTION
750    WHEN OTHERS THEN
751       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
752       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
753           FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
754       END IF;
755       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
756 END update_property_custom_api;
757 /**
758  * remove for bug#3748713
759  * the snapshot_log_sql should not be updated through any API other
760  * than BIS_BIA_RSG_CUSTOM_API_MGMNT package.
761 PROCEDURE Update_Property_Snapshotlog(
762  P_OBJECT_TYPE         in VARCHAR2,
763  P_OBJECT_NAME         in VARCHAR2,
764  P_SNAPSHOT_LOG        in VARCHAR2,
765  x_return_status       OUT NOCOPY  VARCHAR2,
766  x_msg_data            OUT NOCOPY  VARCHAR2
767 ) IS
768    v_procedure_name VARCHAR2(50) := 'Update_Property_Snapshotlog';
769    l_object_name VARCHAR2(80);
770 BEGIN
771    FND_MSG_PUB.initialize;
772 
773    -- since page designer passes in fnd_form_function name instead of object name
774    -- we need take care of _OA problem by calling get_page_name_by_func, if object type is PAGE
775    IF (p_object_type = 'PAGE') THEN
776      l_object_name := get_page_name_by_func(p_object_name);
777     ELSE
778       l_object_name := p_object_name;
779    END IF;
780 
781    x_return_status := FND_API.G_RET_STS_SUCCESS;
782 
783    execute immediate 'update bis_obj_properties
784      set SNAPSHOT_LOG_SQL = :1,
785          last_updated_by = :2,
786  	 last_update_login = :3,
787 	 last_update_date = :4
788      WHERE object_name = :5 AND object_type = :6'
789      using p_snapshot_log, g_curr_user_id, g_curr_login_id, Sysdate,
790      l_object_name, p_object_type;
791 
792    --IF (SQL%notfound) THEN
793    --    x_return_status := FND_API.G_RET_STS_ERROR;
794    --   IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
795    --	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
796    --  END IF;
797    --   x_msg_data := 'BIS_BIA_RSG_PROP_NOT_EXISTS';
798    --END IF;
799 
800 EXCEPTION
801    WHEN OTHERS THEN
802       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
803       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
804           FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
805       END IF;
806       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
807 END update_property_snapshotlog;
808 */
809 
810 /**
811  * remove for bug#3748713
812  * the snapshot_log_sql should not be exposed through any API,
813  * as it is currently centrally managed by
814  * BIS_BIA_RSG_CUSTOM_API_MGMNT package.
815 FUNCTION Get_Property_Snapshotlog(
816  P_OBJECT_TYPE         in VARCHAR2,
817  P_OBJECT_NAME         in VARCHAR2,
818  x_return_status       OUT NOCOPY  VARCHAR2,
819  x_msg_data            OUT NOCOPY  VARCHAR2
820 ) RETURN VARCHAR2 IS
821    v_procedure_name VARCHAR2(50) := 'Get_Property_Snapshotlog';
822    v_snapshot_log VARCHAR2(4000);
823    l_object_name VARCHAR2(80);
824 BEGIN
825    FND_MSG_PUB.initialize;
826 
827    -- since page designer passes in fnd_form_function name instead of object name
828    -- we need take care of _OA problem by calling get_page_name_by_func, if object type is PAGE
829    IF (p_object_type = 'PAGE') THEN
830      l_object_name := get_page_name_by_func(p_object_name);
831     ELSE
832       l_object_name := p_object_name;
833    END IF;
834 
835    x_return_status := FND_API.G_RET_STS_SUCCESS;
836 
837    execute immediate 'select snapshot_log_sql
838      from bis_obj_properties
839      WHERE object_name = :1 AND object_type = :2'
840      INTO v_snapshot_log
841      using l_object_name, p_object_type;
842 
843    RETURN v_snapshot_log;
844 
845 EXCEPTION
846    WHEN no_data_found THEN
847       x_return_status := FND_API.G_RET_STS_ERROR;
848       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
849 	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
850       END IF;
851       x_msg_data := 'BIS_BIA_RSG_PROP_NOT_EXISTS';
852       RETURN NULL;
853    WHEN OTHERS THEN
854       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
855       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
856           FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
857       END IF;
858       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
859       RETURN NULL;
860 END get_property_snapshotlog;
861 */
862 
863 PROCEDURE prog_validation(
864  P_CONC_PROG_NAME	in VARCHAR2,
865  P_APPL_SHORT_NAME	in VARCHAR2,
866  x_return_status        OUT NOCOPY  VARCHAR2
867 ) IS
868    v_dummy VARCHAR2(5);
872    IF (P_CONC_PROG_NAME IS NULL OR p_appl_short_name IS NULL) THEN
869 BEGIN
870    x_return_status := 'Y';
871 
873      X_RETURN_STATUS := 'N';
874      RETURN;
875    END IF;
876 
877    execute immediate ' SELECT 1
878      FROM fnd_concurrent_programs prog, fnd_application appl
879      WHERE prog.CONCURRENT_PROGRAM_NAME = :1
880      AND prog.application_id = appl.application_id
881      AND appl.application_short_name = :2'
882      INTO v_dummy
883      using p_conc_prog_name, p_appl_short_name;
884 EXCEPTION
885    WHEN OTHERS THEN
886       x_return_status := 'N';
887 END prog_validation;
888 
889 PROCEDURE loading_mode_validation(
890  p_loading_mode  VARCHAR2,
891  x_return_status OUT nocopy VARCHAR2
892 ) IS
893    v_dummy VARCHAR2(5);
894 BEGIN
895    x_return_status := 'Y';
896 
897    IF (P_LOADING_MODE IS NULL) THEN
898      X_RETURN_STATUS := 'N';
899      RETURN;
900    END IF;
901 
902    execute immediate 'select 1
903      from fnd_common_lookups
904      where lookup_type = :1 AND lookup_code = :2'
905      INTO v_dummy
906      using 'BIS_REFRESH_MODE', p_loading_mode;
907 EXCEPTION
908    WHEN OTHERS THEN
909       x_return_status := 'N';
910 END loading_mode_validation;
911 
912 PROCEDURE Create_Linkage (
913  P_OBJECT_TYPE		in VARCHAR2,
914  P_OBJECT_OWNER		in VARCHAR2,
915  P_OBJECT_NAME		in VARCHAR2,
916  P_ENABLED_FLAG		in VARCHAR2,
917  P_CONC_PROG_NAME	in VARCHAR2,
918  P_APPL_SHORT_NAME	in VARCHAR2,
919  P_REFRESH_MODE	        in VARCHAR2,
920  x_return_status        OUT NOCOPY  VARCHAR2,
921  x_msg_data             OUT NOCOPY  VARCHAR2
922 ) IS
923    v_procedure_name VARCHAR2(50) := 'Create_Linkage';
924    v_appl_id   NUMBER;
925 BEGIN
926    FND_MSG_PUB.initialize;
927 
928    -- page is not allowed to have refresh program associated
929    IF (p_object_type = 'PAGE') THEN
930       x_msg_data := 'BIS_BIA_RSG_NO_PAGE_LINKAGE';
931       x_return_status := fnd_api.g_ret_sts_error;
932       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
933 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_NO_PAGE_LINKAGE');
934       END IF;
935       RETURN;
936    END IF;
937 
938    --dbms_output.put_line('1');
939 
940    -- validate (object_type, object_name)
941    object_name_validation(p_object_type, p_object_name, x_return_status);
942    IF (x_return_status = 'N') THEN
943       x_msg_data := 'BIS_BIA_RSG_INVALID_OBJ';
944       x_return_status := fnd_api.g_ret_sts_error;
945       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
946 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INVALID_OBJ');
947       END IF;
948       RETURN;
949    END IF;
950 
951    --dbms_output.put_line('2');
952 
953    -- validate object_owner
954    object_owner_validation(p_object_owner, x_return_status);
955    IF (x_return_status = 'N') THEN
956       x_msg_data := 'BIS_BIA_RSG_INVALID_OBJ_OWNER';
957       x_return_status := fnd_api.g_ret_sts_error;
958       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
959 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INVALID_OBJ_OWNER');
960       END IF;
961       RETURN;
962    END IF;
963 
964    --dbms_output.put_line('3');
965 
966    -- validate concurrent program
967    prog_validation(P_CONC_PROG_NAME, P_APPL_SHORT_NAME, x_return_status);
968    IF (x_return_status = 'N') THEN
969       x_msg_data := 'BIS_BIA_RSG_INVALID_CONC_PROG';
970       x_return_status := fnd_api.g_ret_sts_error;
971       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
972 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INVALID_CONC_PROG');
973       END IF;
974       RETURN;
975    END IF;
976 
977    --dbms_output.put_line('4');
978 
979    -- validate enabled flag
980    IF (p_enabled_flag IS NOT NULL AND p_enabled_flag <> 'Y' AND p_enabled_flag <> 'N') THEN
981       x_return_status := fnd_api.g_ret_sts_error;
982       x_msg_data := 'BIS_BIA_RSG_INV_ENABLED_FLAG';
983       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
984 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INV_ENABLED_FLAG');
985       END IF;
986       RETURN;
987    END IF;
988 
989    --dbms_output.put_line('5');
990 
991    -- validate loading mode
992    loading_mode_validation(p_refresh_mode, x_return_status);
993    IF (x_return_status = 'N') THEN
994       x_msg_data := 'BIS_BIA_RSG_INV_LOADING_MODE';
995       x_return_status := fnd_api.g_ret_sts_error;
996       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
997 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INV_LOADING_MODE');
998       END IF;
999       RETURN;
1000    END IF;
1001 
1002    --dbms_output.put_line('6');
1003 
1004    x_return_status := FND_API.G_RET_STS_SUCCESS;
1005 
1006    execute immediate 'select application_id from fnd_application
1007      WHERE application_short_name = :1'
1008      INTO v_appl_id
1009      using p_appl_short_name;
1010 
1011    --dbms_output.put_line('7');
1015      CONC_PROGRAM_NAME, CONC_APP_ID, CONC_APP_SHORT_NAME,
1012 
1013    execute immediate 'insert into bis_obj_prog_linkages (
1014      OBJECT_TYPE, OBJECT_OWNER, OBJECT_NAME,
1016      ENABLED_FLAG, REFRESH_MODE,
1017      CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
1018      LAST_UPDATE_LOGIN, LAST_UPDATE_DATE)
1019      values(:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13)'
1020      using P_OBJECT_TYPE, P_OBJECT_OWNER, P_OBJECT_NAME,
1021      P_CONC_PROG_NAME, V_APPL_ID, P_APPL_SHORT_NAME,
1022      P_ENABLED_FLAG, P_REFRESH_MODE,
1023      g_curr_user_id, sysdate, g_curr_user_id,
1024      g_curr_login_id, sysdate;
1025 
1026    --dbms_output.put_line('8');
1027 
1028    --create corresponding depend object property if it doesn't exist in RSG previously
1029    -- note that x_return_status and x_msg_data are set appropriately in create_property
1030    create_property(p_object_type, p_object_owner,
1031 		   p_object_name, x_return_status, x_msg_data);
1032    IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1033       RETURN;
1034    END IF;
1035 
1036 EXCEPTION
1037    WHEN dup_val_on_index THEN -- unique constraint violation
1038       x_return_status := FND_API.G_RET_STS_ERROR;
1039       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1040           FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
1041       END IF;
1042       x_msg_data := 'BIS_BIA_RSG_DUP_LINKAGE_REC';
1043    WHEN OTHERS THEN
1044       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1045       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1046           FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
1047       END IF;
1048       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
1049 END create_linkage;
1050 
1051 PROCEDURE Update_Linkage (
1052  P_OBJECT_TYPE		in VARCHAR2,
1053  P_OBJECT_NAME		in VARCHAR2,
1054  P_ENABLED_FLAG		in VARCHAR2,
1055  P_CONC_PROG_NAME	in VARCHAR2,
1056  P_APPL_SHORT_NAME	in VARCHAR2,
1057  p_refresh_mode         IN VARCHAR2,
1058  x_return_status        OUT NOCOPY  VARCHAR2,
1059  x_msg_data             OUT NOCOPY  VARCHAR2
1060 ) IS
1061    v_procedure_name VARCHAR2(50) := 'Update_Linkage';
1062 BEGIN
1063    FND_MSG_PUB.initialize;
1064 
1065    -- validate enabled_flag
1066    IF (p_enabled_flag IS NOT NULL AND p_enabled_flag <> 'Y'
1067        AND p_enabled_flag <> 'N') THEN
1068       x_return_status := fnd_api.g_ret_sts_error;
1069       x_msg_data := 'BIS_BIA_RSG_INV_ENABLED_FLAG';
1070       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
1071 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INV_ENABLED_FLAG');
1072       END IF;
1073       RETURN;
1074    END IF;
1075 
1076    --dbms_output.put_line('1');
1077 
1078    --validate refresh mode
1079    loading_mode_validation(p_refresh_mode, x_return_status);
1080    IF (x_return_status = 'N') THEN
1081       x_msg_data := 'BIS_BIA_RSG_INV_LOADING_MODE';
1082       x_return_status := fnd_api.g_ret_sts_error;
1083       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
1084 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INV_LOADING_MODE');
1085       END IF;
1086       RETURN;
1087    END IF;
1088 
1089    --dbms_output.put_line('2');
1090 
1091    x_return_status := FND_API.G_RET_STS_SUCCESS;
1092 
1093    execute immediate 'update bis_obj_prog_linkages
1094      set enabled_flag = :1,
1095          refresh_mode = :2,
1096          last_updated_by = :3,
1097  	 last_update_login = :4,
1098 	 last_update_date = :5
1099      WHERE object_name = :6 AND object_type = :7
1100      AND CONC_PROGRAM_NAME = :8 AND CONC_APP_SHORT_NAME = :9'
1101      using p_enabled_flag, p_refresh_mode, g_curr_user_id, g_curr_login_id, Sysdate,
1102      p_object_name, p_object_type, p_conc_prog_name, p_appl_short_name;
1103 
1104    --dbms_output.put_line('3');
1105 
1106    -- IF (SQL%notfound) THEN
1107    --   x_return_status := FND_API.G_RET_STS_ERROR;
1108    --   IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1109    --	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
1110    --  END IF;
1111    --   x_msg_data := 'BIS_BIA_RSG_LINKAGE_NOT_EXISTS';
1112    --END IF;
1113 
1114    --dbms_output.put_line('4');
1115 
1116 EXCEPTION
1117    WHEN OTHERS THEN
1118       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1119       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1120           FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
1121       END IF;
1122       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
1123 END update_linkage;
1124 
1125 
1126 PROCEDURE Update_Linkage_Enabled_Flag (
1127  P_OBJECT_TYPE		in VARCHAR2,
1128  P_OBJECT_NAME		in VARCHAR2,
1129  P_ENABLED_FLAG		in VARCHAR2,
1130  P_CONC_PROG_NAME	in VARCHAR2,
1131  P_APPL_SHORT_NAME	in VARCHAR2,
1132  x_return_status        OUT NOCOPY  VARCHAR2,
1133  x_msg_data             OUT NOCOPY  VARCHAR2
1134 ) IS
1135    v_procedure_name VARCHAR2(50) := 'Update_Linkage_Enabled_Flag';
1136 BEGIN
1137    FND_MSG_PUB.initialize;
1138 
1139    -- validate enabled_flag
1140    IF (p_enabled_flag IS NOT NULL AND p_enabled_flag <> 'Y'
1141        AND p_enabled_flag <> 'N') THEN
1142       x_return_status := fnd_api.g_ret_sts_error;
1143       x_msg_data := 'BIS_BIA_RSG_INV_ENABLED_FLAG';
1144       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
1148    END IF;
1145 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INV_ENABLED_FLAG');
1146       END IF;
1147       RETURN;
1149 
1150    x_return_status := FND_API.G_RET_STS_SUCCESS;
1151 
1152    execute immediate 'update bis_obj_prog_linkages
1153      set enabled_flag = :1,
1154          last_updated_by = :2,
1155  	 last_update_login = :3,
1156 	 last_update_date = :4
1157      WHERE object_name = :5 AND object_type = :6
1158      AND CONC_PROGRAM_NAME = :7 AND CONC_APP_SHORT_NAME = :8'
1159      using p_enabled_flag, g_curr_user_id, g_curr_login_id, Sysdate,
1160      p_object_name, p_object_type, p_conc_prog_name, p_appl_short_name;
1161 
1162    --IF (SQL%notfound) THEN
1163    --   x_return_status := FND_API.G_RET_STS_ERROR;
1164    --   IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1165    --	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
1166    --   END IF;
1167    --   x_msg_data := 'BIS_BIA_RSG_LINKAGE_NOT_EXISTS';
1168    --END IF;
1169 
1170 EXCEPTION
1171    WHEN OTHERS THEN
1172       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1173       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1174           FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
1175       END IF;
1176       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
1177 END Update_Linkage_Enabled_Flag;
1178 
1179 
1180 PROCEDURE Update_Linkage_Refresh_Mode (
1181  P_OBJECT_TYPE		in VARCHAR2,
1182  P_OBJECT_NAME		in VARCHAR2,
1183  P_CONC_PROG_NAME	in VARCHAR2,
1184  P_APPL_SHORT_NAME	in VARCHAR2,
1185  p_refresh_mode         IN VARCHAR2,
1186  x_return_status        OUT NOCOPY  VARCHAR2,
1187  x_msg_data             OUT NOCOPY  VARCHAR2
1188 ) IS
1189    v_procedure_name VARCHAR2(50) := 'Update_Linkage_Refresh_Mode';
1190 BEGIN
1191    FND_MSG_PUB.initialize;
1192 
1193    --validate refresh mode
1194    loading_mode_validation(p_refresh_mode, x_return_status);
1195    IF (x_return_status = 'N') THEN
1196       x_msg_data := 'BIS_BIA_RSG_INV_LOADING_MODE';
1197       x_return_status := fnd_api.g_ret_sts_error;
1198       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
1199 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INV_LOADING_MODE');
1200       END IF;
1201       RETURN;
1202    END IF;
1203 
1204    x_return_status := FND_API.G_RET_STS_SUCCESS;
1205 
1206    execute immediate 'update bis_obj_prog_linkages
1207      set refresh_mode = :1,
1208          last_updated_by = :2,
1209  	 last_update_login = :3,
1210 	 last_update_date = :4
1211      WHERE object_name = :5 AND object_type = :6
1212      AND CONC_PROGRAM_NAME = :7 AND CONC_APP_SHORT_NAME = :8'
1213      using p_refresh_mode, g_curr_user_id, g_curr_login_id, Sysdate,
1214      p_object_name, p_object_type, p_conc_prog_name, p_appl_short_name;
1215 
1216    --IF (SQL%notfound) THEN
1217    --   x_return_status := FND_API.G_RET_STS_ERROR;
1218    --   IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1219    --	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
1220    --   END IF;
1221    --   x_msg_data := 'BIS_BIA_RSG_LINKAGE_NOT_EXISTS';
1222    --END IF;
1223 
1224 EXCEPTION
1225    WHEN OTHERS THEN
1226       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1227       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1228           FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
1229       END IF;
1230       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
1231 END update_linkage_refresh_mode;
1232 
1233 PROCEDURE Delete_Linkage (
1234  P_OBJECT_TYPE		in VARCHAR2,
1235  P_OBJECT_NAME		in VARCHAR2,
1239  x_msg_data             OUT NOCOPY  VARCHAR2
1236  P_CONC_PROG_NAME	in VARCHAR2,
1237  P_APPL_SHORT_NAME	in VARCHAR2,
1238  x_return_status        OUT NOCOPY  VARCHAR2,
1240 ) IS
1241    v_procedure_name  VARCHAR2(50) := 'Delete_Linkage';
1242 BEGIN
1243    FND_MSG_PUB.initialize;
1244    x_return_status := FND_API.G_RET_STS_SUCCESS;
1245 
1246    execute immediate 'delete from bis_obj_prog_linkages
1247      WHERE object_name = :1 AND object_type = :2
1248      AND conc_program_name = :3 AND conc_app_short_name = :4'
1249      using p_object_name,  p_object_type,
1250      p_conc_prog_name, p_appl_short_name;
1251 
1252    --IF (SQL%notfound) THEN
1253    --   x_return_status := FND_API.G_RET_STS_ERROR;
1254    --   IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1255    --	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
1256    --  END IF;
1257    --   x_msg_data := 'BIS_BIA_RSG_LINKAGE_NOT_EXISTS';
1258    --END IF;
1259 
1260 EXCEPTION
1261    WHEN OTHERS THEN
1262       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1263       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1264 	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
1265       END IF;
1266       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
1267 END Delete_Linkage;
1268 
1269 --Added for bug 4606455
1270 -- is to delete linkage based on rowid instead of object name
1271 -- this will in turn call the above function
1272 PROCEDURE Delete_Linkage (
1273  P_ROWID		in ROWID,
1274  x_return_status        OUT NOCOPY  VARCHAR2,
1275  x_msg_data             OUT NOCOPY  VARCHAR2
1276 ) IS
1277    l_object_type             VARCHAR2(30);
1278    l_object_name             VARCHAR2(480);
1279    l_conc_prog_name          VARCHAR2(30);
1280    l_appl_short_name	     VARCHAR2(50);
1281    cursor get_names(rid varchar2) is
1282    select object_name,object_type,conc_program_name,conc_app_short_name
1283    from bis_obj_prog_linkages where rowid = rid;
1284 BEGIN
1285    open get_names(P_ROWID);
1286    fetch get_names into l_object_name,l_object_type,l_conc_prog_name,l_appl_short_name;
1287    if get_names%NOTFOUND then
1288     close get_names;
1289     return;
1290    end if;
1291    close get_names;
1292 
1293    delete_linkage(l_object_type,l_object_name,l_conc_prog_name,l_appl_short_name,
1294                      x_return_status,x_msg_data);
1295 EXCEPTION
1296    WHEN OTHERS THEN
1297      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1298      x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
1299 END Delete_Linkage;
1300 
1301 PROCEDURE Delete_Obj_Linkages (
1302  P_OBJECT_TYPE		in VARCHAR2,
1303  P_OBJECT_NAME		in VARCHAR2,
1304  x_return_status        OUT NOCOPY  VARCHAR2,
1305  x_msg_data             OUT NOCOPY  VARCHAR2
1306 ) IS
1307    v_procedure_name VARCHAR2(50) := 'Delete_Obj_Linkages';
1308 BEGIN
1309    FND_MSG_PUB.initialize;
1310    x_return_status := FND_API.G_RET_STS_SUCCESS;
1311 
1312    execute immediate 'delete from bis_obj_prog_linkages
1313      WHERE object_name = :1 AND object_type = :2'
1314      using p_object_name,  p_object_type;
1315 
1316    --IF (SQL%notfound) THEN
1317    --   x_return_status := FND_API.G_RET_STS_ERROR;
1318    --   IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1319    --	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
1320    --   END IF;
1321    --   x_msg_data := 'BIS_BIA_RSG_NO_OBJ_LINKAGES';
1322    --END IF;
1323 
1324 EXCEPTION
1325    WHEN OTHERS THEN
1326       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1327       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1328 	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
1329       END IF;
1330       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
1331 END Delete_Obj_Linkages;
1332 
1333 
1334 --begin: added for enhancement bug 3686273
1335 -- In order to fix bug 3867557, this function will get all the ancestor objects for the given
1336 -- dependent object, considering both enabled and disabled dependencies
1337 FUNCTION GetParentObjects(P_DEP_OBJ_NAME 		IN	VARCHAR2,
1338 			  P_DEP_OBJ_TYPE		IN	VARCHAR2,
1339 			  P_OBJ_TYPE			IN	VARCHAR2,
1340 			  X_RETURN_STATUS		OUT	NOCOPY	VARCHAR2,
1341 			  X_MSG_DATA			OUT	NOCOPY	VARCHAR2
1342 			  ) RETURN t_bia_rsg_obj_table IS
1343    v_procedure_name VARCHAR2(50) := 'GetParentObjects';
1344 
1345    l_obj_rec  t_bia_rsg_obj_rec;
1346    x_parent_obj_table t_bia_rsg_obj_table;
1347    l_count INTEGER;
1348    l_index INTEGER;
1349 
1350    CURSOR c_parent_objs (p_dep_obj_name VARCHAR2, p_dep_obj_type VARCHAR2, p_obj_type VARCHAR2) IS
1351       SELECT object_name, user_object_name, object_owner
1352 	FROM  (SELECT object_name, user_object_name, object_type, object_owner, depend_object_name, depend_object_type
1353 	       FROM bis_obj_dependency_v
1354 	       -- get rid of the filter for bug 3867557, i.e., conside both enabled and disabled dependencies
1355 	       --WHERE enabled_flag = 'Y'
1356 	       )
1357 	WHERE object_type = p_obj_type
1358 	START WITH depend_object_name = p_dep_obj_name AND depend_object_type = p_dep_obj_type
1359 	CONNECT BY PRIOR object_name = depend_object_name AND PRIOR object_type = depend_object_type;
1360 BEGIN
1361    FND_MSG_PUB.initialize;
1362    x_return_status := FND_API.G_RET_STS_SUCCESS;
1363 
1364    IF (p_dep_obj_name IS NULL OR p_dep_obj_name = '') THEN
1365       x_msg_data := 'BIS_BIA_RSG_INV_DEP_OBJ_NAME';
1366       x_return_status := fnd_api.g_ret_sts_error;
1367       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
1368 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INV_DEP_OBJ_NAME');
1369       END IF;
1370       RETURN x_parent_obj_table;
1371    END IF;
1372 
1373    IF (p_dep_obj_type IS NULL OR
1374        p_dep_obj_type NOT IN ('TABLE','VIEW', 'MV', 'PORTLET', 'PAGE', 'REPORT')) THEN
1375       x_msg_data := 'BIS_BIA_RSG_INV_DEP_OBJ_TYPE';
1376       x_return_status := fnd_api.g_ret_sts_error;
1377       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
1378 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INV_DEP_OBJ_TYPE');
1379       END IF;
1380       RETURN x_parent_obj_table;
1381    END IF;
1382 
1383    IF (p_obj_type IS NULL OR
1384        p_obj_type NOT IN ('TABLE','VIEW', 'MV', 'PORTLET', 'PAGE', 'REPORT')) THEN
1385       x_msg_data := 'BIS_BIA_RSG_INV_OBJ_TYPE';
1386       x_return_status := fnd_api.g_ret_sts_error;
1387       IF (fnd_msg_pub.check_msg_level(fnd_msg_pub.G_MSG_LVL_ERROR)) THEN
1388 	 fnd_msg_pub.add_exc_msg(g_pkg_name, v_procedure_name, 'BIS_BIA_RSG_INV_OBJ_TYPE');
1389       END IF;
1390       RETURN x_parent_obj_table;
1391    END IF;
1392 
1393    l_count := 0;
1394 
1395    OPEN c_parent_objs (p_dep_obj_name, p_dep_obj_type, p_obj_type);
1396    LOOP
1397       FETCH c_parent_objs INTO l_obj_rec;
1398       EXIT WHEN c_parent_objs%notfound;
1399       x_parent_obj_table(l_count) := l_obj_rec;
1400       l_count := l_count + 1;
1401    END LOOP;
1402 
1403    RETURN x_parent_obj_table;
1404 
1405 EXCEPTION
1406    WHEN OTHERS THEN
1407       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1408       IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1409 	 FND_MSG_PUB.Add_Exc_Msg(g_pkg_name,v_procedure_name, NULL);
1410       END IF;
1411       x_msg_data := 'BIS_BIA_RSG_UNEXP_ERROR';
1412       RETURN x_parent_obj_table;
1413 END;
1414 
1415 
1416 -- end: enhancement bug 3686273
1417 
1418 -- begin: enhancement bug 3999642
1419 
1420 procedure enable_index_mgmt(p_mv_name in varchar2, p_mv_schema in varchar2)
1421 is
1422   begin
1423   BIS_BIA_RSG_INDEX_MGMT.enable_index_mgmt(p_mv_name, p_mv_schema);
1424   end;
1425 
1426 
1427 procedure disable_index_mgmt(p_mv_name in varchar2, p_mv_schema in varchar2)
1428 is
1429   begin
1430   BIS_BIA_RSG_INDEX_MGMT.disable_index_mgmt(p_mv_name, p_mv_schema);
1431   end;
1432 
1433 -- end: enhancement bug 3999642
1434 
1435 END bis_rsg_pub_api_pkg;