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