[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;