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