[Home] [Help]
PACKAGE BODY: APPS.MRPP_CMERGE_FCST
Source
1 PACKAGE BODY MRPP_CMERGE_FCST as
2 /* $Header: MRPPMGFB.pls 120.1 2011/10/26 23:49:17 pstrnad ship $ */
3
4 /*--------------------------- PRIVATE ROUTINES ------------------------------*/
5
6 /*-------------------------------------------------------------
7 |
8 | PROCEDURE
9 | MRP_FD
10 | DESCRIPTION :
11 | Account merge procedure for the table, MRP_FORECAST_DATES
12 |
13 | NOTES:
14 |
15 |--------------------------------------------------------------*/
16
17 PROCEDURE MRP_FD (
18 req_id NUMBER,
19 set_num NUMBER,
20 process_mode VARCHAR2) IS
21
22 TYPE MERGE_HEADER_ID_LIST_TYPE IS TABLE OF
23 RA_CUSTOMER_MERGE_HEADERS.CUSTOMER_MERGE_HEADER_ID%TYPE
24 INDEX BY BINARY_INTEGER;
25 MERGE_HEADER_ID_LIST MERGE_HEADER_ID_LIST_TYPE;
26
27 TYPE TRANSACTION_ID_LIST_TYPE IS TABLE OF
28 MRP_FORECAST_DATES.TRANSACTION_ID%TYPE
29 INDEX BY BINARY_INTEGER;
30 PRIMARY_KEY_ID_LIST TRANSACTION_ID_LIST_TYPE;
31
32 TYPE customer_id_LIST_TYPE IS TABLE OF
33 MRP_FORECAST_DATES.customer_id%TYPE
34 INDEX BY BINARY_INTEGER;
35 NUM_COL1_ORIG_LIST customer_id_LIST_TYPE;
36 NUM_COL1_NEW_LIST customer_id_LIST_TYPE;
37
38 TYPE ship_id_LIST_TYPE IS TABLE OF
39 MRP_FORECAST_DATES.ship_id%TYPE
40 INDEX BY BINARY_INTEGER;
41 NUM_COL2_ORIG_LIST ship_id_LIST_TYPE;
42 NUM_COL2_NEW_LIST ship_id_LIST_TYPE;
43
44 TYPE bill_id_LIST_TYPE IS TABLE OF
45 MRP_FORECAST_DATES.bill_id%TYPE
46 INDEX BY BINARY_INTEGER;
47 NUM_COL3_ORIG_LIST bill_id_LIST_TYPE;
48 NUM_COL3_NEW_LIST bill_id_LIST_TYPE;
49
50 l_profile_val VARCHAR2(30);
51 CURSOR merged_records IS
52 SELECT distinct m.CUSTOMER_MERGE_HEADER_ID
53 ,yt.TRANSACTION_ID
54 ,yt.customer_id
55 ,yt.ship_id
56 ,yt.bill_id
57 FROM MRP_FORECAST_DATES yt, ra_customer_merges m
58 WHERE (
59 yt.customer_id = m.DUPLICATE_ID
60 OR yt.ship_id = m.DUPLICATE_SITE_ID
61 OR yt.bill_id = m.DUPLICATE_SITE_ID
62 ) AND m.process_flag = 'N'
63 AND yt.origination_type = '10' /* Overconsumption */
64 AND m.request_id = req_id
65 AND m.set_number = set_num;
66 l_last_fetch BOOLEAN := FALSE;
67 l_count NUMBER;
68 BEGIN
69 IF process_mode='LOCK' THEN
70 NULL;
71 ELSE
72 ARP_MESSAGE.SET_NAME('AR','AR_UPDATING_TABLE');
73 ARP_MESSAGE.SET_TOKEN('TABLE_NAME','MRP_FORECAST_DATES',FALSE);
74 HZ_ACCT_MERGE_UTIL.load_set(set_num, req_id);
75 l_profile_val := FND_PROFILE.VALUE('HZ_AUDIT_ACCT_MERGE');
76
77 open merged_records;
78 LOOP
79 FETCH merged_records BULK COLLECT INTO
80 MERGE_HEADER_ID_LIST
81 , PRIMARY_KEY_ID_LIST
82 , NUM_COL1_ORIG_LIST
83 , NUM_COL2_ORIG_LIST
84 , NUM_COL3_ORIG_LIST
85 limit 1000
86 ;
87 IF merged_records%NOTFOUND THEN
88 l_last_fetch := TRUE;
89 END IF;
90 IF MERGE_HEADER_ID_LIST.COUNT = 0 and l_last_fetch then
91 exit;
92 END IF;
93 FOR I in 1..MERGE_HEADER_ID_LIST.COUNT LOOP
94 NUM_COL1_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_ACCOUNT(NUM_COL1_ORIG_LIST(I));
95 NUM_COL2_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_SITE_USE(NUM_COL2_ORIG_LIST(I));
96 NUM_COL3_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_SITE_USE(NUM_COL3_ORIG_LIST(I));
97 END LOOP;
98 IF l_profile_val IS NOT NULL AND l_profile_val = 'Y' THEN
99 FORALL I in 1..MERGE_HEADER_ID_LIST.COUNT
100 INSERT INTO HZ_CUSTOMER_MERGE_LOG (
101 MERGE_LOG_ID,
102 TABLE_NAME,
103 MERGE_HEADER_ID,
104 PRIMARY_KEY_ID,
105 NUM_COL1_ORIG,
106 NUM_COL1_NEW,
107 NUM_COL2_ORIG,
108 NUM_COL2_NEW,
109 NUM_COL3_ORIG,
110 NUM_COL3_NEW,
111 ACTION_FLAG,
112 REQUEST_ID,
113 CREATED_BY,
114 CREATION_DATE,
115 LAST_UPDATE_LOGIN,
116 LAST_UPDATE_DATE,
117 LAST_UPDATED_BY
118 ) VALUES ( HZ_CUSTOMER_MERGE_LOG_s.nextval,
119 'MRP_FORECAST_DATES',
120 MERGE_HEADER_ID_LIST(I),
121 PRIMARY_KEY_ID_LIST(I),
122 NUM_COL1_ORIG_LIST(I),
123 NUM_COL1_NEW_LIST(I),
124 NUM_COL2_ORIG_LIST(I),
125 NUM_COL2_NEW_LIST(I),
126 NUM_COL3_ORIG_LIST(I),
127 NUM_COL3_NEW_LIST(I),
128 'U',
129 req_id,
130 hz_utility_pub.CREATED_BY,
131 hz_utility_pub.CREATION_DATE,
132 hz_utility_pub.LAST_UPDATE_LOGIN,
133 hz_utility_pub.LAST_UPDATE_DATE,
134 hz_utility_pub.LAST_UPDATED_BY
135 );
136
137 END IF;
138 FORALL I in 1..MERGE_HEADER_ID_LIST.COUNT
139 UPDATE MRP_FORECAST_DATES yt SET
140 customer_id=NUM_COL1_NEW_LIST(I)
141 ,ship_id=NUM_COL2_NEW_LIST(I)
142 ,bill_id=NUM_COL3_NEW_LIST(I)
143 , LAST_UPDATE_DATE=SYSDATE
144 , last_updated_by=arp_standard.profile.user_id
145 , last_update_login=arp_standard.profile.last_update_login
146 , REQUEST_ID=req_id
147 , PROGRAM_APPLICATION_ID=arp_standard.profile.program_application_id
148 , PROGRAM_ID=arp_standard.profile.program_id
149 , PROGRAM_UPDATE_DATE=SYSDATE
150 WHERE TRANSACTION_ID=PRIMARY_KEY_ID_LIST(I)
151 ;
152 l_count := l_count + SQL%ROWCOUNT;
153 IF l_last_fetch THEN
154 EXIT;
155 END IF;
156 END LOOP;
157
158 arp_message.set_name('AR','AR_ROWS_UPDATED');
159 arp_message.set_token('NUM_ROWS',to_char(l_count));
160 END IF;
161 EXCEPTION
162 WHEN OTHERS THEN
163 arp_message.set_line( 'MRP_FD');
164 RAISE;
165 END MRP_FD;
166
167
168 /*-------------------------------------------------------------
169 |
170 | PROCEDURE
171 | MRP_FDE
172 | DESCRIPTION :
173 | Account merge procedure for the table, MRP_FORECAST_DESIGNATORS
174 |
175 | NOTES:
176 |--------------------------------------------------------------*/
177
178 PROCEDURE MRP_FDE (
179 req_id NUMBER,
180 set_num NUMBER,
181 process_mode VARCHAR2) IS
182
183 TYPE MERGE_HEADER_ID_LIST_TYPE IS TABLE OF
184 RA_CUSTOMER_MERGE_HEADERS.CUSTOMER_MERGE_HEADER_ID%TYPE
185 INDEX BY BINARY_INTEGER;
186 MERGE_HEADER_ID_LIST MERGE_HEADER_ID_LIST_TYPE;
187
188 TYPE ORGANIZATION_ID_LIST_TYPE IS TABLE OF
189 MRP_FORECAST_DESIGNATORS.ORGANIZATION_ID%TYPE
190 INDEX BY BINARY_INTEGER;
191 PRIMARY_KEY1_LIST ORGANIZATION_ID_LIST_TYPE;
192
193 TYPE FORECAST_DESIGNATOR_LIST_TYPE IS TABLE OF
194 MRP_FORECAST_DESIGNATORS.FORECAST_DESIGNATOR%TYPE
195 INDEX BY BINARY_INTEGER;
196 PRIMARY_KEY2_LIST FORECAST_DESIGNATOR_LIST_TYPE;
197
198 TYPE customer_id_LIST_TYPE IS TABLE OF
199 MRP_FORECAST_DESIGNATORS.customer_id%TYPE
200 INDEX BY BINARY_INTEGER;
201 NUM_COL1_ORIG_LIST customer_id_LIST_TYPE;
202 NUM_COL1_NEW_LIST customer_id_LIST_TYPE;
203
204 TYPE ship_id_LIST_TYPE IS TABLE OF
205 MRP_FORECAST_DESIGNATORS.ship_id%TYPE
206 INDEX BY BINARY_INTEGER;
207 NUM_COL2_ORIG_LIST ship_id_LIST_TYPE;
208 NUM_COL2_NEW_LIST ship_id_LIST_TYPE;
209
210 TYPE bill_id_LIST_TYPE IS TABLE OF
211 MRP_FORECAST_DESIGNATORS.bill_id%TYPE
212 INDEX BY BINARY_INTEGER;
213 NUM_COL3_ORIG_LIST bill_id_LIST_TYPE;
214 NUM_COL3_NEW_LIST bill_id_LIST_TYPE;
215
216 l_profile_val VARCHAR2(30);
217 CURSOR merged_records IS
218 SELECT distinct m.CUSTOMER_MERGE_HEADER_ID
219 ,yt.ORGANIZATION_ID
220 ,yt.FORECAST_DESIGNATOR
221 ,yt.customer_id
222 ,yt.ship_id
223 ,yt.bill_id
224 FROM MRP_FORECAST_DESIGNATORS yt, ra_customer_merges m
225 WHERE (
226 yt.customer_id = m.DUPLICATE_ID
227 OR yt.ship_id = m.DUPLICATE_SITE_ID
228 OR yt.bill_id = m.DUPLICATE_SITE_ID
229 ) AND m.process_flag = 'N'
230 AND m.request_id = req_id
231 AND m.set_number = set_num;
232 l_last_fetch BOOLEAN := FALSE;
233 l_count NUMBER;
234 BEGIN
235 IF process_mode='LOCK' THEN
236 NULL;
237 ELSE
238 ARP_MESSAGE.SET_NAME('AR','AR_UPDATING_TABLE');
239 ARP_MESSAGE.SET_TOKEN('TABLE_NAME','MRP_FORECAST_DESIGNATORS',FALSE);
240 HZ_ACCT_MERGE_UTIL.load_set(set_num, req_id);
241 l_profile_val := FND_PROFILE.VALUE('HZ_AUDIT_ACCT_MERGE');
242
243 open merged_records;
244 LOOP
245 FETCH merged_records BULK COLLECT INTO
246 MERGE_HEADER_ID_LIST
247 , PRIMARY_KEY1_LIST
248 , PRIMARY_KEY2_LIST
249 , NUM_COL1_ORIG_LIST
250 , NUM_COL2_ORIG_LIST
251 , NUM_COL3_ORIG_LIST
252 limit 1000
253 ;
254 IF merged_records%NOTFOUND THEN
255 l_last_fetch := TRUE;
256 END IF;
257 IF MERGE_HEADER_ID_LIST.COUNT = 0 and l_last_fetch then
258 exit;
259 END IF;
260 FOR I in 1..MERGE_HEADER_ID_LIST.COUNT LOOP
261 NUM_COL1_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_ACCOUNT(NUM_COL1_ORIG_LIST(I));
262 NUM_COL2_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_SITE_USE(NUM_COL2_ORIG_LIST(I));
263 NUM_COL3_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_SITE_USE(NUM_COL3_ORIG_LIST(I));
264 END LOOP;
265 IF l_profile_val IS NOT NULL AND l_profile_val = 'Y' THEN
266 FORALL I in 1..MERGE_HEADER_ID_LIST.COUNT
267 INSERT INTO HZ_CUSTOMER_MERGE_LOG (
268 MERGE_LOG_ID,
269 TABLE_NAME,
270 MERGE_HEADER_ID,
271 PRIMARY_KEY1,
272 PRIMARY_KEY2,
273 NUM_COL1_ORIG,
274 NUM_COL1_NEW,
275 NUM_COL2_ORIG,
276 NUM_COL2_NEW,
277 NUM_COL3_ORIG,
278 NUM_COL3_NEW,
279 ACTION_FLAG,
280 REQUEST_ID,
281 CREATED_BY,
282 CREATION_DATE,
283 LAST_UPDATE_LOGIN,
284 LAST_UPDATE_DATE,
285 LAST_UPDATED_BY
286 ) VALUES ( HZ_CUSTOMER_MERGE_LOG_s.nextval,
287 'MRP_FORECAST_DESIGNATORS',
288 MERGE_HEADER_ID_LIST(I),
289 PRIMARY_KEY1_LIST(I),
290 PRIMARY_KEY2_LIST(I),
291 NUM_COL1_ORIG_LIST(I),
292 NUM_COL1_NEW_LIST(I),
293 NUM_COL2_ORIG_LIST(I),
294 NUM_COL2_NEW_LIST(I),
295 NUM_COL3_ORIG_LIST(I),
296 NUM_COL3_NEW_LIST(I),
297 'U',
298 req_id,
299 hz_utility_pub.CREATED_BY,
300 hz_utility_pub.CREATION_DATE,
301 hz_utility_pub.LAST_UPDATE_LOGIN,
302 hz_utility_pub.LAST_UPDATE_DATE,
303 hz_utility_pub.LAST_UPDATED_BY
304 );
305
306 END IF;
307 FORALL I in 1..MERGE_HEADER_ID_LIST.COUNT
308 UPDATE MRP_FORECAST_DESIGNATORS yt SET
309 customer_id=NUM_COL1_NEW_LIST(I)
310 ,ship_id=NUM_COL2_NEW_LIST(I)
311 ,bill_id=NUM_COL3_NEW_LIST(I)
312 , LAST_UPDATE_DATE=SYSDATE
313 , last_updated_by=arp_standard.profile.user_id
314 , last_update_login=arp_standard.profile.last_update_login
315 , REQUEST_ID=req_id
316 , PROGRAM_APPLICATION_ID=arp_standard.profile.program_application_id
317 , PROGRAM_ID=arp_standard.profile.program_id
318 , PROGRAM_UPDATE_DATE=SYSDATE
319 WHERE ORGANIZATION_ID=PRIMARY_KEY1_LIST(I)
320 AND FORECAST_DESIGNATOR=PRIMARY_KEY2_LIST(I)
321 ;
322 l_count := l_count + SQL%ROWCOUNT;
323 IF l_last_fetch THEN
324 EXIT;
325 END IF;
326 END LOOP;
327
328 arp_message.set_name('AR','AR_ROWS_UPDATED');
329 arp_message.set_token('NUM_ROWS',to_char(l_count));
330 END IF;
331 EXCEPTION
332 WHEN OTHERS THEN
333 arp_message.set_line( 'MRP_FDE');
334 RAISE;
335 END MRP_FDE;
336
337
338 /*-------------------------------------------------------------
339 |
340 | PROCEDURE
341 | MRP_FU
342 | DESCRIPTION :
343 | Account merge procedure for the table, MRP_FORECAST_UPDATES
344 |
345 | NOTES:
346 |
347 |--------------------------------------------------------------*/
348
349 PROCEDURE MRP_FU (
350 req_id NUMBER,
351 set_num NUMBER,
352 process_mode VARCHAR2) IS
353
354 TYPE MERGE_HEADER_ID_LIST_TYPE IS TABLE OF
355 RA_CUSTOMER_MERGE_HEADERS.CUSTOMER_MERGE_HEADER_ID%TYPE
356 INDEX BY BINARY_INTEGER;
357 MERGE_HEADER_ID_LIST MERGE_HEADER_ID_LIST_TYPE;
358
359 TYPE TRANSACTION_ID_LIST_TYPE IS TABLE OF
360 MRP_FORECAST_UPDATES.TRANSACTION_ID%TYPE
361 INDEX BY BINARY_INTEGER;
362 PRIMARY_KEY_ID_LIST TRANSACTION_ID_LIST_TYPE;
363
364 TYPE customer_id_LIST_TYPE IS TABLE OF
365 MRP_FORECAST_UPDATES.customer_id%TYPE
366 INDEX BY BINARY_INTEGER;
367 NUM_COL1_ORIG_LIST customer_id_LIST_TYPE;
368 NUM_COL1_NEW_LIST customer_id_LIST_TYPE;
369
370 TYPE ship_id_LIST_TYPE IS TABLE OF
371 MRP_FORECAST_UPDATES.ship_id%TYPE
372 INDEX BY BINARY_INTEGER;
373 NUM_COL2_ORIG_LIST ship_id_LIST_TYPE;
374 NUM_COL2_NEW_LIST ship_id_LIST_TYPE;
375
376 TYPE bill_id_LIST_TYPE IS TABLE OF
377 MRP_FORECAST_UPDATES.bill_id%TYPE
378 INDEX BY BINARY_INTEGER;
379 NUM_COL3_ORIG_LIST bill_id_LIST_TYPE;
380 NUM_COL3_NEW_LIST bill_id_LIST_TYPE;
381
382 l_profile_val VARCHAR2(30);
383 CURSOR merged_records IS
384 SELECT distinct m.CUSTOMER_MERGE_HEADER_ID
385 ,yt.TRANSACTION_ID
386 ,yt.customer_id
387 ,yt.ship_id
388 ,yt.bill_id
389 FROM MRP_FORECAST_UPDATES yt, ra_customer_merges m
390 WHERE (
391 yt.customer_id = m.DUPLICATE_ID
392 OR yt.ship_id = m.DUPLICATE_SITE_ID
393 OR yt.bill_id = m.DUPLICATE_SITE_ID
394 ) AND m.process_flag = 'N'
395 AND m.request_id = req_id
396 AND m.set_number = set_num;
397 l_last_fetch BOOLEAN := FALSE;
398 l_count NUMBER;
399 BEGIN
400 IF process_mode='LOCK' THEN
401 NULL;
402 ELSE
403 ARP_MESSAGE.SET_NAME('AR','AR_UPDATING_TABLE');
404 ARP_MESSAGE.SET_TOKEN('TABLE_NAME','MRP_FORECAST_UPDATES',FALSE);
405 HZ_ACCT_MERGE_UTIL.load_set(set_num, req_id);
406 l_profile_val := FND_PROFILE.VALUE('HZ_AUDIT_ACCT_MERGE');
407
408 open merged_records;
409 LOOP
410 FETCH merged_records BULK COLLECT INTO
411 MERGE_HEADER_ID_LIST
412 , PRIMARY_KEY_ID_LIST
413 , NUM_COL1_ORIG_LIST
414 , NUM_COL2_ORIG_LIST
415 , NUM_COL3_ORIG_LIST
416 limit 1000
417 ;
418 IF merged_records%NOTFOUND THEN
419 l_last_fetch := TRUE;
420 END IF;
421 IF MERGE_HEADER_ID_LIST.COUNT = 0 and l_last_fetch then
422 exit;
423 END IF;
424 FOR I in 1..MERGE_HEADER_ID_LIST.COUNT LOOP
425 NUM_COL1_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_ACCOUNT(NUM_COL1_ORIG_LIST(I));
426 NUM_COL2_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_SITE_USE(NUM_COL2_ORIG_LIST(I));
427 NUM_COL3_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_SITE_USE(NUM_COL3_ORIG_LIST(I));
428 END LOOP;
429 IF l_profile_val IS NOT NULL AND l_profile_val = 'Y' THEN
430 FORALL I in 1..MERGE_HEADER_ID_LIST.COUNT
431 INSERT INTO HZ_CUSTOMER_MERGE_LOG (
432 MERGE_LOG_ID,
433 TABLE_NAME,
434 MERGE_HEADER_ID,
435 PRIMARY_KEY_ID,
436 NUM_COL1_ORIG,
437 NUM_COL1_NEW,
438 NUM_COL2_ORIG,
439 NUM_COL2_NEW,
440 NUM_COL3_ORIG,
441 NUM_COL3_NEW,
442 ACTION_FLAG,
443 REQUEST_ID,
444 CREATED_BY,
445 CREATION_DATE,
446 LAST_UPDATE_LOGIN,
447 LAST_UPDATE_DATE,
448 LAST_UPDATED_BY
449 ) VALUES ( HZ_CUSTOMER_MERGE_LOG_s.nextval,
450 'MRP_FORECAST_UPDATES',
451 MERGE_HEADER_ID_LIST(I),
452 PRIMARY_KEY_ID_LIST(I),
453 NUM_COL1_ORIG_LIST(I),
454 NUM_COL1_NEW_LIST(I),
455 NUM_COL2_ORIG_LIST(I),
456 NUM_COL2_NEW_LIST(I),
457 NUM_COL3_ORIG_LIST(I),
458 NUM_COL3_NEW_LIST(I),
459 'U',
460 req_id,
461 hz_utility_pub.CREATED_BY,
462 hz_utility_pub.CREATION_DATE,
463 hz_utility_pub.LAST_UPDATE_LOGIN,
464 hz_utility_pub.LAST_UPDATE_DATE,
465 hz_utility_pub.LAST_UPDATED_BY
466 );
467
468 END IF;
469 FORALL I in 1..MERGE_HEADER_ID_LIST.COUNT
470 UPDATE MRP_FORECAST_UPDATES yt SET
471 customer_id=NUM_COL1_NEW_LIST(I)
472 ,ship_id=NUM_COL2_NEW_LIST(I)
473 ,bill_id=NUM_COL3_NEW_LIST(I)
474 , LAST_UPDATE_DATE=SYSDATE
475 , last_updated_by=arp_standard.profile.user_id
476 , last_update_login=arp_standard.profile.last_update_login
477 , REQUEST_ID=req_id
478 , PROGRAM_APPLICATION_ID=arp_standard.profile.program_application_id
479 , PROGRAM_ID=arp_standard.profile.program_id
480 , PROGRAM_UPDATE_DATE=SYSDATE
481 WHERE TRANSACTION_ID=PRIMARY_KEY_ID_LIST(I)
482 AND CUSTOMER_ID=NUM_COL1_ORIG_LIST(I)
483 AND NVL(SHIP_ID,-23453)=NVL(NUM_COL2_ORIG_LIST(I),-23453)
484 AND NVL(BILL_ID,-23453)=NVL(NUM_COL3_ORIG_LIST(I),-23453)
485 ;
486 l_count := l_count + SQL%ROWCOUNT;
487 IF l_last_fetch THEN
488 EXIT;
489 END IF;
490 END LOOP;
491
492 arp_message.set_name('AR','AR_ROWS_UPDATED');
493 arp_message.set_token('NUM_ROWS',to_char(l_count));
494 END IF;
495 EXCEPTION
496 WHEN OTHERS THEN
497 arp_message.set_line( 'MRP_FU');
498 RAISE;
499 END MRP_FU;
500
501
502 /*-------------------------------------------------------------
503 |
504 | PROCEDURE
505 | MRP_SOU
506 | DESCRIPTION :
507 | Account merge procedure for the table, MRP_SALES_ORDER_UPDATES
508 |
509 |
510 |--------------------------------------------------------------*/
511
512 PROCEDURE MRP_SOU (
513 req_id NUMBER,
514 set_num NUMBER,
515 process_mode VARCHAR2) IS
516
517 TYPE MERGE_HEADER_ID_LIST_TYPE IS TABLE OF
518 RA_CUSTOMER_MERGE_HEADERS.CUSTOMER_MERGE_HEADER_ID%TYPE
519 INDEX BY BINARY_INTEGER;
520 MERGE_HEADER_ID_LIST MERGE_HEADER_ID_LIST_TYPE;
521
522 TYPE UPDATE_SEQ_NUM_LIST_TYPE IS TABLE OF
523 MRP_SALES_ORDER_UPDATES.UPDATE_SEQ_NUM%TYPE
524 INDEX BY BINARY_INTEGER;
525 PRIMARY_KEY_ID_LIST UPDATE_SEQ_NUM_LIST_TYPE;
526
527 TYPE current_customer_id_LIST_TYPE IS TABLE OF
528 MRP_SALES_ORDER_UPDATES.current_customer_id%TYPE
529 INDEX BY BINARY_INTEGER;
530 NUM_COL1_ORIG_LIST current_customer_id_LIST_TYPE;
531 NUM_COL1_NEW_LIST current_customer_id_LIST_TYPE;
532
533 TYPE current_ship_id_LIST_TYPE IS TABLE OF
534 MRP_SALES_ORDER_UPDATES.current_ship_id%TYPE
535 INDEX BY BINARY_INTEGER;
536 NUM_COL2_ORIG_LIST current_ship_id_LIST_TYPE;
537 NUM_COL2_NEW_LIST current_ship_id_LIST_TYPE;
538
539 TYPE current_bill_id_LIST_TYPE IS TABLE OF
540 MRP_SALES_ORDER_UPDATES.current_bill_id%TYPE
541 INDEX BY BINARY_INTEGER;
542 NUM_COL3_ORIG_LIST current_bill_id_LIST_TYPE;
543 NUM_COL3_NEW_LIST current_bill_id_LIST_TYPE;
544
545 TYPE previous_customer_id_LIST_TYPE IS TABLE OF
546 MRP_SALES_ORDER_UPDATES.previous_customer_id%TYPE
547 INDEX BY BINARY_INTEGER;
548 NUM_COL4_ORIG_LIST previous_customer_id_LIST_TYPE;
549 NUM_COL4_NEW_LIST previous_customer_id_LIST_TYPE;
550
551 TYPE previous_bill_id_LIST_TYPE IS TABLE OF
552 MRP_SALES_ORDER_UPDATES.previous_bill_id%TYPE
553 INDEX BY BINARY_INTEGER;
554 NUM_COL5_ORIG_LIST previous_bill_id_LIST_TYPE;
555 NUM_COL5_NEW_LIST previous_bill_id_LIST_TYPE;
556
557 TYPE previous_ship_id_LIST_TYPE IS TABLE OF
558 MRP_SALES_ORDER_UPDATES.previous_ship_id%TYPE
559 INDEX BY BINARY_INTEGER;
560 NUM_COL6_ORIG_LIST previous_ship_id_LIST_TYPE;
561 NUM_COL6_NEW_LIST previous_ship_id_LIST_TYPE;
562
563 l_profile_val VARCHAR2(30);
564 CURSOR merged_records IS
565 SELECT distinct CUSTOMER_MERGE_HEADER_ID
566 ,UPDATE_SEQ_NUM
567 ,current_customer_id
568 ,current_ship_id
569 ,current_bill_id
570 ,previous_customer_id
571 ,previous_bill_id
572 ,previous_ship_id
573 FROM MRP_SALES_ORDER_UPDATES yt, ra_customer_merges m
574 WHERE (
575 yt.current_customer_id = m.DUPLICATE_ID
576 OR yt.current_ship_id = m.DUPLICATE_SITE_ID
577 OR yt.current_bill_id = m.DUPLICATE_SITE_ID
578 OR yt.previous_customer_id = m.DUPLICATE_ID
579 OR yt.previous_bill_id = m.DUPLICATE_SITE_ID
580 OR yt.previous_ship_id = m.DUPLICATE_SITE_ID
581 ) AND m.process_flag = 'N'
582 AND m.request_id = req_id
583 AND m.set_number = set_num;
584 l_last_fetch BOOLEAN := FALSE;
585 l_count NUMBER;
586 BEGIN
587 IF process_mode='LOCK' THEN
588 NULL;
589 ELSE
590 ARP_MESSAGE.SET_NAME('AR','AR_UPDATING_TABLE');
591 ARP_MESSAGE.SET_TOKEN('TABLE_NAME','MRP_SALES_ORDER_UPDATES',FALSE);
592 HZ_ACCT_MERGE_UTIL.load_set(set_num, req_id);
593 l_profile_val := FND_PROFILE.VALUE('HZ_AUDIT_ACCT_MERGE');
594
595 open merged_records;
596 LOOP
597 FETCH merged_records BULK COLLECT INTO
598 MERGE_HEADER_ID_LIST
599 , PRIMARY_KEY_ID_LIST
600 , NUM_COL1_ORIG_LIST
601 , NUM_COL2_ORIG_LIST
602 , NUM_COL3_ORIG_LIST
603 , NUM_COL4_ORIG_LIST
604 , NUM_COL5_ORIG_LIST
605 , NUM_COL6_ORIG_LIST
606 limit 1000
607 ;
608 IF merged_records%NOTFOUND THEN
609 l_last_fetch := TRUE;
610 END IF;
611 IF MERGE_HEADER_ID_LIST.COUNT = 0 and l_last_fetch then
612 exit;
613 END IF;
614 FOR I in 1..MERGE_HEADER_ID_LIST.COUNT LOOP
615 NUM_COL1_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_ACCOUNT(NUM_COL1_ORIG_LIST(I));
616 NUM_COL2_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_SITE_USE(NUM_COL2_ORIG_LIST(I));
617 NUM_COL3_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_SITE_USE(NUM_COL3_ORIG_LIST(I));
618 NUM_COL4_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_ACCOUNT(NUM_COL4_ORIG_LIST(I));
619 NUM_COL5_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_SITE_USE(NUM_COL5_ORIG_LIST(I));
620 NUM_COL6_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_SITE_USE(NUM_COL6_ORIG_LIST(I));
621 END LOOP;
622 IF l_profile_val IS NOT NULL AND l_profile_val = 'Y' THEN
623 FORALL I in 1..MERGE_HEADER_ID_LIST.COUNT
624 INSERT INTO HZ_CUSTOMER_MERGE_LOG (
625 MERGE_LOG_ID,
626 TABLE_NAME,
627 MERGE_HEADER_ID,
628 PRIMARY_KEY_ID,
629 NUM_COL1_ORIG,
630 NUM_COL1_NEW,
631 NUM_COL2_ORIG,
632 NUM_COL2_NEW,
633 NUM_COL3_ORIG,
634 NUM_COL3_NEW,
635 NUM_COL4_ORIG,
636 NUM_COL4_NEW,
637 NUM_COL5_ORIG,
638 NUM_COL5_NEW,
639 NUM_COL6_ORIG,
640 NUM_COL6_NEW,
641 ACTION_FLAG,
642 REQUEST_ID,
643 CREATED_BY,
644 CREATION_DATE,
645 LAST_UPDATE_LOGIN,
646 LAST_UPDATE_DATE,
647 LAST_UPDATED_BY
648 ) VALUES ( HZ_CUSTOMER_MERGE_LOG_s.nextval,
649 'MRP_SALES_ORDER_UPDATES',
650 MERGE_HEADER_ID_LIST(I),
651 PRIMARY_KEY_ID_LIST(I),
652 NUM_COL1_ORIG_LIST(I),
653 NUM_COL1_NEW_LIST(I),
654 NUM_COL2_ORIG_LIST(I),
655 NUM_COL2_NEW_LIST(I),
656 NUM_COL3_ORIG_LIST(I),
657 NUM_COL3_NEW_LIST(I),
658 NUM_COL4_ORIG_LIST(I),
659 NUM_COL4_NEW_LIST(I),
660 NUM_COL5_ORIG_LIST(I),
661 NUM_COL5_NEW_LIST(I),
662 NUM_COL6_ORIG_LIST(I),
663 NUM_COL6_NEW_LIST(I),
664 'U',
665 req_id,
666 hz_utility_pub.CREATED_BY,
667 hz_utility_pub.CREATION_DATE,
668 hz_utility_pub.LAST_UPDATE_LOGIN,
669 hz_utility_pub.LAST_UPDATE_DATE,
670 hz_utility_pub.LAST_UPDATED_BY
671 );
672
673 END IF; FORALL I in 1..MERGE_HEADER_ID_LIST.COUNT
674 UPDATE MRP_SALES_ORDER_UPDATES yt SET
675 current_customer_id=NUM_COL1_NEW_LIST(I)
676 ,current_ship_id=NUM_COL2_NEW_LIST(I)
677 ,current_bill_id=NUM_COL3_NEW_LIST(I)
678 ,previous_customer_id=NUM_COL4_NEW_LIST(I)
679 ,previous_bill_id=NUM_COL5_NEW_LIST(I)
680 ,previous_ship_id=NUM_COL6_NEW_LIST(I)
681 , LAST_UPDATE_DATE=SYSDATE
682 , last_updated_by=arp_standard.profile.user_id
683 , last_update_login=arp_standard.profile.last_update_login
684 , REQUEST_ID=req_id
685 , PROGRAM_APPLICATION_ID=arp_standard.profile.program_application_id
686 , PROGRAM_ID=arp_standard.profile.program_id
687 , PROGRAM_UPDATE_DATE=SYSDATE
688 WHERE UPDATE_SEQ_NUM=PRIMARY_KEY_ID_LIST(I)
689 ;
690 l_count := l_count + SQL%ROWCOUNT;
691 IF l_last_fetch THEN
692 EXIT;
693 END IF;
694 END LOOP;
695
696 arp_message.set_name('AR','AR_ROWS_UPDATED');
697 arp_message.set_token('NUM_ROWS',to_char(l_count));
698 END IF;
699 EXCEPTION
700 WHEN OTHERS THEN
701 arp_message.set_line( 'MRP_SOU');
702 RAISE;
703 END MRP_SOU;
704
705 /*-------------------------------------------------------------
706 |
707 | PROCEDURE
708 | MRP_SA
709 | DESCRIPTION :
710 | Account merge procedure for the table, MRP_SR_ASSIGNMENTS
711 |
712 | NOTES:
713 |--------------------------------------------------------------*/
714
715 PROCEDURE MRP_SA (
716 req_id NUMBER,
717 set_num NUMBER,
718 process_mode VARCHAR2) IS
719
720 TYPE MERGE_HEADER_ID_LIST_TYPE IS TABLE OF
721 RA_CUSTOMER_MERGE_HEADERS.CUSTOMER_MERGE_HEADER_ID%TYPE
722 INDEX BY BINARY_INTEGER;
723 MERGE_HEADER_ID_LIST MERGE_HEADER_ID_LIST_TYPE;
724
725 TYPE ASSIGNMENT_ID_LIST_TYPE IS TABLE OF
726 MRP_SR_ASSIGNMENTS.ASSIGNMENT_ID%TYPE
727 INDEX BY BINARY_INTEGER;
728 PRIMARY_KEY_ID_LIST ASSIGNMENT_ID_LIST_TYPE;
729
730 TYPE customer_id_LIST_TYPE IS TABLE OF
731 MRP_SR_ASSIGNMENTS.customer_id%TYPE
732 INDEX BY BINARY_INTEGER;
733 NUM_COL1_ORIG_LIST customer_id_LIST_TYPE;
734 NUM_COL1_NEW_LIST customer_id_LIST_TYPE;
735
736 TYPE ship_to_site_id_LIST_TYPE IS TABLE OF
737 MRP_SR_ASSIGNMENTS.ship_to_site_id%TYPE
738 INDEX BY BINARY_INTEGER;
739 NUM_COL2_ORIG_LIST ship_to_site_id_LIST_TYPE;
740 NUM_COL2_NEW_LIST ship_to_site_id_LIST_TYPE;
741
742 l_profile_val VARCHAR2(30);
743 CURSOR merged_records IS
744 SELECT distinct m.CUSTOMER_MERGE_HEADER_ID
745 ,yt.ASSIGNMENT_ID
746 ,yt.customer_id
747 ,yt.ship_to_site_id
748 FROM MRP_SR_ASSIGNMENTS yt, ra_customer_merges m
749 WHERE (
750 yt.customer_id = m.DUPLICATE_ID
751 OR yt.ship_to_site_id = m.DUPLICATE_SITE_ID
752 ) AND yt.assignment_type in (4,5,6)
753 AND m.process_flag = 'N'
754 AND m.request_id = req_id
755 AND m.set_number = set_num;
756
757 cursor potential_duplicates(q_id number) is
758 select v1.assignment_set_id, v1.assignment_type,
759 v1.organization_id, r1.duplicate_id, r1.duplicate_site_id,
760 v1.sourcing_rule_type, v1.inventory_item_id, v1.category_id,
761 v1.customer_id, v1.customer_site_id
762 from ra_customer_merges r1, (
763 select m.number2 assignment_set_id,
764 m.number3 assignment_type,
765 nvl(m.number4, -23453) organization_id,
766 nvl(r.customer_id, -23453) customer_id,
767 nvl(r.customer_site_id, -23453) customer_site_id,
768 m.number7 sourcing_rule_type,
769 nvl(m.number8, -23453) inventory_item_id,
770 nvl(m.number9, -23453) category_id,
771 count(*)
772 from msc_form_query m, ra_customer_merges r
773 where m.number5 = r.duplicate_id
774 and m.number6 = r.duplicate_site_id
775 and m.query_id = q_id
776 and r.process_flag = 'N'
777 and r.request_id = req_id
778 and r.set_number = set_num
779 group by m.number2, m.number3,
780 nvl(m.number4, -23453), nvl(r.customer_id, -23453),
781 nvl(r.customer_site_id, -23453), m.number7,
782 nvl(m.number8, -23453), nvl(m.number9, -23453)
783 having count(*) > 1
784 ) v1
785 where r1.customer_id = v1.customer_id
786 and r1.customer_site_id = v1.customer_site_id
787 and r1.process_flag = 'N'
788 and r1.request_id = req_id
789 and r1.set_number = set_num
790 order by v1.assignment_set_id, v1.assignment_type,
791 v1.organization_id, v1.sourcing_rule_type, v1.inventory_item_id,
792 v1.category_id, v1.customer_id, v1.customer_site_id;
793
794 l_last_fetch BOOLEAN := FALSE;
795 l_count NUMBER;
796
797 l_assignment_set_id msc_form_query.number2%type;
798 l_assignment_type msc_form_query.number3%type;
799 l_organization_id msc_form_query.number4%type;
800 l_sourcing_rule_type msc_form_query.number7%type;
801 l_inventory_item_id msc_form_query.number8%type;
802 l_category_id msc_form_query.number9%type;
803 l_customer_id ra_customer_merges.customer_id%type;
804 l_customer_site_id ra_customer_merges.customer_site_id%type;
805
806 q_id number;
807
808 BEGIN
809 IF process_mode='LOCK' THEN
810 NULL;
811 ELSE
812 ARP_MESSAGE.SET_NAME('AR','AR_UPDATING_TABLE');
813 ARP_MESSAGE.SET_TOKEN('TABLE_NAME','MRP_SR_ASSIGNMENTS',FALSE);
814 HZ_ACCT_MERGE_UTIL.load_set(set_num, req_id);
815 l_profile_val := FND_PROFILE.VALUE('HZ_AUDIT_ACCT_MERGE');
816
817 /* Fix for bug 1292873, part 2. */
818 select msc_form_query_s.nextval
819 into q_id
820 from dual;
821
822 insert into msc_form_query
823 (query_id, last_update_date, last_updated_by, creation_date,
824 created_by,
825 number1,
826 number2,
827 number3,
828 number4,
829 number5,
830 number6,
831 number7,
832 number8,
833 number9)
834 select q_id, sysdate, -1, sysdate, -1,
835 m.assignment_id,
836 m.assignment_set_id,
837 m.assignment_type,
838 m.organization_id,
839 m.customer_id,
840 m.ship_to_site_id,
841 m.sourcing_rule_type,
842 m.inventory_item_id,
843 m.category_id
844 from mrp_sr_assignments m, ra_customer_merges r
845 where (m.customer_id = r.duplicate_id
846 and m.ship_to_site_id = r.duplicate_site_id)
847 and m.assignment_type in (4, 5, 6)
848 and r.process_flag = 'N'
849 and r.request_id = req_id
850 and r.set_number = set_num;
851
852 l_assignment_set_id := -1;
853 l_assignment_type := -1;
854 l_organization_id := -1;
855 l_sourcing_rule_type := -1;
856 l_inventory_item_id := -1;
857 l_category_id := -1;
858 l_customer_id := -1;
859 l_customer_site_id := -1;
860
861 for rec in potential_duplicates(q_id) loop
862 if (l_assignment_set_id = rec.assignment_set_id and
863 l_assignment_type = rec.assignment_type and
864 l_organization_id = rec.organization_id and
865 l_sourcing_rule_type = rec.sourcing_rule_type and
866 l_inventory_item_id = rec.inventory_item_id and
867 l_category_id = rec.category_id and
868 l_customer_id = rec.customer_id and
869 l_customer_site_id = rec.customer_site_id) then
870
871 delete /*+ index (msa mrp_sr_assignments_u1) */
872 from mrp_sr_assignments msa
873 where assignment_set_id = rec.assignment_set_id
874 and assignment_type = rec.assignment_type
875 and nvl(organization_id, -23453) = rec.organization_id
876 and nvl(customer_id, -23453) = rec.duplicate_id
877 and nvl(ship_to_site_id, -23453) = rec.duplicate_site_id
878 and sourcing_rule_type = rec.sourcing_rule_type
879 and nvl(inventory_item_id, -23453) = rec.inventory_item_id
880 and nvl(category_id, -23453) = rec.category_id
881 and assignment_id in (
882 select number1
883 from msc_form_query
884 where query_id = q_id
885 );
886 end if;
887
888 l_assignment_set_id := rec.assignment_set_id;
889 l_assignment_type := rec.assignment_type;
890 l_organization_id := rec.organization_id;
891 l_sourcing_rule_type := rec.sourcing_rule_type;
892 l_inventory_item_id := rec.inventory_item_id;
893 l_category_id := rec.category_id;
894 l_customer_id := rec.customer_id;
895 l_customer_site_id := rec.customer_site_id;
896 end loop;
897
898 open merged_records;
899 LOOP
900 FETCH merged_records BULK COLLECT INTO
901 MERGE_HEADER_ID_LIST
902 , PRIMARY_KEY_ID_LIST
903 , NUM_COL1_ORIG_LIST
904 , NUM_COL2_ORIG_LIST
905 limit 1000
906 ;
907 IF merged_records%NOTFOUND THEN
908 l_last_fetch := TRUE;
909 END IF;
910 IF MERGE_HEADER_ID_LIST.COUNT = 0 and l_last_fetch then
911 exit;
912 END IF;
913 FOR I in 1..MERGE_HEADER_ID_LIST.COUNT LOOP
914 NUM_COL1_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_ACCOUNT(NUM_COL1_ORIG_LIST(I));
915 NUM_COL2_NEW_LIST(I) := HZ_ACCT_MERGE_UTIL.GETDUP_SITE_USE(NUM_COL2_ORIG_LIST(I));
916 END LOOP;
917 IF l_profile_val IS NOT NULL AND l_profile_val = 'Y' THEN
918 FORALL I in 1..MERGE_HEADER_ID_LIST.COUNT
919 INSERT INTO HZ_CUSTOMER_MERGE_LOG (
920 MERGE_LOG_ID,
921 TABLE_NAME,
922 MERGE_HEADER_ID,
923 PRIMARY_KEY_ID,
924 NUM_COL1_ORIG,
925 NUM_COL1_NEW,
926 NUM_COL2_ORIG,
927 NUM_COL2_NEW,
928 ACTION_FLAG,
929 REQUEST_ID,
930 CREATED_BY,
931 CREATION_DATE,
932 LAST_UPDATE_LOGIN,
933 LAST_UPDATE_DATE,
934 LAST_UPDATED_BY
935 ) VALUES ( HZ_CUSTOMER_MERGE_LOG_s.nextval,
936 'MRP_SR_ASSIGNMENTS',
937 MERGE_HEADER_ID_LIST(I),
938 PRIMARY_KEY_ID_LIST(I),
939 NUM_COL1_ORIG_LIST(I),
940 NUM_COL1_NEW_LIST(I),
941 NUM_COL2_ORIG_LIST(I),
942 NUM_COL2_NEW_LIST(I),
943 'U',
944 req_id,
945 hz_utility_pub.CREATED_BY,
946 hz_utility_pub.CREATION_DATE,
947 hz_utility_pub.LAST_UPDATE_LOGIN,
948 hz_utility_pub.LAST_UPDATE_DATE,
949 hz_utility_pub.LAST_UPDATED_BY
950 );
951
952 END IF;
953
954 /* Fix for bug 12928793, part 1. */
955 FORALL I in 1..MERGE_HEADER_ID_LIST.COUNT
956 delete from mrp_sr_assignments
957 where assignment_id IN
958 (SELECT
959 assignment_id
960 FROM mrp_sr_assignments
961 WHERE
962 (ASSIGNMENT_SET_ID ,
963 ASSIGNMENT_TYPE,
964 NVL(ORGANIZATION_ID, -23453),
965 NVL(CUSTOMER_ID, -23453),
966 NVL(SHIP_TO_SITE_ID, -23453),
967 SOURCING_RULE_TYPE,
968 NVL(INVENTORY_ITEM_ID, -23453),
969 NVL(CATEGORY_ID, -23453)) IN
970 (SELECT
971 ASSIGNMENT_SET_ID ,
972 ASSIGNMENT_TYPE,
973 NVL(ORGANIZATION_ID, -23453),
974 NVL(num_col1_new_list(I) , -23453),
975 NVL(num_col2_new_list(I), -23453),
976 SOURCING_RULE_TYPE,
977 NVL(INVENTORY_ITEM_ID, -23453),
978 NVL(CATEGORY_ID, -23453)
979 FROM mrp_sr_assignments
980 WHERE assignment_id = primary_key_id_list(I)));
981
982 FORALL I in 1..MERGE_HEADER_ID_LIST.COUNT
983 UPDATE MRP_SR_ASSIGNMENTS yt SET
984 customer_id=NUM_COL1_NEW_LIST(I)
985 ,ship_to_site_id=NUM_COL2_NEW_LIST(I)
986 , LAST_UPDATE_DATE=SYSDATE
987 , last_updated_by=arp_standard.profile.user_id
988 , last_update_login=arp_standard.profile.last_update_login
989 , REQUEST_ID=req_id
990 , PROGRAM_APPLICATION_ID=arp_standard.profile.program_application_id
991 , PROGRAM_ID=arp_standard.profile.program_id
992 , PROGRAM_UPDATE_DATE=SYSDATE
993 WHERE ASSIGNMENT_ID=PRIMARY_KEY_ID_LIST(I)
994 ;
995 l_count := l_count + SQL%ROWCOUNT;
996 IF l_last_fetch THEN
997 EXIT;
998 END IF;
999 END LOOP;
1000
1001 arp_message.set_name('AR','AR_ROWS_UPDATED');
1002 arp_message.set_token('NUM_ROWS',to_char(l_count));
1003 END IF;
1004 EXCEPTION
1005 WHEN OTHERS THEN
1006 arp_message.set_line( 'MRP_SA');
1007 RAISE;
1008 END MRP_SA;
1009
1010
1011 /*---------------------------- PUBLIC ROUTINES ------------------------------*/
1012
1013 PROCEDURE MERGE (req_id NUMBER, set_num NUMBER, process_mode VARCHAR2) is
1014 BEGIN
1015
1016 arp_message.set_line( 'MRPP_CMERGE_FCST.MERGE()+' );
1017
1018 MRP_FD( req_id, set_num, process_mode );
1019 MRP_FDE( req_id, set_num, process_mode );
1020 MRP_FU( req_id, set_num, process_mode );
1021 MRP_SOU( req_id, set_num, process_mode);
1022 MRP_SA( req_id, set_num, process_mode); /* Bug 1848916 */
1023
1024 arp_message.set_line( 'MRPP_CMERGE_FCST.MERGE()-' );
1025
1026 END MERGE;
1027
1028 end MRPP_CMERGE_FCST;