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