DBA Data[Home] [Help]

PACKAGE BODY: APPS.XDO_CP_DATA_SECURITY_PKG

Source


1 PACKAGE BODY XDO_CP_DATA_SECURITY_PKG AS
2 ----$Header: XDODSCRB.pls 120.2 2007/10/23 00:57:25 bgkim noship $
3 --+===========================================================================+
4 --|                    Copyright (c) 2006 Oracle Corporation                  |
5 --|                      Redwood Shores, California, USA                      |
6 --|                            All rights reserved.                           |
7 --+===========================================================================+
8 --|                                                                           |
9 --|  FILENAME :                                                               |
10 --|      XDODSCRB.pls                                                         |
11 --|                                                                           |
12 --|  DESCRIPTION:                                                             |
13 --|      This package is used to get the Concurrent requests based on the     |
14 --|      data security                                                        |
15 --|                                                                           |
16 --|                                                                           |
17 --|  HISTORY:                                                                 |
18 --|      05/22/2006     hidekoji          Created                             |
19 --+===========================================================================+
20 
21 g_package_name          VARCHAR2(100):='oracle.apps.xdo.xdo_cp_data_security.';
22 g_success_status        VARCHAR2(1)  :='T';
23 g_result_yes            VARCHAR2(1)  :='Y';
24 g_result_no             VARCHAR2(1)  :='N';
25 
26 --==========================================================================
27 --  FUNCTION NAME:
28 --
29 --    get_concurrent_request_ids                 Public
30 --
31 --  DESCRIPTION:
32 --
33 --      This function gets the request IDs that can be viewed.
34 --      and stores them into global temporary table
35 --
36 --  PARAMETERS:
37 --      In:
38 --
39 --
40 --  DESIGN REFERENCES:
41 --
42 --
43 --  CHANGE HISTORY:
44 --	    05/22/2006     hidekoji             Created
45 --===========================================================================
46 FUNCTION get_concurrent_request_ids RETURN  VARCHAR2
47 IS
48   PRAGMA AUTONOMOUS_TRANSACTION;
49   l_procedure_name         VARCHAR2(100)   :='get_concurrent_request_ids';
50   l_exist_cur              VARCHAR2(32767);
51   l_predicate              VARCHAR2(32000);
52   l_return_status          VARCHAR2(1);
53   l_result                 VARCHAR2(1);
54   l_separator              VARCHAR2(10);
55 
56   TYPE t_num_tab           IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
57   l_request_id_tab         t_num_tab;
58 
59 BEGIN
60     --log for debug
61   IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL)  THEN
62       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT
63                     ,g_package_name||l_procedure_name||'.begin'
64                     ,'Enter procedure');
65   END IF;  --( l_proc_level >= l_dbg_level )
66 
67   -- Delete from Global Temporary table
68   delete xdo_concurrent_requests_gt;
69 
70 
71   -- Call fnd_data_security.get_security_predicate to get the where clause
72   FND_DATA_SECURITY.get_security_predicate(p_api_version   => 1.0
73                                           ,p_function      => 'FND_CP_REQ_VIEW'
74                                           ,p_object_name   => 'FND_CONCURRENT_REQUESTS'
75                                           ,x_predicate     => l_predicate
76                                           ,x_return_status => l_return_status);
77 
78   IF l_return_status = g_success_status THEN
79 
80      l_exist_cur  :=  'SELECT  request_id '||
81                       '  FROM  fnd_concurrent_requests '||
82                       ' WHERE  '|| l_predicate;
83 
84      EXECUTE immediate l_exist_cur BULK COLLECT INTO l_request_id_tab;
85 
86 
87      IF SQL%NOTFOUND THEN
88 
89             l_result := g_result_no;
90 
91      ELSE
92 
93           FOR i in l_request_id_tab.first..l_request_id_tab.last LOOP
94 
95               insert into xdo_concurrent_requests_gt(CONC_REQUEST_ID)
96               values (l_request_id_tab(i));
97 
98           END LOOP;
99           commit;
100 
101           l_result := g_result_yes;
102 
103      END IF;
104 
105 
106    ELSE -- If FND_DATA_SECURITY.get_security_predicate fails, then return ''
107 
108           l_result := g_result_no;
109 
110    END IF;
111 
112           return l_result;
113 
114 EXCEPTION
115 
116  WHEN OTHERS THEN
117 
118   IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL)  THEN
119       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT
120                     ,g_package_name||l_procedure_name||':'
121                     ,SQLERRM);
122   END IF;
123 
124   return g_result_no;
125 
126 END;
127 
128 END XDO_CP_DATA_SECURITY_PKG;