[Home] [Help]
PACKAGE BODY: APPS.AR_POSTBATCH_PARALLEL
Source
1 PACKAGE BODY AR_POSTBATCH_PARALLEL AS
2 /* $Header: ARPBMPB.pls 120.3 2010/03/25 14:26:50 aghoraka noship $ */
3 PG_DEBUG varchar2(1) := NVL(FND_PROFILE.value('AFLOG_ENABLED'), 'N');
4 G_ERROR varchar2(1) := 'N';
5 G_USER_ID number;
6 G_CONC_PROGRAM_ID number;
7 G_CONC_REQUEST_ID number;
8 G_PROG_APPL_ID number;
9
10 /*===========================================================================+
11 | PROCEDURE |
12 | submit_postbatch_parallel() - Submit child requests for the processing |
13 | of postbatch through submit_subrequest(). It makes a |
14 | call to update_batch_after_process() to update the |
15 | batch status after all the child requests are completed|
16 | DESCRIPTION |
17 | Submits child requests. |
18 | |
19 | SCOPE - PUBLIC |
20 | |
21 | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED |
22 | arp_util.debug - debug procedure |
23 | arp_standard.debug() - debug procedure |
24 | FND_REQUEST.wait_for_request |
25 | ARGUMENTS : IN: |
26 | p_org_id - Org ID |
27 | p_batch_id - Batch Id |
28 | p_transmission_id - Lockbox transmission ID |
29 | p_total_workers - Number of workers |
30 | |
31 | OUT: P_ERRBUF |
32 | P_RETCODE |
33 | RETURNS : NONE |
34 | |
35 | NOTES - |
36 | |
37 | MODIFICATION HISTORY - 09/01/2008 - Created by AGHORAKA |
38 | 01/02/2008 - Modified parameter list. |
39 | Added parameter p_app_unearn_disc - 24/03/2010 |
40 | for ER 9288902 |
41 +===========================================================================*/
42
43 PROCEDURE submit_postbatch_parallel(
44 P_ERRBUF OUT NOCOPY VARCHAR2,
45 P_RETCODE OUT NOCOPY NUMBER,
46 p_org_id IN NUMBER,
47 p_batch_id IN NUMBER,
48 p_transmission_id IN NUMBER,
49 p_app_unearn_disc IN VARCHAR2,
50 p_total_workers IN NUMBER DEFAULT 1 ) AS
51
52 l_worker_number NUMBER ;
53 l_complete BOOLEAN := FALSE;
54 l_batch_applied_status ar_batches.batch_applied_status%TYPE := 'POSTBATCH_WAITING';
55 l_ct_cnt NUMBER;
56 l_ct_amt NUMBER;
57 l_locked_status VARCHAR2(10);
58 l_batch_id ar_batches.batch_id%TYPE;
59 l_excep_code NUMBER(2);
60 l_matched_claim_creation VARCHAR2(2);
61 l_matched_claim_excl_cm VARCHAR2(2);
62 l_return_status VARCHAR2(1);
63 l_status ar_batches.status%TYPE;
64 l_allow_unearn_disc VARCHAR2(1);
65 l_app_unearn_disc VARCHAR2(1);
66
67 CURSOR qcbatch IS
68 SELECT ab.name batch_name,
69 abs.name batch_source_name,
70 ab.batch_date,
71 ab.gl_date,
72 ab.deposit_date,
73 ab.status,
74 ab.comments,
75 ab.batch_applied_status,
76 ab.control_count,
77 ab.control_amount,
78 cba.bank_account_name,
79 cba.bank_account_num,
80 ab.currency_code,
81 to_number(to_char(ab.gl_date, 'J')),
82 to_number(to_char(ab.deposit_date, 'J'))
83 FROM ar_batches ab,
84 ar_batch_sources abs,
85 ce_bank_accounts cba,
86 ce_bank_acct_uses_all ba
87 WHERE ab.batch_source_id = abs.batch_source_id
88 AND ab.remit_bank_acct_use_id
89 = ba.bank_acct_use_id (+)
90 AND ba.bank_account_id = cba.bank_account_id (+)
91 AND ab.org_id = ba.org_id
92 AND ab.batch_id = p_batch_id;
93
94
95 CURSOR lbbatch IS
96 SELECT ab.name batch_name,
97 abs.name batch_source_name,
98 ab.batch_date,
99 ab.gl_date,
100 ab.deposit_date,
101 ab.status,
102 ab.comments,
103 ab.batch_applied_status,
104 ab.control_count,
105 ab.control_amount,
106 cba.bank_account_name,
107 cba.bank_account_num,
108 ab.currency_code,
109 to_number(to_char(ab.gl_date, 'J')),
110 to_number(to_char(ab.deposit_date, 'J')),
111 ab.batch_id
112 FROM ar_batches ab,
113 ar_batch_sources abs,
114 ce_bank_accounts cba,
115 ce_bank_acct_uses_all ba
116 WHERE ab.batch_source_id = abs.batch_source_id
117 AND ab.remit_bank_acct_use_id
118 = ba.bank_acct_use_id
122 AND ab.transmission_id = p_transmission_id
119 AND cba.bank_account_id = ba.bank_account_id
120 AND ab.batch_applied_status = l_batch_applied_status
121 AND ab.org_id = ba.org_id
123 ORDER BY ab.batch_id;
124
125 lbr lbbatch%ROWTYPE;
126 qcr qcbatch%ROWTYPE;
127
128 TYPE req_status_typ IS RECORD (
129 request_id NUMBER(15),
130 dev_phase VARCHAR2(255),
131 dev_status VARCHAR2(255),
132 message VARCHAR2(2000),
133 phase VARCHAR2(255),
134 status VARCHAR2(255));
135
136
137 TYPE req_status_tab_typ IS TABLE OF req_status_typ INDEX BY BINARY_INTEGER;
138
139 l_req_status_tab req_status_tab_typ;
140
141 /*===========================================================================+
142 | PROCEDURE |
143 | submit_subrequest() - This process submits Postbatch process |
144 | DESCRIPTION |
145 | Submits postbatch requests. |
146 | |
147 | SCOPE - |
148 | |
149 | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED |
150 | arp_util.debug - debug procedure |
151 | FND_REQUEST.submit_request |
152 | ARGUMENTS : IN: |
153 | p_worker_number - Worker Number |
154 | p_org_id - Org_id |
155 | |
156 | OUT: None |
157 | RETURNS : NONE |
158 | |
159 | NOTES - |
160 | |
161 | MODIFICATION HISTORY - 09/01/2008 - Created by AGHORAKA |
162 +===========================================================================*/
163
164 PROCEDURE submit_subrequest (p_worker_number IN NUMBER,
165 p_app_unearn_disc IN VARCHAR2,
166 p_org_id IN NUMBER) IS
167 l_request_id NUMBER(15);
168 BEGIN
169 fnd_file.put_line(FND_FILE.LOG, 'submit_subrequest()+');
170
171 FND_REQUEST.SET_ORG_ID(p_org_id);
172
173 l_request_id := FND_REQUEST.submit_request( 'AR', 'ARCABP',
174 'Submit Post Batch',
175 SYSDATE,
176 FALSE,
177 '1',
178 NVL(p_batch_id, -1),
179 arp_standard.sysparm.set_of_books_id,
180 p_worker_number,
181 p_total_workers,
182 p_app_unearn_disc, -- ER 9288902
183 NVL(p_transmission_id, -1),
184 p_org_id);
185
186 IF (l_request_id = 0) THEN
187 arp_util.debug('Can not start for worker_id: ' ||p_worker_number );
188 P_ERRBUF := fnd_Message.get;
189 P_RETCODE := 2;
190 return;
191 ELSE
192 commit;
193 arp_util.debug('child request id: ' ||l_request_id || ' started for worker_id: ' ||p_worker_number );
194 END IF;
195
196 l_req_status_tab(p_worker_number).request_id := l_request_id;
197 arp_util.debug('submit_subrequest()-');
198
199 END submit_subrequest;
200
201 /*===========================================================================+
202 | PROCEDURE |
203 | update_batch_after_process() -This process updates the batch status |
204 | after all the receipts in the batch are processed by ARCABP. |
205 | DESCRIPTION |
206 | Updates the batch_applied_status of the batch to "PROCESSED' |
207 | and status to 'CL'/'OP' |
208 | SCOPE - |
209 | |
210 | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED |
211 | |
212 | ARGUMENTS : IN: |
213 | p_batch_id - Batch ID |
214 | p_batch_applied_status - Batch Applied Status |
215 | p_ct_cnt - Control Count |
216 | p_ct_amt - Control Amount |
217 | OUT: None |
218 | RETURNS : NONE |
219 | |
220 | NOTES - |
221 | |
222 | MODIFICATION HISTORY - 09/01/2008 - Created by AGHORAKA |
223 +===========================================================================*/
224
225
226 PROCEDURE update_batch_after_process( p_batch_id ar_batches.batch_id%TYPE,
227 p_batch_applied_status ar_batches.batch_applied_status%TYPE,
228 p_ct_cnt NUMBER,
229 p_ct_amt NUMBER
233 l_err_receipt_cnt NUMBER;
230 ) AS
231 l_act_app_cnt NUMBER;
232 l_act_app_amt NUMBER;
234 BEGIN
235 fnd_file.put_line( FND_FILE.LOG, 'Process_batch_for_update()+');
236
237 IF ( p_batch_applied_status <> 'PROCESSED' AND
238 p_batch_applied_status <> 'POSTBATCH_WAITING') THEN
239
240
241 fnd_file.put_line(FND_FILE.LOG, 'Batch_id : '||p_batch_id||' : Control count : '||p_ct_cnt||' : Control Amount : '||p_ct_amt);
242
243 fnd_file.put_line( FND_FILE.LOG, ' Getting the applied count and applied amount');
244
245 SELECT count(*), nvl(sum(cr.amount),0)
246 INTO l_act_app_cnt, l_act_app_amt
247 FROM ar_cash_receipts cr,
248 ar_cash_receipt_history crh
249 WHERE cr.cash_receipt_id = crh.cash_receipt_id
250 AND crh.batch_id = p_batch_id
251 AND cr.status = 'APP';
252
253 IF (( l_act_app_cnt = p_ct_cnt ) AND ( l_act_app_amt = p_ct_amt )) THEN
254 l_status := 'CL';
255 ELSE
256 l_status := 'OP';
257 END IF;
258
259 SELECT COUNT(1)
260 INTO l_err_receipt_cnt
261 FROM ar_interim_cash_receipts
262 WHERE batch_id = p_batch_id;
263
264 IF ( l_err_receipt_cnt = 0) THEN
265 fnd_file.put_line( FND_FILE.LOG, 'Updating batch_applied_status to PROCESSED.' );
266 UPDATE ar_batches
267 SET batch_applied_status = 'PROCESSED',
268 status = l_status,
269 last_updated_by = G_USER_ID,
270 last_update_date = sysdate,
271 program_id = G_CONC_PROGRAM_ID,
272 request_id = G_CONC_REQUEST_ID,
273 program_application_id = G_PROG_APPL_ID,
274 program_update_date = sysdate
275 WHERE batch_id = p_batch_id;
276 ELSE
277 fnd_file.put_line( FND_FILE.LOG, 'Updating batch_applied_status to POSTBATCH_WAITING.' );
278 update_batch_for_rerun( l_status, p_batch_id);
279 END IF;
280
281 commit;
282 fnd_file.put_line( FND_FILE.LOG, 'End of Posting');
283
284 END IF;
285 END update_batch_after_process;
286
287 BEGIN
288 fnd_file.put_line( FND_FILE.LOG, 'submit_postbatch_parallel()+');
289 /* Initialize the global values */
290 G_USER_ID := FND_GLOBAL.user_id;
291 G_CONC_PROGRAM_ID := FND_GLOBAL.conc_program_id;
295 mo_global.init('AR');
292 G_CONC_REQUEST_ID := FND_GLOBAL.conc_request_id;
293 G_PROG_APPL_ID := FND_GLOBAL.prog_appl_id;
294
296
297 IF p_org_id is not null THEN
298 mo_global.set_policy_context('S', p_org_id);
299 arp_standard.init_standard(p_org_id);
300 END IF;
301
302 IF p_batch_id IS NULL AND p_transmission_id IS NULL THEN
303 FND_MESSAGE.set_name ('AR', 'AR_ARGUEMENTS_FAIL' );
304 APP_EXCEPTION.raise_exception;
305 END IF;
306
307 IF PG_DEBUG in ('Y', 'C') THEN
308 arp_standard.debug( 'Org_id = '||p_org_id );
309 arp_standard.debug( 'Batch Id = '||p_batch_id );
310 arp_standard.debug( 'Transmission_id = '||p_transmission_id );
311 arp_standard.debug( ' Apply Unearned Discount = '||p_app_unearn_disc);
312 arp_standard.debug( 'Total Workers = '||p_total_workers );
313 END IF;
314 /* ******************************************************************** *
315 * Added for ER 9288902 *
316 * Apply Unearned Discount option is dependent on the 'Allow Unearned *
317 * Discount' value set at system parameters. If this value is set to 'N'*
318 * in system parameters then unearned discounts are not calculated even *
319 * if user selects 'Y' for Apply unearned Discounts during the submission
320 * of Postbatch Master Program *
321 * ******************************************************************** */
322 l_app_unearn_disc := NVL(p_app_unearn_disc, 'N');
323 SELECT NVL(unearned_discount, 'N')
324 INTO l_allow_unearn_disc
325 FROM ar_system_parameters;
326
327 IF l_allow_unearn_disc = 'N' AND l_app_unearn_disc = 'Y' THEN
328 l_app_unearn_disc := 'N';
329 fnd_file.put(FND_FILE.LOG, 'NOTE : Allow Unearned Discounts is set to NO in system options.');
330 fnd_file.put_line(FND_FILE.LOG, ' Hence QuickCash CAN NOT apply unearned discounts during this run');
331 fnd_file.put(FND_FILE.LOG, ' If you want QuickCash to calculate unearned discounts during application, then ');
332 fnd_file.put(FND_FILE.LOG, 'set ''Allow Unearned Discounts'' to ''Y'' in');
333 fnd_file.put_line(FND_FILE.LOG, ' system options and then submit ''Postbatch Master Program''');
334 fnd_file.put(FND_FILE.LOG, ' with ''Apply Unearned Discounts'' parameter set to ''Yes''');
335 END IF;
336 -- Validate batches supplied in the parameters.
337 IF NVL(p_transmission_id,-1) <> -1 THEN
338 -- This is a Lockbox batch.
342 fnd_file.put_line( FND_FILE.OUTPUT, fnd_message.get_string('AR', 'ARCABP_BEEN_PROCESSED'));
339 FOR lbr IN lbbatch LOOP
340 IF lbr.batch_applied_status = 'PROCESSED' THEN
341 fnd_file.put( FND_FILE.OUTPUT, '***' || lbr.batch_name ||' : ');
343 ELSIF lbr.batch_applied_status <> 'POSTBATCH_WAITING' THEN
344 fnd_file.put( FND_FILE.OUTPUT, '***' || lbr.batch_name ||' : ');
345 fnd_file.put_line( FND_FILE.OUTPUT, fnd_message.get_string('AR', 'ARCABP_NOT_VALID_BATCH'));
346 ELSE
347 SELECT 'locked'
348 INTO l_locked_status
349 FROM ar_batches
350 WHERE batch_id = lbr.batch_id
351 FOR UPDATE OF batch_applied_status, status,
352 last_update_date, last_updated_by;
353 UPDATE ar_batches
354 SET batch_applied_status = 'IN_PROCESS',
355 last_update_date = sysdate,
356 last_updated_by = G_USER_ID,
357 program_id = G_CONC_PROGRAM_ID,
358 request_id = G_CONC_REQUEST_ID,
359 program_application_id = G_PROG_APPL_ID,
360 program_update_date = sysdate
361 WHERE batch_id = lbr.batch_id;
362 l_batch_applied_status := 'IN_PROCESS';
363 END IF;
364 END LOOP;
365 IF l_batch_applied_status <> 'IN_PROCESS' THEN
366 fnd_file.put_line( FND_FILE.OUTPUT, '**** No Batches To Process ****');
367 goto leave_program;
368 END IF;
369 ELSE
370 -- This is a Quick cash batch.
371 FOR qcr IN qcbatch LOOP
372 IF qcr.batch_applied_status = 'PROCESSED' THEN
373 fnd_file.put( FND_FILE.OUTPUT, '***' || qcr.batch_name ||' : ');
374 fnd_file.put_line( FND_FILE.OUTPUT, fnd_message.get_string('AR', 'ARCABP_BEEN_PROCESSED'));
375 goto leave_program;
376 ELSIF qcr.batch_applied_status <> 'POSTBATCH_WAITING' THEN
377 fnd_file.put( FND_FILE.OUTPUT, '***' || qcr.batch_name ||' : ');
378 fnd_file.put_line( FND_FILE.OUTPUT, fnd_message.get_string('AR', 'ARCABP_NOT_VALID_BATCH'));
379 goto leave_program;
380 ELSE
381 SELECT 'locked'
382 INTO l_locked_status
383 FROM ar_batches
384 WHERE batch_id = p_batch_id
385 FOR UPDATE OF batch_applied_status, status,
386 last_update_date, last_updated_by;
387 UPDATE ar_batches
388 SET batch_applied_status = 'IN_PROCESS',
389 last_update_date = sysdate,
390 last_updated_by = G_USER_ID,
391 program_id = G_CONC_PROGRAM_ID,
392 request_id = G_CONC_REQUEST_ID,
393 program_application_id = G_PROG_APPL_ID,
394 program_update_date = sysdate
395 WHERE batch_id = p_batch_id;
396 END IF;
397 END LOOP;
398
399 END IF;
400 /* ------------------------------------------------------------- *
401 * Added for Bug 7141803 *
402 * We may need to gather stats on interim tables based on the *
403 * profile option 'AR_LB_QC_GATHER_STATS'. By default stats will *
404 * always be gathered unless the profile option is set to 'NO' *
405 * ------------------------------------------------------------- */
406 IF nvl(fnd_profile.value_specific('AR_LB_QC_GATHER_STATS',
407 G_USER_ID), 'Y') <> 'N' THEN
408 DECLARE
409 l_schema VARCHAR2(30);
410 l_status VARCHAR2(1);
411 l_industry VARCHAR2(1);
412 l_tname1 VARCHAR2(30) := 'AR_INTERIM_CASH_RECEIPTS_ALL';
413 l_tname2 VARCHAR2(30) := 'AR_INTERIM_CASH_RCPT_LINES_ALL';
414 no_product_info exception;
415 BEGIN
416 IF (NOT fnd_installation.get_app_info(
417 application_short_name=>'AR'
418 , status => l_status
419 , industry => l_industry
420 , oracle_schema => l_schema)) THEN
421 fnd_file.put_line(fnd_file.log, 'EXCEPTION:Failed to get information for AR');
422 RAISE no_product_info;
423 END IF;
424
425 fnd_stats.gather_table_stats(ownname=>l_schema,
426 tabname=>l_tname1);
427 fnd_stats.gather_table_stats(ownname=>l_schema,
428 tabname=>l_tname2);
429 EXCEPTION
430 WHEN OTHERS THEN
431 fnd_file.put_line(fnd_file.log, 'Error in Gather stats' || SQLERRM(SQLCODE));
432 RAISE;
433 END;
434 fnd_file.put_line(fnd_file.LOG, 'AR:ARPBMPB Gathered Stats on Interim Tables');
435 END IF;
436 --Invoke the child programs
437 FOR l_worker_number IN 1..p_total_workers LOOP
438 fnd_file.put_line(FND_FILE.LOG, 'worker # : ' || l_worker_number );
439 submit_subrequest (l_worker_number, l_app_unearn_disc, p_org_id);
440 END LOOP;
441
442 IF PG_DEBUG in ('Y', 'C') THEN
443 arp_standard.debug ( 'The Master program waits for child processes');
444 END IF;
445
446 -- Wait for the completion of the submitted requests
447 FOR i in 1..p_total_workers LOOP
448
449 l_complete := FND_CONCURRENT.WAIT_FOR_REQUEST(
450 request_id => l_req_status_tab(i).request_id,
451 interval => 30,
452 max_wait =>144000,
453 phase =>l_req_status_tab(i).phase,
454 status =>l_req_status_tab(i).status,
455 dev_phase =>l_req_status_tab(i).dev_phase,
456 dev_status =>l_req_status_tab(i).dev_status,
457 message =>l_req_status_tab(i).message);
458
459 IF l_req_status_tab(i).dev_phase <> 'COMPLETE' THEN
460 P_RETCODE := 2;
461 fnd_file.put_line( FND_FILE.LOG, 'Worker # '|| i||' has a phase '||l_req_status_tab(i).dev_phase);
462 ELSIF l_req_status_tab(i).dev_phase = 'COMPLETE'
463 AND l_req_status_tab(i).dev_status <> 'NORMAL' THEN
464 P_RETCODE := 2;
465 fnd_file.put_line( FND_FILE.LOG, 'Worker # '|| i||' completed with status '||l_req_status_tab(i).dev_status);
466 ELSE
467 fnd_file.put_line( FND_FILE.LOG, 'Worker # '|| i||' completed successfully');
471
468 END IF;
469
470 END LOOP;
472 fnd_file.put( FND_FILE.LOG, 'Return Code : ' || p_retcode);
473
474 IF NVL( p_retcode, -1) = 2 THEN
475 fnd_file.put_line( FND_FILE.LOG, ' - Child program failed.' );
476 ELSE
477 fnd_file.put_line( FND_FILE.LOG, ' - Child programs completed successfully' );
478 END IF;
479
480 IF NVL(p_transmission_id, -1) <> -1 THEN /* Lockbox batch */
481 FOR lbr IN lbbatch LOOP
482 update_batch_after_process( lbr.batch_id,
483 lbr.batch_applied_status,
484 lbr.control_count,
485 lbr.control_amount );
486 END LOOP;
487 ELSE
488 FOR qcr IN qcbatch LOOP /* Quick cash batch */
489 update_batch_after_process( p_batch_id,
490 qcr.batch_applied_status,
491 qcr.control_count,
492 qcr.control_amount );
493 END LOOP;
494 END IF;
495
496 IF NVL( p_transmission_id, -1) <> -1 THEN
497
498 fnd_file.put_line( FND_FILE.LOG, 'Updating transmission status.');
499
500 UPDATE ar_transmissions t
501 SET status = 'CL',
502 last_updated_by = G_USER_ID,
503 last_update_date = trunc(sysdate)
504 WHERE transmission_id = p_transmission_id
505 AND NOT EXISTS ( SELECT 'pending post'
506 FROM ar_batches b
507 WHERE b.transmission_id =
508 t.transmission_id
509 AND batch_applied_status
510 = 'POSTBATCH_WAITING' )
511 AND NOT EXISTS ( SELECT 'pending transfer'
512 FROM ar_payments_interface pi
513 WHERE pi.transmission_id =
514 t.transmission_id);
515 END IF;
516
517 AR_BUS_EVENT_COVER.Raise_PostBatch_Run_Event( G_CONC_REQUEST_ID );
518
519 <<leave_program>>
520 commit;
521 fnd_file.put_line( FND_FILE.LOG, 'submit_postbatch_parallel()-');
522
523 EXCEPTION
524
525 WHEN OTHERS THEN
526 RAISE ;
527
528 END submit_postbatch_parallel;
529
530 /*===========================================================================+
531 | PROCEDURE |
532 | update_batch_for_rerun() - If any error occurs during the postbatch |
533 | process, the batch_applied_status is put back to 'POSTBATCH_WAITING' |
534 | for rerun at later time. |
535 | DESCRIPTION |
536 | Updates batch_applied_Status to 'POSTBATCH_WAITING' |
537 | |
538 | SCOPE - PUBLIC |
539 | |
540 | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED |
541 | ARGUMENTS : IN: |
542 | p_status - Batch Status |
543 | p_batch_id - Batch Id |
544 | |
545 | OUT: None |
546 | RETURNS : NONE |
547 | |
548 | NOTES - |
549 | |
550 | MODIFICATION HISTORY - 09/01/2008 - Created by AGHORAKA |
551 +===========================================================================*/
552
553
554 PROCEDURE update_batch_for_rerun( p_status IN ar_batches.status%TYPE,
555 p_batch_id IN NUMBER) AS
556 BEGIN
557 fnd_file.put_line( FND_FILE.LOG, 'update_batch_for_rerun()+');
558
559 UPDATE ar_batches
560 SET batch_applied_status = 'POSTBATCH_WAITING',
561 status = p_status,
562 last_updated_by = G_USER_ID,
563 last_update_date = sysdate,
564 program_id = G_CONC_PROGRAM_ID,
565 request_id = G_CONC_REQUEST_ID,
566 program_application_id = G_PROG_APPL_ID,
567 program_update_date = sysdate
568 WHERE batch_id = p_batch_id;
569
570 commit;
571
572 fnd_file.put_line( FND_FILE.LOG, 'update_batch_for_rerun()-');
573 END update_batch_for_rerun;
574
575 END AR_POSTBATCH_PARALLEL;