DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_IMP_LOAD_STAGE1

Source


1 PACKAGE BODY HZ_IMP_LOAD_STAGE1 AS
2 /*$Header: ARHLS1WB.pls 120.14 2005/10/30 03:53:12 appldev noship $*/
3 
4 PROCEDURE WORKER_PROCESS (
5   Errbuf                      OUT NOCOPY     VARCHAR2,
6   Retcode                     OUT NOCOPY     VARCHAR2,
7   P_BATCH_ID                  IN             NUMBER,
8   P_ACTUAL_CONTENT_SRC        IN             VARCHAR2,
9   P_RERUN		      IN	     VARCHAR2,
10   P_BATCH_MODE_FLAG	      IN	     VARCHAR2
11 ) IS
12 
13   START_TIME        DATE := sysdate;
14   P_OS              VARCHAR2(30);
15   P_FROM_OSR        VARCHAR2(255);
16   P_TO_OSR          VARCHAR2(255);
17   l_rerun	    VARCHAR2(1) := 'Y';
18   l_hwm_stage       NUMBER := 0;
19   -- Bug 4594407
20   l_pp_status       VARCHAR2(30);
21 
22 BEGIN
23 
24   FND_FILE.PUT_LINE(FND_FILE.LOG, 'Stage 1 WORKER_PROCESS+');
25 
26   /* Avoid skip scans in matching */
27   execute immediate 'alter session set events ''10196 trace name context forever, level 1''';
28 
29   LOOP
30     P_OS := NULL;
31     -- Bug 4594407
32     HZ_IMP_LOAD_WRAPPER.RETRIEVE_WORK_UNIT(P_BATCH_ID, '1' , P_OS, P_FROM_OSR, P_TO_OSR,
33                                            l_hwm_stage, l_pp_status);
34 
35   FND_FILE.PUT_LINE(FND_FILE.LOG, 'P_OS = ' || P_OS);
36   FND_FILE.PUT_LINE(FND_FILE.LOG, 'P_FROM_OSR = ' || P_FROM_OSR);
37   FND_FILE.PUT_LINE(FND_FILE.LOG, 'P_TO_OSR = ' || P_TO_OSR);
38 
39 
40     IF (P_OS IS NULL) Then
41       EXIT;
42     END IF;
43 
44     /* If there's some error with the batch in previous run, we need to check
45        if the batch has been completed at least once. If not, we need to
46        set l_rerun = 'N' such that it'll pick up records with null interface
47        status */
48     IF P_RERUN = 'U' OR P_RERUN = 'L' THEN
49       BEGIN
50         select hwm_stage into l_hwm_stage
51         from hz_imp_work_units
52         where batch_id = P_BATCH_ID
53         and orig_system = P_OS
54         and from_orig_system_ref = P_FROM_OSR;
55 
56         IF l_hwm_stage <= 1 THEN
57           l_rerun := 'N';
58         END IF;
59       EXCEPTION
60         WHEN OTHERS THEN
61           l_rerun := 'N';
62       END;
63     END IF;
64 
65     /* If new batch or resume, set re-run flag to 'N'.
66        Usually for resume, stage 1 is skipped. But if somehow the staging
67        tables are cleaned up after what-if, we need to match parties again.
68        So, it we're stage 1 and it's resume, we treat it as a new batch */
69     IF P_RERUN = 'N' OR P_RERUN = 'R' THEN
70       l_rerun := 'N';
71     END IF;
72 
73     HZ_IMP_LOAD_SSM_MATCHING_PKG.MATCH_PARTIES(P_BATCH_ID, P_OS, P_FROM_OSR, P_TO_OSR, P_ACTUAL_CONTENT_SRC, l_rerun, P_BATCH_MODE_FLAG);
74 
75     /* Update status to Complete for the work unit that just finished */
76     UPDATE HZ_IMP_WORK_UNITS
77       SET STATUS = 'C'
78     WHERE BATCH_ID = P_BATCH_ID
79       AND FROM_ORIG_SYSTEM_REF = P_FROM_OSR;
80 
81     COMMIT;
82 
83   END LOOP;
84 
85   FND_FILE.PUT_LINE(FND_FILE.LOG, 'Stage 1 WORKER_PROCESS-');
86 
87   RETURN;
88 
89 EXCEPTION
90   WHEN OTHERS THEN
91     ROLLBACK;
92     FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
93     FND_MESSAGE.SET_TOKEN('ERROR', SQLERRM);
94 
95     errbuf  := FND_MESSAGE.get;
96     retcode := 2;
97 
98     UPDATE hz_imp_batch_summary
99     SET import_status = 'ERROR'
100     WHERE batch_id = P_BATCH_ID;
101 
102     UPDATE hz_imp_batch_details
103     SET import_status = 'ERROR'
104     WHERE batch_id = P_BATCH_ID
105     AND run_number = (SELECT max(run_number)
106     		      FROM hz_imp_batch_details
107     		      WHERE batch_id = P_BATCH_ID);
108 
109     COMMIT;
110 
111   FND_FILE.PUT_LINE(FND_FILE.LOG, 'Exception in stage 1 worker: ' || SQLERRM);
112 
113 END WORKER_PROCESS;
114 
115 
116 END HZ_IMP_LOAD_STAGE1;