DBA Data[Home] [Help]

PACKAGE BODY: APPS.RCV_ROI_PARALLEL

Source


1 PACKAGE BODY RCV_ROI_PARALLEL AS
2 /* $Header: RCVPGRPB.pls 115.4 2004/06/30 23:47:40 wkunz ship $ */
3 
4 -- Read the profile option that enables/disables the debug log
5 g_asn_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('RCV_DEBUG_MODE'),'N');
6 PROCEDURE spawn_process(p_num_of_groups IN NUMBER,
7                         p_req_ids OUT NOCOPY RCV_ROI_PARALLEL.reqid_list) IS
8   x_progress NUMBER;
9 /*
10   cursor c_header is
11       select header_interface_id from rcv_headers_interface
12       where NVL(asn_type,'STD') in ('ASN','ASBN','STD')
13       and   processing_status_code in ('PENDING')
14       and   nvl(validation_flag,'N') = 'Y'
15       for update of group_id nowait;
16 
17 
18   TYPE interface_numtype IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
19 */
20 
21   TYPE group_id_pool IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
22 
23 /*
24   v_h_int_id INTERFACE_NUMTYPE;
25 
26   v_gid_table INTERFACE_NUMTYPE;
27 
28   v_id_table  INTERFACE_NUMTYPE;
29 */
30 
31   v_group_id GROUP_ID_POOL;
32 
33 /*
34   v_cur_rec NUMBER;
35 
36   v_num_per_fetch NUMBER := 5000;
37 */
38 
39 
40   v_req_id NUMBER;
41 
42 BEGIN
43   IF (g_asn_debug = 'Y') THEN
44      ASN_DEBUG.PUT_LINE('START SPAWNING PROCESS');
45   END IF;
46 
47 /*
48   OPEN c_header;
49 
50 
51   FOR i IN 1..p_num_of_groups LOOP
52     SELECT RCV_INTERFACE_GROUPS_S.NEXTVAL
53     INTO   v_group_id(i)
54     FROM   dual;
55   END LOOP;
56 
57   v_cur_rec := 0;
58 
59   IF (g_asn_debug = 'Y') THEN
60      ASN_DEBUG.PUT_LINE('Before Looping');
61   END IF;
62 
63   LOOP
64     FETCH c_header BULK COLLECT INTO v_h_int_id LIMIT v_num_per_fetch;
65 
66     IF (g_asn_debug = 'Y') THEN
67        ASN_DEBUG.PUT_LINE('Number of rows fetched: ' || v_h_int_id.COUNT);
68     END IF;
69 
70     IF (v_h_int_id.COUNT = 0) THEN
71       EXIT;
72     END IF;
73 
74     IF (g_asn_debug = 'Y') THEN
75        ASN_DEBUG.PUT_LINE('Still in...');
76     END IF;
77 
78     FOR j IN 1..v_h_int_id.COUNT LOOP
79       v_id_table(v_cur_rec + j) := v_h_int_id(j);
80     END LOOP;
81 
82     v_cur_rec := v_cur_rec + v_h_int_id.COUNT;
83 
84     v_h_int_id.DELETE;
85 
86     EXIT WHEN c_header%NOTFOUND;
87   END LOOP;
88 
89   CLOSE c_header;
90 
91   FOR i IN 1..v_id_table.COUNT LOOP
92     v_gid_table(i) := v_group_id(CEIL(i/v_id_table.COUNT*p_num_of_groups));
93   END LOOP;
94 
95   IF (g_asn_debug = 'Y') THEN
96      ASN_DEBUG.PUT_LINE('Before Bulk Update of RCV_HEADERS_INTERFACE');
97   END IF;
98 
99   FORALL k IN 1..v_id_table.COUNT
100     UPDATE rcv_headers_interface
101     SET    group_id = v_gid_table(k)
102     WHERE  header_interface_id = v_id_table(k);
103 
104   IF (g_asn_debug = 'Y') THEN
105      ASN_DEBUG.PUT_LINE('Before Bulk Update of RCV_TRANSACTIONS_INTERFACE');
106   END IF;
107 
108   FORALL k IN 1..v_id_table.COUNT
109     UPDATE rcv_transactions_interface
110     SET    group_id = v_gid_table(k)
111     WHERE  header_interface_id = v_id_table(k);
112 
113   COMMIT;
114 */
115 
116   SELECT distinct group_id
117   BULK COLLECT INTO   v_group_id
118   FROM   RCV_HEADERS_INTERFACE
119   WHERE  NVL(asn_type,'STD') in ('ASN','ASBN','STD')
120   AND    processing_status_code in ('PENDING')
121   AND    nvl(validation_flag,'N') = 'Y';
122 
123   IF (g_asn_debug = 'Y') THEN
124      ASN_DEBUG.PUT_LINE('Number of groups: ' || v_group_id.COUNT);
125   END IF;
126 
127   FOR k IN 1..v_group_id.COUNT LOOP
128       v_req_id :=
129 		fnd_request.submit_request('PO',
130 		'RVCTP',
131 		null,
132 		null,
133 		false,
134 		'BATCH',
135                 v_group_id(k),
136 		chr(0),
137 		NULL,
138 		NULL,
139 		NULL,
140 		NULL,
141 		NULL, NULL,
142                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
143                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
144                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
145                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
146                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
147 
148                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
149                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
150                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
151                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
152 
153                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
154                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
155                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
156                 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
157 
158      IF (g_asn_debug = 'Y') THEN
159         ASN_DEBUG.PUT_LINE('Spawned worker ' || k);
160      END IF;
161 
162      p_req_ids(k) := v_req_id;
163    END LOOP;
164 END spawn_process;
165 END RCV_ROI_PARALLEL;