[Home] [Help]
PACKAGE BODY: APPS.POA_EDW_RCV_TXNS_F_C
Source
1 Package Body POA_EDW_RCV_TXNS_F_C AS
2 /* $Header: poafprtb.pls 115.19 2003/12/09 03:11:58 jhou ship $ */
3 g_push_from_date Date:=Null;
4 g_push_to_date Date:=Null;
5 g_row_count Number:=0;
6 g_exception_msg varchar2(2000):=Null;
7 g_errbuf VARCHAR2(2000) := NULL;
8 g_retcode VARCHAR2(200) := NULL;
9 g_seq_id NUMBER:=0;
10
11 -- ---------------------------------
12 -- PRIVATE PROCEDURES AND FUNCTIONS
13 -- ---------------------------------
14
15 -----------------------------------------------------------
16 -- PROCEDURE TRUNCATE_INC
17 -----------------------------------------------------------
18
19 PROCEDURE TRUNCATE_INC IS
20
21 l_poa_schema VARCHAR2(30);
22 l_stmt VARCHAR2(200);
23 l_status VARCHAR2(30);
24 l_industry VARCHAR2(30);
25
26 BEGIN
27
28 IF (FND_INSTALLATION.GET_APP_INFO('POA', l_status, l_industry, l_poa_schema)) THEN
29 l_stmt := 'TRUNCATE TABLE ' || l_poa_schema || '.POA_EDW_RCV_TXNS_INC';
30 EXECUTE IMMEDIATE l_stmt;
31 END IF;
32
33 END;
34
35
36 -------------------------------------------------------------
37 -- PROCEDURE INSERT_MISSING_RATES
38 -------------------------------------------------------------
39 --Identify records that have missing rates and insert them in a temp table
40
41 PROCEDURE INSERT_MISSING_RATES
42 IS
43 BEGIN
44 INSERT INTO poa_edw_rcv_txns_inc(primary_key)
45 SELECT TO_NUMBER(SUBSTR(RCV_TXN_PK, 1, INSTR(RCV_TXN_PK, '-' )-1))
46 FROM POA_EDW_RCV_TXNS_FSTG
47 where COLLECTION_STATUS = 'RATE NOT AVAILABLE' OR
48 COLLECTION_STATUS = 'INVALID CURRENCY';
49 IF (sql%rowcount > 0) THEN
50 g_retcode := 1;
51 END IF;
52
53 -- Generates "Warning" message in the Status column
54 -- of Concurrent Manager "Requests" table
55 edw_log.put_line(' ');
56 edw_log.put_line('INSERTING ' || to_char(sql%rowcount) ||
57 ' rows into poa_edw_rcv_txns_inc table');
58 END;
59
60 -----------------------------------------------------------
61 -- PROCEDURE DELETE_STG_MISSING_RATES
62 -----------------------------------------------------------
63 -- Procedure to remove rows from local staging table that have
64 -- collection status of either rate not available or invalid currency.
65 PROCEDURE DELETE_STG_MISSING_RATES
66 IS
67 BEGIN
68 DELETE FROM POA_EDW_RCV_TXNS_FSTG
69 WHERE COLLECTION_STATUS = 'RATE NOT AVAILABLE'
70 OR COLLECTION_STATUS = 'INVALID CURRENCY'
71 AND INSTANCE_FK = (SELECT INSTANCE_CODE
72 FROM EDW_LOCAL_INSTANCE);
73 END;
74
75 -----------------------------------------------------------
76 --PROCEDURE PUSH_TO_LOCAL
77 -----------------------------------------------------------
78
79 FUNCTION PUSH_TO_LOCAL(p_view_id NUMBER, p_seq_id NUMBER) RETURN NUMBER IS
80
81 l_duration NUMBER;
82
83 BEGIN
84
85 -- ------------------------------------------------
86 -- We set the COLLECTION_STATUS to 'LOCAL READY'.
87 -- In case of source=target, we need to separate
88 -- out the records in progress vs the records which
89 -- is ready to be picked up by collection enginee.
90 -- In our case, we consider the records to be in
91 -- progress until the push_to_local procedure for
92 -- all view types has completed successfully.
93 -- ------------------------------------------------
94
95 Insert Into POA_EDW_RCV_TXNS_FSTG(
96 DUNS_FK,
97 UNSPSC_FK,
98 SIC_CODE_FK,
99 AP_TERMS_FK,
100 BILL_OF_LADING,
101 BUYER_FK,
102 DELIVER_TO_FK,
103 DELIV_LOCATION_FK,
104 DESTIN_TYPE_FK,
105 EDW_BASE_UOM_FK,
106 EDW_UOM_FK,
107 EXPCT_RCV_DATE_FK,
108 FREIGHT_TERMS_FK,
109 INSPECT_QUAL_FK,
110 INSPECT_STATUS_FK,
111 INSTANCE_FK,
112 INVOICE_NUM,
113 ITEM_REVISION_FK,
114 LOCATOR_FK,
115 LST_ACCPT_DATE_FK,
116 NEED_BY_DATE_FK,
117 NUM_DAYS_TO_FULL_DEL,
118 PACKING_SLIP,
119 PARNT_TXN_DATE_FK,
120 PARNT_TXN_TYPE_FK,
121 PO_LINE_TYPE_FK,
122 PRICE_G,
123 PRICE_T,
124 PROMISED_DATE_FK,
125 PURCHASE_CLASS_CODE_FK,
126 QTY_ACCEPT,
127 QTY_DELIVER,
128 QTY_RECEIVED,
129 QTY_REJECT,
130 QTY_RETURN_TO_RECEIVING,
131 QTY_RETURN_TO_VENDOR,
132 QTY_TRANSFER,
133 QTY_TXN,
134 QTY_TXN_NET,
135 RCV_DEL_TO_ORG_FK,
136 RCV_LOCATION_FK,
137 RCV_ROUTING_FK,
138 RCV_TXN_PK,
139 RECEIPT_NUM_INST,
140 RECEIPT_SOURCE_FK,
141 RECEIVE_EXCEP_FK,
142 RMA_REFERENCE,
143 SHIPMENT_NUM,
144 SHIPPED_TO_DATE_FK,
145 SHIP_HDR_COMMENTS,
146 SOURCE_TXN_NUMBER,
147 SRC_CREAT_DATE_FK,
148 SUBST_UNORD_FK,
149 SUPPLIER_ITEM_NUM_FK,
150 SUPPLIER_SITE_FK,
151 SUP_SITE_GEOG_FK,
152 TXN_COMMENTS,
153 TXN_CREAT_FK,
154 TXN_CUR_CODE_FK,
155 TXN_DATE_FK,
156 TXN_REASON_FK,
157 TXN_TYPE_FK,
158 USER_ATTRIBUTE1,
159 USER_ATTRIBUTE10,
160 USER_ATTRIBUTE11,
161 USER_ATTRIBUTE12,
162 USER_ATTRIBUTE13,
163 USER_ATTRIBUTE14,
164 USER_ATTRIBUTE15,
165 USER_ATTRIBUTE2,
166 USER_ATTRIBUTE3,
167 USER_ATTRIBUTE4,
168 USER_ATTRIBUTE5,
169 USER_ATTRIBUTE6,
170 USER_ATTRIBUTE7,
171 USER_ATTRIBUTE8,
172 USER_ATTRIBUTE9,
173 USER_ENTERED_FK,
174 USER_FK1,
175 USER_FK2,
176 USER_FK3,
177 USER_FK4,
178 USER_FK5,
179 USER_MEASURE1,
180 USER_MEASURE2,
181 USER_MEASURE3,
182 USER_MEASURE4,
183 USER_MEASURE5,
184 VENDOR_LOT_NUM,
185 WAY_AIRBILL_NUM,
186 po_distribution_id,
187 OPERATION_CODE,
188 COLLECTION_STATUS)
189 select
190 NVL(DUNS_FK, 'NA_EDW'),
191 NVL(UNSPSC_FK, 'NA_EDW'),
192 NVL(SIC_CODE_FK, 'NA_EDW'),
193 NVL(AP_TERMS_FK,'NA_EDW'),
194 BILL_OF_LADING,
195 NVL(BUYER_FK,'NA_EDW'),
196 NVL(DELIVER_TO_FK,'NA_EDW'),
197 NVL(DELIV_LOCATION_FK,'NA_EDW'),
198 NVL(DESTIN_TYPE_FK,'NA_EDW'),
199 NVL(EDW_BASE_UOM_FK,'NA_EDW'),
200 NVL(EDW_UOM_FK,'NA_EDW'),
201 NVL(EXPCT_RCV_DATE_FK,'NA_EDW'),
202 NVL(FREIGHT_TERMS_FK,'NA_EDW'),
203 NVL(INSPECT_QUAL_FK,'NA_EDW'),
204 NVL(INSPECT_STATUS_FK,'NA_EDW'),
205 NVL(INSTANCE_FK,'NA_EDW'),
206 INVOICE_NUM,
207 NVL(ITEM_REVISION_FK,'NA_EDW'),
208 NVL(LOCATOR_FK,'NA_EDW'),
209 NVL(LST_ACCPT_DATE_FK,'NA_EDW'),
210 NVL(NEED_BY_DATE_FK,'NA_EDW'),
211 NUM_DAYS_TO_FULL_DEL,
212 PACKING_SLIP,
213 NVL(PARNT_TXN_DATE_FK,'NA_EDW'),
214 NVL(PARNT_TXN_TYPE_FK,'NA_EDW'),
215 NVL(PO_LINE_TYPE_FK,'NA_EDW'),
216 PRICE_G,
217 PRICE_T,
218 NVL(PROMISED_DATE_FK,'NA_EDW'),
219 NVL(PURCHASE_CLASS_CODE_FK,'NA_EDW'),
220 QTY_ACCEPT,
221 QTY_DELIVER,
222 QTY_RECEIVED,
223 QTY_REJECT,
224 QTY_RETURN_TO_RECEIVING,
225 QTY_RETURN_TO_VENDOR,
226 QTY_TRANSFER,
227 QTY_TXN,
228 QTY_TXN_NET,
229 NVL(RCV_DEL_TO_ORG_FK,'NA_EDW'),
230 NVL(RCV_LOCATION_FK,'NA_EDW'),
231 NVL(RCV_ROUTING_FK,'NA_EDW'),
232 RCV_TXN_PK,
233 RECEIPT_NUM_INST,
234 NVL(RECEIPT_SOURCE_FK,'NA_EDW'),
235 NVL(RECEIVE_EXCEP_FK,'NA_EDW'),
236 RMA_REFERENCE,
237 SHIPMENT_NUM,
238 NVL(SHIPPED_TO_DATE_FK,'NA_EDW'),
239 SHIP_HDR_COMMENTS,
240 SOURCE_TXN_NUMBER,
241 NVL(SRC_CREAT_DATE_FK,'NA_EDW'),
242 NVL(SUBST_UNORD_FK,'NA_EDW'),
243 NVL(SUPPLIER_ITEM_NUM_FK,'NA_EDW'),
244 NVL(SUPPLIER_SITE_FK,'NA_EDW'),
245 NVL(SUP_SITE_GEOG_FK,'NA_EDW'),
246 TXN_COMMENTS,
247 NVL(TXN_CREAT_FK,'NA_EDW'),
248 NVL(TXN_CUR_CODE_FK,'NA_EDW'),
249 NVL(TXN_DATE_FK,'NA_EDW'),
250 NVL(TXN_REASON_FK,'NA_EDW'),
251 NVL(TXN_TYPE_FK,'NA_EDW'),
252 USER_ATTRIBUTE1,
253 USER_ATTRIBUTE10,
254 USER_ATTRIBUTE11,
255 USER_ATTRIBUTE12,
256 USER_ATTRIBUTE13,
257 USER_ATTRIBUTE14,
258 USER_ATTRIBUTE15,
259 USER_ATTRIBUTE2,
260 USER_ATTRIBUTE3,
261 USER_ATTRIBUTE4,
262 USER_ATTRIBUTE5,
263 USER_ATTRIBUTE6,
264 USER_ATTRIBUTE7,
265 USER_ATTRIBUTE8,
266 USER_ATTRIBUTE9,
267 NVL(USER_ENTERED_FK,'NA_EDW'),
268 NVL(USER_FK1,'NA_EDW'),
269 NVL(USER_FK2,'NA_EDW'),
270 NVL(USER_FK3,'NA_EDW'),
271 NVL(USER_FK4,'NA_EDW'),
272 NVL(USER_FK5,'NA_EDW'),
273 USER_MEASURE1,
274 USER_MEASURE2,
275 USER_MEASURE3,
276 USER_MEASURE4,
277 USER_MEASURE5,
278 VENDOR_LOT_NUM,
279 WAY_AIRBILL_NUM,
280 po_distribution_id,
281 NULL, -- OPERATION_CODE
282 decode(PRICE_G,
283 -1, 'RATE NOT AVAILABLE',
284 -2, 'INVALID CURRENCY', 'LOCAL READY')
285 from POA_EDW_RECEIVING_TXN_FCV
286 WHERE view_id = p_view_id
287 AND seq_id = p_seq_id;
288
289
290 RETURN(sql%rowcount);
291
292 EXCEPTION
293 WHEN OTHERS THEN
294 g_errbuf:=sqlerrm;
295 g_retcode:=sqlcode;
296 RETURN(-1);
297
298 END;
299
300
301 -----------------------------------------------------------
302 -- PROCEDURE DELETE_DUPLICATES
303 -----------------------------------------------------------
304
305 PROCEDURE DELETE_DUPLICATES IS
306
307 -- Cursor to delete duplicates
308 CURSOR Dup_Rec IS
309 SELECT primary_key
310 FROM poa_edw_rcv_txns_inc
311 ORDER BY primary_key
312 FOR UPDATE;
313
314 v_prev_id NUMBER;
315 v_cur_id NUMBER;
316
317 BEGIN
318 OPEN Dup_Rec;
319
320 LOOP
321
322 FETCH Dup_Rec INTO v_cur_id;
323 exit when Dup_Rec % NOTFOUND;
324
325 -- Check if the PK already exists
326 IF (v_prev_id = v_cur_id) THEN
327 DELETE FROM poa_edw_rcv_txns_inc
328 WHERE CURRENT OF Dup_Rec;
329 ELSE
330 v_prev_id := v_cur_id;
331 END IF;
332 END LOOP;
333
334 close Dup_Rec;
335 EXCEPTION
336 WHEN OTHERS THEN
337 IF Dup_Rec%ISOPEN THEN
338 close Dup_Rec;
339 END IF;
340 END;
341
342
343 ---------------------------------------------------
344 -- FUNCTION IDENTIFY_CHANGE1
345 ---------------------------------------------------
346
347 FUNCTION IDENTIFY_CHANGE1 (p_view_id IN NUMBER,
348 p_count OUT NOCOPY NUMBER) RETURN NUMBER IS
349
350 l_seq_id NUMBER := -1;
351 l_poa_schema VARCHAR2(30);
352 l_status VARCHAR2(30);
353 l_industry VARCHAR2(30);
354
355 BEGIN
356
357 p_count := 0;
358 select poa_edw_rcv_txns_inc_s.nextval into l_seq_id from dual;
359
360 /** Update the seq_id for records that had missing currency rates in
361 the earlier PUSH. We need to repush these records again
362 **/
363
364 UPDATE poa_edw_rcv_txns_inc
365 SET seq_id = l_seq_id
366 WHERE seq_id IS NULL;
367
368 p_count := sql%rowcount;
369 edw_log.put_line( 'Updated ' || p_count || ' records');
370
371 /* Currently, 2 tables are considered for last_update_date; we may
372 need to pick more/less tables for this (DEBUG).
373 Here RCV_TRANSACTIONS is the base table for the fact */
374
375 INSERT INTO poa_edw_rcv_txns_inc(primary_key, seq_id)
376 SELECT rcv.transaction_id, l_seq_id
377 FROM RCV_SHIPMENT_LINES rsl,
378 RCV_TRANSACTIONS rcv
379 WHERE rcv.SHIPMENT_LINE_ID = rsl.SHIPMENT_LINE_ID
380 AND greatest(rcv.last_update_date,
381 rsl.last_update_date)
382 between g_push_from_date and g_push_to_date;
383
384 p_count := p_count + sql%rowcount;
385
386 RETURN (l_seq_id);
387
388 EXCEPTION
389 WHEN OTHERS THEN
390 g_errbuf:=sqlerrm;
391 g_retcode:=sqlcode;
392 RETURN(-1);
393
394 END;
395
396 -- ---------------------------------
397 -- PUBLIC PROCEDURES
398 -- ---------------------------------
399
400 -----------------------------------------------------------
401 -- PROCEDURE PUSH
402 -----------------------------------------------------------
403
404 Procedure Push(Errbuf out NOCOPY Varchar2,
405 Retcode out NOCOPY Varchar2,
406 p_from_date IN Varchar2,
407 p_to_date IN Varchar2) IS
408
409 l_fact_name Varchar2(30) :='POA_EDW_RCV_TXNS_F' ;
410 l_staging_table Varchar2(30) :='POA_EDW_RCV_TXNS_FSTG';
411
412 l_temp_date DATE:=NULL;
413 l_duration NUMBER:=0;
414 l_exception_msg VARCHAR2(2000):=NULL;
415 l_seq_id1 NUMBER := -1;
416 l_row_count NUMBER := 0;
417 l_row_count1 NUMBER := 0;
418
419 l_push_local_failure EXCEPTION;
420 l_iden_change_failure EXCEPTION;
421
422 l_from_date DATE;
423 l_to_date DATE;
424
425 my_payment_currency Varchar2(2000):=NULL;
426 my_rate_date Varchar2(2000) := NULL;
427 my_collection_status Varchar2(2000):=NULL;
428
429 -- Cursor to get Missing rates
430 CURSOR Invalid_Rates IS
431 SELECT DISTINCT NVL(poh.rate_date, pll.creation_date) Rate_Date,
432 decode(poh.rate_type,
433 'User',gsob.currency_code,
434 NVL(poh.currency_code,
435 gsob.currency_code)) From_Currency,
436 fstg.Collection_Status
437 FROM (select TO_NUMBER(SUBSTR(RCV_TXN_PK, 1,
438 INSTR(RCV_TXN_PK, '-' )-1))
439 TRANSACTION_ID,
440 Collection_Status
441 from POA_EDW_RCV_TXNS_FSTG
442 where COLLECTION_STATUS = 'RATE NOT AVAILABLE' OR
443 COLLECTION_STATUS = 'INVALID CURRENCY') fstg,
444 RCV_TRANSACTIONS RCV,
445 PO_LINE_LOCATIONS_ALL PLL,
446 PO_HEADERS_ALL POH,
447 GL_SETS_OF_BOOKS GSOB,
448 FINANCIALS_SYSTEM_PARAMS_ALL FSP
449 WHERE fstg.TRANSACTION_ID = RCV.TRANSACTION_ID
450 AND RCV.PO_LINE_LOCATION_ID = PLL.LINE_LOCATION_ID
451 AND PLL.PO_HEADER_ID = POH.PO_HEADER_ID
452 AND nvl(POH.ORG_ID, -999) = nvl(FSP.ORG_ID, -999)
453 AND FSP.set_of_books_id = GSOB.set_of_books_id;
454 Begin
455
456 Errbuf :=NULL;
457 Retcode:=0;
458
459 IF (Not EDW_COLLECTION_UTIL.setup(l_fact_name, l_staging_table,
460 l_staging_table, l_exception_msg)) THEN
461 errbuf := fnd_message.get;
462 RAISE_APPLICATION_ERROR (-20000, 'Error in SETUP: ' || errbuf);
463 END IF;
464
465 l_from_date := to_date(p_from_date, 'YYYY/MM/DD HH24:MI:SS');
466 l_to_date := to_date(p_to_date, 'YYYY/MM/DD HH24:MI:SS');
467
468 g_push_from_date := NVL(l_from_date,
469 EDW_COLLECTION_UTIL.G_local_last_push_start_date -
470 EDW_COLLECTION_UTIL.g_offset);
471 g_push_to_date := NVL(l_to_date,
472 EDW_COLLECTION_UTIL.G_local_curr_push_start_date);
473
474 edw_log.put_line( 'The collection range is from '||
475 to_char(g_push_from_date,'MM/DD/YYYY HH24:MI:SS')||' to '||
476 to_char(g_push_to_date,'MM/DD/YYYY HH24:MI:SS'));
477 edw_log.put_line(' ');
478
479 l_temp_date := sysdate;
480
481 -- --------------------------------------------
482 -- Identify Change
483 -- --------------------------------------------
484 edw_log.put_line(' ');
485 edw_log.put_line('Identifying changes...');
486 l_seq_id1 := IDENTIFY_CHANGE1 (1, l_row_count);
487
488 if (l_seq_id1 = -1) THEN
489 RAISE l_iden_change_failure;
490 end if;
491 edw_log.put_line('Identified ' || l_row_count || ' changed records');
492
493 -- -------------------------------------------
494 -- Delete delicates in the Inc Table
495 -- --------------------------------------------
496 DELETE_DUPLICATES;
497 edw_log.put_line('Duplicate records deleted in Inc Table');
498
499 -- --------------------------------------------
500 -- Push to local staging table for view type 1
501 -- --------------------------------------------
502
503 edw_log.put_line(' ');
504 edw_log.put_line('Inserting into local staging table for view type 1');
505 l_row_count1 := PUSH_TO_LOCAL(1, l_seq_id1);
506
507 IF (l_row_count1 = -1) THEN RAISE L_push_local_failure; END IF;
508
509 edw_log.put_line('Inserted '|| nvl(l_row_count1, 0) ||
510 ' rows into the local staging table for view type 1');
511 edw_log.put_line(' ');
512
513 -- --------------------------------------------
514 -- Delete all incremental tables' record
515 -- --------------------------------------------
516
517 TRUNCATE_INC;
518
519 -- --------------------------------------------
520 -- Insert Missing Rates from Local Staging Into Inc Tables
521 -- to repush them next time
522 -- --------------------------------------------
523 INSERT_MISSING_RATES;
524
525 OPEN Invalid_Rates;
526 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
527 'FROM CURRENCY CONVERSION DATE COLLECTION STATUS');
528 loop
529 FETCH Invalid_Rates INTO my_rate_date, my_payment_currency,
530 my_collection_status;
531 exit when Invalid_Rates % NOTFOUND;
532 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, my_payment_currency ||
533 ' '|| my_rate_date ||
534 ' '|| my_collection_status);
535 end loop;
536
537 close Invalid_Rates;
538
539 edw_log.put_line(' ');
540 edw_log.put_line('Report created for records with Missing Rates');
541 edw_log.put_line(' ');
542
543 -- --------------------------------------------
544 -- Delete records with missing rates from local staging table
545 -- --------------------------------------------
546 DELETE_STG_MISSING_RATES;
547
548 -- --------------------------------------------
549 -- No exception raised so far. Call wrapup to transport
550 -- data to target database, and insert messages into logs
551 -- -----------------------------------------------
552 g_row_count := g_row_count + l_row_count1;
553 edw_log.put_line(' ');
554 edw_log.put_line('Inserted '||nvl(g_row_count,0)||
555 ' rows into the staging table');
556 l_duration := sysdate - l_temp_date;
557 edw_log.put_line(' ');
558 edw_log.put_line('Process Time: '||edw_log.duration(l_duration));
559 edw_log.put_line(' ');
560
561 EDW_COLLECTION_UTIL.wrapup(TRUE, g_row_count,
562 P_PERIOD_START => g_push_from_date,
563 P_PERIOD_END => g_push_to_date);
564
565 EXCEPTION
566
567 WHEN L_PUSH_LOCAL_FAILURE THEN
568 Errbuf:=g_errbuf;
569 Retcode:=g_retcode;
570
571 if (Invalid_Rates%ISOPEN) THEN
572 close Invalid_Rates;
573 end if;
574
575 l_exception_msg := Retcode || ':' || Errbuf;
576 rollback; -- Rollback insert into local staging
577 edw_log.put_line('Inserting into local staging have failed');
578 EDW_COLLECTION_UTIL.wrapup(FALSE, 0, l_exception_msg,
579 g_push_from_date, g_push_to_date);
580 raise;
581
582 WHEN L_IDEN_CHANGE_FAILURE THEN
583 Errbuf:=g_errbuf;
584 Retcode:=g_retcode;
585
586 if (Invalid_Rates%ISOPEN) THEN
587 close Invalid_Rates;
588 end if;
589
590 l_exception_msg := Retcode || ':' || Errbuf;
591 TRUNCATE_INC;
592 edw_log.put_line('Identifying changed records have Failed');
593 EDW_COLLECTION_UTIL.wrapup(FALSE, 0, l_exception_msg,
594 g_push_from_date, g_push_to_date);
595 raise;
596
597 WHEN OTHERS THEN
598 Errbuf:=g_errbuf;
599 Retcode:=g_retcode;
600
601 if (Invalid_Rates%ISOPEN) THEN
602 close Invalid_Rates;
603 end if;
604
605 l_exception_msg := Retcode || ':' || Errbuf;
606 rollback;
607 edw_log.put_line('Other errors');
608 EDW_COLLECTION_UTIL.wrapup(FALSE, 0, l_exception_msg,
609 g_push_from_date, g_push_to_date);
610 raise;
611
612 End;
613 End POA_EDW_RCV_TXNS_F_C;