[Home] [Help]
PACKAGE BODY: APPS.IEX_ATA_PUB
Source
1 PACKAGE BODY IEX_ATA_PUB as
2 /* $Header: iextpinb.pls 120.16 2006/08/29 14:26:24 gnramasa noship $ */
3 PROCEDURE Set_Up(
4 px_acct_qual_tbl IN OUT NOCOPY QUAL_LIST_TBL_TYPE);
5
6 PROCEDURE Concurrent_Profile_Options;
7
8 PROCEDURE Prepare_Parallel_Processing(
9 P_Request_Id NUMBER,
10 P_Prev_Request_Id NUMBER,
11 P_Run_Mode VARCHAR2,
12 P_AccountCount NUMBER,
13 P_MinNumParallelProc NUMBER,
14 P_NumChildAccountWorker NUMBER,
15 X_ActualAccountWorkersUsed OUT NOCOPY NUMBER);
16
17
18 /*-------------------------------------------------------------------------*
19 |
20 | PUBLIC ROUTINES
21 |
22 *-------------------------------------------------------------------------*/
23
24
25 /*-------------------------------------------------------------------------*
26 | PRIVATE ROUTINE
27 | Assign_Territory_Accesses
28 |
29 | PURPOSE
30 |
31 |
32 *-------------------------------------------------------------------------*/
33
34 PROCEDURE Assign_Territory_Accesses(
35 ERRBUF OUT NOCOPY VARCHAR2,
36 RETCODE OUT NOCOPY VARCHAR2,
37 P_ORG_ID IN NUMBER
38 )
39 --Bug5043777 Removed the parameters which is no longer in use.
40 IS
41 p_debug_mode VARCHAR2(240);
42 p_trace_mode VARCHAR2(240);
43 p_prev_request_id NUMBER(24);
44 p_ext_param1 VARCHAR2(240);
45 p_ext_param2 VARCHAR2(240);
46 p_ext_param3 VARCHAR2(240);
47
48 p_trans_type_acc CONSTANT VARCHAR2(30) := 'ACCOUNT';
49
50 -- account qualifiers array of structure
51 l_acct_qual_tbl QUAL_LIST_TBL_TYPE;
52 l_req_id NUMBER;
53 l_msg VARCHAR2(2000);
54 l_number NUMBER := 1;
55 l_status BOOLEAN;
56 p_ActualAccountWorkersUsed NUMBER :=0;
57 l_call_pre_uhk BOOLEAN;
58 l_call_post_uhk BOOLEAN;
59 l_msg_count NUMBER;
60 l_msg_data VARCHAR2(2000);
61 l_acc_count NUMBER := 0;
62 l_return_status VARCHAR2(30);
63 lX_Msg_Count NUMBER;
64 lX_Msg_Data VARCHAR2(32767);
65 lx_retcode VARCHAR2(100);
66 lx_errbuf VARCHAR2(32767);
67 l_temp VARCHAR2(3000);
68
69 --l_terr_globals AS_TERR_WINNERS_PUB.TERR_GLOBALS;
70 l_errbuf VARCHAR2(4000);
71 l_retcode VARCHAR2(255);
72 l_target_type VARCHAR2(50);
73
74 l_percent_analysed NUMBER(15);
75
76 l_debug NUMBER(15);
77 l_AssignLevel VARCHAR2(20); -- Added by gnramasa on 29/08/2006 for bug # 5487449
78 BEGIN
79 --Bug5043777 Removed the parameters which is no longer in use. Fix By LKKUMAR. Start.
80 MO_GLOBAL.INIT('IEX');
81
82 IF (P_ORG_ID) IS NULL THEN
83 MO_GLOBAL.SET_POLICY_CONTEXT('M',NULL);
84 ELSE
85 MO_GLOBAL.SET_POLICY_CONTEXT('S',P_ORG_ID);
86 END IF;
87
88 l_debug := NVL(FND_PROFILE.value('IEX_DEBUG_LEVEL'),20);
89 FND_FILE.put_line(fnd_file.log,'Value of Profile IEX: Debug Level is : ' || l_debug);
90 FND_FILE.put_line(fnd_file.log,'Operating Unit is : ' || MO_GLOBAL.GET_CURRENT_ORG_ID );
91 --Start changes by gnramasa on 29/08/2006 for bug # 5487449
92 l_Assignlevel:= NVL(FND_PROFILE.VALUE('IEX_ACCESS_LEVEL'),'PARTY');
93 FND_FILE.PUT_LINE(FND_FILE.LOG,'Territory Assignment Level, IEX: Territory Access Level (IEX_ACCESS_LEVEL) := ' ||l_Assignlevel);
94
95 IF (l_debug <10) THEN
96 P_debug_mode := 'Y';
97 FND_FILE.PUT_LINE(FND_FILE.LOG,'Debug trace is Enabled , IEX: Debug Level (IEX_DEBUG_LEVEL) :' || l_debug);
98 ELSE
99 P_debug_mode := 'N';
100 FND_FILE.PUT_LINE(FND_FILE.LOG,'Debug trace is not Enabled , IEX: Debug Level (IEX_DEBUG_LEVEL) < 10, Current value :' || l_debug);
101 END IF;
102
103 IF (l_debug =1) THEN
104 P_trace_mode := 'Y';
105 ELSE
106 P_trace_mode := 'N';
107 END IF;
108
109 G_debug_flag := P_debug_mode;
110 G_trace_mode := P_trace_mode;
111
112 IF p_trace_mode = 'Y' THEN
113 l_temp := 'alter session set events = ''10046 trace name context forever, level 8'' ';
114 EXECUTE IMMEDIATE l_temp;
115 FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Trace is Enabled , IEX: Debug Level (IEX_DEBUG_LEVEL) = 1');
116 ELSE
117 FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Trace is not Enabled , IEX: Debug Level (IEX_DEBUG_LEVEL) <> 1');
118 END IF;
119 --End changes by gnramasa on 29/08/2006 for bug # 5487449
120 --Bug5043777 Removed the parameters which is no longer in use. Fix By LKKUMAR. End.
121
122 iex_ata_pub.g_debug_flag := p_debug_mode;
123
124 IEX_DEBUG('Program iextpinb.pls : *** IEXTATA starts ***');
125
126 l_call_pre_uhk := JTF_USR_HKS.Ok_to_execute('IEX_ATA_PUB',
127 'Assign_Territory_Accesses',
128 'B','C');
129 IF l_call_pre_uhk THEN
130 IEX_DEBUG('Call pre user hook is true');
131 AS_ATA_UHK.ATA_Pre (
132 p_api_version_number => 2.0,
133 p_init_msg_list => FND_API.G_FALSE,
134 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
135 p_commit => FND_API.G_FALSE,
136 p_param1 => p_ext_param1,
137 p_param2 => p_ext_param2,
138 p_param3 => p_ext_param3,
139 x_return_status => l_return_status,
140 x_msg_count => l_msg_count,
141 x_msg_data => l_msg_data);
142 END IF;
143
144 -- call SetUp() to verify parameters and set global variables and arrays
145 Set_Up(l_acct_qual_tbl);
146
147
148
149 g_request_id := TO_NUMBER(fnd_profile.value('CONC_REQUEST_ID'));
150 g_debug_flag := p_debug_mode;
151 g_run_mode := 'TOTAL'; --Bug5043777
152 g_prev_request_id := p_prev_request_id;
153
154
155 Set_Area_Sizes;
156 COMMIT;
157 /*
158 IF g_run_mode = G_TOTAL_MODE THEN
159 IEX_DEBUG('Calling IEX_ATA_TOTAL.Load_All');
160 IEX_ATA_TOTAL.Load_All(
161 g_user_id, g_last_update_login, g_prog_appl_id, g_prog_id,
162 g_request_id, g_num_rollup_days, g_conversion_type);
163 END IF;
164 */
165 l_call_post_uhk := JTF_USR_HKS.Ok_to_execute('IEX_ATA_PUB',
166 'Assign_Territory_Accesses',
167 'A','C');
168
169 IF l_call_post_uhk THEN
170 IEX_DEBUG('Call post user hook is true');
171
172 AS_ATA_UHK.ATA_Post (
173 p_api_version_number => 2.0,
174 p_init_msg_list => FND_API.G_FALSE,
175 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
176 p_commit => FND_API.G_FALSE,
177 p_param1 => p_ext_param1,
178 p_param2 => p_ext_param2,
179 p_param3 => p_ext_param3,
180 p_request_id => g_request_id,
181 x_return_status => l_return_status,
182 x_msg_count => l_msg_count,
183 x_msg_data => l_msg_data);
184
185 IEX_DEBUG('user hook return: ' || l_return_status);
186 END IF;
187
188 g_min_num_parallel_proc:=nvl(TO_NUMBER(fnd_profile.value('IEX_TERR_MIN_NUM_PARALLEL_PROC')),1);
189 IEX_DEBUG('Min records for Parallel Processing (IEX_TERR_MIN_NUM_PARALLEL_PROC)=' || g_min_num_parallel_proc);
190
191 g_NumChildAccountWorker:=nvl(TO_NUMBER(fnd_profile.value('IEX_TAP_NUM_CHILD_ACCOUNT_WORKERS')),1);
192 if g_NumChildAccountWorker < 1 then
193 g_NumChildAccountWorker:=1;
194 elsif g_NumChildAccountWorker > 10 then
195 g_NumChildAccountWorker:=10;
196 IEX_DEBUG('Max no. of Parallel Account Workers allowed is:' || g_NumChildAccountWorker);
197 end if;
198 IEX_DEBUG('Max Parallel Account Workers (IEX_TAP_NUM_CHILD_ACCOUNT_WORKERS)=' || g_NumChildAccountWorker);
199
200 l_percent_analysed :=nvl(TO_NUMBER(fnd_profile.value('IEX_TAP_PERCENT_ANALYSED')),20);
201
202
203 l_target_type := 'TOTAL';
204
205 BEGIN
206 IEX_DEBUG('Starting JTY_ASSIGN_BULK_PUB.collect_trans_data...');
207 JTY_ASSIGN_BULK_PUB.collect_trans_data(
208 p_api_version_number => 1.0,
209 p_init_msg_list => FND_API.G_FALSE,
210 p_source_id => -1600,
211 p_trans_id => -1601,
212 p_program_name => 'COLLECTIONS/CUSTOMER PROGRAM',
213 p_mode => l_target_type,
214 p_where => null,
215 p_no_of_workers => g_NumChildAccountWorker,
216 p_percent_analyzed => l_percent_analysed,
217 p_request_id => g_request_id,
218 x_return_status => l_return_status,
219 x_msg_count => lx_msg_count,
220 x_msg_data => lx_msg_data,
221 ERRBUF => lx_errbuf,
222 RETCODE => lx_retcode);
223 IEX_DEBUG('Completed JTY_ASSIGN_BULK_PUB.collect_trans_data with status ' || l_return_status);
224 IEX_DEBUG('Message from JTY_ASSIGN_BULK_PUB.collect_trans_data ' ||lx_msg_data);
225 EXCEPTION WHEN OTHERS THEN
226 IEX_DEBUG('Error occured JTY_ASSIGN_BULK_PUB.collect_trans_data' ||SQLERRM);
227 IEX_DEBUG('Error buffer ' || lx_errbuf);
228 END;
229
230
231 SELECT count(*) INTO l_acc_count FROM jtf_tae_1600_cust_trans;
232 IEX_DEBUG('Number of records in jtf_tae_1600_cust_trans : ' || l_acc_count );
233
234 IEX_DEBUG('Analyse values and Prepare Parallel Processing ...' );
235 -- populate worker_id in TRANS or NM_TRANS tables
236 Prepare_Parallel_Processing(
237 P_Request_Id => g_request_id,
238 P_Prev_Request_Id => g_prev_request_id,
239 P_Run_Mode => g_run_mode,
240 P_AccountCount => l_acc_count,
241 P_MinNumParallelProc => g_min_num_parallel_proc,
242 P_NumChildAccountWorker => g_NumChildAccountWorker,
243 X_ActualAccountWorkersUsed => p_ActualAccountWorkersUsed);
244 IEX_DEBUG('Parallel Processing values analysed successfully...');
245
246 IF (p_ActualAccountWorkersUsed = 0) THEN
247 IEX_DEBUG('No Records in JTF Trans Table, Do the Setup and then run this program');
248 END IF;
249
250
251 -- submit concurrent request IEXGAR for ACCOUNT
252 FOR i in 1..p_ActualAccountWorkersUsed
253 LOOP
254 --Bug5043777. Fix By LKKUMAR. Set the Context for Spawn Program. Start.
255 fnd_request.set_org_id(mo_global.get_current_org_id);
256 FND_FILE.put_line(fnd_file.log,'Operating Unit Before Submitting IEXGAR is : ' || mo_global.get_current_org_id );
257 --Bug5043777. Fix By LKKUMAR. Set the Context for Spawn Program. Start.
258
259 IEX_DEBUG('Submiting IEXGAR for ACCOUNT');
260 l_req_id := FND_REQUEST.SUBMIT_REQUEST('IEX',
261 'IEXGAR',
262 'Generate Access Records Collections',
263 '',
264 FALSE,
265 'TOTAL', --Bug5043777
266 p_debug_mode,
267 'N',
268 p_trans_type_acc,
269 i, -- worker id
270 p_ActualAccountWorkersUsed,
271 g_request_id,
272 l_number ,
273 CHR(0));
274
275 IF l_req_id = 0 THEN
276 l_msg:=FND_MESSAGE.GET;
277 IEX_DEBUG(l_msg);
278 END IF;
279 IEX_DEBUG('Submitted request for ACCOUNT :' || l_req_id|| ' Worker Id:'||i);
280 END LOOP;
281
282 EXCEPTION
283 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
284 IEX_DEBUG('Cannot Start');
285
286 WHEN others THEN
287 IEX_DEBUG('Exception: others in Assign_Territory_Accesses');
288 IEX_DEBUG('SQLCODE ' || to_char(SQLCODE) ||
289 ' SQLERRM ' || substr(SQLERRM, 1, 100));
290
291 errbuf := SQLERRM;
292 retcode := FND_API.G_RET_STS_UNEXP_ERROR;
293 l_status := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR', SQLERRM);
294
295 END Assign_Territory_Accesses;
296
297
298 /*-------------------------------------------------------------------------*
299 | PRIVATE ROUTINE
300 | Set_Up
301 |
302 | PURPOSE
303 | Set up global variables and arrays
304 |
305 *-------------------------------------------------------------------------*/
306
307 PROCEDURE Set_Up(
308 px_acct_qual_tbl IN OUT NOCOPY QUAL_LIST_TBL_TYPE
309 )
310 IS
311 l_profile_value VARCHAR2(240);
312 BEGIN
313 IEX_DEBUG('Started doing the Set Up');
314
315 Concurrent_Profile_Options;
316
317 -- get profile option - AS_MC_MAX_ROLL_DAYS
318 /*
319 l_profile_value := fnd_profile.value('AS_MC_MAX_ROLL_DAYS');
320 IF RTRIM(l_profile_value) IS NULL THEN
321 g_num_rollup_days := 0;
322 ELSE
323 g_num_rollup_days := TO_NUMBER(l_profile_value);
324 END IF;
325
326 -- get profile option - AS_MC_DAILY_CONVERSION_TYPE
327 g_conversion_type := fnd_profile.value('AS_MC_DAILY_CONVERSION_TYPE');
328 */
329 -- get profile option - number of child process
330 g_num_child_processes :=
331 TO_NUMBER(fnd_profile.value('IEX_TERR_NUM_CHILD_PROCESSES'));
332 IEX_DEBUG('Mininum Child Process ' || g_num_child_processes);
333 -- get profile option - min number for parallel processing
334 g_min_num_parallel_proc :=
335 TO_NUMBER(NVL(fnd_profile.value('IEX_TERR_MIN_NUM_PARALLEL_PROC'), 3));
336 IEX_DEBUG('Minimum Number of Prallel Proc ' || g_min_num_parallel_proc);
337
338 -- fill in Account Qualifier Array
339 --Bug4654733. Fix by LKKUMAR on 06-Sep-2005. Remove AS dependency. Start
340 /*
341 AS_Tata_Process_Changed_Terr.Load_Acct_Qual_Array;
342 g_num_acct_qual := AS_Tata_Process_Changed_Terr.G_Account_Qualifier_Count; */
343 --Bug4654733. Fix by LKKUMAR on 06-Sep-2005. Remove AS dependency. End.
344
345 EXCEPTION
346 WHEN others THEN
347 IEX_DEBUG('Exception: others in set_up');
348 IEX_DEBUG('SQLCODE ' || to_char(SQLCODE) ||
349 ' SQLERRM ' || substr(SQLERRM, 1, 100));
350
351 RAISE;
352 END Set_Up;
353
354
355 /*-------------------------------------------------------------------------*
356 | PRIVATE ROUTINE
357 | Concurrent_Profile_Options
358 |
359 | PURPOSE
360 | Get concurrent profile options
361 |
362 *-------------------------------------------------------------------------*/
363
364 PROCEDURE Concurrent_Profile_Options
365 IS
366 l_temp_seq NUMBER;
367 l_retvalue VARCHAR2(20);
368
369 CURSOR c_get_conseq_cur IS
370 SELECT fnd_concurrent_requests_s.nextval
371 FROM dual;
372 BEGIN
373
374
375 -- get profile option - USER_ID
376 g_user_id := TO_NUMBER(fnd_profile.value('USER_ID'));
377
378 -- get profile option -- CONC_PROGRAM_APPLICATION_ID
379 g_prog_appl_id := FND_GLOBAL.PROG_APPL_ID;
380
381 -- get profile option -- CONC_PROGRAM_ID
382 g_prog_id := TO_NUMBER(fnd_profile.value('CONC_PROGRAM_ID'));
383
384 -- get profile option -- CONC_LOGIN_ID
385 g_last_update_login := TO_NUMBER(fnd_profile.value('CONC_LOGIN_ID'));
386
387 -- get profile option -- CONC_REQUEST_ID
388 g_request_id := TO_NUMBER(fnd_profile.value('CONC_REQUEST_ID'));
389
390
391 -- If g_request_id = 0, select directly from sequence
392 IF g_request_id = 0
393 THEN
394 -- Get concurrent sequence
395 OPEN c_get_conseq_cur;
396 FETCH c_get_conseq_cur INTO l_temp_seq;
397 CLOSE c_get_conseq_cur;
398
399 g_request_id := l_temp_seq;
400 END IF;
401 EXCEPTION
402 WHEN others THEN
403 IEX_DEBUG('Exception: others in concurrent_profile_options');
404 IEX_DEBUG('SQLCODE ' || to_char(SQLCODE) ||
405 ' SQLERRM ' || substr(SQLERRM, 1, 100));
406
407 RAISE;
408 END Concurrent_Profile_Options;
409
410 /*-------------------------------------------------------------------------*
411 | PUBLIC ROUTINE
412 | IEX_DEBUG
413 |
414 | PURPOSE
415 | write debug message
416 *-------------------------------------------------------------------------*/
417
418 PROCEDURE IEX_DEBUG( msg in VARCHAR2)
419 IS
420 l_length NUMBER;
421 l_start NUMBER := 1;
422 l_substring VARCHAR2(255);
423
424 l_base VARCHAR2(12);
425 l_date_str VARCHAR2(255);
426
427 BEGIN
428 IF g_debug_flag = 'Y'
429 THEN
430 select to_char( sysdate, 'DD-Mon-YYYY HH24:MI:SS') into l_date_str from dual;
431 FND_FILE.PUT_LINE(FND_FILE.LOG,'---' || l_date_str || '--------------------------');
432
433 -- chop the message to 255 long
434 l_length := length(msg);
435 WHILE l_length > 255 LOOP
436 l_substring := substr(msg, l_start, 255);
437 FND_FILE.PUT_LINE(FND_FILE.LOG, l_substring);
438 --Bug4221324. Fix by LKKUMAR on 06-Dec-2005. Start.
439 IEX_DEBUG_PUB.logmessage(l_substring);
440 --Bug4221324. Fix by LKKUMAR on 06-Dec-2005. End.
441 -- dbms_output.put_line(l_substring);
442
443 l_start := l_start + 255;
444 l_length := l_length - 255;
445 END LOOP;
446
447 l_substring := substr(msg, l_start);
448 FND_FILE.PUT_LINE(FND_FILE.LOG,l_substring);
449 --Bug4221324. Fix by LKKUMAR on 06-Dec-2005. Start.
450 IEX_DEBUG_PUB.logmessage(l_substring);
451 --Bug4221324. Fix by LKKUMAR on 06-Dec-2005. End.
452 -- dbms_output.put_line(l_substring);
453 END IF;
454 EXCEPTION
455 WHEN others THEN
456 FND_FILE.PUT_LINE(FND_FILE.LOG, 'Exception: others in IEX_DEBUG');
457 FND_FILE.PUT_LINE(FND_FILE.LOG,
458 'SQLCODE ' || to_char(SQLCODE) ||
459 ' SQLERRM ' || substr(SQLERRM, 1, 100));
460 END IEX_DEBUG;
461
462
463 /*-------------------------------------------------------------------------*
464 | PUBLIC ROUTINE
465 | Set_Area_Sizes
466 |
467 | PURPOSE
468 | Set profile option values for sort area size and hash area size
469 *-------------------------------------------------------------------------*/
470
471 PROCEDURE Set_Area_Sizes
472 IS
473 st varchar2(500);
474 sort_size NUMBER := 100000000;
475 hash_size NUMBER := 100000000;
476 s number;
477
478 BEGIN
479 -- Alter session to set sort area size and hash area size
480 sort_size := fnd_profile.value('IEX_SORT_AREA_SIZE_FOR_TAP');
481 IF sort_size is not NULL and sort_size > 0 THEN
482 st := 'ALTER SESSION SET SORT_AREA_SIZE = ' || sort_size;
483 EXECUTE IMMEDIATE st;
484 select value into s from V$PARAMETER where name = 'sort_area_size';
485 END IF;
486 IEX_DEBUG('Sort Area Size ' || s );
487
488 hash_size := fnd_profile.value('IEX_HASH_AREA_SIZE_FOR_TAP');
489 IF hash_size is not NULL and hash_size > 0 THEN
490 st := 'ALTER SESSION SET HASH_AREA_SIZE = ' || hash_size;
491 EXECUTE IMMEDIATE st;
492 select value into s from V$PARAMETER where name = 'hash_area_size';
493 END IF;
494 IEX_DEBUG('Hash Area Size ' || s );
495 END Set_Area_Sizes;
496
497 /*-------------------------------------------------------------------------*
498 | PUBLIC ROUTINE
499 | Prepare_Parallel_Processing
500 |
501 | PURPOSE
502 | Prepare the TRANS tables for parallel processing
503 *-------------------------------------------------------------------------*/
504 PROCEDURE Prepare_Parallel_Processing(
505 P_Request_Id NUMBER,
506 P_Prev_Request_Id NUMBER,
507 P_Run_Mode VARCHAR2,
508 P_AccountCount NUMBER,
509 P_MinNumParallelProc NUMBER,
510 P_NumChildAccountWorker NUMBER,
511 X_ActualAccountWorkersUsed OUT NOCOPY NUMBER)
512 IS
513 l_ActualWorker NUMBER := 0;
514 l_WorkerLoad NUMBER := 0;
515
516 BEGIN
517
518 IEX_DEBUG('*** Prepare_Parallel_Processing() *** - Start - ');
519 X_ActualAccountWorkersUsed := 0;
520
521 l_ActualWorker := 0;
522 l_WorkerLoad := 0;
523
524 l_WorkerLoad := CEIL(P_AccountCount / P_NumChildAccountWorker);
525 If l_WorkerLoad < P_MinNumParallelProc then
526 l_WorkerLoad := P_MinNumParallelProc;
527 End If;
528
529 l_ActualWorker := CEIL(P_AccountCount/l_WorkerLoad);
530 IEX_DEBUG('Actual Worker Assigned : '||l_ActualWorker);
531
532 /*
533 IF p_run_mode = G_TOTAL_MODE THEN
534 UPDATE JTF_TAE_1001_ACCOUNT_TRANS
535 SET worker_id = mod (trans_object_id, l_ActualWorker) + 1;
536 IEX_DEBUG('UPDATE JTF_TAE_1001_ACCOUNT_TRANS.worker_id');
537 ELSIF p_run_mode = G_NEW_MODE THEN
538 UPDATE JTF_TAE_1001_ACCOUNT_NM_TRANS
539 SET worker_id = mod (trans_object_id, l_ActualWorker) + 1;
540 IEX_DEBUG('UPDATE JTF_TAE_1001_ACCOUNT_NM_TRANS.worker_id');
541 END IF;
542 */
543 X_ActualAccountWorkersUsed := l_ActualWorker;
544
545 EXCEPTION
546 WHEN others THEN
547 IEX_DEBUG('Exception: others in Prepare_Parallel_Processing');
548 IEX_DEBUG('SQLCODE ' || to_char(SQLCODE) || ' SQLERRM ' || substr(SQLERRM, 1, 100));
549
550 END Prepare_Parallel_Processing;
551
552
553 END IEX_ATA_PUB;