[Home] [Help]
PACKAGE BODY: APPS.BIS_CONCURRENT_MANAGER_PVT
Source
1 PACKAGE BODY BIS_CONCURRENT_MANAGER_PVT AS
2 /* $Header: BISVCONB.pls 120.1 2005/11/18 05:50:50 ankgoel noship $ */
3 --
4 /*
5 REM +=======================================================================+
6 REM | Copyright (c) 2000 Oracle Corporation, Redwood Shores, CA, USA |
7 REM | All rights reserved. |
8 REM +=======================================================================+
9 REM | FILENAME |
10 REM | BISVCONB.pls |
11 REM | |
12 REM | DESCRIPTION |
13 REM | Private API for managing concurrent requests
14 REM |
15 REM | NOTES |
16 REM | |
17 REM | HISTORY |
18 REM | June 2000 irchen creation
19 REM | 17-SEP-2002 rchandra port fix for 2562678 to 4004
20 REM | 30-OCT-2002 rchandra fix for 2512994
21 REM | 20-JAN-2003 mahrao fix for bug# 2649486
22 REM | 21-MAR-2003 rchandra if frequency is ONCE , the resubmit interval
23 REM | unit code and end date are returned as null
24 REM | which are displayed on screen. In this case the
25 REM | code is changed to return once , and end date
26 REM | the same as start date, for bug 2834133
27 REM | 21-MAR-2003 sugopal It should not be able to schedule an alert again
28 REM | when it is running. Added condition to check for
29 REM | the same - bug#2834155
30 REM | 26-MAR-2003 sugopal Added the constant C_CONC_REQUEST_NORMAL
31 REM | for the bug#2871593
32 REM | 09-NOV-2003 ankgoel Modified for bug #3153902 |
33 REM | 14-NOV-2003 ankgoel Modified for bug# 3153918 |
34 REM | 15-Dec-2003 arhegde enh# 3148615 Change/Target based alerting. |
35 REM | 25-Jan-2004 ankgoel bug# 3083617 Modified date format of next run date|
36 REM | 18-Nov-2005 ankgoel bug# 4675515 DBI Actuals for previous time period |
37 REM +=======================================================================+
38 */
39
40
41 C_CONC_REQUEST_NORMAL CONSTANT VARCHAR2(30) := 'NORMAL';
42
43 --
44 -- Checks if request is scheduled to run again. If not, the request
45 -- is deleted from the Registration table and the ad hoc workflow role
46 -- is removed.
47 --
48 PROCEDURE Manage_Alert_Registrations
49 ( p_Param_Set_rec IN BIS_PMF_ALERT_REG_PUB.parameter_set_rec_type
50 , x_request_scheduled OUT NOCOPY VARCHAR2
51 , x_return_status OUT NOCOPY VARCHAR2
52 , x_error_Tbl OUT NOCOPY BIS_UTILITIES_PUB.Error_Tbl_Type
53 )
54 IS
55
56 l_request_id NUMBER;
57 l_Concurrent_Request_tbl Fnd_Concurrent_Requests_tbl;
58 l_Param_Set_tbl BIS_PMF_ALERT_REG_PUB.parameter_set_tbl_type;
59 l_phase VARCHAR2(32000);
60 l_status VARCHAR2(32000);
61 l_debug VARCHAR2(32000);
62 l_debug2 VARCHAR2(32000);
63 l_dev_phase VARCHAR2(32000);
64 l_dev_status VARCHAR2(32000);
65 l_message VARCHAR2(32000);
66 l_request_status BOOLEAN;
67 l_request_scheduled BOOLEAN := FALSE;
68
69 BEGIN
70
71 BIS_UTILITIES_PUB.put_line(p_text =>'Managing alert registrations (concurrent manager mode)');
72 x_return_status := FND_API.G_RET_STS_SUCCESS;
73
74 Get_All_Requests
75 ( p_Param_Set_rec => p_Param_Set_rec
76 , x_Concurrent_Request_tbl => l_Concurrent_Request_tbl
77 , x_return_status => x_return_status
78 );
79
80 IF l_Concurrent_Request_tbl.COUNT > 0 THEN
81 -- BIS_UTILITIES_PUB.put_line(p_text =>'l_debug_text :'||l_debug_text);
82 null;
83 ELSE
84 -- BIS_UTILITIES_PUB.put_line(p_text =>'l_debug_text :'||l_debug_text);
85 null;
86 END IF;
87
88 FOR i IN 1..l_Concurrent_Request_tbl.COUNT LOOP
89 l_request_status := FND_CONCURRENT.GET_REQUEST_STATUS
90 ( request_id => l_Concurrent_Request_tbl(i).request_id
91 , phase => l_phase
92 , status => l_status
93 , dev_phase => l_dev_phase
94 , dev_status => l_dev_status
95 , message => l_message
96 );
97
98 IF (((l_dev_phase = G_CONC_REQUEST_PENDING) OR (l_dev_phase = G_CONC_REQUEST_RUNNING))
99 AND ((l_dev_status = G_CONC_REQUEST_SCHEDULED) OR (l_dev_status = C_CONC_REQUEST_NORMAL)))
100 THEN
101 l_request_scheduled := TRUE;
102 l_request_id := l_Concurrent_Request_tbl(i).request_id;
103 BIS_UTILITIES_PUB.put_line(p_text =>'Concurrent request phase: '||l_dev_phase
104 ||', status: '||l_dev_status);
105 exit;
106 END IF;
107 END LOOP;
108
109 IF l_request_scheduled THEN
110 x_request_scheduled := FND_API.G_TRUE;
111 ELSE
112 x_request_scheduled := FND_API.G_FALSE;
113
114 IF p_Param_Set_Rec.Target_Level_id IS NOT NULL THEN
115 BIS_UTILITIES_PUB.put_line(p_text =>'Managing request by target level: '
116 ||p_Param_Set_Rec.Target_Level_id );
117
118 IF (p_param_set_rec.notify_owner_flag <> 'N') THEN
119 BIS_PMF_ALERT_REG_PVT.Retrieve_Parameter_set
120 ( p_api_version => 1.0
121 , p_Param_Set_Rec => p_param_set_rec
122 , x_Param_Set_tbl => l_param_set_tbl
123 , x_return_status => x_return_status
124 , x_error_Tbl => x_error_Tbl
125 );
126 END IF;
127 ELSIF p_Param_Set_Rec.performance_measure_id IS NOT NULL
128 AND p_Param_Set_Rec.target_level_id IS NULL
129 THEN
130 BIS_UTILITIES_PUB.put_line(p_text =>'Managing request by measure: '
131 ||p_Param_Set_Rec.performance_measure_id
132 ||', time: '||p_Param_Set_Rec.time_dimension_level_id);
133
134 BIS_PMF_ALERT_REG_PVT.Retrieve_Parameter_set
135 ( p_api_version => 1.0
136 , p_measure_id => p_Param_Set_Rec.performance_measure_id
137 , p_time_dimension_level_id => p_Param_Set_Rec.time_dimension_level_id
138 , x_Param_Set_tbl => l_param_set_tbl
139 , x_return_status => x_return_status
140 , x_error_Tbl => x_error_Tbl
141 );
142 END IF;
143
144 FOR i IN 1..l_param_set_tbl.COUNT LOOP
145 BIS_UTILITIES_PUB.put_line(p_text =>'Deleting '||i||'th parameter set. Registration id: '
146 ||l_param_set_tbl(i).registration_id);
147
148 BEGIN
149 BIS_PMF_ALERT_REG_PVT.Delete_Parameter_Set
150 ( p_registration_ID => l_Param_Set_tbl(i).registration_id
151 , x_return_status => x_return_status
152 );
153 /* 2562678 request alert was not working as the users were removed
154 WF_DIRECTORY.RemoveUsersFromAdHocRole
155 ( role_name => p_Param_Set_rec.Notifiers_Code
156 );
157 WF_DIRECTORY.SetAdHocRoleExpiration
158 ( role_name => p_Param_Set_rec.Notifiers_Code
159 , expiration_date => sysdate-1
160 );
161 2562678 */
162 EXCEPTION
163 WHEN OTHERS THEN
164 BIS_UTILITIES_PUB.put_line(p_text =>i||'th param set did not get deleted.');
165 END;
166 BIS_UTILITIES_PUB.put_line(p_text =>i||'th deleted.');
167 END LOOP;
168
169 END IF;
170
171 EXCEPTION
172 when FND_API.G_EXC_ERROR then
173 x_return_status := FND_API.G_RET_STS_ERROR ;
174 BIS_UTILITIES_PUB.put_line(p_text =>'exception 1 in Manage_Alert_Registrations: '||sqlerrm);
175 when FND_API.G_EXC_UNEXPECTED_ERROR then
176 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
177 BIS_UTILITIES_PUB.put_line(p_text =>'exception 2 in Manage_Alert_Registrations: '||sqlerrm);
178 when others then
179 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
180 BIS_UTILITIES_PUB.put_line(p_text =>'exception 3 in Manage_Alert_Registrations: '||sqlerrm);
181 BIS_UTILITIES_PVT.Add_Error_Message
182 ( p_error_msg_id => SQLCODE
183 , p_error_description => SQLERRM
184 , p_error_proc_name => G_PKG_NAME||'.Manage_Alert_Registrations'
185 , p_error_table => x_error_tbl
186 , x_error_table => x_error_tbl
187 );
188 END Manage_Alert_Registrations;
189
190
191 PROCEDURE Get_All_Requests
192 ( p_Param_Set_rec IN BIS_PMF_ALERT_REG_PUB.parameter_set_rec_type
193 , x_Concurrent_Request_tbl OUT NOCOPY Fnd_Concurrent_Requests_Tbl
194 , x_return_status OUT NOCOPY VARCHAR2
195 )
196 IS
197
198 l_Concurrent_Request_tbl Fnd_Concurrent_Requests_tbl;
199 l_Concurrent_Request_Rec Fnd_Concurrent_Requests%ROWTYPE;
200 l_target_level_rec bisbv_target_levels%ROWTYPE;
201 l_Concurrent_Program_ID NUMBER;
202 l_Application_ID NUMBER;
203 l_request_ID Fnd_Concurrent_Requests.REQUEST_ID%TYPE;
204 l_Resubmit_Time Fnd_Concurrent_Requests.RESUBMIT_TIME%TYPE;
205 l_Resubmit_End_Date Fnd_Concurrent_Requests.RESUBMIT_END_DATE%TYPE;
206 l_Resubmit_Interval Fnd_Concurrent_Requests.RESUBMIT_INTERVAL%TYPE;
207 l_Resubmit_Interval_Unit_Code
208 Fnd_Concurrent_Requests.RESUBMIT_INTERVAL_UNIT_CODE%TYPE;
209 l_Resubmit_Interval_Type_Code
210 Fnd_Concurrent_Requests.RESUBMIT_INTERVAL_TYPE_CODE%TYPE;
211
212 l_count NUMBER := 0;
213
214 CURSOR cr_conc_req_tl IS
215 SELECT *
216 FROM fnd_concurrent_requests
217 WHERE Program_Application_ID = l_Application_ID
218 And Concurrent_Program_ID = l_Concurrent_Program_ID
219 and argument3 = p_param_set_rec.target_level_id
220 and argument5 = p_param_set_rec.plan_id
221 and ((argument8 is null and p_param_set_rec.PARAMETER1_VALUE is null)
222 or (argument8 = p_param_set_rec.PARAMETER1_VALUE)
223 )
224 and ((argument11 is null and p_param_set_rec.PARAMETER2_VALUE IS NULL)
225 or (argument11 = p_param_set_rec.PARAMETER2_VALUE)
226 )
227 and ((argument14 is null and p_param_set_rec.PARAMETER3_VALUE IS NULL)
228 or (argument14 = p_param_set_rec.PARAMETER3_VALUE)
229 )
230 and ((argument17 is null and p_param_set_rec.PARAMETER4_VALUE IS NULL)
231 or (argument17 = p_param_set_rec.PARAMETER4_VALUE)
232 )
233 and ((argument20 is null and p_param_set_rec.PARAMETER5_VALUE IS NULL)
234 or (argument20 = p_param_set_rec.PARAMETER5_VALUE)
235 )
236 and ((argument23 is null and p_param_set_rec.PARAMETER6_VALUE IS NULL)
237 or (argument23 = p_param_set_rec.PARAMETER6_VALUE)
238 )
239 order by request_id desc
240 -- order by ACTUAL_START_DATE desc
241 ;
242
243 CURSOR cr_conc_req_meas IS
244 SELECT *
245 FROM fnd_concurrent_requests
246 WHERE Program_Application_ID = l_Application_ID
247 And Concurrent_Program_ID = l_Concurrent_Program_ID
248 and argument1 = p_param_set_rec.performance_measure_id
249 and (p_param_set_rec.TIME_DIMENSION_LEVEL_ID is null
250 -- and ((argument7 is null
251 -- and p_param_set_rec.TIME_DIMENSION_LEVEL_ID is null)
252 or argument7 = p_param_set_rec.TIME_DIMENSION_LEVEL_ID
253 )
254 and argument3 IS NULL
255 order by request_id desc
256 -- order by ACTUAL_START_DATE desc
257 ;
258
259 l_debug_text VARCHAR2(32000);
260
261 BEGIN
262
263 BIS_UTILITIES_PUB.put_line(p_text =>'Getting request information. measure id: '
264 ||p_param_set_rec.performance_measure_id||', target level id: '
265 ||p_param_set_rec.target_level_id
266 );
267
268 IF p_param_set_rec.target_level_id IS NOT NULL THEN
269 BIS_UTILITIES_PUB.put_line(p_text =>'Retrieving target level information ');
270
271 Get_PMF_Concurrent_Program_ID
272 ( x_Concurrent_Program_ID => l_Concurrent_Program_ID
273 , x_Application_ID => l_Application_ID
274 );
275
276 BEGIN
277 select * into l_target_level_rec
278 from bisbv_target_levels
279 where target_level_id = p_param_set_rec.target_level_id;
280
281 BIS_UTILITIES_PUB.put_line(p_text =>'Retrieved target level: '
282 ||l_target_level_rec.TARGET_LEVEL_SHORT_NAME);
283 EXCEPTION
284 WHEN OTHERS THEN
285 BIS_UTILITIES_PUB.put_line(p_text =>'exception while getting target level');
286 return;
287 END;
288
289 FOR cr_conc IN cr_conc_req_tl LOOP
290 l_count := l_count+1;
291 l_Concurrent_Request_Rec := cr_conc;
292 l_Concurrent_Request_tbl(l_Concurrent_Request_tbl.COUNT+1)
293 := l_Concurrent_Request_Rec;
294
295 /*
296 l_debug_text := l_debug_text ||'count: '
297 ||l_count||', req id: '
298 ||l_Concurrent_Request_Rec.request_id||', start: '
299 ||l_Concurrent_Request_Rec.ACTUAL_START_DATE||', end: '
300 ||l_Concurrent_Request_Rec.ACTUAL_COMPLETION_DATE
301 ;
302 BIS_UTILITIES_PUB.put_line(p_text =>'conc target level: '||l_Concurrent_Request_Rec.argument3);
303 BIS_UTILITIES_PUB.put_line(p_text =>'conc plan: '||l_Concurrent_Request_Rec.argument5);
304 BIS_UTILITIES_PUB.put_line(p_text =>'conc org id: '||l_Concurrent_Request_Rec.argument8);
305 BIS_UTILITIES_PUB.put_line(p_text =>'conc time level: '||l_Concurrent_Request_Rec.argument9);
306 BIS_UTILITIES_PUB.put_line(p_text =>'conc time id: '||l_Concurrent_Request_Rec.argument11);
307 BIS_UTILITIES_PUB.put_line(p_text =>'param3: ' || l_Concurrent_Request_Rec.argument3 );
308 BIS_UTILITIES_PUB.put_line(p_text =>'param6: ' || l_Concurrent_Request_Rec.argument6 );
309 BIS_UTILITIES_PUB.put_line(p_text =>'param7 : '|| l_Concurrent_Request_Rec.argument7 );
310 BIS_UTILITIES_PUB.put_line(p_text =>'param8: ' || l_Concurrent_Request_Rec.argument8 );
311 BIS_UTILITIES_PUB.put_line(p_text =>'param9 : '|| l_Concurrent_Request_Rec.argument9 );
312 BIS_UTILITIES_PUB.put_line(p_text =>'param10: '|| l_Concurrent_Request_Rec.argument10);
313 BIS_UTILITIES_PUB.put_line(p_text =>'param11: '|| l_Concurrent_Request_Rec.argument11);
314 BIS_UTILITIES_PUB.put_line(p_text =>'param12: '|| l_Concurrent_Request_Rec.argument12);
315 BIS_UTILITIES_PUB.put_line(p_text =>'param11: '|| l_Concurrent_Request_Rec.argument11);
316 BIS_UTILITIES_PUB.put_line(p_text =>'param12: '|| l_Concurrent_Request_Rec.argument12);
317 BIS_UTILITIES_PUB.put_line(p_text =>'param14: '|| l_Concurrent_Request_Rec.argument14);
318 BIS_UTILITIES_PUB.put_line(p_text =>'param15: '|| l_Concurrent_Request_Rec.argument15);
319 BIS_UTILITIES_PUB.put_line(p_text =>'param17: '|| l_Concurrent_Request_Rec.argument17);
320 BIS_UTILITIES_PUB.put_line(p_text =>'param18: '|| l_Concurrent_Request_Rec.argument18);
321 BIS_UTILITIES_PUB.put_line(p_text =>'param20: '|| l_Concurrent_Request_Rec.argument20);
322 BIS_UTILITIES_PUB.put_line(p_text =>'param21: '|| l_Concurrent_Request_Rec.argument21);
323 BIS_UTILITIES_PUB.put_line(p_text =>'param23: '|| l_Concurrent_Request_Rec.argument23);
324 BIS_UTILITIES_PUB.put_line(p_text =>'param24: '|| l_Concurrent_Request_Rec.argument24);
325 */
326
327 END LOOP;
328
329 ELSIF p_param_set_rec.performance_measure_id IS NOT NULL THEN
330
331 Get_PMF_Concurrent_Program_ID
332 ( p_main_request_flag => FND_API.G_TRUE
333 , x_Concurrent_Program_ID => l_Concurrent_Program_ID
334 , x_Application_ID => l_Application_ID
335 );
336
337 BIS_UTILITIES_PUB.put_line(p_text =>'Retrieving measure information ');
338 FOR cr_conc IN cr_conc_req_meas LOOP
339 l_count := l_count+1;
340 l_Concurrent_Request_Rec := cr_conc;
341 l_Concurrent_Request_tbl(l_Concurrent_Request_tbl.COUNT+1)
342 := l_Concurrent_Request_Rec;
343
344 /*
345 BIS_UTILITIES_PUB.put_line(p_text =>'conc measure: '||l_Concurrent_Request_Rec.argument1);
349 ||'param1 : '|| l_Concurrent_Request_Rec.argument1 ;
346 BIS_UTILITIES_PUB.put_line(p_text =>'conc time level: '||l_Concurrent_Request_Rec.argument7);
347
348 l_debug_text := l_debug_text
350 l_debug_text := l_debug_text
351 ||'param3 : '|| l_Concurrent_Request_Rec.argument3 ;
352 l_debug_text := l_debug_text
353 ||'param7 : '|| l_Concurrent_Request_Rec.argument7 ;
354 BIS_UTILITIES_PUB.put_line(p_text =>'param8: ' || l_Concurrent_Request_Rec.argument8 );
355 BIS_UTILITIES_PUB.put_line(p_text =>'param9 : '|| l_Concurrent_Request_Rec.argument9 );
356 BIS_UTILITIES_PUB.put_line(p_text =>'param10: '|| l_Concurrent_Request_Rec.argument10);
357 BIS_UTILITIES_PUB.put_line(p_text =>'param11: '|| l_Concurrent_Request_Rec.argument11);
358 BIS_UTILITIES_PUB.put_line(p_text =>'param12: '|| l_Concurrent_Request_Rec.argument12);
359 BIS_UTILITIES_PUB.put_line(p_text =>'param14: '|| l_Concurrent_Request_Rec.argument14);
360 BIS_UTILITIES_PUB.put_line(p_text =>'param15: '|| l_Concurrent_Request_Rec.argument15);
361 BIS_UTILITIES_PUB.put_line(p_text =>'param17: '|| l_Concurrent_Request_Rec.argument17);
362 BIS_UTILITIES_PUB.put_line(p_text =>'param18: '|| l_Concurrent_Request_Rec.argument18);
363 BIS_UTILITIES_PUB.put_line(p_text =>'param20: '|| l_Concurrent_Request_Rec.argument20);
364 BIS_UTILITIES_PUB.put_line(p_text =>'param21: '|| l_Concurrent_Request_Rec.argument21);
365 BIS_UTILITIES_PUB.put_line(p_text =>'param23: '|| l_Concurrent_Request_Rec.argument23);
366 BIS_UTILITIES_PUB.put_line(p_text =>'param24: '|| l_Concurrent_Request_Rec.argument24);
367
368 l_debug_text := l_debug_text ||'count: '
369 ||l_count||', req id: '
370 ||l_Concurrent_Request_Rec.request_id||', start: '
371 ||l_Concurrent_Request_Rec.ACTUAL_START_DATE||', end: '
372 ||l_Concurrent_Request_Rec.ACTUAL_COMPLETION_DATE
373 ;
374 */
375
376 END LOOP;
377
378 END IF;
379
380 x_return_status := l_debug_text;
381 x_Concurrent_Request_tbl := l_Concurrent_Request_tbl;
382
383 EXCEPTION
384 WHEN OTHERS THEN
385 BIS_UTILITIES_PUB.put_line(p_text =>'Error in Get_All_Requests: '||SQLERRM);
386
387 END Get_All_Requests;
388
389 Procedure Get_PMF_Concurrent_Program_ID
390 ( p_main_request_flag IN VARCHAR2 := FND_API.G_FALSE
391 , x_Concurrent_Program_ID OUT NOCOPY NUMBER
392 , x_Application_ID OUT NOCOPY NUMBER
393 )
394 IS
395 l_conc_program_name VARCHAR2(32000);
396 BEGIN
397
398 IF p_main_request_flag = FND_API.G_TRUE THEN
399 l_conc_program_name := G_ALERT_PROGRAM;
400 ELSE
401 l_conc_program_name := G_ALERT_PROGRAM_PVT;
402 END IF;
403
404 Select Concurrent_Program_ID, P.Application_ID
405 Into x_Concurrent_Program_ID, x_Application_ID
406 From Fnd_Concurrent_Programs P, Fnd_Application A
407 Where Concurrent_Program_Name = l_conc_program_name
408 And P.Application_ID = A.Application_ID
409 And A.Application_Short_Name
410 = BIS_UTILITIES_PVT.G_BIS_APPLICATION_SHORT_NAME;
411
412 EXCEPTION
413 WHEN OTHERS THEN
414 BIS_UTILITIES_PUB.put_line(p_text =>'Error in Get_PMF_Concurrent_Program_ID: '||SQLERRM);
415
416 END Get_PMF_Concurrent_Program_ID;
417
418 Procedure Submit_Concurrent_Request
419 ( p_Concurrent_Request_Tbl IN PMF_Request_Tbl_Type
420 , x_request_id_tbl OUT NOCOPY BIS_UTILITIES_PUB.BIS_VARCHAR_TBL
421 , x_errbuf OUT NOCOPY VARCHAR2
422 , x_retcode OUT NOCOPY VARCHAR2
423 )
424 IS
425
426 l_request_id VARCHAR2(32000);
427
428 BEGIN
429
430 FOR i IN 1..p_Concurrent_Request_Tbl.COUNT LOOP
431 Submit_Concurrent_Request
432 ( p_Concurrent_Request_rec => p_Concurrent_Request_tbl(i)
433 , x_request_id => l_request_id
434 , x_errbuf => x_errbuf
435 , x_retcode => x_retcode
436 );
437 x_request_id_tbl(x_request_id_tbl.COUNT+1) := l_request_id;
438 END LOOP;
439
440 END Submit_Concurrent_Request;
441
442 Procedure Submit_Concurrent_Request
443 ( p_Concurrent_Request_rec IN PMF_Request_rec_Type
444 , x_request_id OUT NOCOPY VARCHAR2
445 , x_errbuf OUT NOCOPY VARCHAR2
446 , x_retcode OUT NOCOPY VARCHAR2
447 )
448 IS
449
450 l_request_number NUMBER;
451 l_time_format VARCHAR2(200);
452 l_req_time_format VARCHAR2(200) := 'DD-MON-YYYY HH24:MI:SS';
453 BEGIN
454 /*
455 BIS_UTILITIES_PUB.put_line(p_text =>'concurrent request '||i||' of '
456 ||p_Concurrent_Request_Tbl.COUNT||' being submitted');
457 BIS_UTILITIES_PUB.put_line(p_text =>'Organization id: '||p_Concurrent_Request_Tbl(i).argument8);
458 BIS_UTILITIES_PUB.put_line(p_text =>'time id: '||p_Concurrent_Request_Tbl(i).argument9;
459 BIS_UTILITIES_PUB.put_line(p_text =>'dim1 id: '||p_Concurrent_Request_Tbl(i).argument14);
460 BIS_UTILITIES_PUB.put_line(p_text =>'dim2 id: '||p_Concurrent_Request_Tbl(i).argument17);
461 BIS_UTILITIES_PUB.put_line(p_text =>'target_id: '||p_Concurrent_Request_Tbl(i).argument27);
462 */
463
464 --BIS_UTILITIES_PUB.put_line(p_text =>'program: '||p_concurrent_Request_rec.program);
465 -- use teh ICX date format mask while submitting request too.
469 BIS_UTILITIES_PUB.put_line(p_text =>'argument1: '||p_concurrent_Request_rec.argument1);
466 l_time_format := NVL(fnd_profile.value_Specific('ICX_DATE_FORMAT_MASK'),'DD-MON-YYYY') ||' HH24:MI:SS';
467
468 IF p_concurrent_Request_rec.program = G_ALERT_PROGRAM THEN
470 BIS_UTILITIES_PUB.put_line(p_text =>'argument2: '||p_concurrent_Request_rec.argument2);
471 BIS_UTILITIES_PUB.put_line(p_text =>'argument9: '||p_concurrent_Request_rec.argument9);
472 BIS_UTILITIES_PUB.put_line(p_text =>'argument40: '||p_concurrent_Request_rec.argument40);
473 BIS_UTILITIES_PUB.put_line(p_text =>'argument42: '||p_concurrent_Request_rec.argument42);
474
475 -- Setting unused columns to null
476 --
477 l_request_number :=
478
479 FND_REQUEST.SUBMIT_REQUEST
480 ( p_concurrent_Request_rec.application_short_name
481 , p_concurrent_Request_rec.program
482 , p_concurrent_Request_rec.description
483 , to_char(to_date(p_concurrent_Request_rec.start_time , l_time_format),l_req_time_format )
484 , false
485 , p_concurrent_Request_rec.argument1 -- measure id
486 , p_concurrent_Request_rec.argument2 -- measure short name
487 , NULL
488 , NULL
489 , NULL
490 , NULL
491 , p_concurrent_Request_rec.argument9 -- time level
492 , NULL
493 , NULL
494 , NULL
495 , NULL
496 , NULL
497 , NULL
498 , NULL
499 , NULL
500 , NULL
501 , NULL
502 , NULL
503 , NULL
504 , NULL
505 , NULL
506 , NULL
507 , NULL
508 , NULL
509 , NULL
510 , NULL
511 , NULL
512 , NULL
513 , NULL
514 , NULL
515 , NULL
516 , NULL
517 , NULL
518 , p_concurrent_Request_rec.argument40 -- alert type
519 , NULL
520 , p_concurrent_Request_rec.argument42 -- current row
521 , p_concurrent_Request_rec.argument43 -- p_alert_based_on (target or current)
522 );
523
524 ELSIF p_concurrent_Request_rec.program = G_ALERT_PROGRAM_PVT THEN
525
526 -- Setting unused columns to null
527 --
528 l_request_number :=
529
530 FND_REQUEST.SUBMIT_REQUEST
531 ( p_concurrent_Request_rec.application_short_name
532 , p_concurrent_Request_rec.program
533 , p_concurrent_Request_rec.description
534 , p_concurrent_Request_rec.start_time
535 , false
536 , p_concurrent_Request_rec.argument1 -- measure_id
537 , p_concurrent_Request_rec.argument2 -- measure_short_name
538 , p_concurrent_Request_rec.argument3 -- target_level_id
539 , p_concurrent_Request_rec.argument4 -- target_level_short_name
540 , p_concurrent_Request_rec.argument5 -- plan_id
541 , NULL -- org_level_id
542 , NULL -- org_level_short_name
543 , NULL -- organization_id
544 , p_concurrent_Request_rec.argument9 -- time_level_id
545 , NULL -- time_level_short_name
546 , NULL -- time_level_value_id
547 , p_concurrent_Request_rec.argument12 -- dim1_level_id
548 , NULL -- dim1_level_short_name
549 , p_concurrent_Request_rec.argument14 -- dim1_level_value_id
550 , p_concurrent_Request_rec.argument15 -- dim2_level_id
551 , NULL -- dim2_level_short_name
552 , p_concurrent_Request_rec.argument17 -- dim2_level_value_id
553 , p_concurrent_Request_rec.argument18 -- dim3_level_id
554 , NULL -- dim3_level_short_name
555 , p_concurrent_Request_rec.argument20 -- dim3_level_value_id
556 , p_concurrent_Request_rec.argument21 -- dim4_level_id
557 , NULL -- dim4_level_short_name
558 , p_concurrent_Request_rec.argument23 -- dim4_level_value_id
559 , p_concurrent_Request_rec.argument24 -- dim5_level_id
560 , NULL -- dim5_level_short_name
561 , p_concurrent_Request_rec.argument26 -- dim5_level_value_id
562 , p_concurrent_Request_rec.argument27 -- dim6_level_id
563 , NULL -- dim6_level_short_name
564 , p_concurrent_Request_rec.argument29 -- dim6_level_value_id
565 , p_concurrent_Request_rec.argument30 -- dim7_level_id
566 , NULL -- dim7_level_short_name
567 , p_concurrent_Request_rec.argument32 -- dim7_level_value_id
568 , p_concurrent_Request_rec.argument33 -- target_id
569 , NULL -- target
570 , NULL -- actual_id
571 , NULL -- actual
572 , NULL -- primary_dim_level_id
573 , NULL -- primary_dim_level_short_name
574 , NULL -- notify_set
575 , p_concurrent_Request_rec.argument40 -- alert_type
576 , NULL -- alert_level
577 , p_concurrent_Request_rec.argument43 -- p_alert_based_on (target or current)
578 , p_concurrent_Request_rec.argument42 -- p_current_row (current or previous)
579 );
580 ELSE
581 BIS_UTILITIES_PUB.put_line(p_text =>'Not a valid PMF concurrent program');
582 l_request_number := 0;
583 END IF;
584
585 COMMIT;
586
587 IF ( (l_request_number IS NULL ) or ( l_request_number = 0) ) THEN -- 2568688
588 x_request_id := l_request_number;
589 x_errbuf := FND_MESSAGE.GET;
590 ELSE
591 x_request_id := to_char(l_request_number);
595 EXCEPTION
592 END IF;
593
594
596 when FND_API.G_EXC_ERROR then
597 x_errbuf := 'Request: '||to_char(l_request_number)
598 ||', Error1: '||SQLERRM
599 || 'Error from FND_REQUEST.SUBMIT_REQUEST : ' || FND_MESSAGE.GET;
600 x_retcode := SQLCODE;
601
602 RETURN;
603 when FND_API.G_EXC_UNEXPECTED_ERROR then
604 x_errbuf := 'Request: '||to_char(l_request_number)
605 ||', Error2: '||SQLERRM
606 || 'Error from FND_REQUEST.SUBMIT_REQUEST : ' || FND_MESSAGE.GET;
607 x_retcode := SQLCODE;
608 RETURN;
609 when others then
610 x_errbuf := 'Request: '||to_char(l_request_number)
611 ||', Error3: '||SQLERRM
612 || 'Error from FND_REQUEST.SUBMIT_REQUEST : ' || FND_MESSAGE.GET;
613 x_retcode := SQLCODE;
614 BIS_UTILITIES_PVT.Add_Error_Message
615 ( p_error_msg_id => SQLCODE
616 , p_error_description => SQLERRM
617 , p_error_proc_name => G_PKG_NAME||'.Service_Alert_Request'
618 );
619 RETURN;
620
621 END Submit_Concurrent_Request;
622
623 Procedure Get_Request_Schedule_Info
624 ( p_measure_id IN VARCHAR2 := NULL
625 , p_target_level_id IN VARCHAR2 := NULL
626 , p_time_level_id IN VARCHAR2 := NULL
627 , p_plan_id IN VARCHAR2 := NULL
628 , p_parameter1_value IN VARCHAR2 := NULL
629 , p_parameter2_value IN VARCHAR2 := NULL
630 , p_parameter3_value IN VARCHAR2 := NULL
631 , p_parameter4_value IN VARCHAR2 := NULL
632 , p_parameter5_value IN VARCHAR2 := NULL
633 , p_parameter6_value IN VARCHAR2 := NULL
634 , p_parameter7_value IN VARCHAR2 := NULL
635 , x_schedule_date OUT NOCOPY VARCHAR2
636 , x_schedule_time OUT NOCOPY VARCHAR2
637 , x_schedule_unit OUT NOCOPY VARCHAR2
638 , x_schedule_freq OUT NOCOPY VARCHAR2
639 , x_schedule_freq_unit OUT NOCOPY VARCHAR2
640 , x_schedule_end_date OUT NOCOPY VARCHAR2
641 , x_schedule_end_time OUT NOCOPY VARCHAR2
642 , x_next_run_date OUT NOCOPY VARCHAR2
643 , x_next_run_time OUT NOCOPY VARCHAR2
644 , x_description OUT NOCOPY VARCHAR2
645 , x_return_status OUT NOCOPY VARCHAR2
646 )
647 IS
648
649 l_Param_Set_Rec BIS_PMF_ALERT_REG_PUB.parameter_set_rec_type;
650
651 BEGIN
652
653 IF p_measure_id IS NOT NULL THEN
654 l_Param_Set_Rec.performance_measure_id := TO_NUMBER(p_measure_id);
655 END IF;
656 IF p_target_level_id IS NOT NULL THEN
657 l_Param_Set_Rec.target_level_id := TO_NUMBER(p_target_level_id);
658 END IF;
659 IF p_time_level_id IS NOT NULL THEN
660 l_Param_Set_Rec.time_dimension_level_id := TO_NUMBER(p_time_level_id);
661 END IF;
662 IF p_plan_id IS NOT NULL THEN
663 l_Param_Set_Rec.plan_id := TO_NUMBER(p_plan_id);
664 END IF;
665 l_Param_Set_Rec.parameter1_value := p_parameter1_value;
666 l_Param_Set_Rec.parameter2_value := p_parameter2_value;
667 l_Param_Set_Rec.parameter3_value := p_parameter3_value;
668 l_Param_Set_Rec.parameter4_value := p_parameter4_value;
669 l_Param_Set_Rec.parameter5_value := p_parameter5_value;
670 l_Param_Set_Rec.parameter6_value := p_parameter6_value;
671 l_Param_Set_Rec.parameter7_value := p_parameter7_value;
672
673 Get_Request_Schedule_Info
674 ( p_Param_Set_rec => l_Param_Set_rec
675 , x_schedule_date => x_schedule_date
676 , x_schedule_time => x_schedule_time
677 , x_schedule_unit => x_schedule_unit
678 , x_schedule_freq => x_schedule_freq
679 , x_schedule_freq_unit => x_schedule_freq_unit
680 , x_schedule_end_date => x_schedule_end_date
681 , x_schedule_end_time => x_schedule_end_time
682 , x_next_run_date => x_next_run_date
683 , x_next_run_time => x_next_run_time
684 , x_description => x_description
685 , x_return_status => x_return_status
686 );
687
688 EXCEPTION
689 WHEN OTHERS THEN
690 x_return_status := 'error at Get_Request_Schedule_Info: '||sqlerrm;
691 BIS_UTILITIES_PUB.put_line(p_text =>x_return_status);
692
693 END Get_Request_Schedule_Info;
694
695 Procedure Get_Request_Schedule_Info
696 ( p_Param_Set_rec IN BIS_PMF_ALERT_REG_PUB.parameter_set_rec_type
697 , x_schedule_date OUT NOCOPY VARCHAR2
698 , x_schedule_time OUT NOCOPY VARCHAR2
699 , x_schedule_unit OUT NOCOPY VARCHAR2
700 , x_schedule_freq OUT NOCOPY VARCHAR2
701 , x_schedule_freq_unit OUT NOCOPY VARCHAR2
702 , x_schedule_end_date OUT NOCOPY VARCHAR2
703 , x_schedule_end_time OUT NOCOPY VARCHAR2
704 , x_next_run_date OUT NOCOPY VARCHAR2
705 , x_next_run_time OUT NOCOPY VARCHAR2
706 , x_description OUT NOCOPY VARCHAR2
707 , x_return_status OUT NOCOPY VARCHAR2
708 )
709 IS
710
711 l_Concurrent_Request_tbl Fnd_Concurrent_Requests_tbl;
712 l_schedule_date VARCHAR2(32000) := NULL;
713 l_schedule_time VARCHAR2(32000) := NULL;
714 l_schedule_unit VARCHAR2(32000) := NULL;
715 l_schedule_freq VARCHAR2(32000) := NULL;
716 l_schedule_freq_unit VARCHAR2(32000) := NULL;
717 l_schedule_end_date VARCHAR2(32000) := NULL;
718 l_schedule_end_time VARCHAR2(32000) := NULL;
719 l_next_run_date VARCHAR2(32000) := NULL;
723 l_time_format VARCHAR2(32000) := NULL;
720 l_next_run_time VARCHAR2(32000) := NULL;
721 l_description VARCHAR2(32000) := NULL;
722 l_date_format VARCHAR2(32000) := NULL;
724 l_return_status VARCHAR2(32000) := NULL;
725 l_request_status BOOLEAN;
726 l_message VARCHAR2(32000) := NULL;
727 l_dev_phase VARCHAR2(32000) := NULL;
728 l_dev_status VARCHAR2(32000) := NULL;
729 l_phase VARCHAR2(32000) := NULL;
730 l_status VARCHAR2(32000) := NULL;
731
732 BEGIN
733
734 Get_All_Requests
735 ( p_Param_Set_rec => p_Param_Set_Rec
736 , x_Concurrent_Request_tbl => l_Concurrent_Request_tbl
737 , x_return_status => x_return_status
738 );
739 --BIS_UTILITIES_PUB.put_line(p_text =>'Number of rows: '||l_Concurrent_Request_tbl.COUNT);
740
741
742 l_date_format := 'DD/MM/RRRR';
743 l_time_format := 'HH24:MI:SS';
744
745 FOR i IN 1..l_Concurrent_Request_tbl.COUNT LOOP
746 l_request_status := FND_CONCURRENT.GET_REQUEST_STATUS
747 ( request_id => l_Concurrent_Request_tbl(i).request_id
748 , phase => l_phase
749 , status => l_status
750 , dev_phase => l_dev_phase
751 , dev_status => l_dev_status
752 , message => l_message
753 );
754 l_return_status := l_dev_status;
755
756 -- Get only requests scheduled once or asap, or not yet started
757 --
758 IF (l_Concurrent_Request_tbl(i).RESUBMIT_INTERVAL_UNIT_CODE IS NULL
759 AND (l_dev_phase = G_CONC_REQUEST_RUNNING
760 OR l_dev_phase = G_CONC_REQUEST_COMPLETE))
761 THEN
762 l_description := l_Concurrent_Request_tbl(i).DESCRIPTION;
763 l_schedule_date
764 := to_char(l_Concurrent_Request_tbl(i).ACTUAL_START_DATE
765 ,l_date_format);
766 l_schedule_time
767 := to_char(l_Concurrent_Request_tbl(i).ACTUAL_START_DATE
768 ,l_time_format);
769 l_schedule_unit :='ONCE';
770 l_schedule_freq := NULL;
771
772 Format_Schedule_Freq_Unit
773 ( p_schedule_unit => l_schedule_unit
774 , p_schedule_freq => l_schedule_freq
775 , x_schedule_freq_unit => l_schedule_freq_unit
776 );
777
778 l_schedule_end_date
779 :=to_char(l_Concurrent_Request_tbl(i).ACTUAL_COMPLETION_DATE
780 ,l_date_format);
781 l_schedule_end_time
782 :=to_char(l_Concurrent_Request_tbl(i).ACTUAL_COMPLETION_DATE
783 ,l_time_format);
784 l_next_run_date := NULL;
785 l_next_run_time := NULL;
786
787 exit;
788 ELSIF (l_dev_phase = G_CONC_REQUEST_PENDING
789 AND l_dev_status = G_CONC_REQUEST_SCHEDULED)
790 THEN
791 --BIS_UTILITIES_PUB.put_line(p_text =>'got request status.');
792 --
793 l_description := l_Concurrent_Request_tbl(i).DESCRIPTION;
794 l_schedule_date
795 := to_char(l_Concurrent_Request_tbl(i).REQUEST_DATE,l_date_format);
796 l_schedule_time
797 := to_char(l_Concurrent_Request_tbl(i).REQUEST_DATE,l_time_format);
798 l_schedule_unit:=l_Concurrent_Request_tbl(i).RESUBMIT_INTERVAL_UNIT_CODE;
799 l_schedule_freq
800 := l_Concurrent_Request_tbl(i).RESUBMIT_INTERVAL;
801
802 IF ( l_schedule_unit IS NULL ) THEN
803 l_schedule_unit :='ONCE';
804 l_schedule_freq := NULL;
805 END IF;
806
807 Format_Schedule_Freq_Unit
808 ( p_schedule_unit => l_schedule_unit
809 , p_schedule_freq => l_schedule_freq
810 , x_schedule_freq_unit => l_schedule_freq_unit
811 );
812
813 l_schedule_end_date
814 :=to_char(l_Concurrent_Request_tbl(i).RESUBMIT_END_DATE,l_date_format);
815 l_schedule_end_time
816 :=to_char(l_Concurrent_Request_tbl(i).RESUBMIT_END_DATE,l_time_format);
817
818 IF ( l_schedule_unit ='ONCE' AND l_schedule_end_date IS NULL ) THEN
819 l_schedule_end_date := l_schedule_date;
820 END IF;
821
822 l_next_run_date
823 := to_char(l_Concurrent_Request_tbl(i).REQUESTED_START_DATE
824 ,l_date_format);
825 l_next_run_time
826 := to_char(l_Concurrent_Request_tbl(i).REQUESTED_START_DATE
827 ,l_time_format);
828
829 /*
830 BIS_UTILITIES_PUB.put_line(p_text =>'l_schedule_date: '||l_schedule_date);
831 BIS_UTILITIES_PUB.put_line(p_text =>'l_schedule_unit: '||l_schedule_unit);
832 BIS_UTILITIES_PUB.put_line(p_text =>'l_schedule_freq: '||l_schedule_freq);
833 BIS_UTILITIES_PUB.put_line(p_text =>'l_next_run_time: '||l_next_run_time);
834 BIS_UTILITIES_PUB.put_line(p_text =>'l_description: '|| l_description);
835 */
836 exit;
837 END IF;
838 END LOOP;
839
840 x_schedule_date := l_schedule_date;
841 x_schedule_time := l_schedule_time;
842 x_schedule_unit := l_schedule_unit;
843 x_schedule_freq := l_schedule_freq;
844 x_schedule_freq_unit := l_schedule_freq_unit;
845 x_schedule_end_date := l_schedule_end_date;
846 x_schedule_end_time := l_schedule_end_time;
847 x_next_run_date := l_next_run_date;
848 x_next_run_time := l_next_run_time;
852 EXCEPTION
849 x_description := l_description;
850 x_return_status := l_return_status;
851
853 WHEN OTHERS THEN
854 BIS_UTILITIES_PUB.put_line(p_text =>'error at Get_Request_Schedule_Info: '||sqlerrm);
855 x_return_status := 'error at Get_Request_Schedule_Info: '||sqlerrm;
856 END Get_Request_Schedule_Info;
857
858 -- then non-nls compliant way to handle plural units
859 -- result is something like 'every 1 day(s)' or 'once'
860 --
861 Procedure Format_Schedule_Freq_Unit
862 ( p_schedule_unit IN VARCHAR2
863 , p_schedule_freq IN VARCHAR2
864 , x_schedule_freq_unit OUT NOCOPY VARCHAR2
865 )
866 IS
867
868 l_schedule_unit VARCHAR2(32000);
869 l_schedule_freq VARCHAR2(32000);
870 l_schedule_freq_unit VARCHAR2(32000);
871 l_every VARCHAR2(32000);
872
873 BEGIN
874
875 l_schedule_unit := Get_Freq_Display_Unit(p_schedule_unit);
876
877 IF (upper(p_schedule_unit) <> 'ONCE') THEN
878 l_every := BIS_UTILITIES_PVT.getPrompt( 'BIS_PERFORMANCE_ALERT_PROMPTS'
879 , 'BIS_EVERY');
880 l_schedule_freq_unit:=l_every||' '||p_schedule_freq||' '||l_schedule_unit;
881 ELSE
882 l_schedule_freq_unit := lower(l_schedule_unit);
883 END IF;
884
885 x_schedule_freq_unit := l_schedule_freq_unit;
886 --BIS_UTILITIES_PUB.put_line(p_text =>'x_schedule_freq_unit: '||x_schedule_freq_unit);
887
888 EXCEPTION
889 WHEN OTHERS THEN
890 x_schedule_freq_unit := null;
891 BIS_UTILITIES_PUB.put_line(p_text =>'error at Format_Schedule_Freq_Unit: '||sqlerrm);
892
893 END Format_Schedule_Freq_Unit;
894
895 FUNCTION Get_Freq_Display_Unit(p_freq_unit_code IN VARCHAR2)
896 RETURN VARCHAR2
897 IS
898 l_repeat_unit VARCHAR2(32000);
899 l_every VARCHAR2(32000);
900
901 BEGIN
902
903 --BIS_UTILITIES_PUB.put_line(p_text =>'Translating unit code: '||p_freq_unit_code);
904 IF (UPPER(p_freq_unit_code) = 'ONCE') THEN
905 l_repeat_unit := BIS_UTILITIES_PVT.Get_FND_Message(
906 p_message_name => 'BIS_PMF_ALERT_ONCE');
907 RETURN l_repeat_unit;
908 ELSE
909 BEGIN
910 Select lower(meaning)
911 Into l_repeat_unit
912 From Fnd_Lookups
913 Where upper (Lookup_Code) = upper (p_freq_unit_code)
914 And Lookup_Type = 'CP_RESUBMIT_INTERVAL_UNIT';
915 EXCEPTION
916 WHEN OTHERS THEN
917 null;
918 END;
919 END IF;
920
921 -- then non-nls compliant way to handle plural units
922 -- result is something from 'Hours' to 'Hour(s)'.
923 --
924 IF l_repeat_unit IS NOT NULL THEN
925 IF (substr(l_repeat_unit,-1,1)) = 's' THEN
926 l_repeat_unit := substr(l_repeat_unit,0,length(l_repeat_unit)-1)
927 ||'(s)';
928 END IF;
929 END IF;
930 return l_repeat_unit;
931
932 EXCEPTION
933 WHEN OTHERS THEN
934 l_repeat_unit := null;
935 BIS_UTILITIES_PUB.put_line(p_text =>'error at Get_Display_Unit: '||sqlerrm);
936 return l_repeat_unit;
937
938 END Get_Freq_Display_Unit;
939
940 --
941 -- Helper routine to check and set concurrent manager
942 -- repeat options
943 --
944 PROCEDURE Set_Repeat_Options
945 ( p_repeat_interval IN VARCHAR2
946 , p_repeat_units IN VARCHAR2
947 , P_Start_time IN VARCHAR2
948 , P_end_time IN VARCHAR2
949 , x_result OUT NOCOPY VARCHAR2
950 )
951 IS
952
953 l_start_date DATE;
954 l_end_date DATE;
955 l_result BOOLEAN;
956 l_debug_text VARCHAR2(32000);
957 l_repeat_interval NUMBER;
958 l_start_time VARCHAR2(32000);
959 l_end_time VARCHAR2(32000);
960 l_date_fmt VARCHAR2(30) := 'DD-MON-YYYY HH24:MI:SS'; --2195810
961 l_date_format VARCHAR2(200);
962
963 BEGIN
964
965 l_debug_text := l_debug_text||' Repeat_interval, units: '
966 ||p_repeat_interval||', '
967 ||p_repeat_Units;
968 l_debug_text := l_debug_text||' start time, end time: '||p_Start_Time||', '
969 ||p_End_Time;
970
971 -- use the icx date format for converting the user entered value
972 fnd_profile.get('ICX_DATE_FORMAT_MASK',l_date_format); --2512994
973 l_date_format := NVL(l_date_format,'DD-MON-YYYY') ||' HH24:MI:SS';
974
975 --2512994 use the icx date format if it is not null
976 IF P_start_time IS NOT NULL THEN
977 IF l_date_format IS NOT NULL THEN
978 l_start_date := to_date(to_char(to_date(P_start_time,l_date_format),l_date_fmt),l_date_fmt);
979 ELSE
980 l_start_date := to_date(P_start_time,l_date_fmt);
981 END IF;
982 END IF;
983 IF P_end_time IS NOT NULL THEN
984 IF l_date_format IS NOT NULL THEN
985 l_end_date := to_date(to_char(to_date(P_End_time,l_date_format),l_date_fmt),l_date_fmt);
986 ELSE
987 l_end_date := to_date(P_End_time,l_date_fmt);
988 END IF;
989 END IF;
990
991 l_debug_text := l_debug_text||' l_start_date: '||l_start_date;
992 l_debug_text := l_debug_text||' l_end_date: '||l_end_date;
993
994 IF p_repeat_interval IS NOT NULL THEN
995 l_repeat_interval := TO_NUMBER(p_repeat_interval);
996 END IF;
997 l_debug_text := l_debug_text||' repeat interval: '||p_repeat_interval;
998
999 IF P_End_time IS NOT NULL
1000 AND P_Start_time IS NOT NULL
1001 AND l_End_date < l_Start_date
1002 THEN
1003 return;
1004 END IF;
1005
1006 IF l_repeat_interval IS NOT NULL
1007 AND p_repeat_Units IS NOT NULL
1008 THEN
1009 IF p_repeat_units <> 'ONCE' THEN
1010 l_start_time := to_char(l_start_date,l_date_fmt);
1011 l_end_time := to_char(l_End_date,l_date_fmt);
1012 l_result
1013 := fnd_request.set_repeat_options
1014 ( repeat_interval => l_repeat_interval
1015 , repeat_unit => p_repeat_Units
1016 , repeat_end_time => l_End_Time
1017 );
1018 END IF;
1019 END IF;
1020
1021 IF (l_result) THEN
1022 l_debug_text := l_debug_text||' -- Repeat interval set.';
1023 ELSE
1024 l_debug_text := l_debug_text||' -- Repeat interval NOT set.';
1025 END IF;
1026
1027 x_result := FND_API.G_RET_STS_SUCCESS;
1028
1029 EXCEPTION
1030 WHEN OTHERS THEN
1031 BIS_UTILITIES_PUB.put_line(p_text =>'exception in Set_Repeat_Options: '||sqlerrm);
1032 x_result := l_debug_text||'exception in Set_Repeat_Options: '||sqlerrm;
1033
1034 END Set_Repeat_Options;
1035
1036
1037 END BIS_CONCURRENT_MANAGER_PVT;