[Home] [Help]
PACKAGE BODY: APPS.FUN_AR_BATCH_TRANSFER
Source
1 PACKAGE BODY FUN_AR_BATCH_TRANSFER AS
2 /* $Header: funartrb.pls 120.15.12010000.4 2008/08/12 08:01:42 makansal ship $ */
3
4 FUNCTION has_valid_conversion_rate (
5 p_from_currency IN varchar2,
6 p_to_currency IN varchar2,
7 p_exchange_type IN varchar2,
8 p_exchange_date IN date) RETURN number
9 IS
10 l_has_rate number;
11 BEGIN
12 IF (p_from_currency = p_to_currency) THEN
13 RETURN 1;
14 END IF;
15
16 SELECT COUNT(conversion_rate) INTO l_has_rate
17 FROM gl_daily_rates
18 WHERE from_currency = p_from_currency AND
19 to_currency = p_to_currency AND
20 conversion_type = p_exchange_type AND
21 conversion_date = p_exchange_date;
22
23 IF (l_has_rate = 0) THEN
24 RETURN 0;
25 END IF;
26 RETURN 1;
27 END has_valid_conversion_rate;
28
29
30
31 Procedure ar_batch_transfer (errbuf OUT NOCOPY VARCHAR2,
32 retcode OUT NOCOPY NUMBER,
33 p_org_id IN VARCHAR2 DEFAULT NULL,
34 p_le_id IN VARCHAR2 DEFAULT NULL,
35 p_date_low IN VARCHAR2 DEFAULT NULL,
36 p_date_high IN VARCHAR2 DEFAULT NULL,
37 p_run_autoinvoice_import IN VARCHAR2 DEFAULT 'N'
38 ) is
39
40
41 -- AR Batch Transfer Program
42
43 l_date_low date;
44 l_date_high date;
45 l_initiator_id number;
46 l_le_id number;
47 l_ledger_id number;
48 l_recipient_id number;
49 l_ap_le_id number;
50 l_trx_type_id number;
51 l_ou_id number;
52 l_ap_ou_id number;
53 l_error number;
54 l_memo_line_name varchar2(2000);
55 l_ar_trx_type_name varchar2(2000);
56 l_memo_line_id number;
57 l_ar_trx_type_id number;
58 l_default_term_id number;
59 l_ar_period_count number;
60 l_batch_id number;
61 l_trx_id number;
62 l_count number := 0;
63 l_line AR_INTERFACE_LINE;
64 l_dist_line AR_INTERFACE_DIST_LINE;
65 l_success boolean;
66 l_customer_id number;
67 l_address_id number;
68 l_site_use_id number;
69 x_msg_data varchar2(1000);
70 l_return_status varchar2(1);
71 l_message_count number;
72 l_message_data varchar2(1000);
73 l_counter number;
74 l_org_name varchar2(240);
75 l_le_name varchar2(240);
76 l_batch_num varchar2(15);
77 l_trx_num varchar2(15);
78 l_ledger_currency_code varchar2(15);
79 l_request_id number;
80 Request_Submission_Failure EXCEPTION;
81 TYPE ORG_ID_TAB_TYPE IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
82 org_id_table ORG_ID_TAB_TYPE;
83 l_previous_org_id number;
84 l_run_autoinvoice_import varchar2(3);
85
86
87 -- Cursor to retrieve the line information
88 CURSOR c_line (p_batch_id IN NUMBER,
89 p_trx_id IN NUMBER) IS
90 SELECT
91 decode(ftl.init_amount_cr,0, ftl.init_amount_dr,
92 NULL, ftl.init_amount_dr,
93 (ftl.init_amount_cr * (-1))),
94 ftl.line_id
95 FROM FUN_TRX_LINES ftl
96 WHERE p_trx_id = ftl.trx_id;
97
98 -- cursor to retrieve the initiator and recipient party / LE ID
99
100 cursor c_info IS
101 SELECT ftb.batch_id,
102 ftb.batch_number,
103 fth.trx_id,
104 fth.trx_number,
105 ftb.initiator_id,
106 ftb.from_le_id,
107 ftb.from_ledger_id,
108 fth.recipient_id,
109 fth.to_le_id,
110 ftb.trx_type_id,
111 ftb.exchange_rate_type,
112 ftb.currency_code,
113 ledgers.currency_code,
114 ftb.description,
115 ftb.gl_date,
116 ftb.batch_id,
117 fth.trx_id,
118 ftb.from_ledger_id,
119 ftb.batch_date
120
121 FROM FUN_TRX_BATCHES ftb,
122 FUN_TRX_HEADERS fth,
123 GL_LEDGERS ledgers
124
125 WHERE fth.batch_id= ftb.batch_id
126 AND fth.status='APPROVED'
127 AND ledgers.ledger_id = ftb.from_ledger_id
128 AND trunc(ftb.gl_date) between trunc(nvl(l_date_low,ftb.gl_date-1))
129 and trunc(nvl(l_date_high, ftb.gl_date+1))
130 AND nvl(p_org_id,1) = nvl2(p_org_id,fun_tca_pkg.get_ou_id(ftb.initiator_id),1)
131 AND ftb.from_le_id = nvl(p_le_id,ftb.from_le_id)
132 AND fth.invoice_flag = 'Y'
133 ORDER BY ftb.initiator_id;
134
135 -- cursor to retrieve the distribution information
136
137 CURSOR c_dist (p_trx_id IN NUMBER) IS
138 SELECT
139 DECODE(FDL.dist_type_flag, 'L',
140 decode(fdl.amount_cr,
141 0, fdl.amount_dr * (-1),
142 NULL, fdl.amount_dr * (-1),
143 fdl.amount_cr),
144 'R', NULL,
145 NULL),
146 DECODE(FDL.dist_type_flag, 'L', NULL,
147 'R', 100,
148 NULL),
149 DECODE(FDL.dist_type_flag, 'R', 'REC',
150 'L', 'REV',
151 NULL),
152 fdl.ccid,
153 fth.batch_id,
154 fth.trx_id,
155 ftl.line_id
156 FROM FUN_TRX_HEADERS fth,
157 FUN_TRX_LINES ftl,
158 FUN_DIST_LINES fdl
159 WHERE ftl.trx_id=fth.trx_id
160 AND fth.trx_id = p_trx_id
161 AND ftl.line_id=fdl.line_id
162 AND fdl.party_type_flag='I';
163
164 CURSOR period_open_csr (p_trx_date DATE,
165 p_ledger_id NUMBER) IS
166 SELECT COUNT(*)
167 FROM gl_period_statuses glps
168 WHERE TRUNC(p_trx_date) BETWEEN glps.start_date AND glps.end_date
169 AND glps.application_id = 222
170 AND glps.set_of_books_id = p_ledger_id
171 AND glps.adjustment_period_flag <> 'Y'
172 AND glps.closing_status IN ('O','F');
173
174 CURSOR ou_valid_csr (p_ou_id NUMBER,
175 p_trx_date DATE) IS
176 SELECT count(*)
177 FROM hr_operating_units ou
178 WHERE organization_id = p_ou_id
179 AND date_from <= p_trx_date
180 AND NVL(date_to, p_trx_date) >= p_trx_date;
181
182 BEGIN
183
184 l_error := 1;
185 l_counter := 0;
186 l_date_low := TRUNC(fnd_date.canonical_to_date(p_date_low));
187 l_date_high:= TRUNC(fnd_date.canonical_to_date(p_date_high));
188 l_previous_org_id := 0;
189 l_ou_id := 0;
190
191 IF (p_run_autoinvoice_import = 'Y') THEN
192 l_run_autoinvoice_import := 'Yes';
193 ELSE
194 l_run_autoinvoice_import := 'No';
195 END IF;
196
197 IF (p_org_id is not null) THEN
198 select hr.name into l_org_name from hr_operating_units hr
199 where hr.organization_id = p_org_id;
200 END IF;
201
202 IF (p_le_id is not null) THEN
203 select xle.name into l_le_name from xle_entity_profiles xle
204 where xle.legal_entity_id = p_le_id;
205 END IF;
206
207 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Transfer Intercompany Transactions to Receivables Report Date: '||to_char(sysdate,'DD-MON-YYYY HH:MM'));
208 FND_FILE.NEW_LINE(FND_FILE.OUTPUT,2 );
209 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' Operating Unit: ' || l_org_name);
210 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' Legal Entity: ' || l_le_name);
211 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' GL Date From: ' || to_char(l_date_low, 'DD-MON-YYYY'));
212 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' GL Date To: ' || to_char(l_date_high,'DD-MON-YYYY'));
213 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'Submit AR Auto Invoice: ' || l_run_autoinvoice_import);
214 FND_FILE.NEW_LINE(FND_FILE.OUTPUT,2 );
215 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'Batch Number Transaction Number Transfer Status' );
216 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'------------ ------------------ ----------------');
217
218
219 open c_info;
220
221 Loop
222
223 fetch c_info into
224 l_batch_id,
225 l_batch_num,
226 l_trx_id,
227 l_trx_num,
228 l_initiator_id,
229 l_le_id,
230 l_ledger_id,
231 l_recipient_id,
232 l_ap_le_id,
233 l_trx_type_id,
234 l_line.conversion_type,
235 l_line.currency_code,
236 l_ledger_currency_code,
237 l_line.description,
238 l_line.gl_date,
239 l_line.interface_line_attribute1,
240 l_line.interface_line_attribute2,
241 l_line.set_of_books_id,
242 l_line.trx_date;
243
244 exit when c_info%NOTFOUND;
245 l_counter := l_counter + 1;
246
247 -- check AR Setup for records
248
249 -- retrieve l_ou_id and l_ap_ou_id
250 l_ou_id := FUN_TCA_PKG.get_ou_id (l_initiator_id);
251 l_ap_ou_id := FUN_TCA_PKG.get_ou_id(l_recipient_id);
252
253 IF (l_ou_id is null) then
254 l_error := 2;
255 fnd_message.set_name('FUN','FUN_XFER_AR_IOU_NULL');
256 END IF;
257
258 IF (l_ap_ou_id is null) then
259 l_error := 2;
260 fnd_message.set_name('FUN','FUN_XFER_AR_ROU_NULL');
261 END IF;
262
263 -- Validate AR OU Id.
264 OPEN ou_valid_csr( l_ou_id, l_line.trx_date);
265 FETCH ou_valid_csr INTO l_count;
266 CLOSE ou_valid_csr;
267 IF l_count < 1
268 THEN
269 l_error := 2;
270 fnd_message.set_name('FUN','FUN_XFER_AR_IOU_NULL');
271 END IF;
272
273 -- Retrieve memo line, ar trx type
274 fun_trx_types_pub.Get_Trx_Type_Map(l_ou_id, l_trx_type_id,
275 l_line.trx_date,
276 l_memo_line_id, l_memo_line_name,
277 l_ar_trx_type_id, l_ar_trx_type_name,
278 l_default_term_id);
279
280 IF (l_memo_line_name IS NULL) OR (l_ar_trx_type_name IS NULL) THEN
281 l_error := 2;
282 fnd_message.set_name('FUN','FUN_XFER_AR_MEMO_NULL');
283 END IF;
284
285
286 -- Check if AR period open
287
288 l_ar_period_count := 0;
289
290 OPEN period_open_csr(l_line.trx_date,
291 l_ledger_id);
292
293 FETCH period_open_csr INTO l_ar_period_count;
294
295 IF l_ar_period_count < 1 THEN
296 l_error := 2;
297 fnd_message.set_name('FUN','FUN_XFER_AR_PERIOD');
298 END IF;
299
300 CLOSE period_open_csr;
301
302 -- Obtain the customer_id and address_id
303
304
305 -- For customer association, transacting LE is actually the
306 -- recipient LE.
307 l_success :=
308 FUN_TRADING_RELATION.get_customer(
309 p_source => 'INTERCOMPANY',
310 p_trans_le_id => l_ap_le_id,
311 p_tp_le_id => l_le_id,
312 p_trans_org_id => l_ap_ou_id,
313 p_tp_org_id => l_ou_id,
314 p_trans_organization_id => l_recipient_id,
315 p_tp_organization_id => l_initiator_id,
316 x_msg_data => x_msg_data,
317 x_cust_acct_id => l_customer_id,
318 x_cust_acct_site_id => l_address_id,
319 x_site_use_id => l_site_use_id);
320
321 IF (l_success<>true) OR (l_customer_id is NULL) THEN
322 l_error := 2;
323 fnd_message.set_name('FUN','FUN_XFER_AR_CST_ID_NULL');
324 END IF;
325 IF (l_address_id is NULL) THEN
326 l_error := 2;
327 fnd_message.set_name('FUN','FUN_XFER_AR_ADD_ID_NULL');
328 END IF;
329
330 IF (has_valid_conversion_rate(l_line.currency_code,l_ledger_currency_code,l_line.conversion_type,l_line.gl_date)=0) THEN
331 l_error := 2;
332 fnd_message.set_name('FUN', 'FUN_CONV_RATE_NOT_FOUND');
333 END IF;
334
335 -- transfer to RA_INTERFACE_LINES
336
337
338 IF l_error = 1 THEN
339
340 open c_line(l_batch_id, l_trx_id);
341
342 LOOP
343
344 -- Amounts Transferred to AR should be
345 -- Init Trx Amount: 1000 Cr, AR Amount: -1000
346 -- Init Trx Amount: -1000 Cr, AR Amount: 1000
347 -- Init Trx Amount: 1000 Dr, AR Amount: 1000
348 -- Init Trx Amount: -1000 Dr, AR Amount: -1000
349
350 FETCH c_line INTO
351
352 l_line.amount,
353 l_line.interface_line_attribute3;
354
355 EXIT WHEN c_line%NOTFOUND;
356
357 l_line.org_id:= l_ou_id;
358 l_line.BATCH_SOURCE_NAME:= 'Global Intercompany';
359 l_line.INTERFACE_LINE_CONTEXT:='INTERNAL_ALLOCATIONS';
360 l_line.LINE_TYPE:='LINE';
361 l_line.UOM_NAME :='Each';
362 l_count:=l_count+1;
363
364
365 l_line.orig_system_bill_customer_id:= l_customer_id;
366 l_line.orig_system_bill_address_id := l_address_id;
367
368
369
370 -- Bug: 6788142 Added PRIMARY_SALESREP_ID field in the insert query.
371 -- insert into AR Interface table
372 -- Bug: 7271703 Populating the INTERFACE_LINE_ATTRIBUTE4 with the
373 -- batch number.
374 INSERT INTO RA_INTERFACE_LINES_ALL
375 (
376 AMOUNT,
377 BATCH_SOURCE_NAME,
378 CONVERSION_TYPE,
379 CURRENCY_CODE,
380 CUST_TRX_TYPE_ID,
381 CUST_TRX_TYPE_NAME,
382 DESCRIPTION,
383 GL_DATE,
384 INTERFACE_LINE_ATTRIBUTE1,
385 INTERFACE_LINE_ATTRIBUTE2,
386 INTERFACE_LINE_ATTRIBUTE3,
387 INTERFACE_LINE_ATTRIBUTE4,
388 INTERFACE_LINE_CONTEXT,
389 LINE_TYPE,
390 MEMO_LINE_ID,
391 MEMO_LINE_NAME,
392 ORG_ID,
393 ORIG_SYSTEM_BILL_ADDRESS_ID,
394 ORIG_SYSTEM_BILL_CUSTOMER_ID,
395 SET_OF_BOOKS_ID,
396 TRX_DATE,
397 UOM_NAME,
398 TAXABLE_FLAG,
399 TERM_ID,
400 LEGAL_ENTITY_ID,
401 SOURCE_EVENT_CLASS_CODE,
402 PRIMARY_SALESREP_ID
403 )
404 VALUES
405 (
406 l_line.AMOUNT,
407 l_line.BATCH_SOURCE_NAME,
408 l_line.CONVERSION_TYPE,
409 l_line.CURRENCY_CODE,
410 l_ar_trx_type_id,
411 l_ar_trx_type_name,
412 NVL(l_line.DESCRIPTION,
413 'Transactions from Global Intercompany'),
414 l_line.GL_DATE,
415 l_line.INTERFACE_LINE_ATTRIBUTE1,
416 l_line.INTERFACE_LINE_ATTRIBUTE2,
417 l_line.INTERFACE_LINE_ATTRIBUTE3,
418 l_batch_num,
419 l_line.INTERFACE_LINE_CONTEXT,
420 l_line.LINE_TYPE,
421 l_memo_line_id,
425 l_line.ORIG_SYSTEM_BILL_CUSTOMER_ID,
422 l_memo_line_name,
423 l_line.ORG_ID,
424 l_line.ORIG_SYSTEM_BILL_ADDRESS_ID,
426 l_line.SET_OF_BOOKS_ID,
427 l_line.TRX_DATE,
428 l_line.UOM_NAME,
429 'S' ,
430 l_default_term_id,
431 l_le_id,
432 'INTERCOMPANY_TRX',
433 '-3'
434 );
435
436 -- Bug No. 6788142. Inserting into RA_INTERFACE_SALESCREDITS_ALL table
437
438 INSERT INTO RA_INTERFACE_SALESCREDITS_ALL
439 (
440 INTERFACE_LINE_CONTEXT ,
441 INTERFACE_LINE_ATTRIBUTE1 ,
442 INTERFACE_LINE_ATTRIBUTE2 ,
443 INTERFACE_LINE_ATTRIBUTE3 ,
444 INTERFACE_LINE_ATTRIBUTE4 ,
445 INTERFACE_LINE_ATTRIBUTE5 ,
446 INTERFACE_LINE_ATTRIBUTE6 ,
447 INTERFACE_LINE_ATTRIBUTE7 ,
448 INTERFACE_LINE_ATTRIBUTE8 ,
449 INTERFACE_LINE_ATTRIBUTE9 ,
450 INTERFACE_LINE_ATTRIBUTE10 ,
451 INTERFACE_LINE_ATTRIBUTE11 ,
452 INTERFACE_LINE_ATTRIBUTE12 ,
453 INTERFACE_LINE_ATTRIBUTE13 ,
454 INTERFACE_LINE_ATTRIBUTE14 ,
455 INTERFACE_LINE_ATTRIBUTE15,
456 SALES_CREDIT_PERCENT_SPLIT,
457 SALES_CREDIT_TYPE_ID,
458 SALESREP_ID,
459 ORG_ID
460 )
461 VALUES
462 (
463 l_line.INTERFACE_LINE_CONTEXT,
464 l_line.INTERFACE_LINE_ATTRIBUTE1,
465 l_line.INTERFACE_LINE_ATTRIBUTE2,
466 l_line.INTERFACE_LINE_ATTRIBUTE3,
467 NULL,
468 NULL,
469 NULL,
470 NULL,
471 NULL,
472 NULL,
473 NULL,
474 NULL,
475 NULL,
476 NULL,
477 NULL,
478 NULL,
479 '100',
480 '1',
481 '-3',
482 l_line.ORG_ID
483 );
484
485 IF l_previous_org_id <> l_ou_id THEN
486 ORG_ID_TABLE(org_id_table.count+1) := l_ou_id;
487 l_previous_org_id := l_ou_id;
488 END IF;
489
490 End Loop; --c_line
491 Close C_Line;
492
493
494 -- Insert into the AR distribution table
495
496 -- Amounts Transferred to AR should be
497 -- Ini Dst Amount: 1000 Dr, AR Amount: -1000
498 -- Ini Dst Amount: -1000 Dr, AR Amount: 1000
499 -- Ini Dst Amount: 1000 Cr, AR Amount: 1000
500 -- Ini Dst Amount: -1000 Cr, AR Amount: -1000
501
502 open c_dist(l_trx_id);
503 LOOP
504
505 FETCH c_dist INTO
506 l_dist_line.AMOUNT,
507 l_dist_line.percent,
508 l_dist_line.account_class,
509 l_dist_line.CODE_COMBINATION_ID,
510 l_dist_line.INTERFACE_LINE_ATTRIBUTE1,
511 l_dist_line.INTERFACE_LINE_ATTRIBUTE2,
512 l_dist_line.INTERFACE_LINE_ATTRIBUTE3;
513
514 exit when c_dist%NOTFOUND;
515
516 l_dist_line.ORG_ID :=l_ou_id;
517 l_dist_line.INTERFACE_LINE_CONTEXT:='INTERNAL_ALLOCATIONS';
518
519 -- Insert the value into the distribution table
520
521 INSERT INTO RA_INTERFACE_DISTRIBUTIONS_ALL
522 (
523 ACCOUNT_CLASS,
524 AMOUNT,
525 percent,
526 CODE_COMBINATION_ID,
527 INTERFACE_LINE_ATTRIBUTE1,
528 INTERFACE_LINE_ATTRIBUTE2,
529 INTERFACE_LINE_ATTRIBUTE3,
530 INTERFACE_LINE_CONTEXT,
531 ORG_ID
532 )
533 VALUES
534 (
535 l_dist_line.ACCOUNT_CLASS,
536 l_dist_line.AMOUNT,
537 l_dist_line.percent,
538 l_dist_line.CODE_COMBINATION_ID,
539 l_dist_line.INTERFACE_LINE_ATTRIBUTE1,
540 l_dist_line.INTERFACE_LINE_ATTRIBUTE2,
541 l_dist_line.INTERFACE_LINE_ATTRIBUTE3,
542 l_dist_line.INTERFACE_LINE_CONTEXT,
543 l_dist_line.ORG_ID
544 );
545
546 END LOOP; --c_dist
547 CLOSE c_dist;
548
549 fnd_message.set_name('FUN','FUN_XFER_SUCCESS');
550 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,rpad(substr(l_batch_num,1,15),20)||rpad(substr(l_trx_num,1,15),20)||fnd_message.get);
551
552 -- update transaction status
553
554 FUN_TRX_PVT.update_trx_status(p_api_version =>1.0,
555 x_return_status =>l_return_status,
556 x_msg_count => l_message_count,
557 x_msg_data => l_message_data,
558 p_trx_id => l_trx_id,
559 p_update_status_to => 'XFER_AR');
560
561 -- Handle the API call return
562
563 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
564
565 raise FND_API.G_EXC_ERROR;
566 END IF;
567
568
569 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
570
571 raise FND_API.G_EXC_UNEXPECTED_ERROR;
572 END IF;
573
574 ELSIF l_error=2 THEN
575 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,rpad(substr(l_batch_num,1,15),20)||rpad(substr(l_trx_num,1,15),20)||fnd_message.get);
576 END IF; -- l_error
577 l_error := 1;
578
579 End Loop; -- c_info
580
581 close c_info;
582 FND_FILE.NEW_LINE(FND_FILE.OUTPUT,2 );
583 IF (l_counter = 0) THEN
584 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' *****No Data Found*****');
585 ELSE
586 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' *****End Of Report*****');
587 END IF;
588
589 COMMIT;
590
591
592 IF p_run_autoinvoice_import='Y' and org_id_table.count>0 THEN
593 FOR I in org_id_table.First .. org_id_table.last
594 LOOP
595 FND_REQUEST.set_org_id(org_id_table(I));
596 l_request_id := FND_REQUEST.SUBMIT_REQUEST('AR', 'RAXMTR','','', FALSE,
597 '1',org_id_table(I),22,'Global Intercompany', trunc(sysdate),
598 '','','','','','','','','','','',
599 '','','','','','','','','', 'YES','');
600
601 IF l_request_id <> 0 THEN
602 fnd_file.put_line(fnd_file.log,'AR Auto Invoice Program submitted for Org ID: ' || org_id_table(I)||' with Request id: ' || l_request_id);
603 commit;
604 ELSE
605 RAISE Request_Submission_Failure;
606 END IF;
607 END LOOP;
608 END IF;
609
610
611 EXCEPTION
612 WHEN Request_Submission_Failure THEN
613 FND_FILE.PUT_LINE(FND_FILE.LOG,'Error in submitting AutoInovice Import Process');
614 FND_FILE.PUT_LINE(FND_FILE.LOG,'Unexpected error:' || sqlcode || sqlerrm);
615 WHEN NO_DATA_FOUND THEN
616 FND_FILE.PUT_LINE(FND_FILE.LOG,'No Data Found');
617 WHEN OTHERS THEN
618 FND_FILE.PUT_LINE(FND_FILE.LOG,'Unexpected error:' || sqlcode || sqlerrm);
619 retcode := 2;
620 end;
621
622 END FUN_AR_BATCH_TRANSFER;
623
624