DBA Data[Home] [Help]

PACKAGE BODY: APPS.AS_GAR

Source


1 PACKAGE BODY AS_GAR AS
2 /* $Header: asxgarpb.pls 120.2 2005/08/22 01:42 subabu noship $ */
3 ---------------------------------------------------------------------------
4 --    Start of Comments
5 ---------------------------------------------------------------------------
6 --    PACKAGE NAME:   AS_GAR
7 --    ---------------------------------------------------------------------
8 --    NOTES
9 --    -----
10 --    1: This package contains all the common procedures and functions
11 --       called from within the individual entity packages.
12 ---------------------------------------------------------------------------
13 /*-------------------------------------------------------------------------+
14  |                             PRIVATE CONSTANTS
15  +-------------------------------------------------------------------------*/
16  G_CURSOR_LIMIT    CONSTANT NUMBER := 10000;
17  G_BUSINESS_EVENT  CONSTANT VARCHAR2(60) := 'oracle.apps.as.tap.batch_mode';
18 /*-------------------------------------------------------------------------+
19  |                             PRIVATE DATATYPES
20  +-------------------------------------------------------------------------*/
21 /*-------------------------------------------------------------------------*
22  |                             PRIVATE VARIABLES
23  *-------------------------------------------------------------------------*/
24 /*-------------------------------------------------------------------------*
25  |                             PRIVATE ROUTINES SPECIFICATION
26  *-------------------------------------------------------------------------*/
27 /*------------------------------------------------------------------------*
28  |                              PUBLIC ROUTINES
29  *------------------------------------------------------------------------*/
30 
31 /************* Start Init ***********************************************/
32 
33 PROCEDURE Init(
34     p_run_mode        IN  VARCHAR2,
35     p_worker_id       IN  VARCHAR2,
36     px_terr_globals IN OUT NOCOPY AS_GAR.TERR_GLOBALS)
37 IS
38     l_ata_request_id_of_failed_gar number := -1;
39     l_temp varchar(300) ;
40 
41 BEGIN
42     AS_GAR.LOG('*** (GAR) asxgarpb.pls::AS_GAR::Init() ***');
43 
44 -- Set the Global variables
45 
46     px_terr_globals.run_mode := p_run_mode;
47     px_terr_globals.worker_id :=p_worker_id;
48     px_terr_globals.bulk_size := nvl(to_number(fnd_profile.value('AS_BULK_COMMIT_SIZE')),10000);
49     px_terr_globals.cursor_limit := nvl(to_number(fnd_profile.value('AS_TERR_RECORDS_TO_OPEN')) ,10000);
50     px_terr_globals.user_id := to_number(fnd_profile.value('USER_ID'));
51     px_terr_globals.prog_appl_id := FND_GLOBAL.PROG_APPL_ID;
52     px_terr_globals.prog_id := to_number(fnd_profile.value('CONC_PROGRAM_ID'));
53     px_terr_globals.last_update_login := to_number(fnd_profile.value('CONC_LOGIN_ID'));
54     px_terr_globals.request_id := to_number(fnd_profile.value('CONC_REQUEST_ID'));
55 
56     -- If request_id = 0, select directly from sequence
57     IF px_terr_globals.request_id = 0 OR px_terr_globals.request_id IS NULL
58     THEN
59         -- Get concurrent sequence
60         AS_GAR.LOG('request_id is 0, get from sequence');
61         SELECT fnd_concurrent_requests_s.nextval into px_terr_globals.request_id from dual;
62     END IF;
63 
64     COMMIT;
65 
66 EXCEPTION
67 WHEN others THEN
68       AS_GAR.LOG('Exception: others in AS_GAR_PUB::Init');
69       AS_GAR.LOG('SQLCODE ' || to_char(SQLCODE) ||
70                            ' SQLERRM ' || SQLERRM);
71       RAISE;
72 END Init;
73 
74 /*************   End Init ***********************************************/
75 
76 /************* Start Exist Subscription *********************************/
77 
78 FUNCTION exist_subscription(p_event_name IN VARCHAR2) RETURN VARCHAR2
79 
80 IS
81 
82  CURSOR c1 IS
83  SELECT count(*)
84  FROM   wf_events eve,
85         wf_event_subscriptions sub
86  WHERE  eve.name = p_event_name
87  AND    eve.status = 'ENABLED'
88  AND    eve.guid = sub.event_filter_guid
89  AND    sub.status = 'ENABLED'
90  AND    sub.source_type = 'LOCAL';
91 
92 
93 l_count NUMBER;
94 l_yn  VARCHAR2(1);
95 
96 BEGIN
97 
98  open c1;
99 
100  fetch c1 into l_count;
101 
102  if l_count > 0 then
103  l_yn := 'Y';
104  end if;
105 
106  close c1;
107 
108  RETURN l_yn;
109 
110 END exist_subscription;
111 
112 /*************   End Exist Subscription *********************************/
113 
114 /************* Start Raise_BE *******************************************/
115 
116 PROCEDURE Raise_BE(p_terr_globals IN OUT NOCOPY AS_GAR.TERR_GLOBALS) IS
117 
118 l_mode                  VARCHAR2(7);
119 l_request_id            NUMBER;
120 l_ata_request_id        NUMBER;
121 l_worker_id             NUMBER;
122 l_transaction_type      VARCHAR2(30);
123 l_total_num_gar_workers NUMBER;
124 l_event_id              NUMBER;
125 x_errbuf                VARCHAR2(4000);
126 x_retcode               VARCHAR2(4000);
127 l_param_list            wf_parameter_list_t;
128 l_event_key             VARCHAR2(100);
129 l_msg                   VARCHAR2(4000);
130 
131 BEGIN
132 
133         l_mode := p_terr_globals.run_mode;
134         l_request_id := p_terr_globals.request_id;
135         l_worker_id := p_terr_globals.worker_id;
136 
137 
138 	SELECT count(*) into l_total_num_gar_workers
139 	FROM   fnd_concurrent_requests
140 	WHERE  parent_request_id = l_ata_request_id;
141 
142 	 WF_EVENT.AddParameterToList(
143                 p_name => 'RUN_MODE',
144                 p_value => l_mode,
145                 p_parameterlist => l_param_list);
146 
147         WF_EVENT.AddParameterToList(
148                 p_name => 'REQUEST_ID',
149                 p_value => l_request_id,
150                 p_parameterlist => l_param_list);
151 
152         WF_EVENT.AddParameterToList(
153                 p_name => 'WORKER_ID',
154                 p_value => l_worker_id,
155                 p_parameterlist => l_param_list);
156 
157 	     begin
158 
159                 SELECT AS_BUSINESS_EVENT_S.nextval INTO l_event_id FROM dual;
160 
161         	AS_GAR.LOG(' --- CALL WF_EVENT.RAISE.Start...');
162         	AS_GAR.LOG(' --- l_event_id = '||l_event_id);
163         	AS_GAR.LOG(' --- l_mode = '||l_mode);
164         	AS_GAR.LOG(' --- l_request_id = '||l_request_id);
165         	AS_GAR.LOG(' --- l_worker_id = '||l_worker_id);
166 
167 
168         	wf_event.raise (
169                 	p_event_name => G_BUSINESS_EVENT,
170                 	p_event_key => l_event_id,
171                 	p_parameters => l_param_list);
172 
173         	EXCEPTION
174 
175                 WHEN others THEN
176 
177                         x_errbuf := SQLERRM;
178                         x_retcode := SQLCODE;
179 
180         	AS_GAR.LOG(' --- x_errbuf = '||x_errbuf||' , x_retcode = '||x_retcode);
181 
182 		end;
183 
184 	l_param_list.DELETE;
185 	AS_GAR.LOG(' --- CALL WF_EVENT.RAISE.End...');
186 
187 
188 END Raise_BE;
189 
190 /*************   End Raise_BE *******************************************/
191 
192 
193 PROCEDURE LOG_EXCEPTION (msg IN VARCHAR2, errbuf IN VARCHAR2, retcode IN VARCHAR2) IS
194 BEGIN
195    --dbms_output.put_line(Message Exception : '|| msg||errbuf||retcode);
196    IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
197   	     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,'SALES_TAP', msg||errbuf||retcode);
198    END IF;
199 END;
200 
201 PROCEDURE LOG (msg IN VARCHAR2) IS
202 BEGIN
203    IF AS_GAR.G_DEBUG_FLAG = 'Y' THEN
204    -- dbms_output.put_line('msg '|| msg);
205      IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
206   	     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,'SALES_TAP', msg );
207      END IF;
208    END IF;
209 END;
210 
211 PROCEDURE SETTRACE IS
212 	l_str VARCHAR2(500);
213 BEGIN
214     l_str := 'ALTER SESSION SET EVENTS = ''10046 TRACE NAME CONTEXT FOREVER, LEVEL 8'' ';
215     EXECUTE IMMEDIATE l_str;
216 END;
217 
218 
219 PROCEDURE SET_AREA_SIZES
220 IS
221     st varchar2(500);
222     sort_size NUMBER := 100000000;
223     hash_size NUMBER := 100000000;
224     s number;
225 
226 BEGIN
227     -- Alter session to set sort area size and hash area size
228     sort_size := fnd_profile.value('AS_SORT_AREA_SIZE_FOR_TAP');
229     IF sort_size is not NULL and sort_size > 0 THEN
230         st := 'ALTER SESSION SET SORT_AREA_SIZE = ' || sort_size;
231         EXECUTE IMMEDIATE st;
232         select value into s from V$PARAMETER where name = 'sort_area_size';
233 	AS_GAR.LOG( AS_GAR.G_SETAREASIZE || AS_GAR.G_PROCESS ||' Sort Area Size' || s);
234     END IF;
235 
236     hash_size := fnd_profile.value('AS_HASH_AREA_SIZE_FOR_TAP');
237     IF hash_size is not NULL and hash_size > 0 THEN
238         st := 'ALTER SESSION SET HASH_AREA_SIZE = ' || hash_size;
239         EXECUTE IMMEDIATE st;
240         select value into s from V$PARAMETER where name = 'hash_area_size';
241 	AS_GAR.LOG( AS_GAR.G_SETAREASIZE || AS_GAR.G_PROCESS ||' Hash Area size' || s);
242     END IF;
243 END Set_Area_Sizes;
244 END AS_GAR;