[Home] [Help]
PACKAGE BODY: APPS.FND_RESUB_PRIVATE
Source
1 package body FND_RESUB_PRIVATE as
2 /* $Header: AFCPRSPB.pls 120.5 2005/12/27 11:29:23 tkamiya ship $ */
3
4
5
6 -- PRIVATE VARIABLES
7 --
8
9 P_nargs number := null;
10 P_ProgName varchar2(30) := null;
11 P_ProgAppName varchar2(30) := null;
12 P_ReqStartDate date := null;
13 P_reqid number := null;
14 P_delta number := null;
15 P_count integer := null;
16 P_increment_flag varchar2(1) :='N';
17 P_sch_type varchar2(1) := null;
18 P_sch_app_id number := null;
19 P_sch_id number := null;
20 P_sch_name VARCHAR2(20) := null;
21 P_errbuf varchar2(240) := null;
22 P_errnum number := 0;
23 P_inc_proc varchar2(61) := null;
24 P_fsegs fnd_dflex.segments_dr;
25 P_rsub_int number := null; -- Resubmit_Interval
26 P_rsub_int_unit_code varchar2(30) := null; -- Resubmit_Interval_Unit_Code
27 P_IncrOpt varchar2(1) :='S'; -- profile: CONC_DATE_INCREMENT_OPTION
28
29 TYPE t_arglist IS varray(100) OF VARCHAR2(240);
30 p_args t_arglist := t_arglist(CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0),
31 CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0),
32 CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0),
33 CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0),
34 CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0),
35 CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0),
36 CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0),
37 CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0),
38 CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0),
39 CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0), CHR(0));
40
41
42 ----------------------------------------------------------------------
43 --- PRIVATE PROCEDURES
44 ----------------------------------------------------------------------
45
46 procedure RETURN_INFO(errcode in number, errbuf in varchar2) is
47
48 begin
49 P_errbuf := errbuf;
50 P_errnum := errcode;
51 end;
52
53 procedure set_resub_delta (old_req_start IN date) is
54
55 begin
56 if (P_IncrOpt = 'S') then
57
58 P_delta := P_ReqStartDate - old_req_start;
59
60 else
61
62 if (P_rsub_int_unit_code = 'MINUTES') then
63 P_delta := P_rsub_int/1440;
64 elsif (P_rsub_int_unit_code = 'HOURS') then
65 P_delta := P_rsub_int/24;
66 else -- P_rsub_int_unit_code = 'DAYS'
67 P_delta := P_rsub_int;
68 end if;
69
70 end if;
71
72 end;
73
74
75
76 procedure execute_increment_proc is
77
78 cur_dyn INTEGER;
79 row_dyn INTEGER;
80
81 begin
82
83 begin
84
85 cur_dyn := dbms_sql.open_cursor;
86 exception
87 when others then
88 P_errnum := -1;
89 P_errbuf := 'dbms_sql.open_cursor failed';
90 return;
91 end;
92
93 begin
94 /* choosing V7 as language flag as less likely to cause problems */
95 dbms_sql.parse(cur_dyn, 'begin ' || P_inc_proc || '; end;',dbms_sql.V7);
96 exception
97 when others then
98 P_errnum := -1;
99 P_errbuf := 'dbms_sql.parse failed';
100 return;
101 end;
102
103 begin
104 /* choosing V7 as language flag as less likely to cause problems */
105 row_dyn := dbms_sql.execute(cur_dyn);
106 exception
107 when others then
108 P_errnum := -1;
109 P_errbuf := 'dbms_sql.execute failed';
110 return;
111 end;
112
113 begin
114 /* choosing V7 as language flag as less likely to cause problems */
115 dbms_sql.close_cursor(cur_dyn);
116 exception
117 when others then
118 P_errnum := -1;
119 P_errbuf := 'dbms_sql.close_cursor failed';
120 return;
121 end;
122
123 end;
124
125 procedure start_toy(req_id in number, new_req_start in varchar2) is
126
127 flexi fnd_dflex.dflex_dr;
128 fcontexts fnd_dflex.contexts_dr;
129 fcontext fnd_dflex.context_r;
130 prog_app_name varchar2(30);
131 prog_name varchar2(30);
132 old_req_start date;
133
134 begin
135
136 /* init params */
137 RETURN_INFO(0,NULL);
138 P_reqid := req_id;
139 P_ReqStartDate := fnd_conc_date.string_to_date(new_req_start);
140
141 select NVL(resub_count, 1), REQUESTED_START_DATE, NUMBER_OF_ARGUMENTS,
142 r.RESUBMIT_INTERVAL, r.RESUBMIT_INTERVAL_UNIT_CODE,
143 ARGUMENT1, ARGUMENT2, ARGUMENT3, ARGUMENT4, ARGUMENT5,
144 ARGUMENT6, ARGUMENT7, ARGUMENT8, ARGUMENT9, ARGUMENT10,
145 ARGUMENT11, ARGUMENT12, ARGUMENT13, ARGUMENT14, ARGUMENT15,
146 ARGUMENT16, ARGUMENT17, ARGUMENT18, ARGUMENT19, ARGUMENT20,
147 ARGUMENT21, ARGUMENT22, ARGUMENT23, ARGUMENT24, ARGUMENT25,
148 INCREMENT_DATES, RELEASE_CLASS_APP_ID, r.RELEASE_CLASS_ID,
149 CONCURRENT_PROGRAM_NAME, APPLICATION_SHORT_NAME,
150 RELEASE_CLASS_NAME, CLASS_TYPE, INCREMENT_PROC
151 into P_count, old_req_start, P_nargs,
152 P_rsub_int, P_rsub_int_unit_code,
153 p_args(1), p_args(2), p_args(3), p_args(4), p_args(5), p_args(6), p_args(7),
154 p_args(8), p_args(9), p_args(10), p_args(11), p_args(12), p_args(13), p_args(14),
155 p_args(15), p_args(16), p_args(17), p_args(18), p_args(19), p_args(20),
156 p_args(21), p_args(22), p_args(23), p_args(24), p_args(25),
157 P_increment_flag, P_sch_app_id, P_sch_id,
158 prog_name, prog_app_name,
159 P_sch_name,P_sch_type,P_inc_proc
160 from fnd_concurrent_requests r,
161 fnd_concurrent_programs p,
162 fnd_application a,
163 fnd_conc_release_classes c
164 where r.request_id = req_id
165 and r.concurrent_program_id = p.concurrent_program_id
166 and r.program_application_id = p.application_id
167 and r.program_application_id = a.application_id
168 and c.RELEASE_CLASS_ID = r.RELEASE_CLASS_ID
169 and r.RELEASE_CLASS_APP_ID = c.APPLICATION_ID;
170
171 if (P_nargs >25) then
172 select
173 Argument26, Argument27, Argument28, Argument29, Argument30,
174 Argument31, Argument32, Argument33, Argument34, Argument35,
175 Argument36, Argument37, Argument38, Argument39, Argument40,
176 Argument41, Argument42, Argument43, Argument44, Argument45,
177 Argument46, Argument47, Argument48, Argument49, Argument50,
178 Argument51, Argument52, Argument53, Argument54, Argument55,
179 Argument56, Argument57, Argument58, Argument59, Argument60,
180 Argument61, Argument62, Argument63, Argument64, Argument65,
181 Argument66, Argument67, Argument68, Argument69, Argument70,
182 Argument71, Argument72, Argument73, Argument74, Argument75,
183 Argument76, Argument77, Argument78, Argument79, Argument80,
184 Argument81, Argument82, Argument83, Argument84, Argument85,
185 Argument86, Argument87, Argument88, Argument89, Argument90,
186 Argument91, Argument92, Argument93, Argument94, Argument95,
187 Argument96, Argument97, Argument98, Argument99, Argument100
188 into p_args(26), p_args(27), p_args(28), p_args(29), p_args(30),
189 p_args(31), p_args(32), p_args(33), p_args(34), p_args(35),
190 p_args(36), p_args(37), p_args(38), p_args(39), p_args(40),
191 p_args(41), p_args(42), p_args(43), p_args(44), p_args(45),
192 p_args(46), p_args(47), p_args(48), p_args(49), p_args(50),
193 p_args(51), p_args(52), p_args(53), p_args(54), p_args(55),
194 p_args(56), p_args(57), p_args(58), p_args(59), p_args(60),
195 p_args(61), p_args(62), p_args(63), p_args(64), p_args(65),
196 p_args(66), p_args(67), p_args(68), p_args(69), p_args(70),
197 p_args(71), p_args(72), p_args(73), p_args(74), p_args(75),
198 p_args(76), p_args(77), p_args(78), p_args(79), p_args(80),
199 p_args(81), p_args(82), p_args(83), p_args(84), p_args(85),
200 p_args(86), p_args(87), p_args(88), p_args(89), p_args(90),
201 p_args(91), p_args(92), p_args(93), p_args(94), p_args(95),
202 p_args(96), p_args(97), p_args(98), p_args(99), p_args(100)
203 from Fnd_Conc_Request_Arguments
204 where Request_Id = req_id;
205
206 end if;
207
208 if P_inc_proc is null then
209 P_inc_proc := 'FND_RESUB_PRIVATE.DEFAULT_INCREMENT_PROC';
210 end if;
211
212 fnd_dflex.get_flexfield(prog_app_name, '$SRS$.' || prog_name,
213 fcontext.flexfield, flexi);
214 fnd_dflex.get_contexts(fcontext.flexfield, fcontexts);
215 fcontext.context_code := fcontexts.context_code(fcontexts.global_context);
216 fnd_dflex.get_segments(fcontext,P_fsegs, TRUE);
217
218 P_ProgName := prog_name;
219 P_ProgAppName := prog_app_name;
220
221 /* P_delta := P_ReqStartDate - old_req_start; */
222 set_resub_delta (old_req_start);
223 end;
224
225 procedure stop_toy(new_req_id in number, errnum out nocopy number,
226 errbuf out nocopy varchar2) is
227
228 argtxt varchar2(24200) := null;
229 argtxt2 varchar2(240);
230
231 begin
232
233 execute_increment_proc;
234
235 errbuf := P_errbuf;
236 errnum := P_errnum;
237
238 /* uh-oh the incrementor found a problem */
239 if (P_errnum<0) then
240 return;
241 end if;
242
243 -- Count the number of arguments and build argstr
244 P_nargs := 0;
245 argtxt := '';
246
247 for i in 1 .. 100 loop
248 exit when p_args(i) = CHR(0);
249 P_nargs := P_nargs + 1;
250 if (i > 1) then
251 argtxt := argtxt || ', ' || p_args(i);
252 else
253 argtxt := p_args(i);
254 end if;
255 end loop;
256
257 argtxt2 := substrb (argtxt, 1, 240);
258
259 UPDATE FND_CONCURRENT_REQUESTS
260 SET Argument_Text = argtxt2, NUMBER_OF_ARGUMENTS = P_nargs,
261 ARGUMENT1 = p_args(1), ARGUMENT2 = p_args(2), ARGUMENT3 = p_args(3), ARGUMENT4 = p_args(4),
262 ARGUMENT5 = p_args(5), ARGUMENT6 = p_args(6), ARGUMENT7 = p_args(7), ARGUMENT8 = p_args(8),
263 ARGUMENT9 = p_args(9), ARGUMENT10 = p_args(10), ARGUMENT11 = p_args(11),
264 ARGUMENT12 = p_args(12), ARGUMENT13 = p_args(13), ARGUMENT14 = p_args(14),
265 ARGUMENT15 = p_args(15), ARGUMENT16 = p_args(16), ARGUMENT17 = p_args(17),
266 ARGUMENT18 = p_args(18), ARGUMENT19 = p_args(19), ARGUMENT20 = p_args(20),
267 ARGUMENT21 = p_args(21), ARGUMENT22 = p_args(22),
268 ARGUMENT23 = p_args(23), ARGUMENT24 = p_args(24), ARGUMENT25 = p_args(25)
269 WHERE REQUEST_ID = new_req_id;
270
271 if (P_nargs > 25) then
272 Update Fnd_Conc_Request_Arguments
273 Set Argument26 = p_args(26), Argument27 = p_args(27), Argument28 = p_args(28),
274 Argument29 = p_args(29), Argument30 = p_args(30), Argument31 = p_args(31),
275 Argument32 = p_args(32), Argument33 = p_args(33), Argument34 = p_args(34),
276 Argument35 = p_args(35), Argument36 = p_args(36), Argument37 = p_args(37),
277 Argument38 = p_args(38), Argument39 = p_args(39), Argument40 = p_args(40),
278 Argument41 = p_args(41), Argument42 = p_args(42), Argument43 = p_args(43),
279 Argument44 = p_args(44), Argument45 = p_args(45), Argument46 = p_args(46),
280 Argument47 = p_args(47), Argument48 = p_args(48), Argument49 = p_args(49),
281 Argument50 = p_args(50), Argument51 = p_args(51), Argument52 = p_args(52),
282 Argument53 = p_args(53), Argument54 = p_args(54), Argument55 = p_args(55),
283 Argument56 = p_args(56), Argument57 = p_args(57), Argument58 = p_args(58),
284 Argument59 = p_args(59), Argument60 = p_args(60), Argument61 = p_args(61),
285 Argument62 = p_args(62), Argument63 = p_args(63), Argument64 = p_args(64),
286 Argument65 = p_args(65), Argument66 = p_args(66), Argument67 = p_args(67),
287 Argument68 = p_args(68), Argument69 = p_args(69), Argument70 = p_args(70),
288 Argument71 = p_args(71), Argument72 = p_args(72), Argument73 = p_args(73),
289 Argument74 = p_args(74), Argument75 = p_args(75), Argument76 = p_args(76),
290 Argument77 = p_args(77), Argument78 = p_args(78), Argument79 = p_args(79),
291 Argument80 = p_args(80), Argument81 = p_args(81), Argument82 = p_args(82),
292 Argument83 = p_args(83), Argument84 = p_args(84), Argument85 = p_args(85),
293 Argument86 = p_args(86), Argument87 = p_args(87), Argument88 = p_args(88),
294 Argument89 = p_args(89), Argument90 = p_args(90), Argument91 = p_args(91),
295 Argument92 = p_args(92), Argument93 = p_args(93), Argument94 = p_args(94),
296 Argument95 = p_args(95), Argument96 = p_args(96), Argument97 = p_args(97),
297 Argument98 = p_args(98), Argument99 = p_args(99), Argument100 = p_args(100)
298 where Request_Id=new_req_id;
299 end if;
300 end;
301
302
303
304 function is_request_set(req_id in number) return boolean is
305
306 typ varchar2(1);
307 begin
308 select request_type
309 into typ
310 from fnd_concurrent_requests
311 where request_id = req_id;
312
313 /* Bug 2351842: 'M' - Request set parent, 'B' - FNDMLSUB */
314 if typ in ('M', 'B') then
315 return true;
316 end if;
317
318 return false;
319 end;
320
321
322
323
324
325 procedure process_set(req_id in number, new_req_start in varchar2,
326 new_req_id in number, errnum out nocopy number, errbuf out nocopy varchar2) is
327
328 old_req_start date;
329 flexi fnd_dflex.dflex_dr;
330 fcontexts fnd_dflex.contexts_dr;
331 fcontext fnd_dflex.context_r;
332 v_app_id number(15);
333 v_prog_id number(15);
334 v_rsp_id number(15);
335 v_set_app_id number(15);
336 v_set_id number(15);
337 v_org_id number(15);
338 v_print_style varchar2(30);
339 v_save_flag varchar2(1);
340 v_nls_lang varchar2(30);
341 v_nls_terr varchar2(30);
342 v_num_char varchar2(2);
343 v_ops_instance number;
344
345 cursor c_requests is
346 select r.application_id, r.concurrent_program_id,
347 r.request_set_program_id, r.set_application_id, r.request_set_id,
348 r.print_style, r.save_output_flag, r.nls_language, r.nls_territory,
349 r.numeric_characters, r.ops_instance,
350 argument1, argument2, argument3, argument4, argument5,
351 argument6, argument7, argument8, argument9, argument10,
352 argument11, argument12, argument13, argument14, argument15,
353 argument16, argument17, argument18, argument19, argument20,
354 argument21, argument22, argument23, argument24, argument25,
355 argument26, argument27, argument28, argument29, argument30,
356 argument31, argument32, argument33, argument34, argument35,
357 argument36, argument37, argument38, argument39, argument40,
358 argument41, argument42, argument43, argument44, argument45,
359 argument46, argument47, argument48, argument49, argument50,
360 argument51, argument52, argument53, argument54, argument55,
361 argument56, argument57, argument58, argument59, argument60,
362 argument61, argument62, argument63, argument64, argument65,
363 argument66, argument67, argument68, argument69, argument70,
364 argument71, argument72, argument73, argument74, argument75,
365 argument76, argument77, argument78, argument79, argument80,
366 argument81, argument82, argument83, argument84, argument85,
367 argument86, argument87, argument88, argument89, argument90,
368 argument91, argument92, argument93, argument94, argument95,
369 argument96, argument97, argument98, argument99, argument100,
370 concurrent_program_name, application_short_name, increment_proc, org_id
371 from fnd_run_requests r,
372 fnd_concurrent_programs p,
373 fnd_application a
374 where r.parent_request_id = req_id
375 and r.concurrent_program_id = p.concurrent_program_id
376 and r.application_id = p.application_id
377 and r.application_id = a.application_id;
378
379
380 begin
381
382 RETURN_INFO(0,NULL);
383 P_reqid := req_id;
384 P_ReqStartDate := fnd_conc_date.string_to_date(new_req_start);
385
386 -- select information about the request set
387 select NVL(resub_count, 1), REQUESTED_START_DATE,
388 r.RESUBMIT_INTERVAL, r.RESUBMIT_INTERVAL_UNIT_CODE,
389 INCREMENT_DATES, RELEASE_CLASS_APP_ID, r.RELEASE_CLASS_ID,
390 RELEASE_CLASS_NAME, CLASS_TYPE
391 into P_count, old_req_start,
392 P_rsub_int, P_rsub_int_unit_code,
393 P_increment_flag, P_sch_app_id, P_sch_id,
394 P_sch_name, P_sch_type
395 from fnd_concurrent_requests r,
396 fnd_conc_release_classes c
397 where r.request_id = req_id
398 and c.RELEASE_CLASS_ID = r.RELEASE_CLASS_ID
399 and r.RELEASE_CLASS_APP_ID = c.APPLICATION_ID;
400
401 /* P_delta := P_ReqStartDate - old_req_start; */
402 set_resub_delta (old_req_start);
403
404
405 -- loop over each request in the set
406 open c_requests;
407 loop
408 fetch c_requests into
409 v_app_id, v_prog_id, v_rsp_id, v_set_app_id, v_set_id,
410 v_print_style, v_save_flag, v_nls_lang, v_nls_terr,
411 v_num_char, v_ops_instance,
412 p_args(1), p_args(2), p_args(3), p_args(4), p_args(5),
413 p_args(6), p_args(7), p_args(8), p_args(9), p_args(10),
414 p_args(11), p_args(12), p_args(13), p_args(14), p_args(15),
415 p_args(16), p_args(17), p_args(18), p_args(19), p_args(20),
416 p_args(21), p_args(22), p_args(23), p_args(24), p_args(25),
417 p_args(26), p_args(27), p_args(28), p_args(29), p_args(30),
418 p_args(31), p_args(32), p_args(33), p_args(34), p_args(35),
419 p_args(36), p_args(37), p_args(38), p_args(39), p_args(40),
420 p_args(41), p_args(42), p_args(43), p_args(44), p_args(45),
421 p_args(46), p_args(47), p_args(48), p_args(49), p_args(50),
422 p_args(51), p_args(52), p_args(53), p_args(54), p_args(55),
423 p_args(56), p_args(57), p_args(58), p_args(59), p_args(60),
424 p_args(61), p_args(62), p_args(63), p_args(64), p_args(65),
425 p_args(66), p_args(67), p_args(68), p_args(69), p_args(70),
426 p_args(71), p_args(72), p_args(73), p_args(74), p_args(75),
427 p_args(76), p_args(77), p_args(78), p_args(79), p_args(80),
428 p_args(81), p_args(82), p_args(83), p_args(84), p_args(85),
429 p_args(86), p_args(87), p_args(88), p_args(89), p_args(90),
430 p_args(91), p_args(92), p_args(93), p_args(94), p_args(95),
431 p_args(96), p_args(97), p_args(98), p_args(99), p_args(100),
432 P_Progname, P_ProgAppName, P_inc_proc, v_org_id;
433
434 exit when c_requests%NOTFOUND;
435
436 -- increment the arguments if necessary
437 if P_increment_flag = 'Y' then
438
439 if P_inc_proc is null then
440 P_inc_proc := 'FND_RESUB_PRIVATE.DEFAULT_INCREMENT_PROC';
441 end if;
442
443 fnd_dflex.get_flexfield(P_ProgAppName, '$SRS$.' || P_progname, fcontext.flexfield, flexi);
444 fnd_dflex.get_contexts(fcontext.flexfield, fcontexts);
445 fcontext.context_code := fcontexts.context_code(fcontexts.global_context);
446 fnd_dflex.get_segments(fcontext, P_fsegs, TRUE);
447
448 P_nargs := P_fsegs.nsegments;
449
450 execute_increment_proc;
451
452 errbuf := P_errbuf;
453 errnum := P_errnum;
454
455 /* uh-oh the incrementor found a problem */
456 if (P_errnum<0) then
457 return;
458 end if;
459
460 end if;
461
462 -- insert the new row into fnd_run_requests
463 insert into fnd_run_requests (application_id, concurrent_program_id,
464 parent_request_id, request_set_program_id,
465 set_application_id, request_set_id,
466 print_style, save_output_flag,
467 nls_language, nls_territory, numeric_characters, ops_instance,
468 argument1, argument2, argument3, argument4, argument5,
469 argument6, argument7, argument8, argument9, argument10,
470 argument11, argument12, argument13, argument14, argument15,
471 argument16, argument17, argument18, argument19, argument20,
472 argument21, argument22, argument23, argument24, argument25,
473 argument26, argument27, argument28, argument29, argument30,
474 argument31, argument32, argument33, argument34, argument35,
475 argument36, argument37, argument38, argument39, argument40,
476 argument41, argument42, argument43, argument44, argument45,
477 argument46, argument47, argument48, argument49, argument50,
478 argument51, argument52, argument53, argument54, argument55,
479 argument56, argument57, argument58, argument59, argument60,
480 argument61, argument62, argument63, argument64, argument65,
481 argument66, argument67, argument68, argument69, argument70,
482 argument71, argument72, argument73, argument74, argument75,
483 argument76, argument77, argument78, argument79, argument80,
484 argument81, argument82, argument83, argument84, argument85,
485 argument86, argument87, argument88, argument89, argument90,
486 argument91, argument92, argument93, argument94, argument95,
487 argument96, argument97, argument98, argument99, argument100, org_id)
488 VALUES(v_app_id, v_prog_id, new_req_id, v_rsp_id,
489 v_set_app_id, v_set_id,
490 v_print_style, v_save_flag, v_nls_lang, v_nls_terr,
491 v_num_char, v_ops_instance,
492 p_args(1), p_args(2), p_args(3), p_args(4), p_args(5),
493 p_args(6), p_args(7), p_args(8), p_args(9), p_args(10),
494 p_args(11), p_args(12), p_args(13), p_args(14), p_args(15),
495 p_args(16), p_args(17), p_args(18), p_args(19), p_args(20),
496 p_args(21), p_args(22), p_args(23), p_args(24), p_args(25),
497 p_args(26), p_args(27), p_args(28), p_args(29), p_args(30),
498 p_args(31), p_args(32), p_args(33), p_args(34), p_args(35),
499 p_args(36), p_args(37), p_args(38), p_args(39), p_args(40),
500 p_args(41), p_args(42), p_args(43), p_args(44), p_args(45),
501 p_args(46), p_args(47), p_args(48), p_args(49), p_args(50),
502 p_args(51), p_args(52), p_args(53), p_args(54), p_args(55),
503 p_args(56), p_args(57), p_args(58), p_args(59), p_args(60),
504 p_args(61), p_args(62), p_args(63), p_args(64), p_args(65),
505 p_args(66), p_args(67), p_args(68), p_args(69), p_args(70),
506 p_args(71), p_args(72), p_args(73), p_args(74), p_args(75),
507 p_args(76), p_args(77), p_args(78), p_args(79), p_args(80),
508 p_args(81), p_args(82), p_args(83), p_args(84), p_args(85),
509 p_args(86), p_args(87), p_args(88), p_args(89), p_args(90),
510 p_args(91), p_args(92), p_args(93), p_args(94), p_args(95),
511 p_args(96), p_args(97), p_args(98), p_args(99), p_args(100),
512 v_org_id);
513
514 insert into fnd_run_req_pp_actions (
515 request_set_program_id, request_set_id,
516 set_application_id,
517 parent_request_id,action_type,status_s_flag,
518 status_w_flag,status_f_flag,
519 program_application_id,program_id,arguments,
520 number_of_copies,sequence,ops_instance,
521 orig_system,orig_system_id,nls_language,
522 argument1,argument2,argument3,argument4,argument5,
523 argument6,argument7,argument8,argument9,argument10)
524 select request_set_program_id, request_set_id,
525 set_application_id,
526 new_req_id, action_type,status_s_flag,
527 status_w_flag,status_f_flag,
528 program_application_id,program_id,arguments,
529 number_of_copies,sequence,ops_instance,
530 orig_system,orig_system_id,nls_language,
531 argument1,argument2,argument3,argument4,argument5,
532 argument6,argument7,argument8,argument9,argument10
533 from fnd_run_req_pp_actions
534 where parent_request_id = req_id
535 and request_set_program_id = v_rsp_id;
536
537 end loop;
538
539 close c_requests;
540
541 exception
542 when others then
543 return_info(-1, 'FND_RESUB_PRIVATE.PROCESS_SET EXCEPTION: ' || substr(sqlerrm, 1, 100));
544
545 end;
546
547
548 ----------------------------------------------------------------------
549 --- PUBLIC PROCEDURES
550 ----------------------------------------------------------------------
551
552 FUNCTION GET_PARAM_INFO(Param_num in number, Name out nocopy varchar2) return number is
553 begin
554
555 if (Param_num>P_fsegs.nsegments) then
556 return (-1);
557 end if;
558
559 Name := P_fsegs.segment_name(Param_num);
560
561 return(0);
562 end;
563
564 FUNCTION GET_PARAM_TYPE(Param_num in number, Param_type out nocopy varchar2) return number is
565
566 vset fnd_vset.valueset_r;
567 fmt fnd_vset.valueset_dr;
568
569 begin
570
571 if (Param_num>P_fsegs.nsegments) then
572 return (-1);
573 end if;
574
575 fnd_vset.get_valueset(P_fsegs.value_set(Param_num), vset, fmt);
576 Param_type := fmt.format_type;
577
578 return(0);
579
580
581 end;
582
583 FUNCTION GET_PARAM_NUMBER(name in varchar2, Param_num out nocopy number) return number is
584
585 counter number;
586
587 begin
588 if (P_fsegs.nsegments < 1) then
589 return (-1);
590 end if;
591
592 counter := 1;
593 while ((counter < P_fsegs.nsegments) and
594 (Name <> P_fsegs.segment_name(counter))) loop
595 counter := counter + 1;
596 end loop;
597
598 IF (Name <> P_fsegs.segment_name(counter)) then
599 return (-1);
600 end if;
601
602 Param_num := counter;
603
604 return(0);
605
606 end;
607
608
609 FUNCTION GET_REQUESTED_START_DATE return date is
610 begin
611 return(P_ReqStartDate);
612 end;
613
614 FUNCTION GET_RUSUB_COUNT return number is
615 begin
616 return(P_count);
617 end;
618
619 PROCEDURE SET_PARAMETER(param_num in number, param_value in varchar2) is
620
621 begin
622 if (param_num > P_nargs) then return; end if;
623 p_args(param_num) := param_value;
624
625 end;
626
627 PROCEDURE GET_PROGRAM(PROG_NAME out nocopy VARCHAR2, PROG_APP_NAME out nocopy varchar2) is
628
629 begin
630 PROG_NAME := P_ProgName;
631 PROG_APP_NAME := P_ProgAppName;
632 end;
633
634 PROCEDURE GET_SCHEDULE(TYPE out nocopy VARCHAR2, APP_ID out nocopy number,
635 ID out nocopy number, Name out nocopy varchar2) is
636
637 begin
638 TYPE := P_sch_type;
639 APP_ID := P_sch_app_id;
640 ID := P_sch_ID;
641 Name := P_sch_name;
642 end;
643
644 FUNCTION GET_INCREMENT_FLAG return varchar2 is
645
646 begin
647 return(P_increment_flag);
648 end;
649
650
651
652 FUNCTION GET_RUSUB_DELTA return number is
653
654 begin
655 return(P_delta);
656 end;
657
658 FUNCTION GET_PARAMETER(param_num in number) return varchar2 is
659
660 begin
661 if (param_num > P_nargs) then return(NULL); end if;
662 return p_args(param_num);
663
664 end;
665
666
667 procedure default_increment_proc is
668
669 param varchar2(240);
670 retval number;
671 ptype varchar2(1);
672 date_fmt varchar2(32);
673 date_param date;
674
675 begin
676
677 if P_increment_flag <> 'Y' then
678 return_info(0, '');
679 return;
680 end if;
681
682
683 for i in 1 .. P_nargs loop
684
685 param := get_parameter(i);
686 if param is not null and param <> chr(0) then
687
688 retval := get_param_type(i, ptype);
689 if retval >= 0 then
690 if (ptype = 'X') or (ptype = 'Y') or (ptype = 'D') or (ptype = 'T') then
691 date_fmt := fnd_conc_date.get_date_format(param);
692 date_param := fnd_conc_date.string_to_date(param);
693 if date_fmt is not null then
694 if (upper(nvl(P_rsub_int_unit_code,'UNDEF')) <> 'MONTHS') then
695 param := to_char((date_param + P_delta), date_fmt);
696
697 else
698 /* 2316601: P_delta only works for MONTHS if request date |
699 | month happens to have the same days as the param month */
700 param := to_char(ADD_MONTHS(date_param, P_rsub_int), date_fmt);
701 end if;
702 set_parameter(i, param);
703 end if;
704 end if;
705 end if;
706 end if;
707
708 end loop;
709
710 return_info(0, '');
711
712 exception
713 when others then
714 return_info(-1, 'DEFAULT_INCREMENT_PROC EXCEPTION: ' || substr(sqlerrm, 1, 100));
715
716 end;
717
718
719
720 procedure process_increment(req_id in number, new_req_start in varchar2,
721 new_req_id in number, errnum out nocopy number, errbuf out nocopy varchar2) is
722
723 profile_buffer varchar2(80) := null;
724
725 begin
726
727 errnum := 0;
728
729 /*-----------------------------------------------------------------------+
730 3197639- New profile option to define how to increment date parameters:
731 S- Start Date Interval- by subtracting the requested_start_date
732 of previous request from the requested_start_date of current request
733 R- Resubmit Interval- by adding the amount of time represented by the
734 resubmit_interval and resubmit_unit_code defined for the request
735 when originally scheduled
736 +-----------------------------------------------------------------------*/
737
738 FND_PROFILE.GET ('CONC_DATE_INCREMENT_OPTION', profile_buffer);
739 if ( profile_buffer in ('S', 'R') ) then
740 P_IncrOpt := profile_buffer;
741 else
742 P_IncrOpt := 'S';
743 end if;
744
745 -- sets need to always be processed
746 if is_request_set(req_id) = TRUE then
747 process_set(req_id, new_req_start, new_req_id, errnum, errbuf);
748 else
749
750 -- don't go any further if the increment flag is not set
751 select nvl(increment_dates, 'N')
752 into P_increment_flag
753 from fnd_concurrent_requests
754 where request_id = req_id;
755
756 if P_increment_flag <> 'Y' then
757 errnum := 0;
758 return;
759 end if;
760
761 start_toy(req_id, new_req_start);
762 stop_toy (new_req_id, errnum, errbuf);
763
764
765 end if;
766
767 -- make sure we return a non-null value
768 if errnum is null then
769 errnum := 0;
770 end if;
771
772 exception
773 when others then
774 errnum := -1;
775 errbuf := 'FND_RESUB_PRIVATE.PROCESS_INCREMENT EXCEPTION: ' || substr(sqlerrm, 1, 100);
776 end;
777
778
779
780
781 end;