[Home] [Help]
PACKAGE BODY: APPS.MSC_CL_PULL
Source
1 PACKAGE BODY MSC_CL_PULL AS -- body
2 /* $Header: MSCCLFAB.pls 120.35.12010000.9 2008/11/13 11:52:18 arusubra ship $ */
3
4
5
6 -- Misc --
7 v_sql_stmt VARCHAR2(4000);
8
9 -- included for the fix 2351297 --
10 v_req_data varchar2(10);
11
12 v_item_type_id NUMBER := MSC_UTIL.G_PARTCONDN_ITEMTYPEID;
13 v_item_type_good NUMBER := MSC_UTIL.G_PARTCONDN_GOOD;
14 v_item_type_bad NUMBER := MSC_UTIL.G_PARTCONDN_BAD;
15
16 v_cp_enabled NUMBER;
17
18
19 v_msc_tp_coll_window NUMBER := MSC_UTIL.v_msc_tp_coll_window;
20
21 v_gmp_routine_name VARCHAR2(50);
22 GMP_ERROR EXCEPTION;
23
24 NULL_DBLINK CONSTANT VARCHAR2(1):= ' ';
25
26 TSK_RM_ASSIGNMENT_SETS NUMBER := 1;
27 TSK_RM_ATP_RULES NUMBER := 1;
28 TSK_RM_BILL_OF_RESOURCES NUMBER := 1;
29 TSK_RM_BIS_BUSINESS_PLANS NUMBER := 1;
30 TSK_RM_BIS_PERIODS NUMBER := 1;
31 TSK_RM_BIS_PFMC_MEASURES NUMBER := 1;
32 TSK_RM_BIS_TARGET_LEVELS NUMBER := 1;
33 TSK_RM_BIS_TARGETS NUMBER := 1;
34 TSK_RM_BOM_COMPONENTS NUMBER := 1;
35 TSK_RM_BOMS NUMBER := 1;
36 TSK_RM_BOR_REQUIREMENTS NUMBER := 1;
37 TSK_RM_CAL_WEEK_START_DATES NUMBER := 1;
38 TSK_RM_CAL_YEAR_START_DATES NUMBER := 1;
39 TSK_RM_CALENDAR_DATES NUMBER := 1;
40 TSK_RM_CALENDAR_SHIFTS NUMBER := 1;
41 TSK_RM_CALENDAR_ASSIGNMENTS NUMBER := 1;
42 TSK_RM_CATEGORY_SETS NUMBER := 1;
43 TSK_RM_CARRIER_SERVICES NUMBER := 1;
44 TSK_RM_COMPONENT_SUBSTITUTES NUMBER := 1;
45 TSK_RM_DEMAND_CLASSES NUMBER := 1;
46 TSK_RM_DEMANDS NUMBER := 3;
47 TSK_RM_DEPARTMENT_RESOURCES NUMBER := 1;
48 TSK_RM_DESIGNATORS NUMBER := 1;
49 TSK_RM_INTERORG_SHIP_METHODS NUMBER := 1;
50 TSK_RM_ITEM_CATEGORIES NUMBER := 1;
51 TSK_RM_ITEM_SUBSTITUTES NUMBER := 1;
52 TSK_RM_ITEM_SUPPLIERS NUMBER := 1;
53 TSK_RM_LOCATION_ASSOCIATIONS NUMBER := 1;
54 TSK_RM_SOURCING_RULES NUMBER := 1;
55 TSK_RM_OPERATION_COMPONENTS NUMBER := 1;
56 TSK_RM_OPERATION_RESOURCE_SEQS NUMBER := 1;
57 TSK_RM_OPERATION_RESOURCES NUMBER := 1;
58 TSK_RM_PARAMETERS NUMBER := 1;
59 TSK_RM_PARTNER_CONTACTS NUMBER := 2;
60 TSK_RM_PERIOD_START_DATES NUMBER := 1;
61 TSK_RM_PLANNERS NUMBER := 1;
62 TSK_RM_PROCESS_EFFECTIVITY NUMBER := 1;
63 TSK_RM_PROJECT_TASKS NUMBER := 1;
64 TSK_RM_PROJECTS NUMBER := 1;
65 TSK_RM_REGIONS NUMBER := 1;
66 TSK_RM_REGION_SITES NUMBER := 1;
67 TSK_RM_RESERVATIONS NUMBER := 1;
68 TSK_RM_RESOURCE_CHANGES NUMBER := 1;
69 TSK_RM_RESOURCE_GROUPS NUMBER := 1;
70 TSK_RM_RESOURCE_REQUIREMENTS NUMBER := 1;
71 TSK_RM_RESOURCE_SHIFTS NUMBER := 1;
72 TSK_RM_ROUTING_OPERATIONS NUMBER := 1;
73 TSK_RM_ROUTINGS NUMBER := 1;
74 TSK_RM_SAFETY_STOCKS NUMBER := 1;
75 TSK_RM_SALES_ORDERS NUMBER := 1;
76 TSK_RM_JOB_OP_NETWORKS NUMBER := 1;
77 TSK_RM_JOB_OPERATIONS NUMBER := 1;
78 TSK_RM_JOB_REQUIREMENT_OPS NUMBER := 1;
79 TSK_RM_JOB_OP_RESOURCES NUMBER := 1;
80 TSK_RM_SHIFT_DATES NUMBER := 1;
81 TSK_RM_SHIFT_EXCEPTIONS NUMBER := 1;
82 TSK_RM_SHIFT_TIMES NUMBER := 1;
83 TSK_RM_SIMULATION_SETS NUMBER := 1;
84 TSK_RM_SR_ASSIGNMENTS NUMBER := 1;
85 TSK_RM_SR_RECEIPT_ORG NUMBER := 1;
86 TSK_RM_SR_SOURCE_ORG NUMBER := 1;
87 TSK_RM_SUB_INVENTORIES NUMBER := 1;
88 TSK_RM_SUPPLIER_CAPACITIES NUMBER := 1;
89 TSK_RM_SUPPLIER_FLEX_FENCES NUMBER := 1;
90 TSK_RM_SUPPLIES NUMBER := 7; -- 5 changed to 7 .
91 TSK_RM_SYSTEM_ITEMS NUMBER := 3;
92 TSK_RM_TRADING_PARTNER_SITES NUMBER := 1;
93 TSK_RM_TRADING_PARTNERS NUMBER := 1;
94 TSK_RM_TRIPS NUMBER := 1;
95 TSK_RM_TRIP_STOPS NUMBER := 1;
96 TSK_RM_UNIT_NUMBERS NUMBER := 1;
97 TSK_RM_UNITS_OF_MEASURE NUMBER := 1;
98 TSK_RM_UOM_CLASS_CONVERSIONS NUMBER := 1;
99 TSK_RM_UOM_CONVERSIONS NUMBER := 1;
100 TSK_RM_ZONE_REGIONS NUMBER := 1;
101 /* ds change start */
102 TSK_RM_RESOURCE_SETUP NUMBER := 1;
103 TSK_RM_RESOURCE_INSTANCE NUMBER := 1;
104 /* ds change end */
105 TSK_RM_ABC_CLASSES NUMBER := 1;
106 TSK_RM_SALES_CHANNEL NUMBER := 1;
107 TSK_RM_FISCAL_CALENDAR NUMBER := 1;
108 TSK_RM_INTERNAL_REPAIR NUMBER := 1;
109 TSK_RM_EXTERNAL_REPAIR NUMBER := 1;
110 TSK_RM_PAYBACK_DEMAND_SUPPLY NUMBER := 1;
111 TSK_RM_CURRENCY_CONVERSION NUMBER := 1;
112 TSK_RM_DELIVERY_DETAILS NUMBER := 1;
113
114 /*procedure to return the org string of Depot org */ -- needs to be changed
115 PROCEDURE GET_DEPOT_ORG_STRINGS(p_instance_id IN NUMBER)
116 IS
117 lv_in_org_str VARCHAR2(10240):=NULL;
118 lv_depot_org_str VARCHAR2(4000);
119 lv_non_depot_org_str VARCHAR2(4000); -- For Bug 590379 SRP Changes
120 lv_ext_repair_org_str VARCHAR2(4000);
121 lv_ext_repair_sup_id_str VARCHAR2(4000);
122 lv_sql_stmt VARCHAR2(4000);
123 lv_org_type NUMBER;
124 lv_org_id NUMBER;
125 lv_count NUMBER;
126 lv_sup_id NUMBER;
127 type cur_type is ref cursor;
128 cur cur_type;
129 BEGIN
130 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,'GET_DEPOT_ORG_STR value of v_instance_id: '||to_char(p_instance_id));
131 lv_in_org_str := GET_ORG_STR (p_instance_id,2);
132
133 lv_sql_stmt := ' Select organization_id, nvl(organization_type,1) '
134 ||' From msc_instance_orgs mio '
135 ||' Where sr_instance_id = '||p_instance_id|| ' and organization_id '||lv_in_org_str
136 ;
137
138 lv_count:= 0;
139 lv_non_depot_org_str := NULL;
140 lv_depot_org_str := NULL;
141 lv_ext_repair_org_str := NULL;
142 lv_ext_repair_sup_id_str := NULL;
143 --On error, org_str will be populated with -9998
144 MSC_UTIL.v_depot_org_str := '= -9998';
145 MSC_UTIL.v_non_depot_org_str := '= -9998';
146
147 --lv_depot_org_str :=' IN (';
148 --lv_non_depot_org_str :=' IN (';
149 --MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,'Opening Cursor ');
150 open cur for lv_sql_stmt;
151 --FOR Cur IN lv_sql_stmt
152 LOOP
153 fetch cur into lv_org_id,lv_org_type;
154 exit when cur%notfound;
155
156
157 IF lv_org_type = 3 THEN
158 IF lv_depot_org_str is NULL THEN
159 lv_depot_org_str:=' IN ('|| lv_org_id;
160 ELSE
161 lv_depot_org_str := lv_depot_org_str||','||lv_org_id;
162 END IF;
163 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1,'lv_org_id : '||lv_org_id);
164 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1,'lv_depot_org_str : '||lv_depot_org_str);
165 ELSIF lv_org_type = 4 THEN
166 IF lv_ext_repair_org_str is NULL THEN
167 lv_ext_repair_org_str:=' IN ('|| lv_org_id;
168 ELSE
169 lv_ext_repair_org_str := lv_ext_repair_org_str||','||lv_org_id;
170 END IF;
171 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1,'lv_org_id : '||lv_org_id);
172 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1,'lv_ext_repair_org_str : '||lv_ext_repair_org_str);
173 ELSE
174 IF lv_non_depot_org_str is NULL THEN
175 lv_non_depot_org_str:=' IN ('|| lv_org_id;
176 ELSE
177 lv_non_depot_org_str := lv_non_depot_org_str||','||lv_org_id;
178 END IF;
179
180 END IF;
181 Lv_count:= lv_count+1;
182
183 END LOOP;
184 Close cur;
185
186
187 IF lv_depot_org_str <>'NULL' THEN
188 lv_depot_org_str:= lv_depot_org_str|| ')' ; -- Needs to be changed
189 ELSE
190 lv_depot_org_str:= '= -9999';
191 END IF;
192
193 IF lv_non_depot_org_str<>'NULL' THEN
194 lv_non_depot_org_str:= lv_non_depot_org_str||')' ; -- Needs to be changed
195 ELSE
196 lv_non_depot_org_str:= '= -9999';
197 END IF;
198
199 IF lv_ext_repair_org_str <>'NULL' THEN
200 lv_ext_repair_org_str:= lv_ext_repair_org_str|| ')' ; -- Needs to be changed
201 lv_sql_stmt := 'select mtil.sr_tp_id '
202 || ' from msc_trading_partners mtp, msc_tp_id_lid mtil '
203 || ' where mtp.modeled_supplier_id is not null and '
204 || ' mtp.sr_tp_id '|| lv_ext_repair_org_str || ' and '
205 || ' mtil.tp_id=mtp.modeled_supplier_id and '
206 || ' mtp.sr_instance_id = ' || p_instance_id || ' and '
207 || ' mtp.sr_instance_id = mtil.sr_instance_id and '
208 || ' mtil.partner_type = 1 and '
209 || ' mtp.partner_type = 3';
210 open cur for lv_sql_stmt;
211 LOOP
212 fetch cur into lv_sup_id;
213 exit when cur%notfound;
214
215 IF lv_ext_repair_sup_id_str is NULL THEN
216 lv_ext_repair_sup_id_str:=' IN ('|| lv_sup_id;
217 ELSE
218 lv_ext_repair_sup_id_str := lv_ext_repair_sup_id_str||','||lv_sup_id;
219 END IF;
220 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1,'lv_org_id : '||lv_sup_id);
221 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1,'lv_ext_repair_sup_id_str : '||lv_ext_repair_sup_id_str);
222
223 END LOOP;
224 Close cur;
225 ELSE
226 lv_ext_repair_org_str:= '= -9999';
227 END IF;
228
229 IF lv_ext_repair_sup_id_str<>'NULL' THEN
230 lv_ext_repair_sup_id_str:= lv_ext_repair_sup_id_str||')' ; -- Needs to be changed
231 ELSE
232 lv_ext_repair_sup_id_str:= '= -9999';
233 END IF;
234
235 MSC_UTIL.v_depot_org_str := lv_depot_org_str;
236 MSC_UTIL.v_non_depot_org_str := lv_non_depot_org_str;
237 MSC_UTIL.v_ext_repair_sup_id_str := lv_ext_repair_sup_id_str;
238
239 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,'GET_DEPO_ORG_STR returned :'||MSC_UTIL.v_depot_org_str);
240 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,'G_NON_DEPOT ORG STRING RETURNED :'||MSC_UTIL.v_non_depot_org_str);
241
242 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,'ext_repair_org_str returned :'||lv_ext_repair_org_str);
243 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,'ext_repair_sup_id_str RETURNED :'||MSC_UTIL.v_ext_repair_sup_id_str);
244
245
246 EXCEPTION
247 WHEN OTHERS THEN
248 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR,' Error: In GET_DEPOT_ORG_STR ');
249
250 END GET_DEPOT_ORG_STRINGS; -- For Bug 5909379 SRP Changes
251
252
253 FUNCTION collection_type ( p_entity_enabled IN NUMBER,
254 p_refresh_code IN NUMBER)
255 RETURN VARCHAR2 IS
256 BEGIN
257
258 IF (p_entity_enabled =1 or p_entity_enabled =3 ) THEN
259 IF (p_refresh_code = 2) THEN
260 RETURN 'No Collection';
261 ELSIF (p_refresh_code = 3) THEN
262 RETURN 'Incremental Collection';
263 ELSIF (p_refresh_code = 4) OR (p_refresh_code = 1) THEN
264 RETURN 'Targeted Collection';
265 END IF;
266 ELSE
267 RETURN 'No Collection';
268 END IF;
269
270 RETURN to_char(p_refresh_code);
271
272 EXCEPTION
273 WHEN OTHERS THEN
274 RETURN to_char(p_refresh_code);
275 END collection_type;
276
277 FUNCTION is_monitor_status_running RETURN NUMBER
278 IS
279 l_call_status boolean;
280 l_phase varchar2(80);
281 l_status varchar2(80);
282 l_dev_phase varchar2(80);
283 l_dev_status varchar2(80);
284 l_message varchar2(1024);
285
286 BEGIN
287
288 IF v_cp_enabled= MSC_UTIL.SYS_NO THEN
289 RETURN MSC_UTIL.SYS_YES;
290 END IF;
291
292 l_call_status:= FND_CONCURRENT.GET_REQUEST_STATUS
293 ( v_monitor_request_id,
294 NULL,
295 NULL,
296 l_phase,
297 l_status,
298 l_dev_phase,
299 l_dev_status,
300 l_message);
301
302 IF l_call_status=FALSE THEN
303 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, 'IS_MONITOR_STATUS_RUNNING');
304
305 FND_MESSAGE.SET_NAME('MSC', 'MSC_FUNC_MON_RUNNING');
306 FND_MESSAGE.SET_TOKEN('REQUEST_ID',v_monitor_request_id);
307 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
308
309 FND_MESSAGE.SET_NAME('MSC', 'MSC_CL_CONC_MESSAGE');
310 FND_MESSAGE.SET_TOKEN('MESSAGE',l_message);
311 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
312
313 RETURN MSC_UTIL.SYS_NO;
314 END IF;
315
316 IF l_dev_phase='RUNNING' THEN
317 RETURN MSC_UTIL.SYS_YES;
318 ELSE
319 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, 'IS_MONITOR_STATUS_RUNNING');
320
321 FND_MESSAGE.SET_NAME('MSC', 'MSC_FUNC_MON_RUN');
322 FND_MESSAGE.SET_TOKEN('REQUEST_ID', v_monitor_request_id);
323 FND_MESSAGE.SET_TOKEN('PHASE',l_dev_phase);
324 FND_MESSAGE.SET_TOKEN('STATUS',l_dev_status);
325 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
326
327 FND_MESSAGE.SET_NAME('MSC', 'MSC_CL_CONC_MESSAGE');
328 FND_MESSAGE.SET_TOKEN('MESSAGE',l_message);
329 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
330
331 RETURN MSC_UTIL.SYS_NO;
332 END IF;
333
334 END is_monitor_status_running;
335
336 FUNCTION is_request_status_running RETURN NUMBER
337 IS
338 l_call_status boolean;
339 l_phase varchar2(80);
340 l_status varchar2(80);
341 l_dev_phase varchar2(80);
342 l_dev_status varchar2(80);
343 l_message varchar2(1024);
344
345 l_request_id NUMBER;
346
347 BEGIN
348
349 IF v_cp_enabled= MSC_UTIL.SYS_NO THEN
350 RETURN MSC_UTIL.SYS_YES;
351 END IF;
352
353 l_request_id := FND_GLOBAL.CONC_REQUEST_ID;
354
355 l_call_status:= FND_CONCURRENT.GET_REQUEST_STATUS
356 ( l_request_id,
357 NULL,
358 NULL,
359 l_phase,
360 l_status,
361 l_dev_phase,
362 l_dev_status,
363 l_message);
364
365 IF l_call_status=FALSE THEN
366 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, 'IS_REQUEST_STATUS_RUNNING');
367
368 FND_MESSAGE.SET_NAME('MSC', 'MSC_FUNC_MON_RUNNING');
369 FND_MESSAGE.SET_TOKEN('REQUEST_ID',l_request_id);
370 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
371
372 FND_MESSAGE.SET_NAME('MSC', 'MSC_CL_CONC_MESSAGE');
373 FND_MESSAGE.SET_TOKEN('MESSAGE',l_message);
374 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
375
376 RETURN MSC_UTIL.SYS_NO;
377 END IF;
378
379 IF l_dev_phase='RUNNING' THEN
380 RETURN MSC_UTIL.SYS_YES;
381 ELSE
382 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, 'IS_REQUEST_STATUS_RUNNING');
383
384 FND_MESSAGE.SET_NAME('MSC', 'MSC_FUNC_MON_RUN');
385 FND_MESSAGE.SET_TOKEN('REQUEST_ID',l_request_id);
386 FND_MESSAGE.SET_TOKEN('PHASE',l_dev_phase);
387 FND_MESSAGE.SET_TOKEN('STATUS',l_dev_status);
388 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
389
390 FND_MESSAGE.SET_NAME('MSC', 'MSC_CL_CONC_MESSAGE');
391 FND_MESSAGE.SET_TOKEN('MESSAGE',l_message);
392 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
393
394 RETURN MSC_UTIL.SYS_NO;
395 END IF;
396
397 END is_request_status_running;
398
399 FUNCTION is_worker_status_valid( ps_request_id IN NumTblTyp)
400 RETURN NUMBER
401 IS
402 l_call_status boolean;
403 l_phase varchar2(80);
404 l_status varchar2(80);
405 l_dev_phase varchar2(80);
406 l_dev_status varchar2(80);
407 l_message varchar2(1024);
408
409 l_request_id NUMBER;
410 BEGIN
411
412 IF v_cp_enabled= MSC_UTIL.SYS_NO THEN
413 RETURN MSC_UTIL.SYS_YES;
414 END IF;
415
416 FOR lc_i IN 1..(ps_request_id.COUNT-1) LOOP
417
418 l_request_id := ps_request_id(lc_i);
419
420 l_call_status:= FND_CONCURRENT.GET_REQUEST_STATUS
421 ( l_request_id,
422 NULL,
423 NULL,
424 l_phase,
425 l_status,
426 l_dev_phase,
427 l_dev_status,
428 l_message);
429
430 IF l_call_status=FALSE THEN
431 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, 'IS_WORKER_STATUS_VALID');
432
433 FND_MESSAGE.SET_NAME('MSC', 'MSC_FUNC_MON_RUNNING');
434 FND_MESSAGE.SET_TOKEN('REQUEST_ID',l_request_id);
435 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
436
437 FND_MESSAGE.SET_NAME('MSC', 'MSC_CL_CONC_MESSAGE');
438 FND_MESSAGE.SET_TOKEN('MESSAGE',l_message);
439 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
440
441 RETURN MSC_UTIL.SYS_NO;
442 END IF;
443
444 IF l_dev_phase NOT IN ( 'PENDING','RUNNING') THEN
445 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, 'IS_WORKER_STATUS_VALID');
446
447 FND_MESSAGE.SET_NAME('MSC', 'MSC_FUNC_MON_RUN');
448 FND_MESSAGE.SET_TOKEN('REQUEST_ID',l_request_id);
449 FND_MESSAGE.SET_TOKEN('PHASE',l_dev_phase);
450 FND_MESSAGE.SET_TOKEN('STATUS',l_dev_status);
451 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
452
453 FND_MESSAGE.SET_NAME('MSC', 'MSC_CL_CONC_MESSAGE');
454 FND_MESSAGE.SET_TOKEN('MESSAGE',l_message);
455 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
456
457 RETURN MSC_UTIL.SYS_NO;
458 END IF;
459
460 END LOOP;
461
462 RETURN MSC_UTIL.SYS_YES;
463
464 END is_worker_status_valid;
465
466 /* Added this function to verify that all the workers are completed For bug : 2210970
467 */
468 FUNCTION all_workers_completed( ps_request_id IN NumTblTyp)
469 RETURN NUMBER
470 IS
471 l_call_status boolean;
472 l_phase varchar2(80);
473 l_status varchar2(80);
474 l_dev_phase varchar2(80);
475 l_dev_status varchar2(80);
476 l_message varchar2(1024);
477
478 l_request_id NUMBER;
479
480 req_complete number := 0;
481 total_req number;
482 BEGIN
483 req_complete := 0;
484 total_req := 0;
485
486 IF v_cp_enabled= MSC_UTIL.SYS_NO THEN
487 RETURN MSC_UTIL.SYS_YES;
488 END IF;
489
490 total_req := ps_request_id.COUNT - 1;
491 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'Total requests = :' ||total_req);
492
493 FOR lc_i IN 1..(ps_request_id.COUNT-1) LOOP
494
495 l_request_id := ps_request_id(lc_i);
496
497 l_call_status:= FND_CONCURRENT.GET_REQUEST_STATUS
498 ( l_request_id,
499 NULL,
500 NULL,
501 l_phase,
502 l_status,
503 l_dev_phase,
504 l_dev_status,
505 l_message);
506 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'Request id = '||l_request_id);
507
508 IF l_dev_phase IN ('COMPLETE') THEN
509
510 req_complete := req_complete + 1;
511
512 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'ALL_WORKERS_COMPLETED');
513
514 FND_MESSAGE.SET_NAME('MSC', 'MSC_FUNC_MON_RUN');
515 FND_MESSAGE.SET_TOKEN('REQUEST_ID',l_request_id);
516 FND_MESSAGE.SET_TOKEN('PHASE',l_dev_phase);
517 FND_MESSAGE.SET_TOKEN('STATUS',l_dev_status);
518 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, FND_MESSAGE.GET);
519
520 FND_MESSAGE.SET_NAME('MSC', 'MSC_CL_TOTAL_REQS_COMPLETE');
521 FND_MESSAGE.SET_TOKEN('REQUESTS',req_complete);
522 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, FND_MESSAGE.GET);
523
524 END IF;
525
526 END LOOP;
527
528 IF total_req = req_complete THEN
529 FND_MESSAGE.SET_NAME('MSC', 'MSC_CL_ALL_WORKERS_COMP');
530 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
531 RETURN MSC_UTIL.SYS_YES;
532 ELSE
533 RETURN MSC_UTIL.SYS_NO;
534 END IF;
535
536 END all_workers_completed;
537
538 PROCEDURE INITIALIZE_PULL_GLOBALS( pINSTANCE_ID IN NUMBER)
539 IS
540 BEGIN
541
542 /* initialize the database pipe name */
543 v_pipe_task_que := 'MSC_CL_PULL_TQ'||TO_CHAR(pINSTANCE_ID);
544 v_pipe_wm := 'MSC_CL_PULL_WM'||TO_CHAR(pINSTANCE_ID);
545 v_pipe_mw := 'MSC_CL_PULL_MW'||TO_CHAR(pINSTANCE_ID);
546 v_pipe_status := 'MSC_CL_PULL_ST'||TO_CHAR(pINSTANCE_ID);
547
548 -- Initializes Level 2 Global Variables used in Data Pull
549
550 END INITIALIZE_PULL_GLOBALS;
551
552
553 PROCEDURE INITIALIZE_REMOTE_INSTANCE
554 IS
555 lv_user_name VARCHAR2(100):= NULL;
556 lv_resp_name VARCHAR2(100):= NULL;
557 lv_application_name VARCHAR2(240):= NULL;
558
559 lv_user_id NUMBER;
560 lv_resp_id NUMBER;
561 lv_application_id NUMBER;
562
563 BEGIN
564
565 SELECT
566 FND_GLOBAL.USER_NAME,
567 FND_GLOBAL.RESP_NAME,
568 FND_GLOBAL.APPLICATION_NAME
569 INTO lv_user_name,
570 lv_resp_name,
571 lv_application_name
572 FROM dual;
573
574 SELECT APPLICATION_ID
575 INTO lv_application_id
576 FROM FND_APPLICATION_VL
577 WHERE APPLICATION_NAME = lv_application_name;
578 v_sql_stmt:=
579 'BEGIN'
580 ||' MRP_CL_FUNCTION.APPS_INITIALIZE'||v_dblink
581 ||'( :lv_user_name,'
582 ||' :lv_resp_name,'
583 ||' :lv_application_name,'
584 ||' :lv_application_id);'
585 ||'END;';
586 EXECUTE IMMEDIATE v_sql_stmt
587 USING lv_user_name,
588 lv_resp_name,
589 lv_application_name,
590 lv_application_id;
591 END INITIALIZE_REMOTE_INSTANCE;
592
593 -- ===============================================================
594
595 FUNCTION REFRESH_SNAPSHOT( p_instance_id IN NUMBER,pRTYPE IN NUMBER)
596 RETURN BOOLEAN
597 IS
598
599 lv_errbuf VARCHAR2(2048);
600 lv_retcode NUMBER;
601
602 lv_request_id NUMBER;
603 lv_timeout NUMBER:= NVL(FND_PROFILE.VALUE('MSC_REF_SNAP_PENDING_TIMEOUT'),10.0); /* minutes */
604
605 lv_user_name VARCHAR2(100);
606 lv_resp_name VARCHAR2(100);
607 lv_application_name VARCHAR2(240);
608 lv_refresh_type VARCHAR2(1);
609 lv_application_id NUMBER;
610
611 BEGIN
612
613 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_RS_START');
614 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET );
615
616 savepoint start_of_submission;
617
618 -- agmcont:
619
620 /* SELECT FND_GLOBAL.USER_NAME,
621 FND_GLOBAL.RESP_NAME,
622 FND_GLOBAL.APPLICATION_NAME
623 INTO lv_user_name,
624 lv_resp_name,
625 lv_application_name
626 FROM dual;
627 */
628
629 lv_user_name := FND_GLOBAL.USER_NAME;
630 lv_resp_name := FND_GLOBAL.RESP_NAME;
631 lv_application_name := FND_GLOBAL.APPLICATION_NAME;
632
633 SELECT APPLICATION_ID
634 INTO lv_application_id
635 FROM FND_APPLICATION_VL
636 WHERE APPLICATION_NAME = lv_application_name;
637
638
639 SELECT DECODE ( pRTYPE, MSC_UTIL.G_COMPLETE, 'C',
640 MSC_UTIL.G_INCREMENTAL, 'I',
641 MSC_UTIL.G_PARTIAL, 'P',
642 MSC_UTIL.G_CONT, 'T')
643 INTO lv_refresh_type
644 FROM DUAL;
645 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, ' before calling MRP_CL_REFRESH_SNAPSHOT.REFRESH_SNAPSHOT 1 ');
646 /* submit a (remote) request */
647 IF v_apps_ver >= MSC_UTIL.G_APPS115 THEN
648 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Application id: ' || lv_application_id);
649 v_sql_stmt:=
650 'BEGIN MRP_CL_REFRESH_SNAPSHOT.REFRESH_SNAPSHOT'||v_dblink||'('
651 ||' ERRBUF => :lv_errbuf,'
652 ||' RETCODE => :lv_retcode,'
653 ||' p_user_name => :lv_user_name,'
654 ||' p_resp_name => :lv_resp_name,'
655 ||' p_application_name => :lv_application_name,'
656 ||' p_refresh_type => :lv_refresh_type,'
657 ||' o_request_id => :lv_request_id,'
658 ||' pInstance_ID => :p_instance_id,'
659 ||' pInstance_Code => :v_instance_code,'
660 ||' pa2m_dblink => :v_dest_a2m );'
661 ||'END;';
662 /*||' p_application_id=> :lv_application_id );' */
663
664 EXECUTE IMMEDIATE v_sql_stmt
665 USING OUT lv_errbuf,
666 OUT lv_retcode,
667 IN lv_user_name,
668 IN lv_resp_name,
669 IN lv_application_name,
670 IN lv_refresh_type,
671 OUT lv_request_id,
672 IN p_instance_id,
673 IN v_instance_code,
674 IN v_dest_a2m;
675 /*IN lv_application_id;*/
676
677 ELSE
678
679 v_sql_stmt:=
680 'BEGIN MRP_CL_REFRESH_SNAPSHOT.REFRESH_SNAPSHOT'||v_dblink||'('
681 ||' :lv_errbuf,'
682 ||' :lv_retcode,'
683 ||' :lv_user_name,'
684 ||' :lv_resp_name,'
685 ||' :lv_application_name,'
686 ||' :lv_refresh_type,'
687 ||' :lv_request_id, '
688 ||' p_application_id =>:lv_application_id );'
689 ||'END;';
690
691
692 EXECUTE IMMEDIATE v_sql_stmt
693 USING OUT lv_errbuf,
694 OUT lv_retcode,
695 IN lv_user_name,
696 IN lv_resp_name,
697 IN lv_application_name,
698 IN lv_refresh_type,
699 OUT lv_request_id,
700 IN lv_application_id;
701
702 END IF;
703
704 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'After refresh 2');
705 IF lv_retcode= MSC_UTIL.G_ERROR THEN
706 ROLLBACK TO start_of_submission;
707
708 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, lv_errbuf);
709 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_RS_REQ_ERROR');
710 FND_MESSAGE.SET_TOKEN('REQUEST_ID', lv_request_id);
711 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET );
712 RETURN FALSE;
713 END IF;
714
715 IF lv_request_id= 0 THEN
716 ROLLBACK TO start_of_submission;
717
718 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, lv_errbuf);
719 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_RS_ERROR');
720 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET );
721 RETURN FALSE;
722 END IF;
723
724 COMMIT;
725
726 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_RS_REQUEST_ID');
727 FND_MESSAGE.SET_TOKEN('REQUEST_ID', lv_request_id);
728 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET );
729
730 /* purge the staging tables
731 the purpose of calling this procedure is that we do a COMMIT after
732 every task is done, if the previous data pull failed we may have
733 data left in the staging tables...*/
734 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'Before PURGE_STAGING_TABLES_SUB' );
735 MSC_CL_PURGE_STAGING.PURGE_STAGING_TABLES_SUB( p_instance_id);
736
737 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'After PURGE_STAGING_TABLES_SUB' );
738 -- fix for 2351297 --
739 -- If its a single instance set up. Refresh Snapshot is submitted as a child request
740 -- and setting the parent request at a PAUSED status.
741 IF(v_dblink=NULL_DBLINK) THEN
742
743 fnd_conc_global.set_req_globals( conc_status => 'PAUSED',
744 request_data => to_char(lv_request_id));
745 -- No need to call wait_for_request, as the parent would be resumed after the completeion of the sub request.
746 RETURN TRUE;
747 END IF;
748 /* wait until the refresh snapshot process is completed
749 lv_timeout is used as the maximum waiting time for the refresh
750 snapshot process to start */
751
752 v_sql_stmt:=
753 'BEGIN MRP_CL_REFRESH_SNAPSHOT.WAIT_FOR_REQUEST'||v_dblink||'('
754 ||' :lv_timeout,'
755 ||' :lv_retcode);'
756 ||'END;';
757
758 EXECUTE IMMEDIATE v_sql_stmt
759 USING IN lv_timeout,
760 OUT lv_retcode;
761
762 IF lv_retcode = MSC_UTIL.G_NORMAL_COMPLETION THEN
763 RETURN TRUE;
764 ELSE
765 IF lv_retcode = MSC_UTIL.G_PENDING_INACTIVE THEN
766 FND_MESSAGE.SET_NAME('MSC', 'MSC_RS_TIME_OUT');
767 FND_MESSAGE.SET_TOKEN('PENDING_TIMEOUT', lv_timeout);
768 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
769 ELSE
770 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_RS_REQ_ERROR');
771 FND_MESSAGE.SET_TOKEN('REQUEST_ID', lv_request_id);
772 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET );
773 END IF;
774 RETURN FALSE;
775 END IF;
776
777 END REFRESH_SNAPSHOT;
778
779 /* --------------Continuous Collections private funcs/procs----------------------------------------------- */
780 /*
781 FUNCTION get_snapshot_log( p_snap_name IN varchar2,
782 p_dblink IN varchar2,
783 lv_snap_schema OUT NOCOPY varchar2,
784 lv_mlog_tab_name OUT NOCOPY varchar2)
785 RETURN boolean
786 IS
787 lv_base_table_name varchar2(30);
788
789 BEGIN
790
791 EXECUTE IMMEDIATE
792 ' SELECT owner,master FROM ALL_SNAPSHOTS'|| p_dblink || ' WHERE name = :p_snap_name '
793 INTO lv_snap_schema,lv_base_table_name
794 USING p_snap_name;
795
796 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'Snapshot Owner = '||lv_snap_schema);
797 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'Master Table = '||lv_base_table_name);
798
799 EXECUTE IMMEDIATE
800 ' SELECT LOG_TABLE FROM ALL_SNAPSHOT_LOGS'|| p_dblink
801 ||' WHERE MASTER = upper(:pTABLE_NAME)
802 AND LOG_OWNER = upper(:pSCHEMA_NAME)
803 AND ROWNUM = 1 '
804 INTO lv_mlog_tab_name
805 USING lv_base_table_name, lv_snap_schema;
806
807 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'Snapshot Log = '||lv_mlog_tab_name);
808
809 RETURN TRUE;
810
811 EXCEPTION
812 WHEN OTHERS THEN
813 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ' Error in getting the Snapshot information ....');
814 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, SQLERRM);
815 RETURN FALSE;
816
817 END get_snapshot_log;
818 */
819
820 PROCEDURE GET_COLL_PARAM
821 (p_instance_id IN NUMBER,
822 p_prec OUT NOCOPY MSC_UTIL.CollParamREC )
823 AS
824 BEGIN
825
826 /* Initialize the global prec record variable */
827
828 SELECT delete_ods_data,org_group,threshold,supplier_capacity, atp_rules,
829 bom, bor, calendar_check, demand_class,ITEM_SUBSTITUTES, forecast, item,
830 kpi_targets_bis, mds, mps, oh, parameter, planners,
831 projects, po, reservations, nra, safety_stock,
832 sales_order, sourcing_history, sourcing, sub_inventories,
833 customer, supplier, unit_numbers, uom, user_supply_demand, wip, user_comp_association,
834 /* CP-ACK starts */
835 supplier_response,
836 /* CP-ACK ends */
837 trip, ds_mode, po_receipts, sales_channel,fiscal_calendar,INTERNAL_REPAIR,EXTERNAL_REPAIR, -- For Bug 5909379
838 payback_demand_supply, currency_conversion,delivery_Details
839 INTO p_prec.purge_ods_flag,p_prec.org_group_flag, p_prec.threshold,p_prec.app_supp_cap_flag,
840 p_prec.atp_rules_flag, p_prec.bom_flag,
841 p_prec.bor_flag, p_prec.calendar_flag,
842 p_prec.demand_class_flag, p_prec.item_subst_flag,p_prec.forecast_flag,
843 p_prec.item_flag, p_prec.kpi_bis_flag,
844 p_prec.mds_flag, p_prec.mps_flag,
845 p_prec.oh_flag, p_prec.parameter_flag,
846 p_prec.planner_flag, p_prec.project_flag,
847 p_prec.po_flag, p_prec.reserves_flag,
848 p_prec.resource_nra_flag, p_prec.saf_stock_flag,
849 p_prec.sales_order_flag, p_prec.source_hist_flag,
850 p_prec.sourcing_rule_flag, p_prec.sub_inventory_flag,
851 p_prec.tp_customer_flag, p_prec.tp_vendor_flag,
852 p_prec.unit_number_flag, p_prec.uom_flag,
853 p_prec.user_supply_demand_flag, p_prec.wip_flag, p_prec.user_company_flag,
854 /* CP-ACK starts */
855 p_prec.supplier_response_flag,
856 /* CP-ACK ends */
857 p_prec.trip_flag, p_prec.ds_mode,p_prec.po_receipts_flag,
858 p_prec.sales_channel_flag,p_prec.fiscal_calendar_flag,p_prec.internal_repair_flag,p_prec.external_repair_flag, -- for bug 5909379
859 p_prec.payback_demand_supply_flag, p_prec.currency_conversion_flag ,--bug # 6469722
860 p_prec.delivery_details_flag
861 FROM msc_coll_parameters
862 WHERE instance_id = p_instance_id;
863
864 END GET_COLL_PARAM;
865
866
867 PROCEDURE SALES_ORDER_REFRESH_TYPE ( p_instance_id in NUMBER,
868 so_sn_flag out NOCOPY NUMBER )
869 IS
870
871 lv_bom_sn_flag number := MSC_UTIL.SYS_NO;
872 lv_bor_sn_flag number := MSC_UTIL.SYS_NO;
873 lv_item_sn_flag number := MSC_UTIL.SYS_NO;
874 lv_oh_sn_flag number := MSC_UTIL.SYS_NO;
875 lv_usup_sn_flag number := MSC_UTIL.SYS_NO;
876 lv_udmd_sn_flag number := MSC_UTIL.SYS_NO;
877 lv_so_sn_flag number := MSC_UTIL.SYS_NO;
878 lv_fcst_sn_flag number := MSC_UTIL.SYS_NO;
879 lv_wip_sn_flag number := MSC_UTIL.SYS_NO;
880 lv_supcap_sn_flag number := MSC_UTIL.SYS_NO;
881 lv_po_sn_flag number := MSC_UTIL.SYS_NO;
882 lv_mds_sn_flag number := MSC_UTIL.SYS_NO;
883 /* CP-AUTO */
884 lv_suprep_sn_flag number := MSC_UTIL.SYS_NO;
885 lv_mps_sn_flag number := MSC_UTIL.SYS_NO;
886 lv_nosnap_flag number := MSC_UTIL.SYS_NO;
887 lv_trip_sn_flag number := MSC_UTIL.SYS_NO;
888
889 lv_last_tgt_cont_coll_time date;
890
891 lv_prec MSC_UTIL.CollParamREC;
892
893 BEGIN
894
895 BEGIN
896 SELECT DECODE( M2A_DBLINK,
897 NULL, NULL_DBLINK,
898 '@'||M2A_DBLINK),
899 LAST_TGT_CONT_COLL_TIME
900 INTO v_dblink,
901 lv_last_tgt_cont_coll_time
902 FROM MSC_APPS_INSTANCES
903 WHERE INSTANCE_ID= p_instance_id;
904
905 EXCEPTION
906 WHEN NO_DATA_FOUND THEN
907
908 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_INVALID_INSTANCE_ID');
909 FND_MESSAGE.SET_TOKEN('INSTANCE_ID', p_instance_id);
910 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
911 RETURN;
912 WHEN OTHERS THEN
913
914 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, SQLERRM);
915 RETURN;
916 END;
917
918 GET_COLL_PARAM(p_instance_id,lv_prec);
919
920 MSC_CL_CONT_COLL_FW.INIT_ENTITY_REFRESH_TYPE (lv_prec.threshold,
921 null,
922 lv_last_tgt_cont_coll_time,
923 v_dblink,
924 p_instance_id,
925 lv_prec,
926 lv_prec.org_group_flag,
927 lv_bom_sn_flag,
928 lv_bor_sn_flag,
929 lv_item_sn_flag,
930 lv_oh_sn_flag,
931 lv_usup_sn_flag,
932 lv_udmd_sn_flag,
933 lv_so_sn_flag,
934 lv_fcst_sn_flag,
935 lv_wip_sn_flag,
936 lv_supcap_sn_flag,
937 lv_po_sn_flag,
938 lv_mds_sn_flag,
939 lv_mps_sn_flag,
940 lv_nosnap_flag,
941 /* CP-AUTO */
942 lv_suprep_sn_flag,
943 lv_trip_sn_flag);
944
945 so_sn_flag := lv_so_sn_flag;
946
947 EXCEPTION
948 WHEN OTHERS THEN
949 ROLLBACK;
950 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, SQLERRM);
951 END SALES_ORDER_REFRESH_TYPE;
952
953
954 -- ============== End of Private Functions ===================
955
956 -- ============== Public Function =====================
957
958 FUNCTION GET_ORG_STR(p_instance_id IN NUMBER, p_type IN NUMBER)
959 RETURN VARCHAR2 IS
960
961 TYPE OpmOrgCurType IS REF CURSOR;
962 lc_opm_org OpmOrgCurType;
963
964 wrong_p_type EXCEPTION;
965
966 lv_org_id NUMBER;
967 lv_dblink VARCHAR2(128);
968 lv_in_org_str VARCHAR2(10240):=NULL;
969 lv_sql_str VARCHAR2(1000);
970
971 cursor org IS
972 select mio.organization_id org_id
973 from msc_instance_orgs mio,
974 msc_coll_parameters mcp
975 where mio.sr_instance_id= p_instance_id
976 and mcp.instance_id = p_instance_id
977 and mio.enabled_flag= 1
978 and (( mcp.org_group = MSC_UTIL.G_ALL_ORGANIZATIONS ) or
979 (mio.org_group=mcp.org_group));
980
981 cursor all_org IS
982 select organization_id org_id
983 from msc_instance_orgs
984 where sr_instance_id= p_instance_id
985 and enabled_flag= 1;
986
987 BEGIN
988
989 --MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'GET_ORG_STR() input parameter p_type: '||to_char(p_type));
990 --MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'GET_ORG_STR() input parameter p_instance_id: '||to_char(p_instance_id));
991
992 IF(p_type=1 OR p_type=2)then
993 FOR lc_ins_org IN org LOOP
994 IF org%rowcount = 1 THEN
995 lv_in_org_str:=' IN ('|| lc_ins_org.org_id;
996 ELSE
997 lv_in_org_str := lv_in_org_str||','||lc_ins_org.org_id;
998 END IF;
999 END LOOP;
1000 /* we want all OPM orgs in case it GMP version < = k and p_type=2 */
1001 IF(p_type=2 AND gmp_aps_utility.is_opm_compatible=0)then
1002 --then append all the OPM orgs
1003 BEGIN
1004 SELECT DECODE(M2A_DBLINK,NULL,NULL_DBLINK,'@'||M2A_DBLINK)
1005 INTO lv_dblink
1006 FROM MSC_APPS_INSTANCES
1007 WHERE INSTANCE_ID= p_instance_id;
1008
1009 EXCEPTION
1010 WHEN NO_DATA_FOUND THEN
1011 FND_MESSAGE.SET_NAME('MSC','MSC_DP_INVALID_INSTANCE_ID');
1012 FND_MESSAGE.SET_TOKEN('INSTANCE_ID', p_instance_id);
1013 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
1014 RETURN '=-9999';
1015 WHEN OTHERS THEN
1016 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, SQLERRM);
1017 RETURN '=-9999';
1018 END;
1019
1020 BEGIN
1021 lv_sql_str:=' SELECT mp.organization_id org_id'
1022 ||' from mtl_parameters'||lv_dblink||' mp,'
1023 ||' msc_instance_orgs mio'
1024 ||' where mio.sr_instance_id= :p_instance_id'
1025 ||' and mio.enabled_flag= 1'
1026 ||' and mio.organization_id=mp.organization_id'
1027 ||' and mp.process_enabled_flag='||'''Y''';
1028 OPEN lc_opm_org FOR lv_sql_str USING p_instance_id;
1029 LOOP
1030 FETCH lc_opm_org INTO lv_org_id; -- fetch next row
1031 EXIT WHEN lc_opm_org%NOTFOUND; -- exit loop when last row is fetched
1032 lv_in_org_str := lv_in_org_str||','||lv_org_id;
1033 END LOOP;
1034 CLOSE lc_opm_org;
1035 EXCEPTION
1036 WHEN OTHERS THEN
1037 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, SQLERRM);
1038 RETURN '=-9999';
1039 END;
1040 END IF;
1041 IF lv_in_org_str<>'NULL' THEN
1042 lv_in_org_str:= lv_in_org_str || ')';
1043 ELSE
1044 lv_in_org_str:= '= -9999';
1045 END IF;
1046 ELSIF(p_type=3)THEN
1047 FOR lc_ins_org IN all_org LOOP
1048 IF all_org%rowcount = 1 THEN
1049 lv_in_org_str:=' IN ('|| lc_ins_org.org_id;
1050 ELSE
1051 lv_in_org_str := lv_in_org_str||','||lc_ins_org.org_id;
1052 END IF;
1053 END LOOP;
1054 IF lv_in_org_str<>'NULL' THEN
1055 lv_in_org_str:= lv_in_org_str || ')';
1056 ELSE
1057 lv_in_org_str:= '= -9999';
1058 END IF;
1059 ELSE RAISE wrong_p_type;
1060 END IF;
1061
1062 --MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'GET_ORG_STR() returns '||lv_in_org_str);
1063 RETURN lv_in_org_str;
1064
1065 EXCEPTION
1066 WHEN wrong_p_type THEN
1067 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Error: Wrong value of p_type('||to_Char(p_type)||') in GET_ORG_STR() ');
1068 RETURN '=-9999';
1069 WHEN OTHERS THEN
1070 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, ' Error: In GET_ORG_STR() ');
1071 RETURN '=-9999';
1072 END GET_ORG_STR;
1073
1074 /* This function is created as wrapper over GET_ORG_STR(p_instance_id IN NUMBER, p_type IN NUMBER), as OPM call is without any parameters. */
1075 FUNCTION GET_ORG_STR
1076 RETURN VARCHAR2 IS
1077
1078 lv_in_org_str VARCHAR2(10240):=NULL;
1079
1080 BEGIN
1081
1082 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'GET_ORG_STR value of v_instance_id: '||to_char(v_instance_id));
1083
1084 lv_in_org_str := GET_ORG_STR (v_instance_id,2);
1085
1086 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'GET_ORG_STR returns '||lv_in_org_str);
1087 RETURN lv_in_org_str;
1088
1089 EXCEPTION
1090 WHEN OTHERS THEN
1091 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, ' Error: In GET_ORG_STR ');
1092 RETURN '=-9999';
1093 END GET_ORG_STR;
1094
1095 -- ============== End of Public Functions ===================
1096
1097 -- ============== Public Procedures ===================
1098 -- LAUNCH_WORKER --
1099 PROCEDURE LAUNCH_WORKER( ERRBUF OUT NOCOPY VARCHAR2,
1100 RETCODE OUT NOCOPY NUMBER ,
1101 pMONITOR_REQUEST_ID IN NUMBER ,
1102 pINSTANCE_ID IN NUMBER ,
1103 pTIMEOUT IN NUMBER ,
1104 pLANG IN VARCHAR2 ,
1105 pRTYPE IN NUMBER ,
1106 pREFRESH_ID IN NUMBER ,
1107 ----- FLAGS --------------------------------------------------------------
1108 pAPPROV_SUPPLIER_CAP_ENABLED IN NUMBER ,
1109 pATP_RULES_ENABLED IN NUMBER ,
1110 pBOM_ENABLED IN NUMBER ,
1111 pBOR_ENABLED IN NUMBER ,
1112 pCALENDAR_ENABLED IN NUMBER ,
1113 pDEMAND_CLASS_ENABLED IN NUMBER ,
1114 pITEM_SUBST_ENABLED IN NUMBER ,
1115 pFORECAST_ENABLED IN NUMBER ,
1116 pITEM_ENABLED IN NUMBER ,
1117 pKPI_BIS_ENABLED IN NUMBER ,
1118 pMDS_ENABLED IN NUMBER ,
1119 pMPS_ENABLED IN NUMBER ,
1120 pOH_ENABLED IN NUMBER ,
1121 pPARAMETER_ENABLED IN NUMBER ,
1122 pPLANNER_ENABLED IN NUMBER ,
1123 pPROJECT_ENABLED IN NUMBER ,
1124 pPUR_REQ_PO_ENABLED IN NUMBER ,
1125 pRESERVES_HARD_ENABLED IN NUMBER ,
1126 pRESOURCE_NRA_ENABLED IN NUMBER ,
1127 pSafeStock_ENABLED IN NUMBER ,
1128 pSalesOrder_RTYPE IN NUMBER ,
1129 pSH_ENABLED IN NUMBER ,
1130 pSOURCING_ENABLED IN NUMBER ,
1131 pSUB_INV_ENABLED IN NUMBER ,
1132 pTP_CUSTOMER_ENABLED IN NUMBER ,
1133 pTP_VENDOR_ENABLED IN NUMBER ,
1134 pUNIT_NO_ENABLED IN NUMBER ,
1135 pUOM_ENABLED IN NUMBER ,
1136 pUSER_SUPPLY_DEMAND IN NUMBER ,
1137 pWIP_ENABLED IN NUMBER ,
1138 pPO_RECEIPTS_ENABLED IN NUMBER ,
1139 pUSER_COMPANY_ENABLED IN NUMBER ,
1140 /* CP-ACK starts */
1141 pSUPPLIER_RESPONSE_ENABLED IN NUMBER ,
1142 /* CP-ACK ends */
1143 pTRIP_ENABLED IN NUMBER
1144 )
1145 IS
1146
1147 -- Profile Option --
1148
1149 lv_so_ship_arrive_value NUMBER;
1150 lv_mps_consume_profile_value NUMBER;
1151 lv_spread_load NUMBER;
1152 lv_hour_uom VARCHAR2(3);
1153
1154 -- MSC Profile Option --
1155
1156 lv_mso_item_dmd_penalty NUMBER;
1157 lv_mso_item_cap_penalty NUMBER;
1158 lv_mso_org_dmd_penalty NUMBER;
1159 lv_mso_org_item_penalty NUMBER;
1160 lv_mso_org_res_penalty NUMBER;
1161 lv_mso_org_trsp_penalty NUMBER;
1162 lv_msc_aggreg_res_name NUMBER;
1163 lv_mso_res_penalty NUMBER;
1164 lv_mso_sup_cap_penalty NUMBER;
1165 lv_msc_bom_subst_priority NUMBER;
1166 lv_mso_trsp_penalty NUMBER;
1167 lv_msc_alt_bom_cost NUMBER;
1168 lv_mso_fcst_penalty NUMBER;
1169 lv_mso_so_penalty NUMBER;
1170 -- lv_msc_alt_op_res NUMBER;
1171 lv_msc_alt_res_priority NUMBER;
1172 lv_msc_batchable_flag NUMBER;
1173 lv_msc_batching_window NUMBER;
1174 lv_msc_min_capacity NUMBER;
1175 lv_msc_max_capacity NUMBER;
1176 lv_msc_unit_of_measure NUMBER;
1177 lv_msc_simul_res_seq NUMBER;
1178 lv_mrp_bis_av_discount NUMBER;
1179 lv_mrp_bis_price_list NUMBER;
1180 lv_msc_dmd_priority_flex_num NUMBER;
1181 lv_msc_fcst_priority_flex_num NUMBER;
1182
1183 -- Userenv, Installation Information --
1184 lv_lang VARCHAR2(4);
1185 lv_oe_install VARCHAR2(170):= 'OE';
1186
1187 -- Task Parameter --
1188 lv_lrn NUMBER;
1189
1190 -- Task Control --
1191 lv_task_num PLS_INTEGER; -- NEGATIVE: Unknown Error Occurs
1192 -- 0 : All Task Is Done
1193 -- POSITIVE: The Task Number
1194
1195 lv_task_status NUMBER; -- ::OK : THE TASK IS Done in MSC
1196 -- OTHERS : THE TASK Fails
1197
1198 lv_start_time DATE;
1199 lv_process_time NUMBER;
1200
1201 lv_apps_ver NUMBER;
1202
1203 EX_PROCESS_TIME_OUT EXCEPTION;
1204
1205 -- Pipe Control --
1206
1207 lv_ret_code NUMBER; -- The return value of Sending/Receiving Pipe Messages
1208
1209 EX_PIPE_RCV EXCEPTION;
1210 EX_PIPE_SND EXCEPTION;
1211
1212 prec MSC_UTIL.CollParamREC;
1213
1214 --Status of worker
1215 lv_is_waiting boolean := TRUE;
1216
1217 --agmcont:
1218 lv_toset_prec_flag boolean:=TRUE;
1219
1220
1221 BEGIN
1222 RETCODE := MSC_UTIL.G_SUCCESS;
1223 ERRBUF := NULL;
1224 v_instance_id := pINSTANCE_ID;
1225
1226 v_monitor_request_id := pMONITOR_REQUEST_ID;
1227
1228 -- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
1229
1230 IF fnd_global.conc_request_id > 0 THEN
1231 v_cp_enabled:= MSC_UTIL.SYS_YES;
1232 ELSE
1233 v_cp_enabled:= MSC_UTIL.SYS_NO;
1234 END IF;
1235
1236
1237
1238
1239
1240 BEGIN
1241
1242 SELECT DECODE( M2A_DBLINK,
1243 NULL, NULL_DBLINK,
1244 '@'||M2A_DBLINK),
1245 DECODE( M2A_DBLINK,
1246 NULL, MSC_UTIL.SYS_NO,
1247 MSC_UTIL.SYS_YES),
1248 APPS_VER,
1249 APPS_LRN,
1250 APPS_LRN
1251 INTO v_dblink,
1252 v_distributed_config_flag,
1253 lv_apps_ver,
1254 v_lrnn,
1255 v_so_lrn
1256 FROM MSC_APPS_INSTANCES
1257 WHERE INSTANCE_ID= pINSTANCE_ID;
1258
1259 EXCEPTION
1260
1261 WHEN NO_DATA_FOUND THEN
1262
1263 RETCODE := MSC_UTIL.G_ERROR;
1264
1265 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_INVALID_INSTANCE_ID');
1266 FND_MESSAGE.SET_TOKEN('INSTANCE_ID', pINSTANCE_ID);
1267 ERRBUF:= FND_MESSAGE.GET;
1268 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
1269 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, SQLERRM);
1270
1271 RETURN;
1272
1273 WHEN OTHERS THEN
1274
1275 RAISE;
1276
1277 END;
1278
1279
1280 -- to initialize common global variables bug#5897346
1281 MSC_UTIL.INITIALIZE_COMMON_GLOBALS(pINSTANCE_ID);
1282 INITIALIZE_PULL_GLOBALS( pINSTANCE_ID); -- Initializes Level 2 Global Variables used in Data Pull
1283 -- Initialize the Start Time and Pipename
1284
1285
1286 -- Initialize the remote Applications database, if it's a distributed
1287 -- configuration.
1288
1289 IF v_distributed_config_flag = MSC_UTIL.SYS_YES THEN
1290 INITIALIZE_REMOTE_INSTANCE;
1291 COMMIT;
1292
1293 END IF;
1294
1295 -- Get environment parameters
1296 -- 1. LANG
1297 -- 2. PROFILE OPTIONS
1298
1299
1300 IF lv_apps_ver>= MSC_UTIL.G_APPS115 THEN
1301 v_sql_stmt:=
1302 'SELECT USERENV(''LANG''),'
1303 ||' FND_PROFILE.VALUE'||v_dblink||'(''BOM:HOUR_UOM_CODE''),'
1304 ||' DECODE( FND_PROFILE.VALUE'||v_dblink||'(''MRP_MPS_CONSUMPTION''),'
1305 ||' ''Y'', 1,'
1306 ||' ''1'', 1,'
1307 ||' 2),'
1308 ||' DECODE( FND_PROFILE.VALUE'||v_dblink||'(''MRP_SHIP_ARRIVE_FLAG''),'
1309 ||' ''Y'', 1,'
1310 ||' ''1'', 1,'
1311 ||' 2),'
1312 ||' DECODE( FND_PROFILE.VALUE'||v_dblink||'(''CRP_SPREAD_LOAD''),'
1313 ||' ''Y'', 1,'
1314 ||' ''1'', 1,'
1315 ||' 2),'
1316 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSO_ITEM_DMD_PENALTY'')),'
1317 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSO_ITEM_CAP_PENALTY'')),'
1318 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSO_ORG_DMD_PENALTY'')),'
1319 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSO_ORG_ITEM_PENALTY'')),'
1320 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSO_ORG_RES_PENALTY'')),'
1321 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSO_ORG_TRSP_PENALTY'')),'
1322 ||' FND_PROFILE.VALUE'||v_dblink||'(''MSC_AGGREG_RES_NAME''),'
1323 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSO_RES_PENALTY'')),'
1324 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSO_SUP_CAP_PENALTY'')),'
1325 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSC_BOM_SUBST_PRIORITY'')),'
1326 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSO_TRSP_PENALTY'')),'
1327 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSC_ALT_BOM_COST'')),'
1328 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSO_FCST_PENALTY'')),'
1329 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSO_SO_PENALTY'')),'
1330 -- ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSC_RESOURCE_TYPE'')),'
1331 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSC_ALT_RES_PRIORITY'')),'
1332 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSC_BATCHABLE_FLAG'')),'
1333 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSC_BATCHING_WINDOW'')),'
1334 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSC_MIN_CAPACITY'')),'
1335 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSC_MAX_CAPACITY'')),'
1336 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSC_UNIT_OF_MEASURE'')),'
1337 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSC_SIMUL_RES_SEQ'')),'
1338 ||' NVL(TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_BIS_AV_DISCOUNT'')),0),'
1339 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_BIS_PRICE_LIST'')),'
1340 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_DMD_PRIORITY_FLEX_NUM'')),'
1341 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MSC_FCST_PRIORITY_FLEX_NUM''))'
1342 ||' FROM DUAL';
1343
1344 ELSE
1345 v_sql_stmt:=
1346 'SELECT USERENV(''LANG''),'
1347 ||' FND_PROFILE.VALUE'||v_dblink||'(''BOM:HOUR_UOM_CODE''),'
1348 ||' DECODE( FND_PROFILE.VALUE'||v_dblink||'(''MRP_MPS_CONSUMPTION''),'
1349 ||' ''Y'', 1,'
1350 ||' ''1'', 1,'
1351 ||' 2),'
1352 ||' DECODE( FND_PROFILE.VALUE'||v_dblink||'(''MRP_SHIP_ARRIVE_FLAG''),'
1353 ||' ''Y'', 1,'
1354 ||' ''1'', 1,'
1355 ||' 2),'
1356 ||' DECODE( FND_PROFILE.VALUE'||v_dblink||'(''CRP_SPREAD_LOAD''),'
1357 ||' ''Y'', 1,'
1358 ||' ''1'', 1,'
1359 ||' 2),'
1360 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_ITEM_DMD_PENALTY'')),'
1361 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_ITEM_CAP_PENALTY'')),'
1362 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_ORG_DMD_PENALTY'')),'
1363 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_ORG_ITEM_PENALTY'')),'
1364 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_ORG_RES_PENALTY'')),'
1365 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_ORG_TRSP_PENALTY'')),'
1366 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_AGGREG_RES_NAME'')),'
1367 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_RES_PENALTY'')),'
1368 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_SUP_CAP_PENALTY'')),'
1369 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_BOM_SUBST_PRIORITY'')),'
1370 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_TRSP_PENALTY'')),'
1371 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_ALT_BOM_COST'')),'
1372 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_FCST_PENALTY'')),'
1373 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_SO_PENALTY'')),'
1374 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_RESOURCE_TYPE'')),'
1375 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_ALT_RES_PRIORITY'')),'
1376 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_BATCHABLE_FLAG'')),'
1377 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_BATCHING_WINDOW'')),'
1378 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_MIN_CAPACITY'')),'
1379 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_MAX_CAPACITY'')),'
1380 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_UNIT_OF_MEASURE'')),'
1381 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_SIMUL_RES_SEQ'')),'
1382 ||' NVL(TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_BIS_AV_DISCOUNT'')),0),'
1383 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_BIS_PRICE_LIST'')),'
1384 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_DMD_PRIORITY_FLEX_NUM'')),'
1385 ||' TO_NUMBER( FND_PROFILE.VALUE'||v_dblink||'(''MRP_FCST_PRIORITY_FLEX_NUM''))'
1386 ||' FROM DUAL';
1387
1388 END IF;
1389
1390 EXECUTE IMMEDIATE v_sql_stmt
1391 INTO lv_lang,
1392 lv_hour_uom, -- used in resource required
1393 lv_mps_consume_profile_value,
1394 lv_so_ship_arrive_value,-- used in supplies
1395 lv_spread_load, -- used in resource required
1396 lv_mso_item_dmd_penalty,
1397 lv_mso_item_cap_penalty,
1398 lv_mso_org_dmd_penalty,
1399 lv_mso_org_item_penalty,
1400 lv_mso_org_res_penalty,
1401 lv_mso_org_trsp_penalty,
1402 lv_msc_aggreg_res_name,
1403 lv_mso_res_penalty,
1404 lv_mso_sup_cap_penalty,
1405 lv_msc_bom_subst_priority,
1406 lv_mso_trsp_penalty,
1407 lv_msc_alt_bom_cost,
1408 lv_mso_fcst_penalty,
1409 lv_mso_so_penalty,
1410 -- lv_msc_alt_op_res,
1411 lv_msc_alt_res_priority,
1412 lv_msc_batchable_flag ,
1413 lv_msc_batching_window ,
1414 lv_msc_min_capacity ,
1415 lv_msc_max_capacity ,
1416 lv_msc_unit_of_measure ,
1417 lv_msc_simul_res_seq,
1418 lv_mrp_bis_av_discount,
1419 lv_mrp_bis_price_list,
1420 lv_msc_dmd_priority_flex_num,
1421 lv_msc_fcst_priority_flex_num;
1422
1423 BEGIN
1424
1425 /*
1426 v_sql_stmt:=
1427 'SELECT OE_INSTALL.Get_Active_Product'||v_dblink||' FROM DUAL';
1428
1429 EXECUTE IMMEDIATE v_sql_stmt
1430 INTO lv_oe_install;
1431 */
1432
1433 /* NCPerf */
1434 lv_oe_install:= OE_INSTALL.Get_Active_Product||v_dblink;
1435
1436 EXCEPTION
1437
1438 WHEN OTHERS THEN
1439
1440 IF SQLCODE<> -904 THEN
1441 RAISE;
1442 END IF;
1443 END;
1444
1445
1446 -- Set the Last Refresh Number, -1: for complete refresh ------------------
1447
1448 /** PREPLACE CHANGE START **/
1449
1450 --IF pRTYPE= MSC_UTIL.SYS_YES THEN
1451 IF ((pRTYPE = MSC_UTIL.G_COMPLETE) OR (pRTYPE = MSC_UTIL.G_PARTIAL)) THEN
1452 v_lrnn:= -1;
1453
1454 IF pSalesOrder_RTYPE= MSC_UTIL.SYS_YES THEN
1455 v_so_lrn:= -1;
1456 END IF;
1457 END IF;
1458
1459 /** PREPLACE CHANGE END **/
1460
1461 lv_start_time:= SYSDATE;
1462
1463
1464 -- ============= Get the Task FROM Task Que ==============
1465
1466 LOOP
1467
1468 -- ============= Check the execution time ==============
1469
1470 EXIT WHEN is_monitor_status_running <> MSC_UTIL.SYS_YES;
1471
1472 EXIT WHEN is_request_status_running <> MSC_UTIL.SYS_YES;
1473
1474 SELECT (SYSDATE- lv_start_time) INTO lv_process_time FROM dual;
1475 IF lv_process_time > pTIMEOUT/1440.0 THEN RAISE EX_PROCESS_TIME_OUT;
1476 END IF;
1477
1478 -- Get the Task Number ----------------------
1479
1480 lv_ret_code := DBMS_PIPE.RECEIVE_MESSAGE( v_pipe_task_que, PIPE_TIME_OUT);
1481
1482 --agmcont
1483 if (lv_toset_prec_flag) then
1484 lv_toset_prec_flag := FALSE;
1485 SELECT org_group,delete_ods_data, supplier_capacity, atp_rules,
1486 bom, bor, calendar_check, demand_class,ITEM_SUBSTITUTES, forecast, item,
1487 kpi_targets_bis, mds, mps, oh, parameter, planners,
1488 projects, po, reservations, nra, safety_stock,
1489 sales_order, sourcing_history, sourcing, sub_inventories,
1490 customer, supplier, unit_numbers, uom, user_supply_demand, wip, user_comp_association,
1491 po_receipts, bom_sn_flag, bor_sn_flag, item_sn_flag, oh_sn_flag,
1492 usup_sn_flag, udmd_sn_flag, so_sn_flag, fcst_sn_flag,
1493 wip_sn_flag, supcap_sn_flag, po_sn_flag, mds_sn_flag,
1494 mps_sn_flag, nosnap_flag
1495 /* CP-ACK starts */
1496 ,SUPPLIER_RESPONSE
1497 /* CP-ACK ends */
1498 /* CP-AUTO */
1499 ,SUPREP_SN_FLAG,trip,trip_sn_flag,ds_mode,sales_channel,fiscal_calendar,INTERNAL_REPAIR,EXTERNAL_REPAIR -- for bug 5909379
1500 ,payback_demand_supply, currency_conversion -- bug #6469722
1501 ,delivery_Details
1502 INTO prec.org_group_flag, prec.purge_ods_flag, prec.app_supp_cap_flag,
1503 prec.atp_rules_flag, prec.bom_flag,
1504 prec.bor_flag, prec.calendar_flag,
1505 prec.demand_class_flag, prec.item_subst_flag,prec.forecast_flag,
1506 prec.item_flag, prec.kpi_bis_flag,
1507 prec.mds_flag, prec.mps_flag,
1508 prec.oh_flag, prec.parameter_flag,
1509 prec.planner_flag, prec.project_flag,
1510 prec.po_flag, prec.reserves_flag,
1511 prec.resource_nra_flag, prec.saf_stock_flag,
1512 prec.sales_order_flag, prec.source_hist_flag,
1513 prec.sourcing_rule_flag, prec.sub_inventory_flag,
1514 prec.tp_customer_flag, prec.tp_vendor_flag,
1515 prec.unit_number_flag, prec.uom_flag,
1516 prec.user_supply_demand_flag, prec.wip_flag, prec.user_company_flag,
1517 prec.po_receipts_flag,
1518 prec.bom_sn_flag, prec.bor_sn_flag,
1519 prec.item_sn_flag, prec.oh_sn_flag,
1520 prec.usup_sn_flag, prec.udmd_sn_flag,
1521 prec.so_sn_flag, prec.fcst_sn_flag,
1522 prec.wip_sn_flag,
1523 prec.supcap_sn_flag, prec.po_sn_flag,
1524 prec.mds_sn_flag, prec.mps_sn_flag,
1525 prec.nosnap_flag
1526 /* CP-ACK starts */
1527 ,prec.supplier_response_flag
1528 /* CP-ACK ends */
1529 /* CP-AUTO */
1530 ,prec.suprep_sn_flag,prec.trip_flag,prec.trip_sn_flag ,
1531 prec.ds_mode,
1532 prec.sales_channel_flag,prec.fiscal_calendar_flag,prec.internal_repair_flag,prec.external_repair_flag -- for bug 5909379
1533 ,prec.payback_demand_supply_flag, prec.currency_conversion_flag -- bug # 6469722
1534 ,prec.delivery_details_flag
1535 FROM msc_coll_parameters
1536 WHERE instance_id = pINSTANCE_ID;
1537
1538 end if;
1539
1540
1541 FND_MESSAGE.SET_NAME('MSC','MSC_CL_WORKER_RCV_RET_CODE');
1542 FND_MESSAGE.SET_TOKEN('LV_TASK_NUMBER',lv_ret_code);
1543 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, FND_MESSAGE.GET);
1544
1545 IF lv_ret_code<>0 THEN
1546
1547 IF lv_ret_code = 1 THEN
1548 IF lv_is_waiting THEN
1549 lv_is_waiting := false;
1550 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,'Waiting for task to arrive');
1551 END IF;
1552 ELSE
1553 RAISE EX_PIPE_RCV;
1554 END IF;
1555
1556
1557 ELSE
1558 lv_is_waiting := true;
1559 DBMS_PIPE.UNPACK_MESSAGE( lv_task_num);
1560
1561 FND_MESSAGE.SET_NAME('MSC','MSC_CL_WORKER_TSK_UNPACK');
1562 FND_MESSAGE.SET_TOKEN('LV_TASK_NUM',lv_task_num);
1563 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, FND_MESSAGE.GET);
1564
1565 EXIT WHEN lv_task_num<= 0; -- No task is left or unknown error occurs.
1566
1567 -- ============= Execute the Task =============
1568
1569 lv_task_status := FAIL;
1570
1571 IF (lv_task_num= TASK_SALES_ORDER1) OR
1572 (lv_task_num= TASK_SALES_ORDER2) OR
1573 (lv_task_num= TASK_SALES_ORDER3) OR
1574 -- (lv_task_num= TASK_SALES_ORDER3) OR
1575 (lv_task_num= TASK_AHL) THEN
1576 lv_lrn:= v_so_lrn;
1577 ELSE
1578 lv_lrn:= v_lrnn;
1579 END IF;
1580
1581 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'Executing Task Number '|| TO_CHAR(lv_task_num));
1582
1583 EXECUTE_TASK
1584 ( lv_task_status,
1585 lv_task_num,
1586 pINSTANCE_ID,
1587 lv_lrn,
1588 pREFRESH_ID,
1589 ----- PROFILE OPTION --------------------------------------------------
1590 lv_so_ship_arrive_value,
1591 lv_mps_consume_profile_value,
1592 lv_spread_load,
1593 lv_hour_uom,
1594 lv_lang,
1595 lv_oe_install,
1596 ----- MSC PROFILE OPTION ----------------------------------------------
1597 lv_mso_item_dmd_penalty,
1598 lv_mso_item_cap_penalty,
1599 lv_mso_org_dmd_penalty,
1600 lv_mso_org_item_penalty,
1601 lv_mso_org_res_penalty,
1602 lv_mso_org_trsp_penalty,
1603 lv_msc_aggreg_res_name,
1604 lv_mso_res_penalty,
1605 lv_mso_sup_cap_penalty,
1606 lv_msc_bom_subst_priority,
1607 lv_mso_trsp_penalty,
1608 lv_msc_alt_bom_cost,
1609 lv_mso_fcst_penalty,
1610 lv_mso_so_penalty,
1611 null,
1612 -- lv_msc_alt_op_res,
1613 lv_msc_alt_res_priority,
1614 lv_msc_batchable_flag ,
1615 lv_msc_batching_window ,
1616 lv_msc_min_capacity ,
1617 lv_msc_max_capacity ,
1618 lv_msc_unit_of_measure ,
1619 lv_msc_simul_res_seq,
1620 lv_mrp_bis_av_discount,
1621 lv_mrp_bis_price_list,
1622 lv_msc_dmd_priority_flex_num,
1623 lv_msc_fcst_priority_flex_num,
1624 ----- FLAGS -----------------------------------------------------------
1625 pITEM_ENABLED,
1626 pTP_VENDOR_ENABLED,
1627 pTP_CUSTOMER_ENABLED,
1628 pBOM_ENABLED,
1629 pRESERVES_HARD_ENABLED,
1630 pSOURCING_ENABLED,
1631 pWIP_ENABLED,
1632 pPO_RECEIPTS_ENABLED,
1633 pSafeStock_ENABLED,
1634 pPUR_REQ_PO_ENABLED ,
1635 pITEM_SUBST_ENABLED,
1636 pOH_ENABLED,
1637 pAPPROV_SUPPLIER_CAP_ENABLED,
1638 pUOM_ENABLED,
1639 pMDS_ENABLED,
1640 pFORECAST_ENABLED,
1641 pMPS_ENABLED,
1642 pRESOURCE_NRA_ENABLED,
1643 pSH_ENABLED,
1644 pUSER_COMPANY_ENABLED,
1645 /* CP-ACK change starts */
1646 pSUPPLIER_RESPONSE_ENABLED,
1647 /* CP-ACK change ends */
1648 pTRIP_ENABLED,
1649 prec);
1650
1651
1652 -- =========== Send the executed lv_task_num back to the monitor =======
1653 -- =========== Positive Number means OK, Negative means FAIL ===========
1654
1655 IF lv_task_status <> OK THEN
1656 FND_MESSAGE.SET_NAME('MSC','MSC_CL_EXECUTE_TSK_PROB');
1657 FND_MESSAGE.SET_TOKEN('LV_TASK_NUMBER',lv_task_num);
1658 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
1659
1660 DBMS_PIPE.PACK_MESSAGE( -lv_task_num);
1661
1662 ELSE
1663
1664 DBMS_PIPE.PACK_MESSAGE( lv_task_num);
1665 COMMIT;
1666
1667 END IF;
1668
1669 IF DBMS_PIPE.SEND_MESSAGE( v_pipe_wm)<>0 THEN RAISE EX_PIPE_SND;
1670 END IF;
1671
1672 IF lv_task_status <> OK THEN DBMS_LOCK.SLEEP(5);
1673 END IF;
1674
1675 END IF;
1676
1677 END LOOP;
1678
1679 IF lv_task_num = 0 THEN -- NO TASK IS LEFT
1680 COMMIT;
1681
1682 DBMS_PIPE.PACK_MESSAGE( MSC_UTIL.SYS_YES);
1683
1684 IF DBMS_PIPE.SEND_MESSAGE( v_pipe_status)<>0 THEN
1685 RAISE EX_PIPE_SND;
1686 END IF;
1687
1688 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_SUCCEED');
1689 ERRBUF:= FND_MESSAGE.GET;
1690 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, ERRBUF);
1691
1692 RETCODE := MSC_UTIL.G_SUCCESS;
1693 return;
1694 ELSIF (lv_task_num = START_ODS_LOAD) THEN --- call the ODS Load worker
1695
1696 /* ---------------- agmcont -------------------- */
1697
1698 /* --- call ods load worker --- */
1699
1700 if (pRTYPE = MSC_UTIL.G_CONT) then
1701 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Calling ODS load worker');
1702
1703 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, '****************************************************');
1704 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Planning ODS LOAD Worker is Started.');
1705 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, '****************************************************');
1706
1707
1708 BEGIN
1709 MSC_CL_COLLECTION.LAUNCH_WORKER(
1710 ERRBUF ,
1711 RETCODE ,
1712 pMONITOR_REQUEST_ID ,
1713 pINSTANCE_ID ,
1714 -99, -- last_collection_id
1715 pTIMEOUT ,
1716 MSC_UTIL.SYS_NO, --- Recalc NRA
1717 MSC_UTIL.SYS_NO, -- Recalc sourcing history
1718 MSC_UTIL.SYS_YES, --exchange_mode
1719 MSC_UTIL.SYS_YES );
1720
1721 EXCEPTION
1722 WHEN OTHERS THEN
1723 ROLLBACK;
1724 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
1725 END;
1726
1727 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, '****************************************************');
1728 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Planning ODS LOAD Worker is Completed.');
1729 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, '****************************************************');
1730
1731 end if;
1732
1733 /* ---------------- agmcont -------------------- */
1734
1735 ELSE -- Unknown Error
1736 ROLLBACK;
1737
1738 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, 'There is an Unknown error in the Worker.');
1739
1740 DBMS_PIPE.PACK_MESSAGE( MSC_UTIL.SYS_YES);
1741
1742 IF DBMS_PIPE.SEND_MESSAGE( v_pipe_status)<>0 THEN
1743 RAISE EX_PIPE_SND;
1744 END IF;
1745
1746 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_FAIL');
1747 ERRBUF:= FND_MESSAGE.GET;
1748
1749 RETCODE := MSC_UTIL.G_ERROR;
1750
1751 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
1752 END IF;
1753
1754 RETCODE := MSC_UTIL.G_SUCCESS;
1755
1756 EXCEPTION
1757
1758 WHEN others THEN
1759
1760 ROLLBACK; -- ROLLBACK if any exception occurs
1761
1762 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_FAIL');
1763 ERRBUF:= FND_MESSAGE.GET;
1764 RETCODE := MSC_UTIL.G_ERROR;
1765
1766 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, SQLERRM);
1767
1768 DBMS_PIPE.PACK_MESSAGE( UNRESOLVABLE_ERROR);
1769
1770 IF DBMS_PIPE.SEND_MESSAGE( v_pipe_wm)<>0 THEN
1771
1772 FND_MESSAGE.SET_NAME('MSC', 'MSC_MSG_SEND_FAIL');
1773 FND_MESSAGE.SET_TOKEN('PIPE', v_pipe_wm);
1774 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
1775
1776 END IF;
1777
1778 DBMS_PIPE.PACK_MESSAGE( MSC_UTIL.SYS_YES);
1779
1780 IF DBMS_PIPE.SEND_MESSAGE( v_pipe_status)<>0 THEN
1781 FND_MESSAGE.SET_NAME('MSC', 'MSC_MSG_SEND_FAIL');
1782 FND_MESSAGE.SET_TOKEN('PIPE', v_pipe_status);
1783 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
1784 END IF;
1785
1786 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, 'Error_Stack...');
1787 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, DBMS_UTILITY.FORMAT_ERROR_STACK );
1788 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, 'Error_Backtrace...' );
1789 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, DBMS_UTILITY.FORMAT_ERROR_BACKTRACE );
1790
1791 END LAUNCH_WORKER;
1792
1793 -- ===============================================================
1794
1795 PROCEDURE LAUNCH_MONITOR(
1796 ERRBUF OUT NOCOPY VARCHAR2,
1797 RETCODE OUT NOCOPY NUMBER,
1798 pINSTANCE_ID IN NUMBER,
1799 pORG_GROUP IN VARCHAR2,
1800 pTotalWorkerNum IN NUMBER,
1801 pTIMEOUT IN NUMBER, -- min
1802 pLANG IN VARCHAR2 ,
1803 pOdsPURGEoption IN NUMBER ,
1804 pRTYPE IN NUMBER ,
1805 pANATBL_ENABLED IN NUMBER ,
1806 pAPPROV_SUPPLIER_CAP_ENABLED IN NUMBER ,
1807 pATP_RULES_ENABLED IN NUMBER ,
1808 pBOM_ENABLED IN NUMBER ,
1809 pBOR_ENABLED IN NUMBER ,
1810 pCALENDAR_ENABLED IN NUMBER ,
1811 pDEMAND_CLASS_ENABLED IN NUMBER ,
1812 pITEM_SUBST_ENABLED IN NUMBER ,
1813 pFORECAST_ENABLED IN NUMBER ,
1814 pITEM_ENABLED IN NUMBER ,
1815 pKPI_BIS_ENABLED IN NUMBER ,
1816 pMDS_ENABLED IN NUMBER ,
1817 pMPS_ENABLED IN NUMBER ,
1818 pOH_ENABLED IN NUMBER ,
1819 pPARAMETER_ENABLED IN NUMBER ,
1820 pPLANNER_ENABLED IN NUMBER ,
1821 pPO_RECEIPTS_ENABLED IN NUMBER ,
1822 pPROJECT_ENABLED IN NUMBER ,
1823 pPUR_REQ_PO_ENABLED IN NUMBER ,
1824 pRESERVES_HARD_ENABLED IN NUMBER ,
1825 pRESOURCE_NRA_ENABLED IN NUMBER ,
1826 pSafeStock_ENABLED IN NUMBER ,
1827 pSalesOrder_RTYPE IN NUMBER ,
1828 pSH_ENABLED IN NUMBER ,
1829 pSOURCING_ENABLED IN NUMBER ,
1830 pSUB_INV_ENABLED IN NUMBER ,
1831 /* CP-ACK change starts */
1832 pSUPPLIER_RESPONSE_ENABLED IN NUMBER ,
1833 /* CP-ACK change ends */
1834 pTP_CUSTOMER_ENABLED IN NUMBER ,
1835 pTP_VENDOR_ENABLED IN NUMBER ,
1836 pTRIP_ENABLED IN NUMBER , -- DRP
1837 pUNIT_NO_ENABLED IN NUMBER ,
1838 pUOM_ENABLED IN NUMBER ,
1839 pUSER_COMPANY_ENABLED IN NUMBER ,
1840 pUSER_SUPPLY_DEMAND IN NUMBER ,
1841 pWIP_ENABLED IN NUMBER ,
1842 pSALES_CHANNEL_ENABLED IN NUMBER ,
1843 pFISCAL_CALENDAR_ENABLED IN NUMBER ,
1844 pINTERNAL_REPAIR_ENABLED IN NUMBER , -- for bug 5909379
1845 pEXTERNAL_REPAIR_ENABLED IN NUMBER ,
1846 pPAYBACK_DEMAND_SUPPLY_ENABLED IN NUMBER ,
1847 pCURRENCY_CONVERSION_ENABLED IN NUMBER, -- for bug 6469722
1848 pDELIVERY_DETAILS_ENABLED IN NUMBER
1849 )
1850
1851 IS
1852
1853 lc_i PLS_INTEGER;
1854 lc_j PLS_INTEGER;
1855
1856 lv_worker_committed NUMBER;
1857 lv_total_task_number NUMBER;
1858 lv_task_num NUMBER;
1859
1860 lv_task_not_completed NUMBER := 0;
1861
1862 lv_start_time DATE;
1863 lv_process_time NUMBER;
1864
1865 EX_PIPE_RCV EXCEPTION;
1866 EX_PIPE_SND EXCEPTION;
1867 EX_PROCESS_TIME_OUT EXCEPTION;
1868
1869 lv_pipe_ret_code NUMBER;
1870
1871
1872 lv_errbuf VARCHAR2(2048);
1873 lv_sql_stmt VARCHAR2(1000);
1874 lv_retcode NUMBER;
1875
1876 lv_check_point NUMBER := 0;
1877
1878 lvs_request_id NumTblTyp := NumTblTyp(0);
1879
1880 -- lv_instance_type NUMBER;
1881 return_status BOOLEAN;
1882
1883
1884 ----- New variables for PREPLACE ----
1885
1886 lv_param_rec_count NUMBER;
1887 lv_coll_stat NUMBER;
1888 v_current_user NUMBER;
1889 var_debug NUMBER := 0;
1890
1891 prec MSC_UTIL.CollParamREC;
1892
1893
1894 ---- New Variables for a2m_dblinks for the bug fix 2320600 ---
1895
1896 lv_sr_a2m VARCHAR2(128);
1897 lv_sr_m2a VARCHAR2(128);
1898
1899 l_call_status boolean;
1900 l_phase varchar2(80);
1901 l_status varchar2(80);
1902 l_dev_phase varchar2(80);
1903 l_dev_status varchar2(80);
1904 l_message varchar2(1024);
1905 lv_request_id NUMBER;
1906
1907 -- agmcont
1908 lv_bom_sn_flag number := MSC_UTIL.SYS_NO;
1909 lv_bor_sn_flag number := MSC_UTIL.SYS_NO;
1910 lv_item_sn_flag number := MSC_UTIL.SYS_NO;
1911 lv_oh_sn_flag number := MSC_UTIL.SYS_NO;
1912 lv_usup_sn_flag number := MSC_UTIL.SYS_NO;
1913 lv_udmd_sn_flag number := MSC_UTIL.SYS_NO;
1914 lv_so_sn_flag number := MSC_UTIL.SYS_NO;
1915 lv_fcst_sn_flag number := MSC_UTIL.SYS_NO;
1916 lv_wip_sn_flag number := MSC_UTIL.SYS_NO;
1917 lv_supcap_sn_flag number := MSC_UTIL.SYS_NO;
1918 lv_po_sn_flag number := MSC_UTIL.SYS_NO;
1919 lv_mds_sn_flag number := MSC_UTIL.SYS_NO;
1920 /* CP-AUTO */
1921 lv_suprep_sn_flag number := MSC_UTIL.SYS_NO;
1922 lv_mps_sn_flag number := MSC_UTIL.SYS_NO;
1923 lv_nosnap_flag number := MSC_UTIL.SYS_NO;
1924 lv_trip_sn_flag number := MSC_UTIL.SYS_NO; -- DRP
1925 lv_src_time DATE;
1926
1927 lv_so_lrtype number;
1928
1929 lv_last_tgt_cont_coll_time date;
1930
1931 lv_worker_prg VARCHAR2(30);
1932
1933 lv_table_name VARCHAR2(100);
1934
1935 lv_pjm_enabled VARCHAR2(1);
1936
1937 lv_inv_ctp_val NUMBER := NVL(FND_PROFILE.Value('INV_CTP'),0);
1938
1939 BEGIN
1940
1941 v_instance_id := pINSTANCE_ID;
1942 IF fnd_global.conc_request_id > 0 THEN
1943 v_cp_enabled:= MSC_UTIL.SYS_YES;
1944 ELSE
1945 v_cp_enabled:= MSC_UTIL.SYS_NO;
1946 END IF;
1947
1948 -- set the value for v_req_data. Fix for 2351297--
1949 v_req_data := fnd_conc_global.request_data;
1950
1951 -- if Refresh Snapshot was submitted as a sub request,
1952 -- Planning Data Pull should continue only if the sub request
1953 -- completed 'NORMAL' or with a 'WARNING', else the Planning Data
1954 -- Pull should error out as well. ( fix for 2548643)
1955 IF (v_req_data is not null) THEN
1956 lv_request_id:= to_number(v_req_data);
1957 l_call_status:= FND_CONCURRENT.GET_REQUEST_STATUS
1958 ( lv_request_id,
1959 NULL,
1960 NULL,
1961 l_phase,
1962 l_status,
1963 l_dev_phase,
1964 l_dev_status,
1965 l_message);
1966
1967 IF l_call_status=FALSE THEN
1968 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, l_message);
1969 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_RS_ERROR');
1970 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET );
1971 RETCODE := MSC_UTIL.G_ERROR;
1972 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
1973 IF SET_ST_STATUS( lv_errbuf, lv_retcode,
1974 pINSTANCE_ID, MSC_UTIL.G_ST_EMPTY) THEN
1975 COMMIT;
1976 END IF;
1977 RETURN;
1978 END IF;
1979
1980 IF ((l_dev_phase='COMPLETE') AND (l_dev_status IN ('NORMAL','WARNING'))) THEN
1981 -- the Planning Data Pull should continue
1982 null;
1983 ELSE
1984 -- the Planning Data Pull should error out
1985 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_RS_ERROR');
1986 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET );
1987 RETCODE := MSC_UTIL.G_ERROR;
1988 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
1989 IF SET_ST_STATUS( lv_errbuf, lv_retcode,
1990 pINSTANCE_ID, MSC_UTIL.G_ST_EMPTY) THEN
1991 COMMIT;
1992 END IF;
1993 RETURN;
1994 END IF;
1995
1996 END IF;
1997
1998
1999
2000 --- PREPLACE CHANGE START ---
2001 prec.purge_ods_flag := pOdsPURGEoption;
2002 prec.app_supp_cap_flag := pAPPROV_SUPPLIER_CAP_ENABLED;
2003 prec.atp_rules_flag := pATP_RULES_ENABLED;
2004 prec.bom_flag := pBOM_ENABLED;
2005 prec.bor_flag := pBOR_ENABLED;
2006 prec.calendar_flag := pCALENDAR_ENABLED;
2007 prec.demand_class_flag := pDEMAND_CLASS_ENABLED;
2008 prec.forecast_flag := pFORECAST_ENABLED;
2009 prec.item_flag := pITEM_ENABLED;
2010 prec.kpi_bis_flag := pKPI_BIS_ENABLED;
2011 prec.mds_flag := pMDS_ENABLED;
2012 prec.mps_flag := pMPS_ENABLED;
2013 prec.oh_flag := pOH_ENABLED;
2014 prec.parameter_flag := pPARAMETER_ENABLED;
2015 prec.planner_flag := pPLANNER_ENABLED;
2016 prec.item_subst_flag := pITEM_SUBST_ENABLED;
2017 prec.project_flag := pPROJECT_ENABLED;
2018 prec.po_flag := pPUR_REQ_PO_ENABLED;
2019 prec.reserves_flag := pRESERVES_HARD_ENABLED;
2020 prec.resource_nra_flag := pRESOURCE_NRA_ENABLED;
2021 prec.saf_stock_flag := pSafeStock_ENABLED;
2022 prec.sales_order_flag := pSalesOrder_RTYPE;
2023 prec.source_hist_flag := pSH_ENABLED;
2024 prec.po_receipts_flag := pPO_RECEIPTS_ENABLED;
2025 prec.sourcing_rule_flag := pSOURCING_ENABLED;
2026 prec.sub_inventory_flag := pSUB_INV_ENABLED;
2027 prec.tp_customer_flag := pTP_CUSTOMER_ENABLED;
2028 prec.tp_vendor_flag := pTP_VENDOR_ENABLED;
2029 prec.unit_number_flag := pUNIT_NO_ENABLED;
2030 prec.uom_flag := pUOM_ENABLED;
2031 prec.user_supply_demand_flag := pUSER_SUPPLY_DEMAND;
2032 prec.wip_flag := pWIP_ENABLED;
2033 prec.user_company_flag := pUSER_COMPANY_ENABLED;
2034 /* CP-ACK change starts */
2035 prec.supplier_response_flag := pSUPPLIER_RESPONSE_ENABLED;
2036 /* CP-ACK change starts */
2037 prec.trip_flag := pTRIP_ENABLED; -- DRP
2038 prec.ds_mode := v_DSMode;
2039
2040 prec.org_group_flag := pORG_GROUP;
2041
2042 prec.sales_channel_flag := pSALES_CHANNEL_ENABLED;
2043 prec.fiscal_calendar_flag := pFISCAL_CALENDAR_ENABLED;
2044 prec.internal_repair_flag := pINTERNAL_REPAIR_ENABLED; -- for bug 5909379
2045 prec.external_repair_flag := pEXTERNAL_REPAIR_ENABLED; -- for bug 5935273
2046 prec.payback_demand_supply_flag := pPAYBACK_DEMAND_SUPPLY_ENABLED;
2047 prec.currency_conversion_flag := pCURRENCY_CONVERSION_ENABLED; --bug # 6469722
2048 prec.delivery_details_flag := pDELIVERY_DETAILS_ENABLED; --bug # 6730983
2049
2050 /* In case of Trading Partners both supplier and
2051 // and customer information will be loaded together.
2052 // HARD CODED - Vendor and customer CURRENTLY cannot be
2053 // separately refreshed during targeted/partial refreshment.
2054 */
2055
2056 IF pTP_VENDOR_ENABLED = MSC_UTIL.SYS_YES THEN
2057 prec.tp_customer_flag := MSC_UTIL.SYS_YES;
2058 ELSIF pTP_CUSTOMER_ENABLED = MSC_UTIL.SYS_YES THEN
2059 prec.tp_vendor_flag := MSC_UTIL.SYS_YES;
2060 END IF;
2061
2062 /* In case of MDS, MPS both need to go together as they are dependent on the same
2063 // snapshot mrp_schedule_dates
2064 */
2065
2066 IF prec.mds_flag = MSC_UTIL.SYS_YES THEN
2067 prec.mps_flag := MSC_UTIL.SYS_YES;
2068 ELSIF prec.mps_flag = MSC_UTIL.SYS_YES THEN
2069 prec.mds_flag := MSC_UTIL.SYS_YES;
2070 END IF;
2071
2072
2073 --agmcont
2074 /* select the instance_type and database link */
2075 BEGIN
2076 SELECT DECODE( M2A_DBLINK,
2077 NULL, NULL_DBLINK,
2078 '@'||M2A_DBLINK),
2079 DECODE( A2M_DBLINK,
2080 NULL, NULL_DBLINK,
2081 A2M_DBLINK),
2082 INSTANCE_TYPE,
2083 APPS_VER,
2084 LAST_TGT_CONT_COLL_TIME,
2085 INSTANCE_CODE
2086 INTO v_dblink,
2087 v_dest_a2m, -- bug fix for 2320600
2088 v_instance_type,
2089 v_apps_ver,
2090 lv_last_tgt_cont_coll_time,
2091 v_instance_code
2092 FROM MSC_APPS_INSTANCES
2093 WHERE INSTANCE_ID= pINSTANCE_ID;
2094
2095 IF (v_apps_ver = MSC_UTIL.G_APPS120) THEN --bug#5684183 (bcaru)
2096 prec.payback_demand_supply_flag := MSC_UTIL.SYS_NO;
2097 --prec.currency_conversion_flag := MSC_UTIL.SYS_NO;
2098 --prec.delivery_details_flag := MSC_UTIL.SYS_NO;
2099 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Entity borrow payback is not supported for this source version');
2100 If pITEM_SUBST_ENABLED = MSC_UTIL.SYS_YES and pRTYPE = MSC_UTIL.G_INCREMENTAL Then
2101 prec.item_subst_flag := MSC_UTIL.SYS_NO;
2102 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Netchange of Item substitutes is not supported for this source version');
2103 end if;
2104
2105 END IF;
2106
2107 /*If the source version is 11510, PO receipts is not supported*/
2108 IF (v_apps_ver < MSC_UTIL.G_APPS120) THEN --bug#5684183 (bcaru)
2109 prec.po_receipts_flag := MSC_UTIL.SYS_NO;
2110 prec.internal_repair_flag := MSC_UTIL.SYS_NO;
2111 prec.external_repair_flag := MSC_UTIL.SYS_NO;
2112 --prec.payback_demand_supply_flag := MSC_UTIL.SYS_NO;
2113 --prec.currency_conversion_flag := MSC_UTIL.SYS_NO;
2114 prec.delivery_details_flag := MSC_UTIL.SYS_NO;
2115 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Entities po_receipts, IRO,ERO are not supported for this source version');
2116 If pITEM_SUBST_ENABLED = MSC_UTIL.SYS_YES and pRTYPE = MSC_UTIL.G_INCREMENTAL Then
2117 prec.item_subst_flag := MSC_UTIL.SYS_NO;
2118 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Netchange of Item substitutes is not supported for this source version');
2119 end if;
2120
2121 END IF;
2122
2123 If pRTYPE = MSC_UTIL.G_COMPLETE Then
2124 IF v_apps_ver >= MSC_UTIL.G_APPS115 Then
2125 lv_sql_stmt:= 'update msc_apps_instances set LBJ_DETAILS = (select decode(to_number(FND_PROFILE.VALUE' || v_dblink || '(''WSM_CREATE_LBJ_COPY_ROUTING'')),1,1,2) from dual' || ' ) '
2126 || ' where instance_id = ' || pINSTANCE_ID ;
2127 ELSE
2128 lv_sql_stmt:= 'update msc_apps_instances set LBJ_DETAILS = 2 '
2129 || ' where instance_id = ' || pINSTANCE_ID ;
2130 END IF;
2131
2132 EXECUTE IMMEDIATE lv_sql_stmt;
2133
2134 commit;
2135 END If;
2136
2137
2138 --bug#6126924 (bcaru)
2139 UPDATE msc_coll_parameters
2140 SET COLLECTIONS_START_TIME = sysdate
2141 WHERE INSTANCE_ID = pINSTANCE_ID;
2142
2143
2144 -- To Check if the refresh type is partial(ie Targetted)
2145 -- the a2m_dblink on the destination should be in sync with
2146 -- the a2m_dblink on the source side.
2147 IF pRTYPE = MSC_UTIL.G_PARTIAL THEN
2148
2149 IF v_apps_ver >= MSC_UTIL.G_APPS115 THEN
2150 lv_table_name := 'MRP_AP_APPS_INSTANCES_ALL';
2151 ELSE
2152 lv_table_name := 'MRP_AP_APPS_INSTANCES';
2153 END IF;
2154
2155 v_sql_stmt:=
2156 'SELECT DECODE( mar.A2M_DBLINK,NULL,'''||NULL_DBLINK||''',mar.A2M_DBLINK),'
2157 ||' DECODE( mar.M2A_DBLINK,NULL,'''||NULL_DBLINK||''',''@''||mar.M2A_DBLINK)'
2158 ||' FROM '||lv_table_name||v_dblink||' mar'
2159 ||' WHERE mar.INSTANCE_ID = '||pINSTANCE_ID
2160 ||' AND mar.INSTANCE_CODE = '''||v_instance_code||''''
2161 ||' AND nvl(mar.A2M_DBLINK,'''||NULL_DBLINK||''') = '''||v_dest_a2m||'''';
2162
2163 EXECUTE IMMEDIATE v_sql_stmt INTO lv_sr_a2m,lv_sr_m2a ;
2164
2165
2166 -- If a2m_dblink or m2a_dblink on the source and destination
2167 -- are out of synchronization - error out.
2168 IF(( lv_sr_a2m <> v_dest_a2m) OR (lv_sr_m2a <> v_dblink)) THEN
2169
2170 RETCODE := MSC_UTIL.G_ERROR;
2171 FND_MESSAGE.SET_NAME('MSC', 'MSC_COLL_A2MDBLINK_INVALID');
2172 ERRBUF:= FND_MESSAGE.GET;
2173 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
2174 RETURN;
2175 END IF;
2176
2177
2178 END IF;
2179
2180 EXCEPTION
2181 WHEN NO_DATA_FOUND THEN
2182
2183 RETCODE := MSC_UTIL.G_ERROR;
2184 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_INVALID_INSTANCE_ID');
2185 FND_MESSAGE.SET_TOKEN('INSTANCE_ID', pINSTANCE_ID);
2186 ERRBUF:= FND_MESSAGE.GET;
2187 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
2188 RETURN;
2189 WHEN OTHERS THEN
2190
2191 RETCODE := MSC_UTIL.G_ERROR;
2192 ERRBUF := SQLERRM;
2193 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
2194 RETURN;
2195 END;
2196
2197
2198 SELECT FND_GLOBAL.USER_ID
2199 INTO v_current_user
2200 FROM MSC_APPS_INSTANCES
2201 WHERE INSTANCE_ID= pINSTANCE_ID;
2202
2203 -- To be called only at the first run.
2204 IF (v_req_data is null) THEN -- for the fix 2351297
2205
2206 BEGIN
2207 v_sql_stmt:=
2208 'SELECT PJM_UNIT_EFF.ENABLED'||v_dblink || ' FROM DUAL';
2209
2210 EXECUTE IMMEDIATE v_sql_stmt
2211 INTO lv_pjm_enabled;
2212 EXCEPTION
2213 WHEN OTHERS THEN
2214 lv_pjm_enabled := NULL;
2215 END;
2216
2217 UPDATE msc_apps_instances
2218 SET lrtype = DECODE ( pRTYPE, MSC_UTIL.G_COMPLETE, 'C',
2219 MSC_UTIL.G_INCREMENTAL, 'I',
2220 MSC_UTIL.G_PARTIAL, 'P',
2221 MSC_UTIL.G_CONT, 'T'),
2222 pjm_enabled = lv_pjm_enabled
2223 WHERE instance_id = pINSTANCE_ID;
2224
2225 -- Indicate the data pull type in MSC_APPS_INSTANCES
2226
2227 SELECT count(*)
2228 INTO lv_param_rec_count
2229 FROM msc_coll_parameters
2230 WHERE instance_id = pINSTANCE_ID;
2231
2232
2233 IF lv_param_rec_count = 0 THEN
2234
2235 -- Initialize session information if no records
2236 -- found for the particular source_instance.
2237 --agmcont
2238
2239 INSERT INTO msc_coll_parameters
2240 (INSTANCE_ID,org_group,threshold, delete_ods_data, supplier_capacity, atp_rules,
2241 bom, bor, calendar_check, demand_class, forecast, item,
2242 kpi_targets_bis, mds, mps, oh, parameter, planners,
2243 item_substitutes, projects, po, reservations, nra, safety_stock,
2244 sales_order, sourcing_history, sourcing, sub_inventories,
2245 customer, supplier, unit_numbers, uom, user_supply_demand, wip, user_comp_association,trip ,po_receipts,
2246 supplier_response,sales_channel,fiscal_calendar,internal_repair,external_repair,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATION_DATE, CREATED_BY, -- for bug 5909379
2247 ds_mode, payback_demand_supply, currency_conversion,delivery_details) -- bug # 6469722
2248 VALUES (pINSTANCE_ID,prec.org_group_flag,v_cont_coll_thresh, prec.purge_ods_flag, prec.app_supp_cap_flag,
2249 prec.atp_rules_flag, prec.bom_flag,
2250 prec.bor_flag, prec.calendar_flag,
2251 prec.demand_class_flag, prec.forecast_flag,
2252 prec.item_flag, prec.kpi_bis_flag,
2253 prec.mds_flag, prec.mps_flag,
2254 prec.oh_flag, prec.parameter_flag,
2255 prec.planner_flag,prec.item_subst_flag, prec.project_flag,
2256 prec.po_flag, prec.reserves_flag,
2257 prec.resource_nra_flag, prec.saf_stock_flag,
2258 prec.sales_order_flag, prec.source_hist_flag,
2259 prec.sourcing_rule_flag, prec.sub_inventory_flag,
2260 prec.tp_customer_flag, prec.tp_vendor_flag,
2261 prec.unit_number_flag, prec.uom_flag,
2262 prec.user_supply_demand_flag, prec.wip_flag, prec.user_company_flag,prec.trip_flag, -- DRP
2263 prec.po_receipts_flag, prec.supplier_response_flag,prec.sales_channel_flag,prec.fiscal_calendar_flag,prec.internal_repair_flag,prec.external_repair_flag, sysdate, v_current_user, sysdate, v_current_user,
2264 prec.ds_mode,
2265 prec.payback_demand_supply_flag, prec.currency_conversion_flag,
2266 prec.delivery_details_flag); --bug # 6469722
2267 -- for bug 5909379
2268 ELSE
2269
2270 SELECT st_status
2271 INTO lv_coll_stat
2272 FROM msc_apps_instances
2273 WHERE instance_id = pINSTANCE_ID;
2274
2275 IF lv_coll_stat = MSC_UTIL.G_ST_EMPTY THEN
2276
2277 DELETE FROM msc_coll_parameters
2278 WHERE instance_id = pINSTANCE_ID;
2279
2280 -- If collection status is NOT in progress then
2281 -- delete old collection session info and insert
2282 -- new collection session info.
2283
2284 INSERT INTO msc_coll_parameters
2285 (INSTANCE_ID,org_group,threshold, delete_ods_data, supplier_capacity, atp_rules,
2286 bom, bor, calendar_check, demand_class, forecast, item,
2287 kpi_targets_bis, mds, mps, oh, parameter, planners,
2288 item_substitutes,projects, po, reservations, nra,
2289 safety_stock, sales_order, sourcing_history, sourcing,
2290 sub_inventories, customer, supplier, unit_numbers,
2291 uom, user_supply_demand, wip, user_comp_association,trip,po_receipts,supplier_response,
2292 sales_channel,fiscal_calendar,internal_repair , external_repair , -- for bug 5909379
2293 LAST_UPDATE_DATE,LAST_UPDATED_BY, CREATION_DATE, CREATED_BY,
2294 ds_mode,
2295 payback_demand_supply, currency_conversion,delivery_details) -- bug # 6469722
2296 VALUES (pINSTANCE_ID,prec.org_group_flag,v_cont_coll_thresh, prec.purge_ods_flag,
2297 prec.app_supp_cap_flag, prec.atp_rules_flag,
2298 prec.bom_flag, prec.bor_flag, prec.calendar_flag,
2299 prec.demand_class_flag, prec.forecast_flag,
2300 prec.item_flag, prec.kpi_bis_flag,
2301 prec.mds_flag, prec.mps_flag,
2302 prec.oh_flag, prec.parameter_flag,
2303 prec.planner_flag,prec.item_subst_flag, prec.project_flag,
2304 prec.po_flag, prec.reserves_flag,
2305 prec.resource_nra_flag, prec.saf_stock_flag,
2306 prec.sales_order_flag, prec.source_hist_flag,
2307 prec.sourcing_rule_flag, prec.sub_inventory_flag,
2308 prec.tp_customer_flag, prec.tp_vendor_flag,
2309 prec.unit_number_flag, prec.uom_flag,
2310 prec.user_supply_demand_flag, prec.wip_flag, prec.user_company_flag,prec.trip_flag, -- DRP
2311 prec.po_receipts_flag, prec.supplier_response_flag,
2312 prec.sales_channel_flag,prec.fiscal_calendar_flag,prec.internal_repair_flag,prec.external_repair_flag, -- for bug 5909379
2313 sysdate, v_current_user, sysdate, v_current_user,
2314 prec.ds_mode,
2315 prec.payback_demand_supply_flag,prec.currency_conversion_flag,
2316 prec.delivery_details_flag); --bug # 6469722
2317
2318 -- ELSE EXIT WITH ERROR ????
2319
2320 END IF;
2321
2322 END IF;
2323
2324 END IF; -- End of IF (v_req_data is null)
2325
2326 msc_util.print_pull_params(pINSTANCE_ID);
2327
2328 --- PREPLACE CHANGE END ---
2329
2330 /* check if this procedure is launched as a concurrent program */
2331 -- IF fnd_global.conc_request_id > 0 THEN
2332 -- v_cp_enabled:= MSC_UTIL.SYS_YES;
2333 -- ELSE
2334 -- v_cp_enabled:= MSC_UTIL.SYS_NO;
2335 -- END IF;
2336
2337 /* select the instance_type and database link */
2338 /* --agmcont: move code below above, since we need dblink earlier
2339 BEGIN
2340 SELECT DECODE( M2A_DBLINK,
2341 NULL, NULL_DBLINK,
2342 '@'||M2A_DBLINK),
2343 DECODE( A2M_DBLINK,
2344 NULL, NULL_DBLINK,
2345 A2M_DBLINK),
2346 INSTANCE_TYPE
2347 INTO v_dblink,
2348 lv_dest_a2m, -- bug fix for 2320600
2349 v_instance_type
2350 FROM MSC_APPS_INSTANCES
2351 WHERE INSTANCE_ID= pINSTANCE_ID;
2352
2353 -- To Check if the refresh type is partial(ie Targetted)
2354 -- the a2m_dblink on the destination should be in sync with
2355 -- the a2m_dblink on the source side.
2356 IF pRTYPE = MSC_UTIL.G_PARTIAL THEN
2357 v_sql_stmt:=
2358 'SELECT DECODE( mar.A2M_DBLINK,NULL,'''||NULL_DBLINK||''',mar.A2M_DBLINK),'
2359 ||' DECODE( mar.M2A_DBLINK,NULL,'''||NULL_DBLINK||''',''@''||mar.M2A_DBLINK)'
2360 ||' FROM MRP_AP_APPS_INSTANCES'||v_dblink||' mar';
2361
2362 EXECUTE IMMEDIATE v_sql_stmt INTO lv_sr_a2m,lv_sr_m2a;
2363
2364 -- If a2m_dblink or m2a_dblink on the source and destination
2365 -- are out of synchronization - error out.
2366 IF(( lv_sr_a2m <> lv_dest_a2m) OR (lv_sr_m2a <> v_dblink)) THEN
2367
2368 RETCODE := MSC_UTIL.G_ERROR;
2369 FND_MESSAGE.SET_NAME('MSC', 'MSC_COLL_A2MDBLINK_INVALID');
2370 ERRBUF:= FND_MESSAGE.GET;
2371 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
2372 RETURN;
2373 END IF;
2374
2375 END IF;
2376
2377 EXCEPTION
2378 WHEN NO_DATA_FOUND THEN
2379 RETCODE := MSC_UTIL.G_ERROR;
2380 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_INVALID_INSTANCE_ID');
2381 FND_MESSAGE.SET_TOKEN('INSTANCE_ID', pINSTANCE_ID);
2382 ERRBUF:= FND_MESSAGE.GET;
2383 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
2384 RETURN;
2385 WHEN OTHERS THEN
2386 RETCODE := MSC_UTIL.G_ERROR;
2387 ERRBUF := SQLERRM;
2388 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
2389 RETURN;
2390
2391 END;
2392 */
2393
2394
2395 -- to initialize common global variables bug#5897346
2396 MSC_UTIL.INITIALIZE_COMMON_GLOBALS(pINSTANCE_ID);
2397
2398 INITIALIZE_PULL_GLOBALS( pINSTANCE_ID); -- Initializes Level 2 Global Variables used in Data Pull
2399
2400
2401 DBMS_PIPE.PURGE( v_pipe_task_que);
2402 DBMS_PIPE.PURGE( v_pipe_wm);
2403 DBMS_PIPE.PURGE( v_pipe_mw);
2404 DBMS_PIPE.PURGE( v_pipe_status);
2405
2406
2407 -- To be called only at the first run.
2408 IF (v_req_data is null) THEN -- for the fix 2351297
2409
2410 /* set the status of the staging table to PULLING */
2411 lv_check_point:= 1;
2412
2413 IF SET_ST_STATUS( lv_errbuf,
2414 lv_retcode,
2415 pINSTANCE_ID,
2416 MSC_UTIL.G_ST_PULLING,
2417 pSalesOrder_RTYPE) THEN
2418
2419 COMMIT;
2420
2421 lv_check_point:= 2;
2422
2423 ELSE
2424
2425 ROLLBACK;
2426
2427 ERRBUF := lv_errbuf;
2428 RETCODE := lv_retcode;
2429
2430 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
2431
2432 RETURN;
2433
2434 END IF;
2435
2436 ELSE
2437
2438 lv_check_point := 2; -- for the second run, lv_check_point would be 2.
2439
2440 END IF; -- if v_req_data is null --
2441
2442 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, ' before calling REFRESH_SNAPSHOT 1 ');
2443 -- Code fix for 2351297--
2444 IF v_cp_enabled= MSC_UTIL.SYS_YES THEN
2445 IF v_req_data is NULL THEN -- i.e. the first run of the program.
2446
2447 IF REFRESH_SNAPSHOT( pINSTANCE_ID,pRTYPE)=FALSE THEN
2448
2449 RETCODE:= MSC_UTIL.G_ERROR;
2450
2451 IF SET_ST_STATUS( lv_errbuf,
2452 lv_retcode,
2453 pINSTANCE_ID,
2454 MSC_UTIL.G_ST_EMPTY) THEN
2455 COMMIT;
2456 END IF;
2457
2458 IF lv_check_point =2 THEN
2459 UPDATE MSC_APPS_INSTANCES
2460 SET SO_TBL_STATUS = decode(pSalesOrder_RTYPE,MSC_UTIL.SYS_YES
2461 ,decode(pRTYPE,MSC_UTIL.G_COMPLETE,decode(lv_inv_ctp_val,5,MSC_UTIL.SYS_YES,SO_TBL_STATUS),MSC_UTIL.G_PARTIAL,decode(lv_inv_ctp_val,5,MSC_UTIL.SYS_YES,SO_TBL_STATUS),SO_TBL_STATUS),
2462 SO_TBL_STATUS)
2463 WHERE INSTANCE_ID= pINSTANCE_ID;
2464 COMMIT;
2465 END IF;
2466
2467 RETURN;
2468
2469 END IF; -- IF REFRESH_SNAPSHOT
2470
2471 -- If its a single instance set up, the program should exit as the request is PAUSED.
2472 IF(v_dblink=NULL_DBLINK) THEN
2473 RETURN;
2474 END IF;
2475
2476 END IF; -- IF v_req_data is NULL
2477
2478 END IF;
2479
2480
2481 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, ' after calling REFRESH_SNAPSHOT ');
2482 /* get the refresh number used in the last refresh snapshot process*/
2483
2484 IF v_apps_ver >= MSC_UTIL.G_APPS115 THEN
2485
2486 lv_table_name := 'MRP_AP_APPS_INSTANCES_ALL';
2487
2488 v_sql_stmt:=
2489 'SELECT mar.LRN, mar.validation_org_id'
2490 ||' FROM '||lv_table_name||v_dblink||' mar'
2491 ||' WHERE mar.INSTANCE_ID = ' ||pINSTANCE_ID
2492 ||' AND mar.INSTANCE_CODE = '''||v_instance_code||''''
2493 ||' AND nvl(mar.A2M_DBLINK, '''||NULL_DBLINK||''' ) = '''||v_dest_a2m||'''';
2494
2495 EXECUTE IMMEDIATE v_sql_stmt INTO v_crn, v_validation_org_id;
2496
2497 UPDATE MSC_APPS_INSTANCES
2498 SET VALIDATION_ORG_ID = v_validation_org_id
2499 WHERE INSTANCE_ID = pINSTANCE_ID;
2500
2501 ELSE
2502
2503 lv_table_name := 'MRP_AP_APPS_INSTANCES';
2504
2505 v_sql_stmt:=
2506 'SELECT mar.LRN '
2507 ||' FROM '||lv_table_name||v_dblink||' mar'
2508 ||' WHERE mar.INSTANCE_ID = ' ||pINSTANCE_ID
2509 ||' AND mar.INSTANCE_CODE = '''||v_instance_code||''''
2510 ||' AND nvl(mar.A2M_DBLINK, '''||NULL_DBLINK||''' ) = '''||v_dest_a2m||'''';
2511
2512 EXECUTE IMMEDIATE v_sql_stmt INTO v_crn ;
2513
2514 END IF;
2515
2516 -- agmcont
2517
2518 if (v_is_cont_refresh = MSC_UTIL.SYS_YES) then
2519 -- determine w hat mode each entity should be refreshed in
2520
2521 MSC_CL_CONT_COLL_FW.INIT_ENTITY_REFRESH_TYPE (v_cont_coll_thresh,
2522 v_cont_coll_freq,
2523 lv_last_tgt_cont_coll_time,
2524 v_dblink,
2525 pINSTANCE_ID,
2526 prec,
2527 pORG_GROUP,
2528 lv_bom_sn_flag,
2529 lv_bor_sn_flag,
2530 lv_item_sn_flag,
2531 lv_oh_sn_flag,
2532 lv_usup_sn_flag,
2533 lv_udmd_sn_flag,
2534 lv_so_sn_flag,
2535 lv_fcst_sn_flag,
2536 lv_wip_sn_flag,
2537 lv_supcap_sn_flag,
2538 lv_po_sn_flag,
2539 lv_mds_sn_flag,
2540 lv_mps_sn_flag,
2541 lv_nosnap_flag,
2542 /* CP-AUTO */
2543 lv_suprep_sn_flag,
2544 lv_trip_sn_flag );-- DRP
2545
2546 /* The following will finally determine based on user settings whether the entity really needs
2547 to be refreshed and this will be inserted into msc_coll_parameters*/
2548 IF (prec.bom_flag = MSC_UTIL.SYS_YES) THEN
2549 prec.bom_sn_flag := lv_bom_sn_flag;
2550 ELSE
2551 prec.bom_sn_flag := MSC_UTIL.SYS_NO;
2552 END IF;
2553 IF (prec.bor_flag = MSC_UTIL.SYS_YES) THEN
2554 prec.bor_sn_flag := lv_bor_sn_flag;
2555 ELSE
2556 prec.bor_sn_flag := MSC_UTIL.SYS_NO;
2557 END IF;
2558 IF (prec.item_flag = MSC_UTIL.SYS_YES) THEN
2559 prec.item_sn_flag := lv_item_sn_flag;
2560 ELSE
2561 prec.item_sn_flag := MSC_UTIL.SYS_NO;
2562 END IF;
2563 IF (prec.oh_flag = MSC_UTIL.SYS_YES) THEN
2564 prec.oh_sn_flag := lv_oh_sn_flag;
2565 ELSE
2566 prec.oh_sn_flag := MSC_UTIL.SYS_NO;
2567 END IF;
2568 IF (prec.user_supply_demand_flag = MSC_UTIL.SYS_YES) THEN
2569 prec.usup_sn_flag := lv_usup_sn_flag;
2570 prec.udmd_sn_flag := lv_udmd_sn_flag;
2571 ELSE
2572 prec.usup_sn_flag := MSC_UTIL.SYS_NO;
2573 prec.udmd_sn_flag := MSC_UTIL.SYS_NO;
2574 END IF;
2575
2576 /* Sales Orders will always be collected in continous*/
2577 -- above is no longer true . ds change
2578
2579 IF (prec.sales_order_flag = MSC_UTIL.SYS_YES) THEN
2580 prec.so_sn_flag := lv_so_sn_flag;
2581 ELSE
2582 prec.so_sn_flag := MSC_UTIL.SYS_NO;
2583 END IF;
2584
2585 IF (prec.forecast_flag = MSC_UTIL.SYS_YES) THEN
2586 prec.fcst_sn_flag := lv_fcst_sn_flag;
2587 ELSE
2588 prec.fcst_sn_flag := MSC_UTIL.SYS_NO;
2589 END IF;
2590 IF (prec.wip_flag = MSC_UTIL.SYS_YES) THEN
2591 prec.wip_sn_flag := lv_wip_sn_flag;
2592 ELSE
2593 prec.wip_sn_flag := MSC_UTIL.SYS_NO;
2594 END IF;
2595 IF (prec.app_supp_cap_flag = MSC_UTIL.SYS_YES or prec.app_supp_cap_flag =MSC_UTIL.ASL_YES_RETAIN_CP ) THEN
2596 prec.supcap_sn_flag := lv_supcap_sn_flag;
2597 ELSE
2598 prec.supcap_sn_flag := MSC_UTIL.SYS_NO;
2599 END IF;
2600 IF (prec.po_flag = MSC_UTIL.SYS_YES) THEN
2601 prec.po_sn_flag := lv_po_sn_flag;
2602 ELSE
2603 prec.po_sn_flag := MSC_UTIL.SYS_NO;
2604 END IF;
2605
2606 IF (prec.trip_flag = MSC_UTIL.SYS_YES) THEN
2607 prec.trip_sn_flag := lv_trip_sn_flag;
2608 ELSE
2609 prec.trip_sn_flag := MSC_UTIL.SYS_NO;
2610 END IF;
2611
2612 prec.nosnap_flag := lv_nosnap_flag;
2613
2614 /* CP-AUTO */
2615 prec.suprep_sn_flag := lv_suprep_sn_flag;
2616 /* MPS and MDS need to go hand in hand because they are based on same snapshot*/
2617 IF (prec.mds_flag = MSC_UTIL.SYS_YES) or (prec.mps_flag = MSC_UTIL.SYS_YES) THEN
2618 prec.mds_flag := MSC_UTIL.SYS_YES;
2619 prec.mps_flag := MSC_UTIL.SYS_YES;
2620 prec.mds_sn_flag := lv_mds_sn_flag;
2621 prec.mps_sn_flag := lv_mps_sn_flag;
2622 ELSE
2623 prec.mds_sn_flag := MSC_UTIL.SYS_NO;
2624 prec.mps_sn_flag := MSC_UTIL.SYS_NO;
2625 END IF;
2626
2627 /*
2628 IF (prec.mps_flag = MSC_UTIL.SYS_YES) THEN
2629 prec.mps_sn_flag := lv_mps_sn_flag;
2630 ELSE
2631 prec.mps_sn_flag := MSC_UTIL.SYS_NO;
2632 END IF;
2633 */
2634
2635
2636 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, '*****************************************************************');
2637 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'BOM refresh type = '|| collection_type(prec.bom_flag,prec.bom_sn_flag) );
2638 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'BOR refresh type = '|| collection_type(prec.bor_flag,prec.bor_sn_flag) );
2639 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'ITEM refresh type = '|| collection_type(prec.item_flag,prec.item_sn_flag) );
2640 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'ONHAND refresh type = '|| collection_type(prec.oh_flag,prec.oh_sn_flag) );
2641 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'USER SUP refresh type = '|| collection_type(prec.user_supply_demand_flag,prec.usup_sn_flag) );
2642 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'USER DMD refresh type = '|| collection_type(prec.user_supply_demand_flag,prec.udmd_sn_flag) );
2643 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'SALES ORDER refresh type = '|| collection_type(prec.sales_order_flag,prec.so_sn_flag) );
2644 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'FORECAST refresh type = '|| collection_type(prec.forecast_flag,prec.fcst_sn_flag) );
2645 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'WIP refresh type = '|| collection_type(prec.wip_flag,prec.wip_sn_flag) );
2646 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'SUP CAP refresh type = '|| collection_type(prec.app_supp_cap_flag,prec.supcap_sn_flag) );
2647 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'PO type = '|| collection_type(prec.po_flag,prec.po_sn_flag) );
2648 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'MDS refresh type = '|| collection_type(prec.mds_flag,prec.mds_sn_flag) );
2649 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'MPS refresh type = '|| collection_type(prec.mps_flag,prec.mps_sn_flag) );
2650 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'SUPP RESP refresh type = '|| collection_type(prec.supplier_response_flag, prec.suprep_sn_flag) );
2651 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'TRIP refresh type = '|| collection_type(prec.trip_flag,prec.trip_sn_flag) );
2652 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, '*****************************************************************');
2653 -- agmcont:
2654
2655
2656 UPDATE msc_coll_parameters
2657 SET bom_sn_flag = prec.bom_sn_flag,
2658 bor_sn_flag = prec.bor_sn_flag,
2659 item_sn_flag = prec.item_sn_flag,
2660 oh_sn_flag = prec.oh_sn_flag,
2661 usup_sn_flag = prec.usup_sn_flag,
2662 udmd_sn_flag = prec.udmd_sn_flag,
2663 so_sn_flag = prec.so_sn_flag,
2664 fcst_sn_flag = prec.fcst_sn_flag,
2665 wip_sn_flag = prec.wip_sn_flag,
2666 supcap_sn_flag = prec.supcap_sn_flag,
2667 po_sn_flag = prec.po_sn_flag,
2668 mds_sn_flag = prec.mds_sn_flag,
2669 mps_sn_flag = prec.mps_sn_flag,
2670 --supplier_response = prec.supplier_response_flag,
2671 suprep_sn_flag = prec.suprep_sn_flag,
2672 nosnap_flag = prec.nosnap_flag,
2673 trip_sn_flag = prec.trip_sn_flag
2674 WHERE INSTANCE_ID=pINSTANCE_ID;
2675
2676 UPDATE msc_apps_instances
2677 SET SO_TBL_STATUS = decode (prec.so_sn_flag,MSC_UTIL.SYS_TGT,MSC_UTIL.SYS_NO,SO_TBL_STATUS)
2678 WHERE INSTANCE_ID=pINSTANCE_ID;
2679
2680 COMMIT;
2681
2682 end if;
2683
2684 /* initialize the MSC_CL_PULL_WORKER package */
2685 /* get the total task number */
2686 INITIALIZE
2687 ( v_refresh_id,
2688 lv_total_task_number);
2689
2690 -- process mfg only. if extracting items the call to populate the item
2691 -- table in the procees instance must be executed before anything else
2692 -- the other routines use this table to extract the data
2693 -- since the gmp's procedure doesn't support incremental refresh, the
2694 -- following process is valid only if it's a complete refresh.
2695
2696 -- agmcont TODO
2697
2698 --- PREPLACE CHANGE START ---
2699 /* IF (pRTYPE = MSC_UTIL.SYS_YES) THEN -- complete refresh */
2700
2701 IF ( (pRTYPE = MSC_UTIL.G_PARTIAL) OR (pRTYPE = MSC_UTIL.G_COMPLETE) OR
2702 (pRTYPE = MSC_UTIL.G_CONT AND prec.item_sn_flag = MSC_UTIL.SYS_TGT) ) THEN
2703 -- complete refresh or Partial refresh
2704
2705 --- PREPLACE CHANGE END ---
2706
2707 IF pITEM_ENABLED = MSC_UTIL.SYS_YES and
2708 ( v_instance_type = MSC_UTIL.G_INS_PROCESS OR
2709 v_instance_type = MSC_UTIL.G_INS_MIXED ) THEN
2710
2711 IF v_cp_enabled = MSC_UTIL.SYS_YES THEN
2712 return_status := TRUE;
2713 ELSE
2714 return_status := FALSE;
2715 END IF;
2716
2717 /* OPM Team - OPM Inventory Convergence Project
2718 - remove the call to extract items
2719 gmp_bom_routing_pkg.extract_items (v_dblink,
2720 pINSTANCE_ID,
2721 sysdate,
2722 return_status);
2723 */
2724 --bug 7328992 11i opm coll
2725 IF (v_apps_ver = MSC_UTIL.G_APPS115) THEN
2726
2727 MSC_CL_GMP_UTILITY.extract_items(v_dblink,
2728 pINSTANCE_ID,
2729 sysdate,
2730 return_status);
2731
2732 END IF;
2733
2734 END IF;
2735
2736 END IF;
2737
2738 -- ============ Lauch the workers here ===============
2739
2740 lvs_request_id.EXTEND( pTotalWorkerNum);
2741
2742 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, ' before calling workers ');
2743
2744
2745 IF v_cp_enabled= MSC_UTIL.SYS_YES THEN
2746
2747 FOR lc_i IN 1..pTotalWorkerNum LOOP
2748
2749 if (v_is_cont_refresh = MSC_UTIL.SYS_YES) then -- if continuous refresh
2750 lv_worker_prg := 'MSCAUTPW';
2751 else
2752 lv_worker_prg := 'MSCPDPW';
2753 end if;
2754
2755 lvs_request_id(lc_i) := FND_REQUEST.SUBMIT_REQUEST(
2756 'MSC',
2757 lv_worker_prg,
2758 NULL, -- description
2759 NULL, -- start date
2760 FALSE, -- TRUE,
2761 FND_GLOBAL.CONC_REQUEST_ID,
2762 pINSTANCE_ID,
2763 pTIMEOUT,
2764 pLANG,
2765 pRTYPE,
2766 v_refresh_id,
2767 pAPPROV_SUPPLIER_CAP_ENABLED ,
2768 pATP_RULES_ENABLED ,
2769 pBOM_ENABLED ,
2770 pBOR_ENABLED ,
2771 pCALENDAR_ENABLED ,
2772 pDEMAND_CLASS_ENABLED ,
2773 pITEM_SUBST_ENABLED ,
2774 pFORECAST_ENABLED ,
2775 pITEM_ENABLED ,
2776 pKPI_BIS_ENABLED ,
2777 pMDS_ENABLED ,
2778 pMPS_ENABLED ,
2779 pOH_ENABLED ,
2780 pPARAMETER_ENABLED ,
2781 pPLANNER_ENABLED ,
2782 pPROJECT_ENABLED ,
2783 pPUR_REQ_PO_ENABLED ,
2784 pRESERVES_HARD_ENABLED ,
2785 pRESOURCE_NRA_ENABLED ,
2786 pSafeStock_ENABLED ,
2787 pSalesOrder_RTYPE ,
2788 pSH_ENABLED ,
2789 pSOURCING_ENABLED ,
2790 pSUB_INV_ENABLED ,
2791 pTP_CUSTOMER_ENABLED ,
2792 pTP_VENDOR_ENABLED ,
2793 pUNIT_NO_ENABLED ,
2794 pUOM_ENABLED ,
2795 pUSER_SUPPLY_DEMAND ,
2796 pWIP_ENABLED ,
2797 pPO_RECEIPTS_ENABLED ,
2798 pUSER_COMPANY_ENABLED ,
2799 /* CP-ACK starts */
2800 pSUPPLIER_RESPONSE_ENABLED,
2801 /* CP-ACK ends */
2802 pTRIP_ENABLED ); -- sub request
2803
2804 COMMIT;
2805
2806
2807 ---- If the request_id=0 then
2808 ---- 1. Restore the status of the staging table.
2809 ---- 2. Send termination messages to the other launched workers.
2810 ---- 3. Return.
2811
2812 IF lvs_request_id(lc_i)= 0 THEN
2813
2814 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_LAUNCH_WORKER_FAIL');
2815 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
2816
2817 ROLLBACK;
2818
2819 IF SET_ST_STATUS( lv_errbuf,
2820 lv_retcode,
2821 pINSTANCE_ID,
2822 MSC_UTIL.G_ST_EMPTY) THEN
2823 COMMIT;
2824 END IF;
2825
2826 IF lv_check_point =2 THEN
2827 UPDATE MSC_APPS_INSTANCES
2828 SET SO_TBL_STATUS = decode(pSalesOrder_RTYPE,MSC_UTIL.SYS_YES
2829 ,decode(pRTYPE,MSC_UTIL.G_COMPLETE,decode(lv_inv_ctp_val,5,MSC_UTIL.SYS_YES,SO_TBL_STATUS),MSC_UTIL.G_PARTIAL,decode(lv_inv_ctp_val,5,MSC_UTIL.SYS_YES,SO_TBL_STATUS),SO_TBL_STATUS),
2830 SO_TBL_STATUS)
2831 WHERE INSTANCE_ID= pINSTANCE_ID;
2832 END IF;
2833
2834 FOR lc_j IN 1..pTotalWorkerNum LOOP
2835
2836 DBMS_PIPE.PACK_MESSAGE( -1);
2837
2838 IF DBMS_PIPE.SEND_MESSAGE( v_pipe_task_que)<>0 THEN
2839 RAISE EX_PIPE_SND;
2840 END IF;
2841
2842 FND_MESSAGE.SET_NAME('MSC','MSC_CL_SEND_WOR_END');
2843 FND_MESSAGE.SET_TOKEN('LCI',lc_j);
2844 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
2845
2846 END LOOP; -- lc_j
2847
2848 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_LAUNCH_WORKER_FAIL');
2849 ERRBUF:= FND_MESSAGE.GET;
2850 RETCODE := MSC_UTIL.G_ERROR;
2851 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
2852 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, SQLERRM);
2853
2854 COMMIT;
2855
2856 RETURN;
2857
2858 ELSE
2859
2860 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_WORKER_REQUEST_ID');
2861 FND_MESSAGE.SET_TOKEN('REQUEST_ID', lvs_request_id(lc_i));
2862 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
2863
2864 END IF;
2865
2866 END LOOP; -- lc_i
2867
2868 END IF; -- CP_ENABLED;
2869 -- Updating the timestamp of pullworker
2870 BEGIN -- For Bug 6126924
2871 v_sql_stmt:=
2872 'SELECT sysdate FROM DUAL'||v_dblink;
2873
2874 EXECUTE IMMEDIATE v_sql_stmt INTO lv_src_time;
2875
2876 UPDATE msc_coll_parameters
2877 SET PULL_WRKR_START_TIME = lv_src_time
2878 WHERE INSTANCE_ID = pINSTANCE_ID;
2879 END;
2880
2881 msc_util.print_trace_file_name(FND_GLOBAL.CONC_REQUEST_ID);
2882 -- ============ Send Tasks to Task Que 'v_pipe_task_que' =============
2883
2884 FOR lc_i IN 1..lv_total_task_number LOOP
2885
2886
2887 --- PREPLACE CHANGE START ---
2888
2889 --==========================================================
2890 -- Send all tasks in case of complete refresh.
2891 -- In case of Partial refresh and incremental refresh
2892 -- use Q_PARTIAL_TASK API to decide which
2893 -- task to be sent.
2894 --==========================================================
2895
2896 IF (pRTYPE = MSC_UTIL.G_COMPLETE) AND
2897 (prec.ds_mode <> MSC_UTIL.SYS_YES ) THEN /*ds_plan: change */
2898 -- maintain old behaviour for complete collection
2899
2900 DBMS_PIPE.PACK_MESSAGE( lc_i);
2901 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'ALL:Sending task number: '||lc_i||' to the queue');
2902
2903 -- Only send the message if it has been packed.
2904 IF DBMS_PIPE.SEND_MESSAGE( v_pipe_task_que)<>0 THEN
2905 FND_MESSAGE.SET_NAME('MSC','MSC_CL_ERROR_SEND_TSK');
2906 FND_MESSAGE.SET_TOKEN('LCI',lc_i);
2907 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
2908
2909 RAISE EX_PIPE_SND;
2910 END IF;
2911
2912 lv_task_not_completed := lv_task_not_completed + 1;
2913
2914 FND_MESSAGE.SET_NAME('MSC','MSC_CL_TOTAL_TSK_ADDED');
2915 FND_MESSAGE.SET_TOKEN('lv_task_not_completed',lv_task_not_completed);
2916 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, FND_MESSAGE.GET);
2917
2918 ELSIF Q_PARTIAL_TASK (pINSTANCE_ID, lc_i,
2919 prec, pRTYPE) THEN
2920 -- agmcont:
2921 -- NCPerf: Do for incremental and targeted
2922 -- Only carry out Data Pull for specific objects
2923
2924 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'Partial: PIPE to the DATA PULL - Task Number ' || TO_CHAR(lc_i));
2925 DBMS_PIPE.PACK_MESSAGE( lc_i);
2926
2927 -- Only send the message if it has been packed.
2928 IF DBMS_PIPE.SEND_MESSAGE( v_pipe_task_que)<>0 THEN
2929 RAISE EX_PIPE_SND;
2930 END IF;
2931 lv_task_not_completed := lv_task_not_completed + 1;
2932
2933 END IF;
2934
2935 --- PREPLACE CHANGE END ---
2936
2937 END LOOP; -- lc_i
2938
2939 DBMS_LOCK.SLEEP( 5); -- initial estimated sleep time
2940
2941 --lv_task_not_completed := lv_total_task_number;
2942
2943 lv_start_time:= SYSDATE;
2944
2945 FND_MESSAGE.SET_NAME('MSC','MSC_CL_TOTAL_TSK_ADDED');
2946 FND_MESSAGE.SET_TOKEN('lv_task_not_completed',lv_task_not_completed);
2947 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, FND_MESSAGE.GET);
2948
2949 LOOP
2950
2951 var_debug := 0;
2952 EXIT WHEN lv_task_not_completed = 0;
2953
2954 var_debug := 1;
2955 EXIT WHEN is_request_status_running <> MSC_UTIL.SYS_YES;
2956
2957 var_debug := 2;
2958 EXIT WHEN is_worker_status_valid(lvs_request_id) <> MSC_UTIL.SYS_YES;
2959
2960 lv_pipe_ret_code:= DBMS_PIPE.RECEIVE_MESSAGE( v_pipe_wm, PIPE_TIME_OUT);
2961
2962 IF lv_pipe_ret_code=0 THEN
2963
2964 DBMS_PIPE.UNPACK_MESSAGE( lv_task_num);
2965 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'Unpacked Task Number: '||lv_task_num);
2966
2967 IF lv_task_num>0 THEN -- it's ok, the vlaue is the task number
2968
2969 IF pANATBL_ENABLED= MSC_UTIL.SYS_YES AND
2970 v_instance_type = MSC_UTIL.G_INS_DISCRETE THEN
2971 ANALYZE_ST_TABLE( lv_task_num);
2972 END IF;
2973
2974 lv_task_not_completed := lv_task_not_completed -1;
2975 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'Tasks remaining :'||lv_task_not_completed);
2976
2977 IF lv_task_not_completed= 0 THEN
2978 var_debug := 3;
2979 EXIT;
2980 END IF;
2981
2982 ELSE
2983
2984 var_debug := 4;
2985 EXIT WHEN lv_task_num= UNRESOLVABLE_ERROR;
2986
2987 DBMS_PIPE.PACK_MESSAGE( -lv_task_num);
2988 -- resend the task to the task que
2989 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'Re-sending the task number: '||lv_task_num ||' to the queue');
2990
2991 IF DBMS_PIPE.SEND_MESSAGE( v_pipe_task_que)<>0 THEN
2992 RAISE EX_PIPE_SND;
2993 END IF;
2994
2995 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'Task number: '||lv_task_num||' re-sent to the pipe queue');
2996
2997 END IF;
2998
2999 ELSIF lv_pipe_ret_code<> 1 THEN
3000 FND_MESSAGE.SET_NAME('MSC','MSC_CL_RCV_PIPE_ERR');
3001 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
3002
3003 RAISE EX_PIPE_RCV; -- If the error is not time-out error
3004 END IF;
3005
3006 -- ============= Check the execution time ==============
3007
3008 SELECT (SYSDATE- lv_start_time) INTO lv_process_time FROM dual;
3009
3010 IF lv_process_time > pTIMEOUT/1440.0 THEN RAISE EX_PROCESS_TIME_OUT;
3011 END IF;
3012
3013 END LOOP;
3014
3015 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, '----------------------------------------------------');
3016 FND_MESSAGE.SET_NAME('MSC','MSC_CL_TSK_NOT_COMP');
3017 FND_MESSAGE.SET_TOKEN('lv_task_not_completed',lv_task_not_completed);
3018 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, FND_MESSAGE.GET);
3019
3020 IF (var_debug = 0) THEN
3021 FND_MESSAGE.SET_NAME('MSC','MSC_CL_ERR_PDP_1');
3022 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
3023 ELSIF (var_debug = 1) THEN
3024 FND_MESSAGE.SET_NAME('MSC','MSC_CL_ERR_PDP_2');
3025 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
3026 ELSIF (var_debug = 2) THEN
3027 FND_MESSAGE.SET_NAME('MSC','MSC_CL_ERR_PDP_3');
3028 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
3029 ELSIF (var_debug = 3) THEN
3030 FND_MESSAGE.SET_NAME('MSC','MSC_CL_ERR_PDC_3');
3031 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
3032 ELSIF (var_debug = 4) THEN
3033 FND_MESSAGE.SET_NAME('MSC','MSC_CL_ERR_PDC_4');
3034 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
3035 END IF;
3036
3037 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, '----------------------------------------------------');
3038
3039 IF lv_task_not_completed > 0 THEN
3040
3041 DBMS_PIPE.PURGE( v_pipe_task_que);
3042
3043 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_FAIL');
3044 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
3045 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, SQLERRM);
3046
3047 lv_task_num:= -1;
3048
3049 ROLLBACK;
3050
3051 ERRBUF:= FND_MESSAGE.GET;
3052 RETCODE := MSC_UTIL.G_ERROR;
3053
3054 ELSE
3055
3056 lv_task_num:= 0;
3057
3058 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_SUCCEED');
3059 ERRBUF:= FND_MESSAGE.GET;
3060 RETCODE := MSC_UTIL.G_SUCCESS;
3061 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, SQLERRM);
3062
3063 lv_so_lrtype := pSalesOrder_RTYPE;
3064
3065 /* If the Sales Order is Targeted in Continuous collections ,set the so_rtype = YES */
3066 IF (pRTYPE = MSC_UTIL.G_CONT) AND (prec.sales_order_flag = MSC_UTIL.SYS_YES) THEN
3067 IF (prec.so_sn_flag = MSC_UTIL.SYS_TGT) THEN
3068 lv_so_lrtype := MSC_UTIL.SYS_YES;
3069 END IF;
3070 END IF;
3071
3072 FINAL( pINSTANCE_ID,
3073 pORG_GROUP,
3074 pRTYPE,
3075 lv_so_lrtype,
3076 -- pSalesOrder_RTYPE,
3077 v_crn,
3078 pSOURCING_ENABLED,
3079 prec);
3080
3081 IF pANATBL_ENABLED= MSC_UTIL.SYS_YES AND
3082 v_instance_type <> MSC_UTIL.G_INS_DISCRETE THEN
3083 ANALYZE_ALL_ST_TABLE;
3084 END IF;
3085
3086 END IF;
3087
3088 IF (pRTYPE <> MSC_UTIL.G_CONT) then
3089
3090 -- ======================== Inform workers to end the process ================
3091
3092 FOR lc_i IN 1..pTotalWorkerNum LOOP
3093
3094 FND_MESSAGE.SET_NAME('MSC','MSC_CL_SEND_WOR_END');
3095 FND_MESSAGE.SET_TOKEN('LCI',lc_i);
3096 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
3097
3098 DBMS_PIPE.PACK_MESSAGE( lv_task_num);
3099
3100 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'Sending task number: '||lv_task_num|| ' to the worker '||lc_i);
3101
3102 IF DBMS_PIPE.SEND_MESSAGE( v_pipe_task_que)<>0 THEN
3103 RAISE EX_PIPE_SND;
3104 END IF;
3105
3106 END LOOP; -- lc_i
3107
3108 IF lv_task_num=0 THEN
3109
3110 IF SET_ST_STATUS( lv_errbuf, lv_retcode,
3111 pINSTANCE_ID, MSC_UTIL.G_ST_READY) THEN
3112 COMMIT;
3113 END IF;
3114
3115 ELSE
3116 IF SET_ST_STATUS( lv_errbuf, lv_retcode,
3117 pINSTANCE_ID, MSC_UTIL.G_ST_EMPTY) THEN
3118 COMMIT;
3119 END IF;
3120
3121 END IF;
3122
3123
3124 lv_worker_committed:= 0;
3125
3126 lv_start_time:= SYSDATE;
3127
3128 LOOP
3129
3130 lv_pipe_ret_code:= DBMS_PIPE.RECEIVE_MESSAGE( v_pipe_status,
3131 PIPE_TIME_OUT);
3132
3133 IF lv_pipe_ret_code=0 THEN
3134
3135 lv_worker_committed:= lv_worker_committed+1;
3136
3137 FND_MESSAGE.SET_NAME('MSC','MSC_CL_WORKER_COMMIT');
3138 FND_MESSAGE.SET_TOKEN('LV_WORKER_COMMITTED',lv_worker_committed);
3139 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
3140
3141 EXIT WHEN lv_worker_committed= pTotalWorkerNum;
3142
3143 ELSIF lv_pipe_ret_code<> 1 THEN
3144 RAISE EX_PIPE_RCV; -- If the error is not time-out error
3145 END IF;
3146
3147 SELECT (SYSDATE- lv_start_time) INTO lv_process_time FROM dual;
3148 -- For bug:2210970 Removed this exit and added the function all_workers_completed to exit
3149 -- EXIT WHEN lv_process_time > 3.0/1440.0;
3150
3151 IF (lv_process_time > 3.0/1440.0) AND (lv_worker_committed <> pTotalWorkerNum) THEN
3152 EXIT WHEN all_workers_completed(lvs_request_id) = MSC_UTIL.SYS_YES;
3153 END IF;
3154
3155 END LOOP;
3156
3157 IF lv_worker_committed<> pTotalWorkerNum THEN
3158
3159 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_FAIL_TO_COMMIT');
3160 ERRBUF:= FND_MESSAGE.GET;
3161 RETCODE := MSC_UTIL.G_ERROR;
3162 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
3163 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, SQLERRM);
3164
3165 FND_MESSAGE.SET_NAME('MSC','MSC_CL_CHECK_PDP_LOG');
3166 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
3167
3168 IF lv_check_point= 2 THEN
3169 IF SET_ST_STATUS( lv_errbuf, lv_retcode,
3170 pINSTANCE_ID, MSC_UTIL.G_ST_EMPTY) THEN
3171 COMMIT;
3172 END IF;
3173
3174 UPDATE MSC_APPS_INSTANCES
3175 SET SO_TBL_STATUS = decode(pSalesOrder_RTYPE,MSC_UTIL.SYS_YES
3176 ,decode(pRTYPE,MSC_UTIL.G_COMPLETE,decode(lv_inv_ctp_val,5,MSC_UTIL.SYS_YES,SO_TBL_STATUS),MSC_UTIL.G_PARTIAL,decode(lv_inv_ctp_val,5,MSC_UTIL.SYS_YES,SO_TBL_STATUS),SO_TBL_STATUS),
3177 SO_TBL_STATUS)
3178 WHERE INSTANCE_ID= pINSTANCE_ID;
3179
3180 END IF;
3181
3182 END IF;
3183
3184 COMMIT;
3185 ELSE
3186
3187 /* ------------------- agmcont ---------------------- */
3188
3189 /* call ods load monitor for continuous collections */
3190
3191 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'launch ods load monitor');
3192
3193 lv_task_num := START_ODS_LOAD;
3194
3195 -- ======================== Inform workers to start the ODS Worker ================
3196
3197 FOR lc_i IN 1..pTotalWorkerNum LOOP
3198
3199 FND_MESSAGE.SET_NAME('MSC','MSC_CL_SEND_WOR_END');
3200 FND_MESSAGE.SET_TOKEN('LCI',lc_i);
3201 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
3202
3203 DBMS_PIPE.PACK_MESSAGE( lv_task_num);
3204
3205 MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, 'Sending task number: '||lv_task_num|| ' to the worker '||lc_i);
3206
3207 IF DBMS_PIPE.SEND_MESSAGE( v_pipe_task_que)<>0 THEN
3208 RAISE EX_PIPE_SND;
3209 END IF;
3210
3211 END LOOP; -- lc_i
3212
3213 IF SET_ST_STATUS( lv_errbuf, lv_retcode,
3214 pINSTANCE_ID, MSC_UTIL.G_ST_READY) THEN
3215 COMMIT;
3216 END IF;
3217 BEGIN
3218
3219 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, '****************************************************');
3220 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Planning ODS Load Monitor is Started.');
3221 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, '****************************************************');
3222 /*ds change */
3223 IF MSC_CL_COLLECTION.LAUNCH_MONITOR_CONT(
3224 ERRBUF ,
3225 RETCODE ,
3226 pINSTANCE_ID ,
3227 pTIMEOUT ,-- minutes
3228 pTotalWorkerNum ,
3229 prec.ds_mode ) THEN
3230
3231 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, '****************************************************');
3232 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Planning ODS Load Monitor is Completed.');
3233 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, '****************************************************');
3234 ELSE
3235 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, ERRBUF);
3236 RETCODE := MSC_UTIL.G_ERROR;
3237 END IF;
3238
3239 EXCEPTION
3240 WHEN OTHERS THEN
3241 ROLLBACK;
3242 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
3243 RAISE;
3244 END;
3245
3246 /* ------------------- agmcont ---------------------- */
3247
3248 END IF;
3249
3250 EXCEPTION
3251
3252 WHEN EX_PROCESS_TIME_OUT THEN
3253
3254 ROLLBACK;
3255
3256 DBMS_PIPE.PURGE( v_pipe_task_que);
3257
3258 IF lv_check_point= 2 THEN
3259 IF SET_ST_STATUS( lv_errbuf, lv_retcode,
3260 pINSTANCE_ID, MSC_UTIL.G_ST_EMPTY) THEN
3261 COMMIT;
3262 END IF;
3263
3264 UPDATE MSC_APPS_INSTANCES
3265 SET SO_TBL_STATUS = decode(pSalesOrder_RTYPE,MSC_UTIL.SYS_YES
3266 ,decode(pRTYPE,MSC_UTIL.G_COMPLETE,decode(lv_inv_ctp_val,5,MSC_UTIL.SYS_YES,SO_TBL_STATUS),MSC_UTIL.G_PARTIAL,decode(lv_inv_ctp_val,5,MSC_UTIL.SYS_YES,SO_TBL_STATUS),SO_TBL_STATUS),
3267 SO_TBL_STATUS)
3268 WHERE INSTANCE_ID= pINSTANCE_ID;
3269
3270 COMMIT;
3271
3272 END IF;
3273
3274 FND_MESSAGE.SET_NAME('MSC', 'MSC_TIMEOUT');
3275 ERRBUF:= FND_MESSAGE.GET;
3276 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
3277 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, SQLERRM);
3278
3279 RETCODE := MSC_UTIL.G_ERROR;
3280
3281 WHEN OTHERS THEN
3282
3283 ROLLBACK;
3284
3285 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, SQLERRM);
3286
3287 IF lv_check_point= 2 THEN
3288 IF SET_ST_STATUS( lv_errbuf, lv_retcode,
3289 pINSTANCE_ID, MSC_UTIL.G_ST_EMPTY) THEN
3290 COMMIT;
3291 END IF;
3292
3293 UPDATE MSC_APPS_INSTANCES
3294 SET SO_TBL_STATUS = decode(pSalesOrder_RTYPE,MSC_UTIL.SYS_YES
3295 ,decode(pRTYPE,MSC_UTIL.G_COMPLETE,decode(lv_inv_ctp_val,5,MSC_UTIL.SYS_YES,SO_TBL_STATUS),MSC_UTIL.G_PARTIAL,decode(lv_inv_ctp_val,5,MSC_UTIL.SYS_YES,SO_TBL_STATUS),SO_TBL_STATUS),
3296 SO_TBL_STATUS)
3297 WHERE INSTANCE_ID= pINSTANCE_ID;
3298
3299 COMMIT;
3300
3301 END IF;
3302
3303 ERRBUF := SQLERRM;
3304 RETCODE := MSC_UTIL.G_ERROR;
3305
3306 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, 'Error_Stack...');
3307 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, DBMS_UTILITY.FORMAT_ERROR_STACK );
3308 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, 'Error_Backtrace...' );
3309 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, DBMS_UTILITY.FORMAT_ERROR_BACKTRACE );
3310
3311 END LAUNCH_MONITOR;
3312
3313
3314 /* ------------------------------------------------------------- */
3315
3316
3317 -- agmcont
3318 -- Entry point for continuous collections
3319
3320 PROCEDURE LAUNCH_MONITOR_CONT(
3321 ERRBUF OUT NOCOPY VARCHAR2,
3322 RETCODE OUT NOCOPY NUMBER,
3323 pINSTANCE_ID IN NUMBER,
3324 pORG_GROUP IN VARCHAR2,
3325 pTotalWorkerNum IN NUMBER,
3326 pTIMEOUT IN NUMBER, -- min
3327 pLANG IN VARCHAR2 := NULL,
3328 -- pOdsPURGEoption IN NUMBER := SYS_NO,
3329 -- pRTYPE IN NUMBER,
3330 pTHRESH IN NUMBER,
3331 pFREQ IN NUMBER,
3332 pANATBL_ENABLED IN NUMBER := MSC_UTIL.SYS_NO,
3333 pAPPROV_SUPPLIER_CAP_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3334 pBOM_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3335 pBOR_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3336 pFORECAST_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3337 pITEM_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3338 pMDS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3339 pMPS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3340 pOH_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3341 pPUR_REQ_PO_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3342 pSalesOrder_RTYPE IN NUMBER,
3343 /* CP-AUTO */
3344 pSUPPLIER_RESPONSE_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3345 pTRIP_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3346 pUSER_SUPPLY_DEMAND IN NUMBER := MSC_UTIL.SYS_YES,
3347 pWIP_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3348 pATP_RULES_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3349 pCALENDAR_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3350 pDEMAND_CLASS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3351 pITEM_SUBST_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3352 pKPI_BIS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3353 pPARAMETER_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3354 pPLANNER_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3355 pPO_RECEIPTS_ENABLED IN NUMBER := MSC_UTIL.SYS_NO,
3356 pPROJECT_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3357 pRESERVES_HARD_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3358 pRESOURCE_NRA_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3359 pSafeStock_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3360 pSH_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3361 pSOURCING_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3362 pSUB_INV_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3363 pTP_CUSTOMER_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3364 pTP_VENDOR_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3365 pUNIT_NO_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3366 pUOM_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3367 pUSER_COMPANY_ENABLED IN NUMBER := MSC_UTIL.SYS_YES
3368
3369
3370 )
3371 is
3372
3373 lv_SUPPLIER_RESPONSE_ENABLED number := MSC_UTIL.SYS_NO;
3374
3375 BEGIN
3376
3377
3378 v_is_cont_refresh := MSC_UTIL.SYS_YES;
3379 v_cont_coll_thresh := pTHRESH;
3380 v_cont_coll_freq := pFREQ;
3381 /* just call launch_monitor */
3382
3383 --MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'x1');
3384 LAUNCH_MONITOR(ERRBUF,
3385 RETCODE,
3386 pINSTANCE_ID,
3387 pORG_GROUP,
3388 pTotalWorkerNum,
3389 pTIMEOUT,
3390 pLANG,
3391 MSC_UTIL.SYS_NO, --pOdsPURGEoption,
3392 MSC_UTIL.G_CONT, --pRTYPE,
3393 pANATBL_ENABLED,
3394 pAPPROV_SUPPLIER_CAP_ENABLED,
3395 pATP_RULES_ENABLED,
3396 pBOM_ENABLED,
3397 pBOR_ENABLED,
3398 pCALENDAR_ENABLED,
3399 pDEMAND_CLASS_ENABLED,
3400 pITEM_SUBST_ENABLED,
3401 pFORECAST_ENABLED,
3402 pITEM_ENABLED,
3403 pKPI_BIS_ENABLED,
3404 pMDS_ENABLED,
3405 pMPS_ENABLED,
3406 pOH_ENABLED,
3407 pPARAMETER_ENABLED,
3408 pPLANNER_ENABLED,
3409 pPO_RECEIPTS_ENABLED,
3410 pPROJECT_ENABLED,
3411 pPUR_REQ_PO_ENABLED,
3412 pRESERVES_HARD_ENABLED,
3413 pRESOURCE_NRA_ENABLED,
3414 pSafeStock_ENABLED,
3415 pSalesOrder_RTYPE,
3416 pSH_ENABLED,
3417 pSOURCING_ENABLED,
3418 pSUB_INV_ENABLED,
3419 /* CP-AUTO */
3420 pSUPPLIER_RESPONSE_ENABLED,
3421 pTP_CUSTOMER_ENABLED,
3422 pTP_VENDOR_ENABLED,
3423 pTRIP_ENABLED,
3424 pUNIT_NO_ENABLED,
3425 pUOM_ENABLED,
3426 pUSER_COMPANY_ENABLED,
3427 pUSER_SUPPLY_DEMAND,
3428 pWIP_ENABLED
3429
3430 );
3431
3432
3433 end LAUNCH_MONITOR_CONT;
3434
3435 PROCEDURE LAUNCH_WORKER_CONT(
3436 ERRBUF OUT NOCOPY VARCHAR2,
3437 RETCODE OUT NOCOPY NUMBER,
3438 pMONITOR_REQUEST_ID IN NUMBER,
3439 pINSTANCE_ID IN NUMBER,
3440 pTIMEOUT IN NUMBER,
3441 pLANG IN VARCHAR2 := NULL,
3442 pRTYPE IN NUMBER,
3443 pREFRESH_ID IN NUMBER,
3444 pAPPROV_SUPPLIER_CAP_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3445 pATP_RULES_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3446 pBOM_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3447 pBOR_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3448 pCALENDAR_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3449 pDEMAND_CLASS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3450 pITEM_SUBST_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3451 pFORECAST_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3452 pITEM_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3453 pKPI_BIS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3454 pMDS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3455 pMPS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3456 pOH_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3457 pPARAMETER_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3458 pPLANNER_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3459 pPROJECT_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3460 pPUR_REQ_PO_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3461 pRESERVES_HARD_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3462 pRESOURCE_NRA_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3463 pSafeStock_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3464 pSalesOrder_RTYPE IN NUMBER,
3465 pSH_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3466 pSOURCING_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3467 pSUB_INV_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3468 pTP_CUSTOMER_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3469 pTP_VENDOR_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3470 pUNIT_NO_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3471 pUOM_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3472 pUSER_SUPPLY_DEMAND IN NUMBER := MSC_UTIL.SYS_YES,
3473 pWIP_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3474 pUSER_COMPANY_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3475 /* CP-ACK starts */
3476 pSUPPLIER_RESPONSE_ENABLED IN NUMBER := MSC_UTIL.SYS_NO,
3477 /* CP-ACK ends */
3478 pTRIP_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3479 pPO_RECEIPTS_ENABLED IN NUMBER := MSC_UTIL.SYS_NO
3480 ) is
3481 BEGIN
3482
3483 MSC_CL_PULL.LAUNCH_WORKER(
3484 ERRBUF ,
3485 RETCODE ,
3486 pMONITOR_REQUEST_ID ,
3487 pINSTANCE_ID ,
3488 pTIMEOUT ,
3489 pLANG ,
3490 pRTYPE ,
3491 pREFRESH_ID ,
3492 pAPPROV_SUPPLIER_CAP_ENABLED ,
3493 pATP_RULES_ENABLED ,
3494 pBOM_ENABLED ,
3495 pBOR_ENABLED ,
3496 pCALENDAR_ENABLED ,
3497 pDEMAND_CLASS_ENABLED ,
3498 pITEM_SUBST_ENABLED ,
3499 pFORECAST_ENABLED ,
3500 pITEM_ENABLED ,
3501 pKPI_BIS_ENABLED ,
3502 pMDS_ENABLED ,
3503 pMPS_ENABLED ,
3504 pOH_ENABLED ,
3505 pPARAMETER_ENABLED ,
3506 pPLANNER_ENABLED ,
3507 pPROJECT_ENABLED ,
3508 pPUR_REQ_PO_ENABLED ,
3509 pRESERVES_HARD_ENABLED ,
3510 pRESOURCE_NRA_ENABLED ,
3511 pSafeStock_ENABLED ,
3512 pSalesOrder_RTYPE ,
3513 pSH_ENABLED ,
3514 pSOURCING_ENABLED ,
3515 pSUB_INV_ENABLED ,
3516 pTP_CUSTOMER_ENABLED ,
3517 pTP_VENDOR_ENABLED ,
3518 pUNIT_NO_ENABLED ,
3519 pUOM_ENABLED ,
3520 pUSER_SUPPLY_DEMAND ,
3521 pWIP_ENABLED ,
3522 pPO_RECEIPTS_ENABLED ,
3523 pUSER_COMPANY_ENABLED ,
3524 pSUPPLIER_RESPONSE_ENABLED ,
3525 pTRIP_ENABLED ); -- sub request
3526
3527
3528 END LAUNCH_WORKER_CONT;
3529
3530 PROCEDURE LAUNCH_MONITOR_CONT_DET_SCH(
3531 ERRBUF OUT NOCOPY VARCHAR2,
3532 RETCODE OUT NOCOPY NUMBER,
3533 pINSTANCE_ID IN NUMBER,
3534 pORG_GROUP IN VARCHAR2,
3535 pTotalWorkerNum IN NUMBER,
3536 pTIMEOUT IN NUMBER, -- min
3537 pLANG IN VARCHAR2 := NULL,
3538 pTHRESH IN NUMBER,
3539 pFREQ IN NUMBER,
3540 pANATBL_ENABLED IN NUMBER := MSC_UTIL.SYS_NO,
3541 pAPPROV_SUPPLIER_CAP_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3542 pBOM_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3543 --pBOR_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3544 --pFORECAST_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3545 pITEM_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3546 --pMDS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3547 pMPS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3548 pOH_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3549 pPUR_REQ_PO_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3550 pSalesOrder_RTYPE IN NUMBER := MSC_UTIL.SYS_YES,
3551 pSUPPLIER_RESPONSE_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3552 --pTRIP_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3553 --pUSER_SUPPLY_DEMAND IN NUMBER := MSC_UTIL.SYS_YES,
3554 pWIP_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3555 --pUSER_SUPPLY_DEMAND IN NUMBER := MSC_UTIL.SYS_YES,
3556 --pATP_RULES_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3557 pCALENDAR_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3558 pDEMAND_CLASS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3559 --pITEM_SUBST_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3560 pKPI_BIS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3561 pPARAMETER_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3562 pPLANNER_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3563 pPROJECT_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3564 pRESERVES_HARD_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3565 pRESOURCE_NRA_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3566 pSafeStock_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3567 --pSH_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3568 --pSOURCING_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3569 --pSUB_INV_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3570 pTP_CUSTOMER_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3571 pTP_VENDOR_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3572 pUNIT_NO_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3573 pUOM_ENABLED IN NUMBER := MSC_UTIL.SYS_YES
3574 --pUSER_COMPANY_ENABLED IN NUMBER := MSC_UTIL.SYS_YES
3575 )
3576
3577 is
3578 BEGIN
3579
3580 MSC_CL_PULL.LAUNCH_MONITOR(ERRBUF,
3581 RETCODE,
3582 pINSTANCE_ID,
3583 pORG_GROUP,
3584 pTotalWorkerNum,
3585 pTIMEOUT,
3586 pLANG,
3587 MSC_UTIL.SYS_NO, --pOdsPURGEoption,
3588 MSC_UTIL.G_CONT, --pRTYPE,
3589 pANATBL_ENABLED,
3590 pAPPROV_SUPPLIER_CAP_ENABLED,
3591 MSC_UTIL.SYS_NO, --pATP_RULES_ENABLED,
3592 pBOM_ENABLED,
3593 MSC_UTIL.SYS_NO, --pBOR_ENABLED,
3594 pCALENDAR_ENABLED,
3595 pDEMAND_CLASS_ENABLED,
3596 MSC_UTIL.SYS_NO, --pITEM_SUBST_ENABLED,
3597 MSC_UTIL.SYS_NO, --pFORECAST_ENABLED,
3598 pITEM_ENABLED,
3599 pKPI_BIS_ENABLED,
3600 MSC_UTIL.SYS_NO, --pMDS_ENABLED,
3601 pMPS_ENABLED,
3602 pOH_ENABLED,
3603 pPARAMETER_ENABLED,
3604 pPLANNER_ENABLED,
3605 MSC_UTIL.SYS_NO, --pPO_Receipts_ENABLED,
3606 pPROJECT_ENABLED,
3607 pPUR_REQ_PO_ENABLED,
3608 pRESERVES_HARD_ENABLED, --pRESERVES_HARD_ENABLED,
3609 pRESOURCE_NRA_ENABLED,
3610 pSafeStock_ENABLED,
3611 pSalesOrder_RTYPE, --pSalesOrder_RTYPE,
3612 MSC_UTIL.SYS_NO, --pSH_ENABLED,
3613 MSC_UTIL.SYS_NO, --pSOURCING_ENABLED,
3614 MSC_UTIL.SYS_NO, --pSUB_INV_ENABLED,
3615 pSUPPLIER_RESPONSE_ENABLED,
3616 pTP_CUSTOMER_ENABLED,
3617 pTP_VENDOR_ENABLED,
3618 MSC_UTIL.SYS_NO, --pTRIP_ENABLED,
3619 pUNIT_NO_ENABLED,
3620 pUOM_ENABLED,
3621 MSC_UTIL.SYS_NO, --pUSER_COMPANY_ENABLED,
3622 MSC_UTIL.SYS_NO, --pUSER_SUPPLY_DEMAND,
3623 pWIP_ENABLED
3624 );
3625
3626
3627 end LAUNCH_MONITOR_CONT_DET_SCH;
3628
3629 -- agmcont
3630 /* ------------------------------------------------------------- */
3631
3632 PROCEDURE DELETE_PROCESS(
3633 ERRBUF OUT NOCOPY VARCHAR2,
3634 RETCODE OUT NOCOPY NUMBER,
3635 pINSTANCE_ID IN NUMBER)
3636 IS
3637 BEGIN
3638
3639 INITIALIZE_PULL_GLOBALS( pINSTANCE_ID); -- Initializes Level 2 Global Variables used in Data Pull
3640
3641 RETCODE := MSC_UTIL.G_SUCCESS;
3642
3643 DBMS_PIPE.PACK_MESSAGE( UNRESOLVABLE_ERROR);
3644
3645 IF DBMS_PIPE.SEND_MESSAGE( v_pipe_wm)<>0 THEN
3646
3647 FND_MESSAGE.SET_NAME('MSC', 'MSC_MSG_SEND_FAIL');
3648 FND_MESSAGE.SET_TOKEN('PIPE', v_pipe_wm);
3649 ERRBUF:= FND_MESSAGE.GET;
3650
3651 RETCODE := MSC_UTIL.G_ERROR;
3652
3653 END IF;
3654
3655 END DELETE_PROCESS;
3656
3657 /* ds_plan: change start */
3658 PROCEDURE LAUNCH_MONITOR_DET_SCH(
3659 ERRBUF OUT NOCOPY VARCHAR2,
3660 RETCODE OUT NOCOPY NUMBER,
3661 pINSTANCE_ID IN NUMBER,
3662 pORG_GROUP IN VARCHAR2,
3663 pTotalWorkerNum IN NUMBER,
3664 pTIMEOUT IN NUMBER,
3665 pLANG IN VARCHAR2 := NULL,
3666 pOdsPURGEoption IN NUMBER := MSC_UTIL.SYS_NO,
3667 pRTYPE IN NUMBER,
3668 pANATBL_ENABLED IN NUMBER := MSC_UTIL.SYS_NO,
3669 pAPPROV_SUPPLIER_CAP_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3670 --pATP_RULES_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3671 pBOM_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3672 --pBOR_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3673 pCALENDAR_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3674 pDEMAND_CLASS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3675 --pITEM_SUBST_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3676 --pFORECAST_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3677 pITEM_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3678 pKPI_BIS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3679 --pMDS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3680 pMPS_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3681 pOH_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3682 pPARAMETER_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3683 pPLANNER_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3684 pPROJECT_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3685 pPUR_REQ_PO_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3686 pRESERVES_HARD_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3687 pRESOURCE_NRA_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3688 pSafeStock_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3689 pSalesOrder_RTYPE IN NUMBER,
3690 --pSH_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3691 --pSOURCING_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3692 --pSUB_INV_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3693 pSUPPLIER_RESPONSE_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3694 pTP_CUSTOMER_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3695 pTP_VENDOR_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3696 --pTRIP_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3697 pUNIT_NO_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3698 pUOM_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3699 --pUSER_COMPANY_ENABLED IN NUMBER := MSC_UTIL.SYS_YES,
3700 --pUSER_SUPPLY_DEMAND IN NUMBER := MSC_UTIL.SYS_YES,
3701 pWIP_ENABLED IN NUMBER := MSC_UTIL.SYS_YES
3702 )
3703 is
3704
3705 lv_SUPPLIER_RESPONSE_ENABLED number := MSC_UTIL.SYS_NO;
3706
3707 BEGIN
3708 v_DSMode := MSC_UTIL.SYS_YES;
3709 LAUNCH_MONITOR(ERRBUF,
3710 RETCODE,
3711 pINSTANCE_ID,
3712 pORG_GROUP,
3713 pTotalWorkerNum,
3714 pTIMEOUT,
3715 pLANG,
3716 pOdsPURGEoption,
3717 pRTYPE,
3718 pANATBL_ENABLED,
3719 pAPPROV_SUPPLIER_CAP_ENABLED,
3720 MSC_UTIL.SYS_NO, --pATP_RULES_ENABLED,
3721 pBOM_ENABLED,
3722 MSC_UTIL.SYS_NO, --pBOR_ENABLED,
3723 pCALENDAR_ENABLED,
3724 pDEMAND_CLASS_ENABLED,
3725 MSC_UTIL.SYS_NO, --pITEM_SUBST_ENABLED,
3726 MSC_UTIL.SYS_NO, --pFORECAST_ENABLED,
3727 pITEM_ENABLED,
3728 pKPI_BIS_ENABLED,
3729 MSC_UTIL.SYS_NO, --pMDS_ENABLED,
3730 pMPS_ENABLED,
3731 pOH_ENABLED,
3732 pPARAMETER_ENABLED,
3733 pPLANNER_ENABLED,
3734 MSC_UTIL.SYS_NO, --PO_Receipt_ENABLED,
3735 pPROJECT_ENABLED,
3736 pPUR_REQ_PO_ENABLED,
3737 pRESERVES_HARD_ENABLED, --pRESERVES_HARD_ENABLED,
3738 pRESOURCE_NRA_ENABLED,
3739 pSafeStock_ENABLED,
3740 pSalesOrder_RTYPE, --pSalesOrder_RTYPE,
3741 MSC_UTIL.SYS_NO, --pSH_ENABLED,
3742 MSC_UTIL.SYS_NO, --pSOURCING_ENABLED,
3743 MSC_UTIL.SYS_NO, --pSUB_INV_ENABLED,
3744 pSUPPLIER_RESPONSE_ENABLED,
3745 pTP_CUSTOMER_ENABLED,
3746 pTP_VENDOR_ENABLED,
3747 MSC_UTIL.SYS_NO, --pTRIP_ENABLED,
3748 pUNIT_NO_ENABLED,
3749 pUOM_ENABLED,
3750 MSC_UTIL.SYS_NO, --pUSER_COMPANY_ENABLED,
3751 MSC_UTIL.SYS_NO, --pUSER_SUPPLY_DEMAND,
3752 pWIP_ENABLED
3753 );
3754
3755 end LAUNCH_MONITOR_DET_SCH;
3756
3757
3758 FUNCTION get_entity_lrn (p_instance_id in NUMBER,
3759 p_task_num in NUMBER,
3760 prec in MSC_UTIL.CollParamREC,
3761 p_lrnn in number,
3762 p_rtype in number,
3763 p_org_group in varchar2,
3764 p_entity_lrnn out NOCOPY number)
3765
3766 RETURN BOOLEAN AS
3767 lv_sup_cap_lrn number;
3768 lv_bom_lrn number;
3769 lv_bor_lrn number;
3770 lv_forecast_lrn number;
3771 lv_item_lrn number;
3772 lv_mds_lrn number;
3773 lv_mps_lrn number;
3774 lv_oh_lrn number;
3775 lv_rsv_lrn number;
3776 lv_po_lrn number;
3777 lv_so_lrn number;
3778 lv_usd_lrn number;
3779 lv_wip_lrn number;
3780 lv_nra_lrn number;
3781 lv_saf_stock_lrn number;
3782 lv_unit_no_lrn number;
3783 lv_uom_lrn number;
3784 lv_calendar_lrn number;
3785 lv_apps_lrn number;
3786 lv_trip_lrn number;
3787 lv_ero_lrn number;
3788 lv_iro_lrn number; -- For Bug 6126698
3789 BEGIN
3790
3791 /* We will pass apps_lrn for the entity lrn, if it is NULL */
3792
3793 select apps_lrn
3794 into lv_apps_lrn
3795 from msc_apps_instances
3796 where instance_id = p_instance_id;
3797
3798 select min(nvl(supplier_capacity_lrn,lv_apps_lrn)),
3799 min(nvl(bom_lrn,lv_apps_lrn)),
3800 min(nvl(bor_lrn,lv_apps_lrn)),
3801 min(nvl(forecast_lrn,lv_apps_lrn)),
3802 min(nvl(item_lrn,lv_apps_lrn)),
3803 min(nvl(mds_lrn,lv_apps_lrn)),
3804 min(nvl(mps_lrn,lv_apps_lrn)),
3805 min(nvl(oh_lrn,lv_apps_lrn)),
3806 min(nvl(reservations_lrn,lv_apps_lrn)),
3807 min(nvl(LAST_SUCC_RES_REF_TIME, SYSDATE-365000)),
3808 min(nvl(po_lrn,lv_apps_lrn)),
3809 min(nvl(so_lrn,lv_apps_lrn)),
3810 min(nvl(user_supply_demand_lrn,lv_apps_lrn)),
3811 min(nvl(wip_lrn,lv_apps_lrn)),
3812 min(nvl(nra_lrn,lv_apps_lrn)),
3813 min(nvl(saf_stock_lrn,lv_apps_lrn)),
3814 min(nvl(unit_no_lrn,lv_apps_lrn)),
3815 min(nvl(uom_lrn,lv_apps_lrn)),
3816 min(nvl(calendar_lrn,lv_apps_lrn)),
3817 min(nvl(trip_lrn,lv_apps_lrn))
3818 into
3819 lv_sup_cap_lrn,
3820 lv_bom_lrn,
3821 lv_bor_lrn,
3822 lv_forecast_lrn,
3823 lv_item_lrn,
3824 lv_mds_lrn,
3825 lv_mps_lrn,
3826 lv_oh_lrn,
3827 lv_rsv_lrn,
3828 g_LAST_SUCC_RES_REF_TIME,
3829 lv_po_lrn,
3830 lv_so_lrn,
3831 lv_usd_lrn,
3832 lv_wip_lrn,
3833 lv_nra_lrn,
3834 lv_saf_stock_lrn,
3835 lv_unit_no_lrn,
3836 lv_uom_lrn,
3837 lv_calendar_lrn,
3838 lv_trip_lrn
3839 from msc_instance_orgs
3840 WHERE ((p_org_group =MSC_UTIL.G_ALL_ORGANIZATIONS) or (org_group=p_org_group))
3841 AND sr_instance_id = p_instance_id;
3842 /* Earlier sales order is alwasy collected in netchange even if sales order is not selected for continuous collection
3843 in srs */
3844
3845 select min(nvl(IRO_LRN,lv_apps_lrn)),
3846 nvl(min(LAST_SUCC_IRO_REF_TIME), SYSDATE-365000)
3847 into
3848 lv_iro_lrn,
3849 g_last_succ_iro_ref_time
3850 from msc_instance_orgs
3851 WHERE organization_type = 3
3852 AND sr_instance_id = p_instance_id;
3853
3854
3855 select min(nvl(ERO_LRN,lv_apps_lrn))
3856 into
3857 lv_ero_lrn
3858 from msc_instance_orgs
3859 WHERE organization_type <> 3
3860 AND sr_instance_id = p_instance_id;
3861
3862 IF (prec.sales_order_flag = MSC_UTIL.SYS_YES ) AND
3863 p_task_num in (TASK_SALES_ORDER1,TASK_SALES_ORDER2,TASK_SALES_ORDER3,TASK_AHL) THEN
3864 if ((p_rtype <> MSC_UTIL.G_INCREMENTAL and p_rtype <> MSC_UTIL.G_CONT) ) then
3865 -- do complete/targeted for this entity
3866 p_entity_lrnn := -1;
3867 RETURN TRUE;
3868 else
3869 if (p_rtype = MSC_UTIL.G_CONT and prec.so_sn_flag = MSC_UTIL.SYS_TGT ) then
3870 p_entity_lrnn := -1;
3871 RETURN TRUE;
3872 else
3873 -- do netchange for this entity
3874 p_entity_lrnn := lv_so_lrn;
3875 RETURN TRUE;
3876 end if;
3877 end if;
3878 END IF;
3879
3880
3881 IF (p_rtype <> MSC_UTIL.G_INCREMENTAL AND p_rtype <> MSC_UTIL.G_CONT ) then /* Non-incremental refresh or Non-Continious Refresh*/
3882 -- do targeted/complete for this entity
3883 p_entity_lrnn := -1;
3884 RETURN TRUE;
3885 ELSE
3886
3887 IF (prec.app_supp_cap_flag = MSC_UTIL.SYS_YES OR prec.app_supp_cap_flag =MSC_UTIL.ASL_YES_RETAIN_CP) AND p_task_num = TASK_SUPPLIER_CAPACITY THEN
3888 -- do net-change for this entity
3889 p_entity_lrnn := lv_sup_cap_lrn;
3890 RETURN TRUE;
3891 END IF;
3892
3893 IF prec.bom_flag = MSC_UTIL.SYS_YES THEN
3894 IF ((p_task_num = TASK_BOM) or
3895 (p_task_num = TASK_ROUTING) or
3896 (p_task_num = TASK_OPER_NETWORKS) or
3897 (p_task_num = TASK_ROUTING_OPERATIONS) or
3898 (p_task_num = TASK_OPERATION_RES_SEQS) or
3899 (p_task_num = TASK_OPERATION_RESOURCES) or
3900 (p_task_num = TASK_RESOURCE) or
3901 (p_task_num = TASK_RESOURCE_SETUP) or /* ds change */
3902 (p_task_num = TASK_RESOURCE_INSTANCE) or /* ds change */
3903 -- Load Resources Data excluding those based on WIP_FLAG
3904 (p_task_num = TASK_OPERATION_COMPONENTS) or
3905 (p_task_num = TASK_PROCESS_EFFECTIVITY) ) THEN
3906 -- MSC_CL_BOM_PULL.LOAD_BOM,
3907 -- MSC_CL_ROUTING_PULL.LOAD_ROUTING,
3908 -- MSC_CL_WIP_PULL.LOAD_OPER_NETWORKS
3909 -- MSC_CL_ROUTING_PULL.LOAD_ROUTING_OPERATIONS
3910 -- MSC_CL_ROUTING_PULL.LOAD_OPERATION_RES_SEQS
3911 -- MSC_CL_ROUTING_PULL.LOAD_OPERATION_RESOURCES
3912 -- MSC_CL_ROUTING_PULL.LOAD_OPERATION_COMPONENTS
3913 -- MSC_CL_BOM_PULL.LOAD_PROCESS_EFFECTIVITY
3914 -- extract effectivities are performed
3915
3916 -- do net-change for this entity
3917 p_entity_lrnn := lv_bom_lrn;
3918 RETURN TRUE;
3919
3920 END IF;
3921 END IF;
3922
3923 IF prec.bor_flag = MSC_UTIL.SYS_YES AND ( p_task_num = TASK_BOR ) THEN
3924 -- do net-change for this entity
3925 p_entity_lrnn := lv_bor_lrn;
3926 RETURN TRUE;
3927
3928 END IF;
3929
3930 IF prec.forecast_flag = MSC_UTIL.SYS_YES AND (p_task_num = TASK_LOAD_FORECAST) THEN
3931 -- both of the ones below will get executed
3932 -- MSC_CL_DEMAND_PULL.LOAD_FORECASTS
3933 -- MSC_CL_DEMAND_PULL.LOAD_ITEM_FORECASTS
3934
3935 -- do net-change for this entity
3936 p_entity_lrnn := lv_forecast_lrn;
3937 RETURN TRUE;
3938 END IF;
3939
3940 IF prec.item_flag = MSC_UTIL.SYS_YES THEN
3941 IF ((p_task_num = TASK_CATEGORY) or
3942 (p_task_num = TASK_ITEM1) or
3943 (p_task_num = TASK_ITEM2) or
3944 (p_task_num = TASK_ITEM3) ) THEN
3945
3946 -- do net-change for this entity
3947 p_entity_lrnn := lv_item_lrn;
3948 RETURN TRUE;
3949 END IF;
3950 END IF;
3951
3952
3953 IF prec.mds_flag = MSC_UTIL.SYS_YES AND (p_task_num = TASK_MDS_DEMAND) THEN
3954 -- do net-change for this entity
3955 p_entity_lrnn := lv_mds_lrn;
3956 RETURN TRUE;
3957 END IF;
3958
3959
3960 IF prec.mps_flag = MSC_UTIL.SYS_YES AND (p_task_num = TASK_MPS_SUPPLY) THEN
3961 -- do net-change for this entity
3962 p_entity_lrnn := lv_mps_lrn;
3963 RETURN TRUE;
3964 END IF;
3965
3966
3967 IF prec.oh_flag = MSC_UTIL.SYS_YES AND (p_task_num = TASK_OH_SUPPLY) THEN
3968 -- do net-change for this entity
3969 p_entity_lrnn := lv_oh_lrn;
3970 RETURN TRUE;
3971 END IF;
3972
3973
3974 -- IF prec.po_flag = MSC_UTIL.SYS_YES AND (p_task_num = TASK_PO_SUPPLY) THEN
3975 -- do net-change for this entity
3976 IF prec.po_flag = MSC_UTIL.SYS_YES THEN
3977 IF ( (p_task_num = TASK_PO_SUPPLY) or
3978 (p_task_num = TASK_PO_PO_SUPPLY) or
3979 (p_task_num = TASK_PO_REQ_SUPPLY) ) THEN
3980 p_entity_lrnn := lv_po_lrn;
3981 RETURN TRUE;
3982 END IF ;
3983 END IF;
3984
3985
3986 IF prec.user_supply_demand_flag = MSC_UTIL.SYS_YES AND ((p_task_num = TASK_USER_SUPPLY) OR (p_task_num = TASK_USER_DEMAND)) THEN
3987 -- do net-change for this entity
3988 p_entity_lrnn := lv_usd_lrn;
3989 RETURN TRUE;
3990 END IF;
3991
3992
3993 -- FOR MSC_CL_WIP_PULL.LOAD_WIP_SUPPLY
3994 -- FOR MSC_CL_WIP_PULL.LOAD_WIP_DEMAND
3995 IF prec.wip_flag = MSC_UTIL.SYS_YES AND ( (p_task_num = TASK_WIP_SUPPLY) OR
3996 (p_task_num = TASK_WIP_DEMAND) OR (p_task_num = TASK_RESOURCE)
3997 OR (p_task_num = TASK_RESOURCE_INSTANCE) ) THEN /* ds change */
3998 -- do net-change for this entity
3999 p_entity_lrnn := lv_wip_lrn;
4000 RETURN TRUE;
4001 END IF;
4002
4003
4004 IF (prec.calendar_flag = MSC_UTIL.SYS_YES OR prec.resource_nra_flag in (1,3)) AND ( p_task_num = TASK_CALENDAR_DATE ) THEN
4005 -- do net-change for this entity
4006 p_entity_lrnn := lv_calendar_lrn;
4007 RETURN TRUE;
4008 END IF;
4009
4010
4011 IF prec.reserves_flag = MSC_UTIL.SYS_YES AND ( p_task_num = TASK_HARD_RESERVATION ) THEN
4012 -- do net-change for this entity
4013 p_entity_lrnn := lv_rsv_lrn;
4014 RETURN TRUE;
4015 END IF;
4016
4017 IF prec.saf_stock_flag = MSC_UTIL.SYS_YES AND ( p_task_num = TASK_SAFETY_STOCK ) THEN
4018 -- do net-change for this entity
4019 p_entity_lrnn := lv_saf_stock_lrn;
4020 RETURN TRUE;
4021 END IF;
4022
4023
4024 IF prec.unit_number_flag = MSC_UTIL.SYS_YES AND ( p_task_num = TASK_UNIT_NUMBER ) THEN
4025 -- do net-change for this entity
4026 p_entity_lrnn := lv_unit_no_lrn;
4027 RETURN TRUE;
4028 END IF;
4029
4030 IF prec.uom_flag = MSC_UTIL.SYS_YES AND ( p_task_num = TASK_UOM ) THEN
4031 -- do net-change for this entity
4032 p_entity_lrnn := lv_uom_lrn;
4033 RETURN TRUE;
4034 END IF;
4035
4036
4037 IF (prec.mds_flag = MSC_UTIL.SYS_YES OR prec.mps_flag = MSC_UTIL.SYS_YES) AND (p_task_num = TASK_SCHEDULE) THEN
4038 p_entity_lrnn := p_lrnn;
4039 RETURN TRUE;
4040 END IF;
4041
4042 IF prec.atp_rules_flag = MSC_UTIL.SYS_YES AND (p_task_num = TASK_ATP_RULES) THEN p_entity_lrnn := p_lrnn;
4043 RETURN TRUE;
4044 END IF;
4045
4046 IF prec.demand_class_flag = MSC_UTIL.SYS_YES AND ( p_task_num = TASK_DEMAND_CLASS ) THEN
4047 p_entity_lrnn := p_lrnn;
4048 RETURN TRUE;
4049 END IF;
4050
4051 IF prec.kpi_bis_flag = MSC_UTIL.SYS_YES AND ( p_task_num = TASK_BIS ) THEN
4052 p_entity_lrnn := p_lrnn;
4053 RETURN TRUE;
4054 END IF;
4055
4056 IF prec.parameter_flag = MSC_UTIL.SYS_YES AND ( p_task_num = TASK_PARAMETER ) THEN
4057 p_entity_lrnn := p_lrnn;
4058 RETURN TRUE;
4059 END IF;
4060
4061 IF prec.planner_flag = MSC_UTIL.SYS_YES AND ( p_task_num = TASK_PLANNERS ) THEN
4062 p_entity_lrnn := p_lrnn;
4063 RETURN TRUE;
4064 END IF;
4065
4066 IF prec.project_flag = MSC_UTIL.SYS_YES AND ( p_task_num = TASK_PROJECT ) THEN
4067 p_entity_lrnn := p_lrnn;
4068 RETURN TRUE;
4069 END IF;
4070
4071 IF prec.sourcing_rule_flag = MSC_UTIL.SYS_YES AND ( p_task_num = TASK_SOURCING ) THEN
4072 p_entity_lrnn := p_lrnn;
4073 RETURN TRUE;
4074 END IF;
4075
4076 IF prec.sub_inventory_flag = MSC_UTIL.SYS_YES AND ( p_task_num = TASK_SUB_INVENTORY ) THEN
4077 p_entity_lrnn := p_lrnn;
4078 RETURN TRUE;
4079 END IF;
4080
4081 IF (prec.tp_customer_flag = MSC_UTIL.SYS_YES) OR (prec.tp_vendor_flag = MSC_UTIL.SYS_YES) THEN
4082 IF (p_task_num = TASK_TRADING_PARTNER) OR (p_task_num = TASK_BUYER_CONTACT) THEN
4083 p_entity_lrnn := p_lrnn;
4084 RETURN TRUE;
4085 END IF;
4086 END IF;
4087
4088 IF prec.item_subst_flag = MSC_UTIL.SYS_YES AND ( p_task_num = TASK_ITEM_SUBSTITUTES ) THEN
4089 p_entity_lrnn := p_lrnn;
4090 RETURN TRUE;
4091 END IF;
4092
4093 IF ( p_task_num = TASK_USER_COMPANY ) THEN
4094 IF (prec.user_company_flag = 2) OR (prec.user_company_flag = 3) THEN
4095 p_entity_lrnn := p_lrnn;
4096 RETURN TRUE;
4097 END IF;
4098 END IF;
4099
4100 IF prec.trip_flag = MSC_UTIL.SYS_YES AND (p_task_num = TASK_TRIP) THEN
4101 -- do net-change for this entity
4102 p_entity_lrnn := lv_trip_lrn;
4103 RETURN TRUE;
4104 END IF;
4105
4106 IF prec.external_repair_flag = MSC_UTIL.SYS_YES AND (p_task_num = TASK_ERO) THEN
4107 -- do net-change for this entity
4108 p_entity_lrnn := lv_ERO_lrn;
4109 RETURN TRUE;
4110 END IF;
4111
4112 IF prec.internal_repair_flag = MSC_UTIL.SYS_YES AND (p_task_num = TASK_IRO) THEN
4113 -- do net-change for this entity Bug 6126698
4114
4115 p_entity_lrnn := lv_IRO_lrn;
4116
4117 RETURN TRUE;
4118 END IF;
4119 END IF; /* Non-incremental refresh */
4120
4121
4122
4123 RETURN FALSE;
4124
4125 END get_entity_lrn;
4126
4127
4128
4129 FUNCTION SET_ST_STATUS( ERRBUF OUT NOCOPY VARCHAR2,
4130 RETCODE OUT NOCOPY NUMBER,
4131 pINSTANCE_ID IN NUMBER,
4132 pST_STATUS IN NUMBER,
4133 pSO_RTYPE IN NUMBER:= NULL)
4134 RETURN BOOLEAN
4135 IS
4136
4137 lv_staging_table_status NUMBER;
4138 lv_instance_enabled NUMBER;
4139 lv_refresh_type NUMBER;
4140 lv_cont_coll_mode msc_coll_parameters.so_sn_flag%type;
4141 lv_inv_ctp_val NUMBER := NVL(FND_PROFILE.Value('INV_CTP'),0);
4142 BEGIN
4143
4144 ---===================== PULLING ====================
4145
4146 IF pST_STATUS= MSC_UTIL.G_ST_PULLING THEN
4147
4148 SELECT mai.ENABLE_FLAG,
4149 mai.ST_STATUS,
4150 DECODE(mai.LRTYPE,'C',MSC_UTIL.G_COMPLETE,'P',MSC_UTIL.G_PARTIAL,'I',MSC_UTIL.G_INCREMENTAL,'T',MSC_UTIL.G_CONT)
4151 INTO lv_instance_enabled, lv_staging_table_status,lv_refresh_type
4152 FROM MSC_APPS_INSTANCES mai
4153 WHERE mai.INSTANCE_ID= pINSTANCE_ID
4154 FOR UPDATE;
4155
4156 IF lv_instance_enabled= MSC_UTIL.SYS_YES THEN
4157
4158 IF lv_staging_table_status= MSC_UTIL.G_ST_EMPTY THEN
4159 IF lv_refresh_type = MSC_UTIL.G_CONT THEN
4160 BEGIN
4161 SELECT so_sn_flag
4162 INTO lv_cont_coll_mode
4163 FROM msc_coll_parameters
4164 WHERE instance_id = pINSTANCE_ID;
4165 EXCEPTION
4166 WHEN others THEN
4167 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
4168 RETCODE := MSC_UTIL.G_ERROR;
4169 RETURN FALSE;
4170 END;
4171 END IF;
4172 /* for bug:2605884 ,added the decode in updating so_tbl_status=2 if ODS ATP and complete
4173 refresh of the sales orders */
4174 UPDATE MSC_APPS_INSTANCES
4175 SET ST_STATUS= MSC_UTIL.G_ST_PULLING,
4176 SO_TBL_STATUS= DECODE( pSO_RTYPE,MSC_UTIL.SYS_YES
4177 ,decode(lv_refresh_type,MSC_UTIL.G_INCREMENTAL,MSC_UTIL.SYS_YES,
4178 decode(lv_inv_ctp_val,5,decode(lv_refresh_type,
4179 MSC_UTIL.G_CONT ,decode(lv_cont_coll_mode,
4180 MSC_UTIL.SYS_INCR,MSC_UTIL.SYS_YES,
4181 MSC_UTIL.SYS_NO,MSC_UTIL.SYS_YES,
4182 MSC_UTIL.SYS_NO),
4183 MSC_UTIL.SYS_NO),
4184 MSC_UTIL.SYS_YES)
4185 )
4186 ,MSC_UTIL.SYS_YES),
4187 LAST_UPDATE_DATE= SYSDATE,
4188 LAST_UPDATED_BY= FND_GLOBAL.USER_ID,
4189 REQUEST_ID= FND_GLOBAL.CONC_REQUEST_ID
4190 WHERE INSTANCE_ID= pINSTANCE_ID;
4191
4192 RETCODE := MSC_UTIL.G_SUCCESS;
4193
4194 RETURN TRUE;
4195
4196 ELSIF lv_staging_table_status= MSC_UTIL.G_ST_PULLING THEN
4197
4198 FND_MESSAGE.SET_NAME('MSC', 'MSC_ST_ERROR_PULLING');
4199 ERRBUF:= FND_MESSAGE.GET;
4200
4201 ELSIF lv_staging_table_status= MSC_UTIL.G_ST_READY THEN
4202
4203 FND_MESSAGE.SET_NAME('MSC', 'MSC_ST_ERROR_DATA_EXIST');
4204 ERRBUF:= FND_MESSAGE.GET;
4205
4206 ELSIF lv_staging_table_status= MSC_UTIL.G_ST_COLLECTING THEN
4207
4208 FND_MESSAGE.SET_NAME('MSC', 'MSC_ST_ERROR_LOADING');
4209 ERRBUF:= FND_MESSAGE.GET;
4210
4211 ELSIF lv_staging_table_status= MSC_UTIL.G_ST_PURGING THEN
4212
4213 FND_MESSAGE.SET_NAME('MSC', 'MSC_ST_ERROR_PURGING');
4214 ERRBUF:= FND_MESSAGE.GET;
4215
4216 END IF;
4217
4218 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, ERRBUF);
4219 RETCODE := MSC_UTIL.G_ERROR;
4220 RETURN FALSE;
4221
4222 ELSE
4223 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_INSTANCE_INACTIVE');
4224 ERRBUF:= FND_MESSAGE.GET;
4225 RETCODE := MSC_UTIL.G_ERROR;
4226 RETURN FALSE;
4227 END IF;
4228
4229 ---===================== EMPTY ====================
4230 ELSIF pST_STATUS= MSC_UTIL.G_ST_EMPTY THEN
4231
4232 UPDATE MSC_APPS_INSTANCES
4233 SET ST_STATUS= MSC_UTIL.G_ST_EMPTY,
4234 LAST_UPDATE_DATE= SYSDATE,
4235 LAST_UPDATED_BY= FND_GLOBAL.USER_ID,
4236 REQUEST_ID= FND_GLOBAL.CONC_REQUEST_ID
4237 WHERE INSTANCE_ID= pINSTANCE_ID;
4238
4239 RETCODE:= MSC_UTIL.G_SUCCESS;
4240 RETURN TRUE;
4241
4242 ---===================== READY ====================
4243 ELSIF pST_STATUS= MSC_UTIL.G_ST_READY THEN
4244
4245 UPDATE MSC_APPS_INSTANCES
4246 SET ST_STATUS= MSC_UTIL.G_ST_READY,
4247 LAST_UPDATE_DATE= SYSDATE,
4248 LAST_UPDATED_BY= FND_GLOBAL.USER_ID,
4249 REQUEST_ID= FND_GLOBAL.CONC_REQUEST_ID
4250 WHERE INSTANCE_ID= pINSTANCE_ID;
4251
4252 RETCODE:= MSC_UTIL.G_SUCCESS;
4253 RETURN TRUE;
4254
4255 END IF;
4256
4257
4258 END SET_ST_STATUS;
4259
4260
4261 --============= Called by the monitor to get the TOTAL_TASK_NUMBER =========
4262
4263 PROCEDURE INITIALIZE( pREFRESH_ID OUT NOCOPY NUMBER,
4264 pTOTAL_TASK_NUMBER OUT NOCOPY NUMBER)
4265 IS
4266 BEGIN
4267
4268 Select MSC_CL_REFRESH_S.NEXTVAL
4269 into pREFRESH_ID
4270 from dual;
4271
4272 pTOTAL_TASK_NUMBER := TOTAL_TASK_NUMBER;
4273
4274 END INITIALIZE;
4275
4276 PROCEDURE FINAL( pINSTANCE_ID IN NUMBER,
4277 pORG_GROUP IN VARCHAR2,
4278 pRTYPE IN NUMBER,
4279 pSO_RTYPE IN NUMBER,
4280 pLRN IN NUMBER,
4281 pSOURCING_ENABLED IN NUMBER,
4282 prec IN MSC_UTIL.CollParamREC)
4283 IS
4284 BEGIN
4285
4286 --- PREPLACE CHANGE START ---
4287 /*
4288 UPDATE MSC_APPS_INSTANCES
4289 SET APPS_LRN= pLRN,
4290 LRTYPE= DECODE( pRTYPE, MSC_UTIL.SYS_YES, 'C', 'I'),
4291 SO_LRTYPE= DECODE( pSO_RTYPE, MSC_UTIL.SYS_YES, 'C', 'I'),
4292 LRID= msc_cl_refresh_s.currval,
4293 CLEANSED_FLAG= MSC_UTIL.SYS_NO,
4294 LAST_UPDATE_DATE= SYSDATE,
4295 LAST_UPDATED_BY= FND_GLOBAL.USER_ID,
4296 REQUEST_ID= FND_GLOBAL.CONC_REQUEST_ID,
4297 LR_SOURCING_FLAG = pSOURCING_ENABLED
4298 WHERE INSTANCE_ID= pINSTANCE_ID;
4299 */
4300
4301 UPDATE MSC_APPS_INSTANCES
4302 SET APPS_LRN= pLRN,
4303 LRTYPE= DECODE( pRTYPE, MSC_UTIL.G_COMPLETE, 'C',
4304 MSC_UTIL.G_INCREMENTAL, 'I',
4305 MSC_UTIL.G_PARTIAL, 'P',
4306 MSC_UTIL.G_CONT, 'T'),
4307 SO_LRTYPE= DECODE( pSO_RTYPE, MSC_UTIL.SYS_YES, DECODE(pRTYPE,MSC_UTIL.G_INCREMENTAL,'I', 'C'), 'I'),
4308 LRID= msc_cl_refresh_s.currval,
4309 CLEANSED_FLAG= MSC_UTIL.SYS_NO,
4310 LAST_UPDATE_DATE= SYSDATE,
4311 LAST_UPDATED_BY= FND_GLOBAL.USER_ID,
4312 REQUEST_ID= FND_GLOBAL.CONC_REQUEST_ID,
4313 LR_SOURCING_FLAG = pSOURCING_ENABLED
4314 WHERE INSTANCE_ID= pINSTANCE_ID;
4315
4316 --- PREPLACE CHANGE END ---
4317
4318 UPDATE MSC_INSTANCE_ORGS
4319 SET ITEM_LRN = decode(prec.item_flag,1,pLRN,ITEM_LRN),
4320 SAF_STOCK_LRN = decode(prec.saf_stock_flag, 1, pLRN, SAF_STOCK_LRN),
4321 UNIT_NO_LRN = decode(prec.unit_number_flag,1,pLRN,UNIT_NO_LRN),
4322 UOM_LRN = decode(prec.uom_flag,1,pLRN,UOM_LRN),
4323 BOM_LRN = decode(prec.bom_flag,1,pLRN,BOM_LRN),
4324 BOR_LRN = decode(prec.bor_flag ,1,pLRN,BOR_LRN ),
4325 FORECAST_LRN = decode(prec.forecast_flag ,1,pLRN,FORECAST_LRN ),
4326 MDS_LRN = decode(prec.mds_flag ,1,pLRN,MDS_LRN ),
4327 MPS_LRN = decode(prec.mps_flag ,1,pLRN,MPS_LRN ),
4328 OH_LRN = decode(prec.oh_flag ,1,pLRN,OH_LRN ),
4329 PO_LRN = decode(prec.po_flag ,1,pLRN,PO_LRN ),
4330 WIP_LRN = decode(prec.wip_flag ,1,pLRN,WIP_LRN ),
4331 RESERVATIONS_LRN = decode(prec.reserves_flag ,1,pLRN,RESERVATIONS_LRN ),
4332 USER_SUPPLY_DEMAND_LRN = decode(prec.user_supply_demand_flag ,1,pLRN,USER_SUPPLY_DEMAND_LRN ),
4333 SUPPLIER_CAPACITY_LRN = decode(prec.app_supp_cap_flag ,1,pLRN, 3,pLRN,SUPPLIER_CAPACITY_LRN ),
4334 TRIP_LRN = decode(prec.trip_flag ,1,pLRN,TRIP_LRN ),
4335 LAST_SUCC_RES_REF_TIME = decode(prec.reserves_flag ,1,sysdate,g_LAST_SUCC_RES_REF_TIME),
4336 ORG_LRN = pLRN
4337 WHERE SR_INSTANCE_ID= pINSTANCE_ID
4338 AND (pORG_GROUP= MSC_UTIL.G_ALL_ORGANIZATIONS OR ORG_GROUP=pORG_GROUP);
4339
4340 IF (prec.external_repair_flag = MSC_UTIL.SYS_YES AND MSC_UTIL.G_COLLECT_SRP_DATA = 'Y') THEN
4341 UPDATE MSC_INSTANCE_ORGS
4342 SET ERO_LRN = decode(prec.external_repair_flag ,1,pLRN,ERO_LRN )
4343 WHERE SR_INSTANCE_ID= pINSTANCE_ID
4344 AND organization_type <> 3;
4345 END IF;
4346
4347 IF (prec.internal_repair_flag = MSC_UTIL.SYS_YES AND MSC_UTIL.G_COLLECT_SRP_DATA = 'Y' ) THEN
4348 UPDATE MSC_INSTANCE_ORGS
4349 SET
4350 IRO_LRN = decode(prec.internal_repair_flag ,1,pLRN,IRO_LRN ),
4351 LAST_SUCC_IRO_REF_TIME = sysdate
4352 WHERE SR_INSTANCE_ID= pINSTANCE_ID
4353 AND organization_type = 3;
4354 END IF;
4355
4356 IF ((prec.calendar_flag = MSC_UTIL.SYS_YES) OR (prec.resource_nra_flag in (1,3))) THEN
4357 UPDATE MSC_INSTANCE_ORGS
4358 SET CALENDAR_LRN= pLRN
4359 WHERE SR_INSTANCE_ID= pINSTANCE_ID
4360 AND (pORG_GROUP= MSC_UTIL.G_ALL_ORGANIZATIONS OR ORG_GROUP=pORG_GROUP);
4361 END IF;
4362
4363 /* Sales orders are not collected during Targeted and Continious Refresh if Sales Orders = No, so we will not update SO_LRN in this case */
4364 IF ( (pRTYPE = MSC_UTIL.G_PARTIAL OR pRTYPE = MSC_UTIL.G_CONT) AND prec.sales_order_flag = MSC_UTIL.SYS_NO ) THEN
4365 NULL;
4366 ELSE
4367 UPDATE MSC_INSTANCE_ORGS
4368 SET SO_LRN= pLRN
4369 WHERE SR_INSTANCE_ID= pINSTANCE_ID
4370 AND (pORG_GROUP= MSC_UTIL.G_ALL_ORGANIZATIONS OR ORG_GROUP=pORG_GROUP);
4371 END IF;
4372
4373
4374 END;
4375
4376 -- ============== PARTIAL REPLACEMENT METHODS ====================
4377
4378 --- PREPLACE CHANGE START ---
4379
4380 /* NCPerf */
4381 FUNCTION Q_PARTIAL_TASK (p_instance_id NUMBER,
4382 p_task_num NUMBER,
4383 prec MSC_UTIL.CollParamREC,
4384 p_collection_type NUMBER)
4385
4386 RETURN BOOLEAN AS
4387
4388 BEGIN
4389
4390 IF (prec.app_supp_cap_flag = MSC_UTIL.ASL_YES or prec.app_supp_cap_flag = MSC_UTIL.ASL_YES_RETAIN_CP ) THEN
4391 IF p_task_num = TASK_SUPPLIER_CAPACITY THEN
4392 RETURN TRUE;
4393 END IF;
4394 END IF;
4395
4396 IF prec.atp_rules_flag = MSC_UTIL.SYS_YES THEN
4397 IF p_task_num = TASK_ATP_RULES THEN
4398 if (p_collection_type = MSC_UTIL.G_INCREMENTAL) then
4399 return false; -- NCP: do not call TASK_ATP_RULES in net change
4400 else
4401 RETURN TRUE;
4402 end if;
4403 END IF;
4404 END IF;
4405
4406 IF prec.bom_flag = MSC_UTIL.SYS_YES THEN
4407 IF ((p_task_num = TASK_BOM) or
4408 (p_task_num = TASK_ROUTING) or
4409 (p_task_num = TASK_OPER_NETWORKS) or
4410 (p_task_num = TASK_ROUTING_OPERATIONS) or
4411 (p_task_num = TASK_OPERATION_RES_SEQS) or
4412 (p_task_num = TASK_OPERATION_RESOURCES) or
4413 (p_task_num = TASK_RESOURCE) or
4414 (p_task_num = TASK_RESOURCE_SETUP) or /* ds change */
4415 (p_task_num = TASK_RESOURCE_INSTANCE) or /* ds change */
4416 -- Load Resources Data excluding those based on WIP_FLAG
4417 (p_task_num = TASK_OPERATION_COMPONENTS) or
4418 (p_task_num = TASK_PROCESS_EFFECTIVITY) ) THEN
4419 -- MSC_CL_BOM_PULL.LOAD_BOM,
4420 -- MSC_CL_ROUTING_PULL.LOAD_ROUTING,
4421 -- MSC_CL_WIP_PULL.LOAD_OPER_NETWORKS
4422 -- MSC_CL_ROUTING_PULL.LOAD_ROUTING_OPERATIONS
4423 -- MSC_CL_ROUTING_PULL.LOAD_OPERATION_RES_SEQS
4424 -- MSC_CL_ROUTING_PULL.LOAD_OPERATION_RESOURCES
4425 -- MSC_CL_ROUTING_PULL.LOAD_OPERATION_COMPONENTS
4426 -- MSC_CL_BOM_PULL.LOAD_PROCESS_EFFECTIVITY
4427 -- extract effectivities are performed
4428 RETURN TRUE;
4429 END IF;
4430 END IF;
4431
4432 IF prec.bor_flag = MSC_UTIL.SYS_YES THEN
4433 IF ( p_task_num = TASK_BOR ) THEN
4434 if (p_collection_type = MSC_UTIL.G_INCREMENTAL) then
4435 return false; -- NCP: do not call TASK_BOR in net change
4436 else
4437 RETURN TRUE;
4438 end if;
4439 END IF;
4440 END IF;
4441
4442 IF prec.calendar_flag = MSC_UTIL.SYS_YES THEN
4443 IF ( p_task_num = TASK_CALENDAR_DATE ) THEN
4444 if (p_collection_type = MSC_UTIL.G_INCREMENTAL) then
4445 return false; -- NCP: do not call TASK_CALENDAR_DATE in net change
4446 else
4447 RETURN TRUE;
4448 end if;
4449 END IF;
4450 END IF;
4451
4452 IF prec.demand_class_flag = MSC_UTIL.SYS_YES THEN
4453 IF ( p_task_num = TASK_DEMAND_CLASS ) THEN
4454 if (p_collection_type = MSC_UTIL.G_INCREMENTAL) then
4455 return false; -- NCP: do not call TASK_DEMAND_CLASS in net change
4456 else
4457 RETURN TRUE;
4458 end if;
4459 END IF;
4460 END IF;
4461
4462 IF prec.forecast_flag = MSC_UTIL.SYS_YES THEN
4463 IF (p_task_num = TASK_LOAD_FORECAST) THEN
4464 -- both of the ones below will get executed
4465 -- MSC_CL_DEMAND_PULL.LOAD_FORECASTS
4466 -- MSC_CL_DEMAND_PULL.LOAD_ITEM_FORECASTS
4467 RETURN TRUE;
4468 END IF;
4469 END IF;
4470
4471 IF prec.item_flag = MSC_UTIL.SYS_YES THEN
4472 IF ((p_task_num = TASK_CATEGORY) or
4473 (p_task_num = TASK_ITEM1) or
4474 (p_task_num = TASK_ITEM2) or
4475 (p_task_num = TASK_ITEM3) or
4476 (p_task_num = TASK_ABC_CLASSES) )THEN
4477
4478 RETURN TRUE;
4479 END IF;
4480 END IF;
4481
4482 -- TASK_BUYER_CONTACT now moved to combine
4483 -- with TRADING_PARTNER since ODS LOAD
4484 -- loads contact information through MSC_CL_SETUP_PULL.LOAD_TRADING_PARTNER.
4485
4486 IF prec.kpi_bis_flag = MSC_UTIL.SYS_YES THEN
4487 IF ( p_task_num = TASK_BIS ) THEN
4488 RETURN TRUE;
4489 END IF;
4490 END IF;
4491
4492 IF prec.mds_flag = MSC_UTIL.SYS_YES THEN
4493 IF ((p_task_num = TASK_MDS_DEMAND) OR
4494 (p_task_num = TASK_SCHEDULE) ) THEN
4495 RETURN TRUE;
4496 END IF;
4497 END IF;
4498
4499 IF prec.mps_flag = MSC_UTIL.SYS_YES THEN
4500 IF ((p_task_num = TASK_MPS_SUPPLY) OR
4501 (p_task_num = TASK_SCHEDULE) ) THEN
4502 RETURN TRUE;
4503 END IF;
4504 END IF;
4505
4506 IF prec.oh_flag = MSC_UTIL.SYS_YES THEN
4507 IF p_task_num = TASK_OH_SUPPLY THEN
4508 RETURN TRUE;
4509 END IF;
4510 END IF;
4511
4512 IF prec.parameter_flag = MSC_UTIL.SYS_YES THEN
4513 IF p_task_num = TASK_PARAMETER THEN
4514 RETURN TRUE;
4515 END IF;
4516 END IF;
4517
4518 IF prec.planner_flag = MSC_UTIL.SYS_YES THEN
4519 IF p_task_num = TASK_PLANNERS THEN
4520 RETURN TRUE;
4521 END IF;
4522 END IF;
4523
4524 IF prec.project_flag = MSC_UTIL.SYS_YES THEN
4525 IF p_task_num = TASK_PROJECT THEN
4526 if (p_collection_type = MSC_UTIL.G_INCREMENTAL) then
4527 return false; -- NCP: do not call TASK_PROJECT in net change
4528 else
4529 RETURN TRUE;
4530 end if;
4531 END IF;
4532 END IF;
4533
4534 IF prec.po_flag = MSC_UTIL.SYS_YES THEN
4535 -- IF p_task_num = TASK_PO_SUPPLY THEN
4536 IF ((p_task_num = TASK_PO_SUPPLY) or
4537 (p_task_num = TASK_PO_PO_SUPPLY) or
4538 (p_task_num = TASK_PO_REQ_SUPPLY)) THEN
4539 RETURN TRUE;
4540 END IF;
4541 END IF;
4542
4543 IF prec.reserves_flag = MSC_UTIL.SYS_YES THEN
4544 IF p_task_num = TASK_HARD_RESERVATION THEN
4545 -- FOR MSC_CL_DEMAND_PULL.LOAD_HARD_RESERVATION
4546 RETURN TRUE;
4547 END IF;
4548 END IF;
4549
4550 IF prec.resource_nra_flag in (1,3) THEN
4551 IF p_task_num = TASK_CALENDAR_DATE THEN
4552 -- Can we create another task TASK_NRA??
4553 -- Will call MSC_CL_SETUP_PULL.LOAD_TRADING_PARTNER
4554 -- and also will carry out NRA calculation
4555 -- using gmp_calendar_pkg.populate_rsrc_cal
4556 RETURN TRUE;
4557 END IF;
4558 END IF;
4559
4560 IF prec.saf_stock_flag = MSC_UTIL.SYS_YES THEN
4561 IF p_task_num = TASK_SAFETY_STOCK THEN
4562 RETURN TRUE;
4563 END IF;
4564 END IF;
4565
4566 IF prec.sales_order_flag = MSC_UTIL.SYS_YES THEN
4567 IF (p_task_num = TASK_SALES_ORDER1
4568 OR p_task_num = TASK_SALES_ORDER2
4569 OR p_task_num = TASK_SALES_ORDER3
4570 OR p_task_num = TASK_AHL) THEN
4571 RETURN TRUE;
4572 END IF;
4573 END IF;
4574
4575 --=======================================
4576 -- NCPerf.
4577 -- Sales Orders need to be collected in
4578 -- case of Net change collections even if
4579 -- Sales Order parameter is set to NO
4580 -- ======================================
4581 -- commenting this code as above comment is no longer true
4582 /*
4583 IF ((p_task_num = TASK_SALES_ORDER1
4584 OR p_task_num = TASK_SALES_ORDER2
4585 OR p_task_num = TASK_SALES_ORDER3
4586 OR p_task_num = TASK_AHL) and
4587 (p_collection_type = MSC_UTIL.G_INCREMENTAL)) THEN
4588 RETURN TRUE;
4589 END IF;
4590 */
4591
4592 IF prec.sourcing_rule_flag = MSC_UTIL.SYS_YES THEN
4593 IF p_task_num = TASK_SOURCING THEN
4594 if (p_collection_type = MSC_UTIL.G_INCREMENTAL) then
4595 return false; -- NCP: do not call TASK_SOURCING in net change
4596 else
4597 RETURN TRUE;
4598 end if;
4599 -- FOR MSC_CL_OTHER_PULL.LOAD_SOURCING
4600 END IF;
4601 END IF;
4602
4603 -- NOTE : There is no procedure that deals
4604 -- with Sourcing History in Data Pull,
4605 -- which completely belongs to ODS Load.
4606
4607 IF prec.sub_inventory_flag = MSC_UTIL.SYS_YES THEN
4608 IF p_task_num = TASK_SUB_INVENTORY THEN
4609 if (p_collection_type = MSC_UTIL.G_INCREMENTAL) then
4610 return false; -- NCP: do not call TASK_SUB_INVENTORY in net change
4611 else
4612 RETURN TRUE;
4613 end if;
4614 END IF;
4615 END IF;
4616
4617 -- TASK_BUYER_CONTACT now moved to combine
4618 -- with TRADING_PARTNER since ODS LOAD
4619 -- loads contact information through MSC_CL_SETUP_PULL.LOAD_TRADING_PARTNER.
4620
4621 IF prec.tp_customer_flag = MSC_UTIL.SYS_YES OR prec.tp_vendor_flag = MSC_UTIL.SYS_YES THEN
4622 IF ((p_task_num = TASK_TRADING_PARTNER) and
4623 (p_collection_type = MSC_UTIL.G_INCREMENTAL)) then
4624 return false; -- NCP: do not call TASK_TRADING_PARTNER in net change
4625 ELSIF ((p_task_num = TASK_TRADING_PARTNER) or
4626 (p_task_num = TASK_BUYER_CONTACT) ) THEN
4627 RETURN TRUE;
4628 END IF;
4629 END IF;
4630
4631 IF prec.unit_number_flag = MSC_UTIL.SYS_YES THEN
4632 IF p_task_num = TASK_UNIT_NUMBER THEN
4633 RETURN TRUE;
4634 END IF;
4635 END IF;
4636
4637 IF prec.uom_flag = MSC_UTIL.SYS_YES THEN
4638 IF p_task_num = TASK_UOM THEN
4639 if (p_collection_type = MSC_UTIL.G_INCREMENTAL) then
4640 return false; -- NCP: do not call TASK_UOM in net change
4641 else
4642 RETURN TRUE;
4643 end if;
4644 END IF;
4645 END IF;
4646
4647 -- Added this task for Prod subst in Targeted Collections --
4648 IF prec.item_subst_flag = MSC_UTIL.SYS_YES THEN
4649 IF p_task_num = TASK_ITEM_SUBSTITUTES THEN
4650 RETURN TRUE;
4651 END IF;
4652 END IF;
4653
4654 IF prec.user_supply_demand_flag = MSC_UTIL.SYS_YES THEN
4655 IF ((p_task_num = TASK_USER_SUPPLY) OR
4656 (p_task_num = TASK_USER_DEMAND)) THEN
4657 RETURN TRUE;
4658 END IF;
4659 END IF;
4660
4661 IF prec.wip_flag = MSC_UTIL.SYS_YES THEN
4662 IF ((p_task_num = TASK_WIP_SUPPLY) or
4663 (p_task_num = TASK_WIP_DEMAND) or
4664 (p_task_num = TASK_RESOURCE_INSTANCE) or /* ds change */
4665 (p_task_num = TASK_RESOURCE) ) THEN
4666 -- Load Resources Data excluding those based on BOM_FLAG
4667 -- FOR MSC_CL_WIP_PULL.LOAD_WIP_SUPPLY
4668 -- FOR MSC_CL_WIP_PULL.LOAD_WIP_DEMAND
4669 -- FOR MSC_CL_BOM_PULL.LOAD_RESOURCE
4670 RETURN TRUE;
4671 END IF;
4672 END IF;
4673
4674 /* SCE Change starts */
4675 IF ((prec.user_company_flag = 2) OR
4676 (prec.user_company_flag = 3)) THEN
4677 IF p_task_num = TASK_USER_COMPANY THEN
4678 RETURN TRUE;
4679 END IF;
4680 END IF;
4681 /* SCE Change ends */
4682
4683 /* CP-ACK starts */
4684 IF (prec.supplier_response_flag = MSC_UTIL.SYS_YES) THEN
4685 IF (p_task_num = TASK_SUPPLIER_RESPONSE) THEN
4686 RETURN TRUE;
4687 END IF;
4688 END IF;
4689 /* CP-ACK ends */
4690
4691 IF (prec.trip_flag = MSC_UTIL.SYS_YES) THEN
4692 IF (p_task_num = TASK_TRIP) THEN
4693 RETURN TRUE;
4694 END IF;
4695 END IF;
4696
4697 IF (prec.sales_channel_flag = MSC_UTIL.SYS_YES) THEN
4698 IF (p_task_num = TASK_SALES_CHANNEL) THEN
4699 RETURN TRUE;
4700 END IF;
4701 END IF;
4702
4703 IF (prec.fiscal_calendar_flag = MSC_UTIL.SYS_YES) THEN
4704 IF (p_task_num = TASK_FISCAL_CALENDAR) THEN
4705 RETURN TRUE;
4706 END IF;
4707 END IF;
4708
4709 IF prec.internal_repair_flag = MSC_UTIL.SYS_YES THEN
4710 IF (MSC_UTIL.G_COLLECT_SRP_DATA='Y') THEN
4711 IF ( (p_task_num = TASK_IRO_DEMAND) or
4712 (p_task_num = TASK_IRO )) THEN /*changes for executing repair order load Bug# 5909379*/
4713 RETURN TRUE;
4714 END IF;
4715 END IF;
4716 END IF;
4717
4718 IF prec.external_repair_flag = MSC_UTIL.SYS_YES THEN
4719 IF (MSC_UTIL.G_COLLECT_SRP_DATA='Y') THEN
4720 IF ( (p_task_num = TASK_ERO_DEMAND) or
4721 (p_task_num = TASK_ERO )) THEN /*changes for executing repair order load Bug# 5909379*/
4722 RETURN TRUE;
4723 END IF;
4724 END IF;
4725 END IF;
4726 IF (prec.payback_demand_supply_flag = MSC_UTIL.SYS_YES) THEN
4727 IF (p_task_num = TASK_PAYBACK_DEMAND_SUPPLY) THEN
4728 RETURN TRUE;
4729 END IF;
4730 END IF;
4731 -- for bug # 6469722
4732 IF (prec.currency_conversion_flag = MSC_UTIL.SYS_YES) THEN
4733 IF (p_task_num = TASK_CURRENCY_CONVERSION) THEN
4734 RETURN TRUE;
4735 END IF;
4736 END IF;
4737 -- for bug # 6730983
4738 IF (prec.delivery_details_flag = MSC_UTIL.SYS_YES) THEN
4739 IF (p_task_num = TASK_DELIVERY_DETAILS) THEN
4740 RETURN TRUE;
4741 END IF;
4742 END IF;
4743 RETURN FALSE;
4744
4745 END Q_PARTIAL_TASK;
4746
4747 --- PREPLACE CHANGE END ---
4748
4749 -- agmcont
4750
4751
4752 -- ===============================================================
4753
4754 PROCEDURE EXECUTE_TASK(
4755 pSTATUS OUT NOCOPY NUMBER,
4756 pTASKNUM IN NUMBER,
4757 pIID IN NUMBER,
4758 pLRN IN NUMBER,
4759 pREFRESH_ID IN NUMBER,
4760 ----- PROFILE OPTION, ENVIRONMENT, INSTALLATION -----------------------
4761 pSO_SHIP_ARRIVE_VALUE IN NUMBER,
4762 pMPS_CONSUME_PROFILE_VALUE IN NUMBER,
4763 pSPREAD_LOAD IN NUMBER,
4764 pHOUR_UOM IN VARCHAR2,
4765 pLANG IN VARCHAR2,
4766 pOE_INSTALL IN VARCHAR2,
4767 ----- MSC PROFILE OPTION ----------------------------------------------
4768 pMSO_ITEM_DMD_PENALTY IN NUMBER,
4769 pMSO_ITEM_CAP_PENALTY IN NUMBER,
4770 pMSO_ORG_DMD_PENALTY IN NUMBER,
4771 pMSO_ORG_ITEM_PENALTY IN NUMBER,
4772 pMSO_ORG_RES_PENALTY IN NUMBER,
4773 pMSO_ORG_TRSP_PENALTY IN NUMBER,
4774 pMSC_AGGREG_RES_NAME IN NUMBER,
4775 pMSO_RES_PENALTY IN NUMBER,
4776 pMSO_SUP_CAP_PENALTY IN NUMBER,
4777 pMSC_BOM_SUBST_PRIORITY IN NUMBER,
4778 pMSO_TRSP_PENALTY IN NUMBER,
4779 pMSC_ALT_BOM_COST IN NUMBER,
4780 pMSO_FCST_PENALTY IN NUMBER,
4781 pMSO_SO_PENALTY IN NUMBER,
4782 pMSC_ALT_OP_RES IN NUMBER,
4783 pMSC_ALT_RES_PRIORITY IN NUMBER,
4784 pMSC_BATCHABLE_FLAG IN NUMBER,
4785 pMSC_BATCHING_WINDOW IN NUMBER,
4786 pMSC_MIN_CAPACITY IN NUMBER,
4787 pMSC_MAX_CAPACITY IN NUMBER,
4788 pMSC_UNIT_OF_MEASURE IN NUMBER,
4789 pMSC_SIMUL_RES_SEQ IN NUMBER,
4790 pMRP_BIS_AV_DISCOUNT IN NUMBER,
4791 pMRP_BIS_PRICE_LIST IN NUMBER,
4792 pMSC_DMD_PRIORITY_FLEX_NUM IN NUMBER,
4793 pMSC_FCST_PRIORITY_FLEX_NUM IN NUMBER,
4794 ----- FLAGS -----------------------------------------------------------
4795 pITEM_ENABLED IN NUMBER,
4796 pVENDOR_ENABLED IN NUMBER,
4797 pCUSTOMER_ENABLED IN NUMBER,
4798 pBOM_ENABLED IN NUMBER,
4799 pHARD_RESRVS_ENABLED IN NUMBER,
4800 pSOURCING_ENABLED IN NUMBER,
4801 pWIP_ENABLED IN NUMBER,
4802 pPO_RECEIPTS_ENABLED IN NUMBER,
4803 pSS_ENABLED IN NUMBER,
4804 pPO_ENABLED IN NUMBER,
4805 pITEM_SUBST_ENABLED IN NUMBER,
4806 pOH_ENABLED IN NUMBER,
4807 pSUPPLIER_CAP_ENABLED IN NUMBER,
4808 pUOM_ENABLED IN NUMBER,
4809 pMDS_ENABLED IN NUMBER,
4810 pFORECAST_ENABLED IN NUMBER,
4811 pMPS_ENABLED IN NUMBER,
4812 pNRA_ENABLED IN NUMBER,
4813 pSH_ENABLED IN NUMBER,
4814 pUSER_COMPANY_ENABLED IN NUMBER,
4815 /* CP-ACK starts */
4816 pSUPPLIER_RESPONSE_ENABLED IN NUMBER,
4817 /* CP-ACK ends */
4818 pTRIP_ENABLED IN NUMBER,
4819 prec in MSC_UTIL.CollParamREC
4820 )
4821
4822 IS
4823
4824 lv_task_start_time DATE;
4825
4826
4827 -- Added for Process MFG
4828 lv_return_status BOOLEAN;
4829 lv_refresh_type NUMBER;
4830 lv_entity_lrn NUMBER;
4831 lv_sql_stmt VARCHAR2(4000);
4832 lv_ps_ver NUMBER;
4833
4834 lv_nra_enabled_r11 NUMBER;
4835
4836 EX_SERIALIZATION_ERROR EXCEPTION;
4837
4838 PRAGMA EXCEPTION_INIT(EX_SERIALIZATION_ERROR, -8177);
4839
4840 -- agmcont
4841 lv_cont_lrn number;
4842
4843 BEGIN
4844
4845
4846 IF fnd_global.conc_request_id > 0 THEN
4847 v_cp_enabled:= MSC_UTIL.SYS_YES;
4848 ELSE
4849 v_cp_enabled:= MSC_UTIL.SYS_NO;
4850 END IF;
4851
4852 v_instance_id := pIID;
4853 v_lrnn := pLRN;
4854 v_lrn := TO_CHAR(pLRN);
4855 v_refresh_id := pREFRESH_ID;
4856 v_org_group := prec.org_group_flag;
4857
4858
4859
4860 ----- PROFILE OPTION --------------------------------------------------
4861
4862 v_so_ship_arrive_value := pSO_SHIP_ARRIVE_VALUE;
4863 v_mps_consume_profile_value := pMPS_CONSUME_PROFILE_VALUE;
4864 v_spread_load := pSPREAD_LOAD;
4865 v_hour_uom := pHOUR_UOM;
4866 v_lang := pLANG;
4867 v_oe_install := pOE_INSTALL;
4868
4869 v_mso_item_dmd_penalty := pMSO_ITEM_DMD_PENALTY;
4870 v_mso_item_cap_penalty := pMSO_ITEM_CAP_PENALTY;
4871 v_mso_org_dmd_penalty := pMSO_ORG_DMD_PENALTY;
4872 v_mso_org_item_penalty := pMSO_ORG_ITEM_PENALTY;
4873 v_mso_org_res_penalty := pMSO_ORG_RES_PENALTY;
4874 v_mso_org_trsp_penalty := pMSO_ORG_TRSP_PENALTY;
4875 v_msc_batchable_flag := pMSC_BATCHABLE_FLAG;
4876 v_msc_batching_window := pMSC_BATCHING_WINDOW;
4877 v_msc_min_capacity := pMSC_MIN_CAPACITY;
4878 v_msc_max_capacity := pMSC_MAX_CAPACITY;
4879 v_msc_unit_of_measure := pMSC_UNIT_OF_MEASURE;
4880 v_msc_aggreg_res_name := pMSC_AGGREG_RES_NAME;
4881 v_mso_res_penalty := pMSO_RES_PENALTY;
4882 v_mso_sup_cap_penalty := pMSO_SUP_CAP_PENALTY;
4883 v_msc_bom_subst_priority := pMSC_BOM_SUBST_PRIORITY;
4884 v_mso_trsp_penalty := pMSO_TRSP_PENALTY;
4885 v_msc_alt_bom_cost := pMSC_ALT_BOM_COST;
4886 v_mso_fcst_penalty := pMSO_FCST_PENALTY;
4887 v_mso_so_penalty := pMSO_SO_PENALTY;
4888 v_msc_alt_op_res := pMSC_ALT_OP_RES;
4889 v_msc_alt_res_priority := pMSC_ALT_RES_PRIORITY;
4890 v_msc_simul_res_seq := pMSC_SIMUL_RES_SEQ;
4891 v_mrp_bis_av_discount := pMRP_BIS_AV_DISCOUNT;
4892 v_mrp_bis_price_list := pMRP_BIS_PRICE_LIST;
4893 v_msc_dmd_priority_flex_num := pMSC_DMD_PRIORITY_FLEX_NUM;
4894 v_msc_fcst_priority_flex_num := pMSC_FCST_PRIORITY_FLEX_NUM;
4895
4896 ----- FLAGS -----------------------------------------------------------
4897
4898 ITEM_ENABLED := pITEM_ENABLED;
4899 FORECAST_ENABLED := pFORECAST_ENABLED;
4900 VENDOR_ENABLED := pVENDOR_ENABLED;
4901 CUSTOMER_ENABLED := pCUSTOMER_ENABLED;
4902 BOM_ENABLED := pBOM_ENABLED;
4903 HARD_RESRVS_ENABLED := pHARD_RESRVS_ENABLED;
4904 SOURCING_ENABLED := pSOURCING_ENABLED;
4905 WIP_ENABLED := pWIP_ENABLED;
4906 SS_ENABLED := pSS_ENABLED;
4907 PO_ENABLED := pPO_ENABLED;
4908 ITEM_SUBST_ENABLED := pITEM_SUBST_ENABLED;
4909 OH_ENABLED := pOH_ENABLED;
4910 SUPPLIER_CAP_ENABLED := pSUPPLIER_CAP_ENABLED;
4911 UOM_ENABLED := pUOM_ENABLED;
4912 MDS_ENABLED := prec.mds_flag;
4913 MPS_ENABLED := pMPS_ENABLED;
4914 NRA_ENABLED := pNRA_ENABLED;
4915 SH_ENABLED := pSH_ENABLED;
4916 PO_RECEIPTS_ENABLED := pPO_RECEIPTS_ENABLED;
4917 /* SCE Change Starts */
4918 USER_COMPANY_ENABLED := pUSER_COMPANY_ENABLED;
4919 /* SCE Change Ends */
4920
4921 /* CP-Ack starts */
4922 SUPPLIER_RESPONSE_ENABLED := pSUPPLIER_RESPONSE_ENABLED;
4923 /* CP-Ack ends */
4924
4925 TRIP_ENABLED := pTRIP_ENABLED;
4926 INTERNAL_REPAIR_ENABLED := prec.internal_repair_flag;
4927 EXTERNAL_REPAIR_ENABLED := prec.external_repair_flag;
4928
4929 IF NRA_ENABLED = 1 OR NRA_ENABLED = 3 THEN
4930 lv_nra_enabled_r11 := 1;
4931 ELSE
4932 lv_nra_enabled_r11 := 0;
4933 /*
4934 select decode(NRA_ENABLED,1,1,2,0,3,1,0)
4935 into lv_nra_enabled_r11
4936 from dual;
4937 */
4938 END IF;
4939 SELECT DECODE( M2A_DBLINK,
4940 NULL, ' ',
4941 '@'||M2A_DBLINK),
4942 INSTANCE_CODE||':',
4943 APPS_VER,
4944 GMT_DIFFERENCE/24.0,
4945 SYSDATE,
4946 FND_GLOBAL.USER_ID,
4947 SYSDATE,
4948 INSTANCE_TYPE
4949 INTO v_dblink,
4950 v_icode,
4951 v_apps_ver,
4952 v_dgmt,
4953 lv_task_start_time,
4954 v_current_user,
4955 v_current_date,
4956 v_instance_type
4957 FROM MSC_APPS_INSTANCES
4958 WHERE INSTANCE_ID= pIID;
4959
4960
4961 /* added code so that for 107/110 source this profile option = 0 */
4962 IF (v_apps_ver = MSC_UTIL.G_APPS107) OR (v_apps_ver = MSC_UTIL.G_APPS110) THEN
4963 v_msc_tp_coll_window := 0;
4964 ELSE
4965 v_msc_tp_coll_window := MSC_UTIL.v_msc_tp_coll_window;
4966 END IF;
4967
4968 SELECT decode(NVL(FND_PROFILE.VALUE('MSC_COLLECT_COMPLETED_JOBS'),'Y'),
4969 'Y', 1,
4970 2)
4971 INTO v_collect_completed_jobs
4972 FROM DUAL;
4973
4974 /* this feature is not supported yet, so set to 0 as default */
4975 v_dgmt:= 0;
4976
4977 SAVEPOINT ExecuteTask;
4978
4979 pSTATUS := FAIL;
4980
4981 -- set the flags as to whether discrete and/or process
4982 -- manufacturing are being used in the same instance
4983
4984 v_discrete_flag:= MSC_UTIL.SYS_NO;
4985 v_process_flag := MSC_UTIL.SYS_NO;
4986
4987 IF v_instance_type = MSC_UTIL.G_INS_DISCRETE OR
4988 v_instance_type = MSC_UTIL.G_INS_MIXED THEN
4989 v_discrete_flag := MSC_UTIL.SYS_YES;
4990 END IF;
4991
4992 -- since the gmp's procedure doesn't support incremental refresh, the
4993 -- v_process_flag is set to YES only if it's a complete refresh.
4994
4995 IF pLRN = -1 THEN -- complete refresh
4996 IF v_instance_type = MSC_UTIL.G_INS_PROCESS OR
4997 v_instance_type = MSC_UTIL.G_INS_MIXED THEN
4998 v_process_flag := MSC_UTIL.SYS_YES;
4999 END IF;
5000 END IF;
5001
5002 --- PREPLACE CHANGE START ---
5003
5004
5005 SELECT DECODE(LRTYPE, 'P', MSC_UTIL.SYS_YES, MSC_UTIL.SYS_NO)
5006 INTO v_is_partial_refresh
5007 FROM msc_apps_instances
5008 WHERE instance_id = pIID;
5009
5010
5011 -- IF v_is_partial_refresh = MSC_UTIL.SYS_YES THEN
5012
5013 IF pVENDOR_ENABLED = MSC_UTIL.SYS_YES THEN
5014 CUSTOMER_ENABLED := MSC_UTIL.SYS_YES;
5015 ELSIF pCUSTOMER_ENABLED = MSC_UTIL.SYS_YES THEN
5016 VENDOR_ENABLED := MSC_UTIL.SYS_YES;
5017 END IF;
5018
5019 -- END IF;
5020
5021 --- PREPLACE CHANGE END ---
5022 -- agmcont
5023
5024 SELECT DECODE(LRTYPE,'C',MSC_UTIL.G_COMPLETE,'P',MSC_UTIL.G_PARTIAL,'I',MSC_UTIL.G_INCREMENTAL,'T',MSC_UTIL.G_CONT)
5025 INTO
5026 lv_refresh_type
5027 FROM msc_apps_instances
5028 WHERE instance_id = pIID;
5029
5030 if (get_entity_lrn (pIID, pTASKNUM, prec, pLRN, lv_refresh_type,prec.org_group_flag ,lv_entity_lrn)) then
5031 v_lrnn := lv_entity_lrn;
5032 v_lrn := TO_CHAR(v_lrnn);
5033 end if;
5034
5035 SELECT DECODE(LRTYPE, 'T', MSC_UTIL.SYS_YES, MSC_UTIL.SYS_NO)
5036 INTO v_is_cont_refresh
5037 FROM msc_apps_instances
5038 WHERE instance_id = pIID;
5039
5040
5041 if (v_is_cont_refresh = MSC_UTIL.SYS_YES) then
5042 if (MSC_CL_CONT_COLL_FW.set_cont_refresh_type (pIID, pTASKNUM, prec, lv_entity_lrn, lv_cont_lrn)) then
5043 v_lrnn := lv_cont_lrn;
5044 v_lrn := TO_CHAR(v_lrnn);
5045 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'LRNN=' || v_lrnn);
5046 else
5047 pSTATUS := OK;
5048 return;
5049 end if;
5050 end if;
5051
5052 if (v_is_cont_refresh = MSC_UTIL.SYS_YES) then
5053 IF v_lrn = -1 THEN -- complete refresh
5054 IF v_instance_type = MSC_UTIL.G_INS_PROCESS OR
5055 v_instance_type = MSC_UTIL.G_INS_MIXED THEN
5056 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'process flag is Yes');
5057 v_process_flag := MSC_UTIL.SYS_YES;
5058 END IF;
5059 END IF;
5060 end if;
5061
5062 -- ============= Execute the task according to its task number ===========
5063
5064 BEGIN--LOAD_DATA
5065
5066 IF prec.po_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_PO_SUPPLY THEN
5067
5068 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5069 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_SUPPLY_PULL.LOAD_PO_SUPPLY');
5070 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5071 MSC_CL_SUPPLY_PULL.LOAD_PO_SUPPLY;
5072
5073 ELSIF prec.po_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_PO_PO_SUPPLY THEN
5074
5075 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5076 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_SUPPLY_PULL.LOAD_PO_PO_SUPPLY');
5077 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5078 MSC_CL_SUPPLY_PULL.LOAD_PO_PO_SUPPLY;
5079
5080 ELSIF prec.po_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_PO_REQ_SUPPLY THEN
5081
5082 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5083 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_SUPPLY_PULL.LOAD_PO_REQ_SUPPLY');
5084 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5085 MSC_CL_SUPPLY_PULL.LOAD_PO_REQ_SUPPLY;
5086
5087 ELSIF prec.wip_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_WIP_SUPPLY THEN
5088
5089 -- call the appropriate routine for the type being used
5090
5091 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5092 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_WIP_PULL.LOAD_WIP_SUPPLY');
5093 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5094 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5095 MSC_CL_WIP_PULL.LOAD_WIP_SUPPLY;
5096 END IF;
5097
5098 IF v_process_flag = MSC_UTIL.SYS_YES THEN
5099
5100 IF v_cp_enabled = MSC_UTIL.SYS_YES THEN
5101 lv_return_status := TRUE;
5102 ELSE
5103 lv_return_status := FALSE;
5104 END IF;
5105 IF (v_apps_ver >= MSC_UTIL.G_APPS120) THEN --bug#5684183 (bcaru)
5106
5107 gmp_aps_ds_pull.production_orders(v_dblink,
5108 v_instance_id,
5109 lv_task_start_time,
5110 v_delimiter,
5111 lv_return_status);
5112
5113 v_gmp_routine_name := 'GMP_APS_DS_PULL.PRODUCTION_ORDERS';
5114
5115 ELSIF (v_apps_ver = MSC_UTIL.G_APPS115) THEN
5116 MSC_CL_GMP_UTILITY.production_orders(v_dblink,
5117 v_instance_id,
5118 lv_task_start_time,
5119 v_delimiter,
5120 lv_return_status);
5121
5122 v_gmp_routine_name := 'MSC_CL_GMP_UTILITY.PRODUCTION_ORDERS';
5123 END IF;
5124
5125 IF lv_return_status = FALSE THEN
5126 RAISE GMP_ERROR;
5127 END IF;
5128
5129 END IF;
5130
5131
5132 ELSIF prec.oh_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_OH_SUPPLY THEN
5133
5134 -- call the appropriate routine for onhand inventory
5135
5136 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5137 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_SUPPLY_PULL.LOAD_OH_SUPPLY');
5138 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5139
5140 /* OPM Team - OPM Inventory Convergence Project
5141 Onhand calculation has to be performed for both
5142 discrete/process orgs.
5143 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN*/
5144 MSC_CL_SUPPLY_PULL.LOAD_OH_SUPPLY;
5145 -- END IF;
5146
5147 IF v_process_flag = MSC_UTIL.SYS_YES THEN
5148 IF v_cp_enabled = MSC_UTIL.SYS_YES THEN
5149 lv_return_status := TRUE;
5150 ELSE
5151 lv_return_status := FALSE;
5152 END IF;
5153
5154 /* OPM Team - OPM Inventory Convergence Project
5155 On Hand inventories to be stored in the same schema
5156 as discrete mfg - the views are modified to consider
5157 added functionality
5158 gmp_aps_ds_pull.onhand_inventory(v_dblink,
5159 v_instance_id,
5160 lv_task_start_time,
5161 v_delimiter,
5162 lv_return_status);
5163
5164 v_gmp_routine_name := 'GMP_APS_DS_PULL.ONHAND_INVENTORY';
5165
5166 IF lv_return_status = FALSE THEN
5167 RAISE GMP_ERROR;
5168 END IF;
5169 */
5170
5171 IF (v_apps_ver = MSC_UTIL.G_APPS115) THEN
5172
5173 MSC_CL_GMP_UTILITY.onhand_inventory(v_dblink,
5174 v_instance_id,
5175 lv_task_start_time,
5176 v_delimiter,
5177 lv_return_status);
5178
5179 v_gmp_routine_name := 'MSC_CL_GMP_UTILITY.ONHAND_INVENTORY';
5180
5181 IF lv_return_status = FALSE THEN
5182 RAISE GMP_ERROR;
5183 END IF;
5184 END IF;
5185 END IF;
5186
5187 ELSIF prec.mps_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_MPS_SUPPLY THEN
5188
5189 -- only call if doing discrete mfg
5190
5191 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5192 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_SUPPLY_PULL.LOAD_MPS_SUPPLY');
5193 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5194 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5195 MSC_CL_SUPPLY_PULL.LOAD_MPS_SUPPLY;
5196 END IF;
5197
5198 ELSIF prec.bor_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_BOR THEN
5199
5200 -- only call if doing discrete mfg
5201
5202 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5203 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_BOM_PULL.LOAD_BOR');
5204 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5205 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5206 MSC_CL_BOM_PULL.LOAD_BOR;
5207 END IF;
5208
5209 ELSIF (prec.calendar_flag = MSC_UTIL.SYS_YES OR prec.resource_nra_flag in (1,3)) AND pTASKNUM= TASK_CALENDAR_DATE THEN
5210
5211 -- call the appropriate routine for calendar dates
5212
5213 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5214 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_SETUP_PULL.LOAD_CALENDAR_DATE');
5215 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5216
5217 /* OPM Team - OPM Inventory Convergence Project
5218 Calendar data should be populated for both discrete and process organizations.
5219 So commenting the chk to discrete alone.
5220 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5221 MSC_CL_SETUP_PULL.LOAD_CALENDAR_DATE;
5222 END IF;
5223 */
5224 MSC_CL_SETUP_PULL.LOAD_CALENDAR_DATE;
5225
5226
5227 IF v_process_flag = MSC_UTIL.SYS_YES THEN
5228
5229 -- Process will populate the trading partners here then
5230 -- update the org partner for the appropriate calendars
5231 -- in the calendar routine. also populated is net_resource_avail
5232 MSC_CL_SETUP_PULL.LOAD_TRADING_PARTNER;
5233
5234 IF v_cp_enabled = MSC_UTIL.SYS_YES THEN
5235 lv_return_status := TRUE;
5236 ELSE
5237 lv_return_status := FALSE;
5238 END IF;
5239
5240 IF (v_apps_ver >= MSC_UTIL.G_APPS120) THEN --bug#5684183 (bcaru)
5241 gmp_calendar_pkg.populate_rsrc_cal( lv_task_start_time,
5242 v_instance_id,
5243 v_delimiter,
5244 v_dblink,
5245 NRA_ENABLED,
5246 lv_return_status);
5247
5248 v_gmp_routine_name := 'GMP_CALENDAR_PKG.POPULATE_RSRC_CAL';
5249 ELSIF (v_apps_ver = MSC_UTIL.G_APPS115) THEN
5250
5251 MSC_CL_GMP_UTILITY.populate_rsrc_cal( lv_task_start_time,
5252 v_instance_id,
5253 v_delimiter,
5254 v_dblink,
5255 lv_nra_enabled_r11,
5256 lv_return_status);
5257
5258 v_gmp_routine_name := 'MSC_CL_GMP_UTILITY.POPULATE_RSRC_CAL';
5259 END IF;
5260
5261 IF lv_return_status = FALSE THEN
5262 RAISE GMP_ERROR;
5263 END IF;
5264
5265 END IF;
5266
5267 ELSIF (prec.mds_flag = MSC_UTIL.SYS_YES OR prec.mps_flag = MSC_UTIL.SYS_YES) AND pTASKNUM= TASK_SCHEDULE THEN
5268
5269 -- only call if doing discrete mfg, for process this is done in
5270 -- MDS demands
5271
5272 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5273 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_OTHER_PULL.LOAD_SCHEDULE');
5274 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5275 IF ( v_discrete_flag = MSC_UTIL.SYS_YES ) THEN
5276 IF prec.mds_flag = MSC_UTIL.SYS_YES AND prec.mps_flag = MSC_UTIL.SYS_NO THEN
5277 v_schedule_flag := MSC_UTIL.G_MDS;
5278 ELSIF prec.mds_flag = MSC_UTIL.SYS_NO AND prec.mps_flag = MSC_UTIL.SYS_YES THEN
5279 v_schedule_flag := MSC_UTIL.G_MPS;
5280 ELSE
5281 v_schedule_flag := MSC_UTIL.G_BOTH;
5282 END IF;
5283
5284 MSC_CL_OTHER_PULL.LOAD_SCHEDULE;
5285 END IF;
5286
5287 ELSIF prec.item_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_ITEM1 THEN
5288
5289 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5290 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_ITEM_PULL.LOAD_ITEM(1)');
5291 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5292 MSC_CL_ITEM_PULL.LOAD_ITEM(1);
5293 /* ds change for non standard jobs and eam wo, we may not have
5294 primary item specified in wo. We are going to create
5295 two dummy item, on eofr non standard job and other for
5296 eam wo */
5297 MSC_CL_ITEM_PULL.INSERT_DUMMY_ITEMS;
5298
5299 ELSIF prec.item_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_ITEM2 THEN
5300
5301 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5302 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_ITEM_PULL.LOAD_ITEM(2)');
5303 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5304 MSC_CL_ITEM_PULL.LOAD_ITEM(2);
5305
5306 ELSIF prec.item_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_ITEM3 THEN
5307
5308 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5309 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_ITEM_PULL.LOAD_ITEM(0)');
5310 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5311 MSC_CL_ITEM_PULL.LOAD_ITEM(0);
5312
5313 /*added for bug:4765403*/
5314 ELSIF prec.item_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_ABC_CLASSES THEN
5315
5316 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5317 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_ITEM_PULL.LOAD_ABC_CLASSES');
5318 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5319 IF (v_apps_ver >= MSC_UTIL.G_APPS120) THEN
5320 MSC_CL_ITEM_PULL.LOAD_ABC_CLASSES;
5321 END IF;
5322
5323 ELSIF (prec.bom_flag = MSC_UTIL.SYS_YES OR prec.wip_flag = MSC_UTIL.SYS_YES) AND pTASKNUM= TASK_RESOURCE THEN
5324
5325 -- call the appropriate routine for resources
5326 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5327 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_BOM_PULL.LOAD_RESOURCE');
5328 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5329 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5330 MSC_CL_BOM_PULL.LOAD_RESOURCE;
5331 END IF;
5332 IF v_process_flag = MSC_UTIL.SYS_YES THEN
5333 IF v_cp_enabled = MSC_UTIL.SYS_YES THEN
5334 lv_return_status := TRUE;
5335 ELSE
5336 lv_return_status := FALSE;
5337 END IF;
5338 IF (v_apps_ver >= MSC_UTIL.G_APPS120) THEN --bug#5684183 (bcaru)
5339 gmp_calendar_pkg.rsrc_extract( v_instance_id,
5340 v_dblink ,
5341 lv_return_status);
5342
5343 v_gmp_routine_name := 'GMP_CALENDAR_PKG.RSRC_EXTRACT';
5344 ELSIF (v_apps_ver = MSC_UTIL.G_APPS115) THEN
5345 MSC_CL_GMP_UTILITY.rsrc_extract( v_instance_id,
5346 v_dblink ,
5347 lv_return_status);
5348
5349 v_gmp_routine_name := 'MSC_CL_GMP_UTILITY.RSRC_EXTRACT';
5350 END IF;
5351 /*gmp_calendar_pkg.rsrc_extract( v_instance_id,
5352 v_dblink ,
5353 lv_return_status);
5354
5355 v_gmp_routine_name := 'GMP_CALENDAR_PKG.RSRC_EXTRACT';*/
5356
5357 IF lv_return_status = FALSE THEN
5358 RAISE GMP_ERROR;
5359 END IF;
5360
5361 END IF;
5362
5363 /*ds change start */
5364 ELSIF (prec.bom_flag = MSC_UTIL.SYS_YES OR prec.wip_flag = MSC_UTIL.SYS_YES) AND
5365 pTASKNUM= TASK_RESOURCE_INSTANCE THEN
5366
5367 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5368 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_BOM_PULL.LOAD_RESOURCE_INSTANCE');
5369 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5370 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5371 MSC_CL_BOM_PULL.LOAD_RESOURCE_INSTANCE;
5372 END IF;
5373
5374 -- opm populated dept resource instances in call
5375 -- populate_rsrc_cal
5376
5377 ELSIF (prec.bom_flag = MSC_UTIL.SYS_YES ) AND
5378 pTASKNUM= TASK_RESOURCE_SETUP THEN
5379 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5380 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_BOM_PULL.LOAD_RESOURCE_SETUP');
5381 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5382 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5383 MSC_CL_BOM_PULL.LOAD_RESOURCE_SETUP;
5384 END IF;
5385
5386 -- opm populates resource setups and transitions
5387 -- in extract_effectivities
5388
5389 /*ds change end */
5390
5391 ELSIF (prec.tp_customer_flag = MSC_UTIL.SYS_YES OR prec.tp_vendor_flag = MSC_UTIL.SYS_YES) AND pTASKNUM= TASK_TRADING_PARTNER THEN
5392
5393 -- only call if not doing process mfg. for process this is done
5394 -- with calendar dates
5395
5396 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5397 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_SETUP_PULL.LOAD_TRADING_PARTNER');
5398 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5399
5400 --- PREPLACE CHANGE START ---
5401 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'v_process_flag is ' || v_process_flag);
5402
5403 /* Even when customer_flag or vendor_flag is enabled we must not call loading
5404 MSC_CL_SETUP_PULL.LOAD_TRADING_PARTNER if v_process_flag is YES and CALENDAR is Yes, beacuse
5405 in this case MSC_CL_SETUP_PULL.LOAD_TRADING_PARTNER would be called in CALENDAR task. */
5406
5407 IF (NOT((v_process_flag = MSC_UTIL.SYS_YES) AND
5408 (prec.calendar_flag = MSC_UTIL.SYS_YES OR prec.resource_nra_flag in (1,3)))) THEN
5409 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'LOADING TRADING PARTNERS');
5410
5411 --- PREPLACE CHANGE END ---
5412
5413 MSC_CL_SETUP_PULL.LOAD_TRADING_PARTNER;
5414
5415 /* In case if process_enabled is true, it can come here only if
5416 calendar is not YES in which case one should call populate_rsrc_cal
5417 since this required for both calendar and partner sites. For process orgs
5418 if either calendar or customer or vendor are yes, we have to call
5419 populate_rsrc_cal . */
5420
5421 IF v_process_flag = MSC_UTIL.SYS_YES THEN
5422 IF v_cp_enabled = MSC_UTIL.SYS_YES THEN
5423 lv_return_status := TRUE;
5424 ELSE
5425 lv_return_status := FALSE;
5426 END IF;
5427 IF (v_apps_ver >= MSC_UTIL.G_APPS120) THEN --bug#5684183 (bcaru)
5428 gmp_calendar_pkg.populate_rsrc_cal( lv_task_start_time,
5429 v_instance_id,
5430 v_delimiter,
5431 v_dblink,
5432 NRA_ENABLED,
5433 lv_return_status);
5434
5435 v_gmp_routine_name := 'GMP_CALENDAR_PKG.POPULATE_RSRC_CAL';
5436 ELSIF (v_apps_ver = MSC_UTIL.G_APPS115) THEN
5437 MSC_CL_GMP_UTILITY.populate_rsrc_cal( lv_task_start_time,
5438 v_instance_id,
5439 v_delimiter,
5440 v_dblink,
5441 lv_nra_enabled_r11,
5442 lv_return_status);
5443
5444 v_gmp_routine_name := 'MSC_CL_GMP_UTILITY.POPULATE_RSRC_CAL';
5445 END IF;
5446
5447 IF lv_return_status = FALSE THEN
5448 RAISE GMP_ERROR;
5449 END IF;
5450 END IF;
5451 END IF;
5452
5453 ELSIF prec.forecast_flag = MSC_UTIL.SYS_YES AND pTASKNUM = TASK_LOAD_FORECAST THEN
5454 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5455 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'LOAD_FORECAST');
5456 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5457
5458 IF (v_apps_ver= MSC_UTIL.G_APPS110 OR
5459 v_apps_ver>= MSC_UTIL.G_APPS115) THEN /*to be changed after coding for 107/11i*/
5460
5461 MSC_CL_DEMAND_PULL.LOAD_FORECASTS;
5462
5463 END IF;
5464
5465 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5466 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_DEMAND_PULL.LOAD_ITEM_FORECASTS');
5467 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5468
5469 IF (v_apps_ver= MSC_UTIL.G_APPS110 OR
5470 v_apps_ver>= MSC_UTIL.G_APPS115) THEN /*to be changed after coding for 107/11i*/
5471
5472 MSC_CL_DEMAND_PULL.LOAD_ITEM_FORECASTS;
5473
5474 END IF;
5475
5476 IF v_process_flag = MSC_UTIL.SYS_YES THEN
5477
5478 IF v_cp_enabled = MSC_UTIL.SYS_YES THEN
5479 lv_return_status := TRUE;
5480 ELSE
5481 lv_return_status := FALSE;
5482 END IF;
5483
5484 /* OPM Team - OPM Inventory Convergence Project
5485 OPM forecast merges with discrete forecast in R12
5486 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Loading SALES_FORECAST for Process Mfg');
5487
5488 gmp_aps_ds_pull.sales_forecast(v_dblink,
5489 v_instance_id,
5490 lv_task_start_time,
5491 v_delimiter,
5492 lv_return_status);
5493
5494 v_gmp_routine_name := 'GMP_APS_DS_PULL.SALES_FORECAST';
5495
5496 IF lv_return_status = FALSE THEN
5497 RAISE GMP_ERROR;
5498 END IF;
5499 */
5500
5501 IF (v_apps_ver = MSC_UTIL.G_APPS115) THEN
5502
5503 MSC_CL_GMP_UTILITY.sales_forecast(v_dblink,
5504 v_instance_id,
5505 lv_task_start_time,
5506 v_delimiter,
5507 lv_return_status);
5508
5509 v_gmp_routine_name := 'MSC_CL_GMP_UTILITY.SALES_FORECAST';
5510
5511 IF lv_return_status = FALSE THEN
5512 RAISE GMP_ERROR;
5513 END IF;
5514
5515 END IF;
5516
5517 END IF;
5518
5519
5520
5521 ELSIF prec.mds_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_MDS_DEMAND THEN
5522
5523 -- call the appropriate routine for MDS demand
5524 /* how we can avoid this for ds */
5525 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5526 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_DEMAND_PULL.LOAD_MDS_DEMAND');
5527 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5528
5529 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Starting MDS LOAD');
5530 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5531 MSC_CL_DEMAND_PULL.LOAD_MDS_DEMAND;
5532 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'MDS LOAD COMPLETED');
5533 END IF;
5534 /*
5535 IF v_process_flag = MSC_UTIL.SYS_YES THEN
5536 IF v_cp_enabled = MSC_UTIL.SYS_YES THEN
5537 lv_return_status := TRUE;
5538 ELSE
5539 lv_return_status := FALSE;
5540 END IF;
5541
5542 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Loading SALES_FORECAST for Process Mfg');
5543
5544 gmp_aps_ds_pull.sales_forecast(v_dblink,
5545 v_instance_id,
5546 lv_task_start_time,
5547 v_delimiter,
5548 lv_return_status);
5549
5550 v_gmp_routine_name := 'GMP_APS_DS_PULL.SALES_FORECAST';
5551
5552 IF lv_return_status = FALSE THEN
5553 RAISE GMP_ERROR;
5554 END IF;
5555
5556 END IF;
5557 */
5558 ELSIF prec.wip_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_WIP_DEMAND THEN
5559
5560 -- only call if doing discrete mfg. process does this as part of
5561 -- wip supply
5562
5563 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5564 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_WIP_PULL.LOAD_WIP_DEMAND');
5565 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5566
5567 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5568 MSC_CL_WIP_PULL.LOAD_WIP_DEMAND;
5569 END IF;
5570 /* check sales order is selected */
5571 ELSIF prec.sales_order_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_SALES_ORDER1 THEN
5572
5573 IF ( v_apps_ver>= MSC_UTIL.G_APPS115) and (v_discrete_flag = MSC_UTIL.SYS_YES) THEN -- 11i source instance only
5574 -- only call if doing discrete mfg
5575
5576 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5577 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_DEMAND_PULL.LOAD_SALES_ORDER(1)');
5578 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5579 MSC_CL_DEMAND_PULL.LOAD_SALES_ORDER(1);
5580
5581 END IF;
5582
5583 ELSIF prec.sales_order_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_SALES_ORDER2 THEN
5584
5585 IF ( v_apps_ver>= MSC_UTIL.G_APPS115) AND (v_discrete_flag = MSC_UTIL.SYS_YES) THEN -- 11i source instance only
5586 -- only call if doing discrete mfg
5587
5588 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5589 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_DEMAND_PULL.LOAD_SALES_ORDER(2)');
5590 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5591 MSC_CL_DEMAND_PULL.LOAD_SALES_ORDER(2);
5592
5593 END IF;
5594
5595 ELSIF prec.sales_order_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_SALES_ORDER3 THEN
5596
5597 IF (v_discrete_flag = MSC_UTIL.SYS_YES) THEN
5598 -- only call if doing discrete mfg
5599
5600 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5601 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_DEMAND_PULL.LOAD_SALES_ORDER(3)');
5602 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5603 MSC_CL_DEMAND_PULL.LOAD_SALES_ORDER(3);
5604
5605 END IF;
5606 /*
5607 ELSIF pTASKNUM= TASK_SALES_ORDER THEN
5608
5609 -- only call if doing discrete mfg
5610
5611 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5612 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_DEMAND_PULL.LOAD_SALES_ORDER(4)');
5613 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5614
5615 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5616 MSC_CL_DEMAND_PULL.LOAD_SALES_ORDER(4);
5617 END IF;
5618 */
5619 ELSIF pTASKNUM= TASK_AHL THEN
5620
5621 lv_sql_stmt:=
5622 'BEGIN'
5623 ||' :lv_ps_ver := MRP_CL_FUNCTION.CHECK_AHL_VER'||v_dblink||';'
5624 ||'END;';
5625
5626 EXECUTE IMMEDIATE lv_sql_stmt
5627 USING OUT lv_ps_ver;
5628
5629 IF ( v_apps_ver>= MSC_UTIL.G_APPS115) and (v_discrete_flag = MSC_UTIL.SYS_YES) and (lv_ps_ver =1) THEN -- 11i source instance only
5630 -- only call if doing discrete mfg, Is this a valid assumption --dsoosai 12/04/2003
5631
5632 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5633 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_DEMAND_PULL.LOAD_SALES_ORDER(5:AHL)');
5634 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5635 MSC_CL_DEMAND_PULL.LOAD_AHL;
5636
5637 END IF;
5638
5639 ELSIF prec.sub_inventory_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_SUB_INVENTORY THEN
5640
5641 -- call the appropriate routine for sub inventory
5642
5643 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5644 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_OTHER_PULL.LOAD_SUB_INVENTORY');
5645 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5646
5647 /* OPM Team - OPM Inventory Convergence Project
5648 Commented this has to be called for both discrete/process
5649 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN */
5650 MSC_CL_OTHER_PULL.LOAD_SUB_INVENTORY;
5651 -- END IF;
5652 IF v_process_flag = MSC_UTIL.SYS_YES and WIP_ENABLED= MSC_UTIL.SYS_YES THEN
5653 IF v_cp_enabled = MSC_UTIL.SYS_YES THEN
5654 lv_return_status := TRUE;
5655 ELSE
5656 lv_return_status := FALSE;
5657 END IF;
5658
5659
5660 /* OPM Team - OPM Inventory Convergence Project
5661 extract the process subinventories through
5662 modified mrp_ap_sub_inventories_v
5663 gmp_bom_routing_pkg.extract_sub_inventory(v_dblink,
5664 v_instance_id,
5665 lv_task_start_time,
5666 lv_return_status);
5667
5668 v_gmp_routine_name := 'GMP_BOM_ROUTING_PKG.EXTRACT_SUB_INVENTORY';
5669
5670 IF lv_return_status = FALSE THEN
5671 RAISE GMP_ERROR;
5672 END IF;
5673 */
5674 IF (v_apps_ver = MSC_UTIL.G_APPS115) THEN
5675
5676 MSC_CL_GMP_UTILITY.extract_sub_inventory(v_dblink,
5677 v_instance_id,
5678 lv_task_start_time,
5679 lv_return_status);
5680
5681 v_gmp_routine_name := 'MSC_CL_GMP_UTILITY.EXTRACT_SUB_INVENTORY';
5682
5683 IF lv_return_status = FALSE THEN
5684 RAISE GMP_ERROR;
5685 END IF;
5686
5687 END IF;
5688
5689
5690 END IF;
5691
5692 ELSIF prec.reserves_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_HARD_RESERVATION THEN
5693
5694 -- only call if doing discrete mfg
5695
5696 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5697 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_DEMAND_PULL.LOAD_HARD_RESERVATION');
5698 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5699
5700
5701 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5702 MSC_CL_DEMAND_PULL.LOAD_HARD_RESERVATION;
5703 END IF;
5704
5705 ELSIF prec.sourcing_rule_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_SOURCING THEN
5706
5707 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5708 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_OTHER_PULL.LOAD_SOURCING');
5709 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5710
5711 MSC_CL_OTHER_PULL.LOAD_SOURCING;
5712
5713 ELSIF (prec.app_supp_cap_flag = MSC_UTIL.ASL_YES or prec.app_supp_cap_flag = MSC_UTIL.ASL_YES_RETAIN_CP ) AND pTASKNUM= TASK_SUPPLIER_CAPACITY THEN
5714
5715 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5716 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_ITEM_PULL.LOAD_SUPPLIER_CAPACITY');
5717 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5718
5719 MSC_CL_ITEM_PULL.LOAD_SUPPLIER_CAPACITY;
5720
5721 ELSIF prec.item_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_CATEGORY THEN
5722
5723 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5724 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_ITEM_PULL.LOAD_CATEGORY');
5725 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5726
5727 MSC_CL_ITEM_PULL.LOAD_CATEGORY;
5728
5729 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5730 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_ITEM_PULL.INSERT_DUMMY_CATEGORIES');
5731 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5732
5733 MSC_CL_ITEM_PULL.INSERT_DUMMY_CATEGORIES ;
5734
5735 ELSIF prec.bom_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_BOM THEN
5736
5737 -- call the appropriate routine for bom
5738
5739 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5740 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_BOM_PULL.LOAD_BOM');
5741 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5742
5743
5744 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5745 MSC_CL_BOM_PULL.LOAD_BOM;
5746 END IF;
5747 IF v_process_flag = MSC_UTIL.SYS_YES and BOM_ENABLED= MSC_UTIL.SYS_YES THEN
5748 -- process will also extract routings here
5749 IF v_cp_enabled = MSC_UTIL.SYS_YES THEN
5750 lv_return_status := TRUE;
5751 ELSE
5752 lv_return_status := FALSE;
5753 END IF;
5754 IF (v_apps_ver >= MSC_UTIL.G_APPS120) THEN --bug#5684183 (bcaru)
5755 gmp_bom_routing_pkg.extract_effectivities(v_dblink,
5756 v_delimiter,
5757 v_instance_id,
5758 lv_task_start_time,
5759 lv_return_status);
5760
5761 v_gmp_routine_name := 'GMP_BOM_ROUTING_PKG.EXTRACT_EFFECTIVITIES';
5762 ELSIF (v_apps_ver = MSC_UTIL.G_APPS115) THEN
5763 MSC_CL_GMP_UTILITY.extract_effectivities(v_dblink,
5764 v_delimiter,
5765 v_instance_id,
5766 lv_task_start_time,
5767 lv_return_status);
5768
5769 v_gmp_routine_name := 'MSC_CL_GMP_UTILITY.EXTRACT_EFFECTIVITIES';
5770 END IF;
5771
5772 IF lv_return_status = FALSE THEN
5773 RAISE GMP_ERROR;
5774 END IF;
5775
5776 END IF;
5777
5778 ELSIF prec.bom_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_ROUTING THEN
5779
5780 -- only call if doing discrete mfg. process will do this with
5781 -- boms
5782
5783 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5784 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_ROUTING_PULL.LOAD_ROUTING');
5785 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5786
5787
5788 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5789 MSC_CL_ROUTING_PULL.LOAD_ROUTING;
5790 END IF;
5791
5792 ELSIF prec.bom_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_OPER_NETWORKS THEN
5793
5794 -- only call if doing discrete mfg. process will do this with
5795 -- boms
5796
5797 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5798 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_WIP_PULL.LOAD_OPER_NETWORKS');
5799 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5800
5801
5802 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5803 MSC_CL_WIP_PULL.LOAD_OPER_NETWORKS;
5804 END IF;
5805
5806 ELSIF prec.bom_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_ROUTING_OPERATIONS THEN
5807
5808 -- only call if doing discrete mfg. process will do this with
5809 -- boms
5810
5811 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5812 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_ROUTING_PULL.LOAD_ROUTING_OPERATIONS');
5813 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5814
5815
5816 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5817 MSC_CL_ROUTING_PULL.LOAD_ROUTING_OPERATIONS;
5818 END IF;
5819
5820 ELSIF prec.bom_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_OPERATION_RES_SEQS THEN
5821
5822 -- only call if doing discrete mfg. process will do this with
5823 -- boms
5824
5825 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5826 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'LOAD_OPERATION_RES_SEQ');
5827 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5828
5829
5830 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5831 MSC_CL_ROUTING_PULL.LOAD_OPERATION_RES_SEQS;
5832 END IF;
5833 ELSIF prec.bom_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_OPERATION_RESOURCES THEN
5834
5835 -- only call if doing discrete mfg. process will do this with
5836 -- boms
5837
5838 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5839 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_ROUTING_PULL.LOAD_OPERATION_RESOURCES');
5840 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5841
5842
5843 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5844 MSC_CL_ROUTING_PULL.LOAD_OPERATION_RESOURCES;
5845 END IF;
5846 ELSIF prec.bom_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_OPERATION_COMPONENTS THEN
5847
5848 -- only call if doing discrete mfg. process will do this with
5849 -- boms
5850
5851 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5852 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_ROUTING_PULL.LOAD_OPERATION_COMPONENTS');
5853 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5854
5855
5856 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5857 MSC_CL_ROUTING_PULL.LOAD_OPERATION_COMPONENTS;
5858 END IF;
5859 ELSIF prec.bom_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_PROCESS_EFFECTIVITY THEN
5860
5861 -- only call if doing discrete mfg. process will do this with
5862 -- boms
5863
5864 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5865 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_BOM_PULL.LOAD_PROCESS_EFFECTIVITY');
5866 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5867
5868
5869 IF v_discrete_flag = MSC_UTIL.SYS_YES THEN
5870 MSC_CL_BOM_PULL.LOAD_PROCESS_EFFECTIVITY;
5871 END IF;
5872
5873 ELSIF prec.unit_number_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_UNIT_NUMBER THEN
5874
5875 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5876 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_OTHER_PULL.LOAD_UNIT_NUMBER');
5877 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5878
5879 MSC_CL_OTHER_PULL.LOAD_UNIT_NUMBER;
5880
5881 ELSIF prec.saf_stock_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_SAFETY_STOCK THEN
5882
5883 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5884 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_OTHER_PULL.LOAD_SAFETY_STOCK');
5885 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5886
5887 MSC_CL_OTHER_PULL.LOAD_SAFETY_STOCK;
5888
5889 ELSIF prec.project_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_PROJECT THEN
5890
5891 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5892 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_OTHER_PULL.LOAD_PROJECT');
5893 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5894
5895 MSC_CL_OTHER_PULL.LOAD_PROJECT;
5896
5897 ELSIF prec.parameter_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_PARAMETER THEN
5898
5899 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5900 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_SETUP_PULL.LOAD_PARAMETER');
5901 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5902
5903 MSC_CL_SETUP_PULL.LOAD_PARAMETER;
5904
5905 ELSIF prec.uom_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_UOM THEN
5906
5907 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5908 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_SETUP_PULL.LOAD_UOM');
5909 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5910
5911 MSC_CL_SETUP_PULL.LOAD_UOM;
5912
5913 ELSIF prec.kpi_bis_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_BIS THEN
5914
5915 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5916 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'LOAD_BIS');
5917 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5918
5919
5920 IF v_apps_ver= MSC_UTIL.G_APPS110 THEN
5921
5922 MSC_CL_OTHER_PULL.LOAD_BIS110;
5923
5924 ELSIF v_apps_ver>= MSC_UTIL.G_APPS115 THEN
5925
5926 MSC_CL_OTHER_PULL.LOAD_BIS115;
5927
5928 ELSIF v_apps_ver= MSC_UTIL.G_APPS107 THEN
5929
5930 MSC_CL_OTHER_PULL.LOAD_BIS107;
5931
5932 END IF;
5933
5934 ELSIF prec.atp_rules_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_ATP_RULES THEN
5935
5936 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5937 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_OTHER_PULL.LOAD_ATP_RULES');
5938 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5939
5940 MSC_CL_OTHER_PULL.LOAD_ATP_RULES;
5941
5942 ELSIF prec.user_supply_demand_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_USER_SUPPLY THEN
5943
5944 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5945 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_SUPPLY_PULL.LOAD_USER_SUPPLY');
5946 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5947
5948 MSC_CL_SUPPLY_PULL.LOAD_USER_SUPPLY;
5949
5950 ELSIF prec.user_supply_demand_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_USER_DEMAND THEN
5951
5952 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5953 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_DEMAND_PULL.LOAD_USER_DEMAND');
5954 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5955
5956 MSC_CL_DEMAND_PULL.LOAD_USER_DEMAND;
5957
5958 ELSIF prec.planner_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_PLANNERS THEN
5959
5960 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5961 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_OTHER_PULL.LOAD_PLANNERS');
5962 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5963
5964 MSC_CL_OTHER_PULL.LOAD_PLANNERS;
5965
5966 -- Added this new task for Prod. Subst ---
5967 ELSIF prec.item_subst_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_ITEM_SUBSTITUTES THEN
5968
5969 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5970 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_ITEM_PULL.LOAD_ITEM_SUBSTITUTES');
5971 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5972
5973 IF ( v_apps_ver >= MSC_UTIL.G_APPS115 ) THEN
5974 MSC_CL_ITEM_PULL.LOAD_ITEM_SUBSTITUTES;
5975 END IF;
5976
5977 ELSIF prec.demand_class_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_DEMAND_CLASS THEN
5978
5979 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5980 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_OTHER_PULL.LOAD_DEMAND_CLASS');
5981 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5982
5983 MSC_CL_OTHER_PULL.LOAD_DEMAND_CLASS;
5984
5985 ELSIF (prec.tp_customer_flag = MSC_UTIL.SYS_YES OR prec.tp_vendor_flag = MSC_UTIL.SYS_YES) AND pTASKNUM= TASK_BUYER_CONTACT THEN
5986
5987 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
5988 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_SETUP_PULL.LOAD_BUYER_CONTACT');
5989 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
5990 MSC_CL_SETUP_PULL.LOAD_BUYER_CONTACT;
5991
5992 /* SCE Change starts */
5993
5994 ELSIF (prec.user_company_flag <> MSC_UTIL.NO_USER_COMPANY) AND pTASKNUM = TASK_USER_COMPANY THEN
5995
5996 /* Pull User Company association only if Collection mode is either complete
5997 refresh or targeted refresh.
5998 We do not collect association in net change refresh since there is
5999 no snapshot in the source for fnd_user*/
6000
6001 IF v_lrnn = -1 THEN
6002
6003 /* Pull User Company association only if Apps version is MSC_UTIL.G_APPS115 */
6004
6005 IF v_apps_ver >= MSC_UTIL.G_APPS115 THEN
6006
6007 /* Pull User Company association only if MSC:Configuration is APS or APS+SCE */
6008 IF (MSC_UTIL.G_MSC_CONFIGURATION = MSC_UTIL.G_CONF_APS_SCE
6009 OR
6010 MSC_UTIL.G_MSC_CONFIGURATION = MSC_UTIL.G_CONF_SCE) THEN
6011
6012 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
6013 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_SCE_COLLECTION.PULL_USER_COMPANY');
6014 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
6015
6016 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Value of USER_COMPANY_ENABLED :'||USER_COMPANY_ENABLED);
6017 MSC_CL_SCE_COLLECTION.PULL_USER_COMPANY(v_dblink,
6018 v_instance_id,
6019 lv_return_status,
6020 USER_COMPANY_ENABLED);
6021 IF (lv_return_status = FALSE) THEN
6022 pSTATUS := FAIL;
6023 END IF;
6024 END IF; /* IF MSC_UTIL.G_MSC_CONFIGURATION */
6025 END IF; /* IF v_apps_ver >= MSC_UTIL.G_APPS115 */
6026 END IF; /* IF v_lrnn */
6027
6028 /* SCE Change ends */
6029
6030 /* CP-ACK starts */
6031 ELSIF (prec.supplier_response_flag = MSC_UTIL.SYS_YES) AND pTASKNUM = TASK_SUPPLIER_RESPONSE THEN
6032
6033 /* Pull supplier responses only if Supplier Response flag is set
6034 to Yes */
6035 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Value of SUPPLIER_RESPONSE_ENABLED :'||SUPPLIER_RESPONSE_ENABLED);
6036
6037 IF (SUPPLIER_RESPONSE_ENABLED = MSC_UTIL.SYS_YES) THEN
6038
6039 /* Pull Supplier response only if Apps version is MSC_UTIL.G_APPS115 */
6040
6041 IF v_apps_ver >= MSC_UTIL.G_APPS115 THEN
6042
6043 /* Pull Supplier Response only if MSC:Configuration is CP or APS+CP */
6044
6045 IF (MSC_UTIL.G_MSC_CONFIGURATION = MSC_UTIL.G_CONF_APS_SCE
6046 OR
6047 MSC_UTIL.G_MSC_CONFIGURATION = MSC_UTIL.G_CONF_SCE) THEN
6048
6049 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
6050 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_SUPPLIER_RESP.PULL_SUPPLIER_RESP');
6051 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
6052
6053 MSC_CL_SUPPLIER_RESP.PULL_SUPPLIER_RESP(v_dblink,
6054 v_instance_id,
6055 lv_return_status,
6056 SUPPLIER_RESPONSE_ENABLED,
6057 v_refresh_id,
6058 v_lrn,
6059 MSC_UTIL.v_in_org_str
6060 );
6061 IF (lv_return_status = FALSE) THEN
6062 pSTATUS := FAIL;
6063 END IF;
6064 END IF; /* IF MSC_UTIL.G_MSC_CONFIGURATION */
6065 END IF; /* IF v_apps_ver >= MSC_UTIL.G_APPS115 */
6066 END IF;
6067 /* CP-ACK ends */
6068
6069 ELSIF prec.trip_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_TRIP THEN
6070
6071 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
6072 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_OTHER_PULL.LOAD_TRIP');
6073 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
6074
6075 MSC_CL_OTHER_PULL.LOAD_TRIP;
6076
6077
6078 ELSIF prec.sales_channel_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_SALES_CHANNEL THEN
6079
6080 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
6081 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_OTHER_PULL.LOAD_SALES_CHANNEL');
6082 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,FND_MESSAGE.GET);
6083
6084 MSC_CL_OTHER_PULL.LOAD_SALES_CHANNEL;
6085
6086 ELSIF prec.fiscal_calendar_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_FISCAL_CALENDAR THEN
6087
6088 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
6089 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_OTHER_PULL.LOAD_FISCAL_CALENDAR');
6090 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,FND_MESSAGE.GET);
6091
6092 MSC_CL_OTHER_PULL.LOAD_FISCAL_CALENDAR;
6093
6094 ELSIF (prec.internal_repair_flag = MSC_UTIL.SYS_YES) AND (MSC_UTIL.G_COLLECT_SRP_DATA='Y') AND (pTASKNUM= TASK_IRO) THEN
6095
6096 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
6097 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_RPO_PULL.LOAD_IRO');
6098 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,FND_MESSAGE.GET);
6099 /* changes for executing repair order load Bug# 5909379 */
6100 MSC_CL_RPO_PULL.LOAD_IRO;
6101
6102 ELSIF (prec.internal_repair_flag = MSC_UTIL.SYS_YES) AND (MSC_UTIL.G_COLLECT_SRP_DATA='Y') AND (pTASKNUM= TASK_IRO_DEMAND) THEN
6103
6104 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
6105 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_RPO_PULL.LOAD_IRO_DEMAND');
6106 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,FND_MESSAGE.GET);
6107 /* changes for executing repair order load Bug# 5909379 */
6108 MSC_CL_RPO_PULL.LOAD_IRO_DEMAND;
6109
6110 ELSIF (prec.external_repair_flag = MSC_UTIL.SYS_YES) AND (MSC_UTIL.G_COLLECT_SRP_DATA='Y') AND (pTASKNUM= TASK_ERO) THEN
6111
6112 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
6113 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_RPO_PULL.LOAD_ERO');
6114 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,FND_MESSAGE.GET);
6115 /* changes for executing repair order load Bug# 5935273*/
6116 MSC_CL_RPO_PULL.LOAD_ERO;
6117
6118 ELSIF (prec.external_repair_flag = MSC_UTIL.SYS_YES) AND (MSC_UTIL.G_COLLECT_SRP_DATA='Y') AND (pTASKNUM= TASK_ERO_DEMAND) THEN
6119
6120 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
6121 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_RPO_PULL.LOAD_ERO_DEMAND');
6122 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,FND_MESSAGE.GET);
6123 /* changes for executing repair order load Bug# 5935273 */
6124 MSC_CL_RPO_PULL.LOAD_ERO_DEMAND;
6125
6126
6127 ELSIF prec.payback_demand_supply_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_PAYBACK_DEMAND_SUPPLY THEN
6128
6129 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
6130 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'LOAD_OPEN_PAYBACKS');
6131 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,FND_MESSAGE.GET);
6132
6133 MSC_CL_DEMAND_PULL.LOAD_OPEN_PAYBACKS;
6134
6135 /* changes for currency conversion bug # 6469722 */
6136 ELSIF prec.currency_conversion_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_CURRENCY_CONVERSION THEN -- bug # 6469722
6137 IF (MSC_CL_OTHER_PULL.G_MSC_HUB_CURR_CODE IS NOT NULL) THEN
6138 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
6139 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'MSC_CL_OTHER_PULL.LOAD_CURRENCY_CONVERSION');
6140 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,FND_MESSAGE.GET);
6141
6142 MSC_CL_OTHER_PULL.LOAD_CURRENCY_CONVERSION;
6143 ELSE
6144 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, 'Currency Data is not collected as MSC:Planning Hub Currency Code Profile is NULL.');
6145 END IF;
6146 ELSIF prec.delivery_details_flag = MSC_UTIL.SYS_YES AND pTASKNUM= TASK_DELIVERY_DETAILS THEN
6147
6148 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_START');
6149 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'LOAD_DELIVERY_DETAILS');
6150 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,FND_MESSAGE.GET);
6151
6152 MSC_CL_OTHER_PULL.LOAD_DELIVERY_DETAILS;
6153 END IF;
6154
6155 -- ======== If no exception occurs, then returns with status = OK ========
6156 pSTATUS := OK;
6157
6158 -- agmcont
6159 -- restore value of v_lrnn and v_lrn
6160 if (v_is_cont_refresh = MSC_UTIL.SYS_YES) then
6161 v_lrnn := pLRN;
6162 v_lrn := TO_CHAR(pLRN);
6163 end if;
6164
6165 EXCEPTION--LOAD_DATA
6166
6167 WHEN EX_SERIALIZATION_ERROR THEN
6168
6169 ROLLBACK WORK TO SAVEPOINT ExecuteTask;
6170
6171 RETURN;
6172
6173 WHEN GMP_ERROR THEN
6174
6175 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_GMP_ERR');
6176 FND_MESSAGE.SET_TOKEN('ROUTINE', v_gmp_routine_name);
6177
6178 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
6179
6180 RAISE;
6181
6182 WHEN OTHERS THEN
6183
6184 FND_MESSAGE.SET_NAME('MSC', 'MSC_DP_TASK_ERR');
6185 FND_MESSAGE.SET_TOKEN('TABLE', v_table_name);
6186 FND_MESSAGE.SET_TOKEN('VIEW', v_view_name);
6187
6188 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR, FND_MESSAGE.GET);
6189
6190 RAISE;
6191
6192 END;--LOAD_DATA
6193
6194 FND_MESSAGE.SET_NAME('MSC', 'MSC_ELAPSED_TIME');
6195 FND_MESSAGE.SET_TOKEN('ELAPSED_TIME',
6196 TO_CHAR(CEIL((SYSDATE- lv_task_start_time)*14400.0)/10));
6197 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, FND_MESSAGE.GET);
6198 msc_util.print_top_wait(CEIL((SYSDATE- lv_task_start_time)*14400.0)/10);
6199 msc_util.print_cum_stat(CEIL((SYSDATE- lv_task_start_time)*14400.0)/10);
6200 msc_util.print_bad_sqls(CEIL((SYSDATE- lv_task_start_time)*14400.0)/10);
6201
6202
6203 EXCEPTION
6204
6205 WHEN OTHERS THEN
6206 IF SQLCODE IN (-01578,-26040) THEN
6207 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR,SQLERRM);
6208 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR,'To rectify this problem -');
6209 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR,'Run concurrent program "Truncate Planning Staging Tables" ');
6210 ELSE
6211 MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_FATAL_ERR,SQLERRM);
6212 END IF;
6213 RAISE;
6214
6215 END EXECUTE_TASK;
6216
6217
6218 -- ==================================================
6219
6220 PROCEDURE ANALYZE_ALL_ST_TABLE
6221 IS
6222
6223 CURSOR tab_list(p_owner varchar) IS
6224 SELECT table_name
6225 FROM all_tables
6226 WHERE owner=p_owner
6227 AND table_name like 'MSC_ST_%'
6228 AND temporary <> 'Y';
6229
6230 var_table_name VARCHAR2(30);
6231 v_msc_schema VARCHAR2(32);
6232 lv_retval boolean;
6233 lv_dummy1 varchar2(32);
6234 lv_dummy2 varchar2(32);
6235
6236 BEGIN
6237 lv_retval := FND_INSTALLATION.GET_APP_INFO ('MSC', lv_dummy1, lv_dummy2, v_msc_schema);
6238 OPEN tab_list(v_msc_schema);
6239 LOOP
6240 FETCH tab_list INTO var_table_name;
6241
6242 EXIT WHEN tab_list%NOTFOUND;
6243
6244 fnd_stats.gather_table_stats(v_msc_schema, var_table_name, 10, 4);
6245
6246 END LOOP;
6247
6248 END ANALYZE_ALL_ST_TABLE;
6249
6250
6251 PROCEDURE ANALYZE_ST_TABLE( pTASK_NUMBER IN NUMBER)
6252 IS
6253
6254 lv_pctg NUMBER:= 10;
6255 lv_deg NUMBER:= 4;
6256 lv_owner VARCHAR2(30);
6257
6258 CURSOR tab_list is
6259 SELECT a.oracle_username
6260 FROM FND_ORACLE_USERID a, FND_PRODUCT_INSTALLATIONS b
6261 WHERE a.oracle_id = b.oracle_id
6262 and b.application_id= 724;
6263
6264 BEGIN
6265
6266 OPEN tab_list;
6267 FETCH tab_list INTO lv_owner;
6268 IF tab_list%NOTFOUND THEN RETURN; END IF;
6269 CLOSE tab_list;
6270
6271 IF pTASK_NUMBER= TASK_BOM THEN
6272
6273 TSK_RM_BOM_COMPONENTS:= TSK_RM_BOM_COMPONENTS - 1;
6274 IF TSK_RM_BOM_COMPONENTS=0 THEN
6275 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_BOM_COMPONENTS',lv_pctg,lv_deg);
6276 END IF;
6277
6278 TSK_RM_BOMS:= TSK_RM_BOMS - 1;
6279 IF TSK_RM_BOMS=0 THEN
6280 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_BOMS',lv_pctg,lv_deg);
6281 END IF;
6282
6283 TSK_RM_COMPONENT_SUBSTITUTES:= TSK_RM_COMPONENT_SUBSTITUTES- 1;
6284 IF TSK_RM_COMPONENT_SUBSTITUTES=0 THEN
6285 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_COMPONENT_SUBSTITUTES',lv_pctg,lv_deg);
6286 END IF;
6287
6288 ELSIF pTASK_NUMBER= TASK_ROUTING THEN
6289
6290 TSK_RM_ROUTINGS:= TSK_RM_ROUTINGS- 1;
6291 IF TSK_RM_ROUTINGS=0 THEN
6292 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_ROUTINGS',lv_pctg,lv_deg);
6293 END IF;
6294
6295 TSK_RM_ROUTING_OPERATIONS:= TSK_RM_ROUTING_OPERATIONS- 1;
6296 IF TSK_RM_ROUTING_OPERATIONS=0 THEN
6297 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_ROUTING_OPERATIONS',lv_pctg,lv_deg);
6298 END IF;
6299
6300 TSK_RM_OPERATION_RESOURCE_SEQS:= TSK_RM_OPERATION_RESOURCE_SEQS- 1;
6301 IF TSK_RM_OPERATION_RESOURCE_SEQS=0 THEN
6302 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_OPERATION_RESOURCE_SEQS',lv_pctg,lv_deg);
6303 END IF;
6304
6305 TSK_RM_OPERATION_RESOURCES:= TSK_RM_OPERATION_RESOURCES- 1;
6306 IF TSK_RM_OPERATION_RESOURCES=0 THEN
6307 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_OPERATION_RESOURCES',lv_pctg,lv_deg);
6308 END IF;
6309
6310 TSK_RM_OPERATION_COMPONENTS:= TSK_RM_OPERATION_COMPONENTS- 1;
6311 IF TSK_RM_OPERATION_COMPONENTS=0 THEN
6312 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_OPERATION_COMPONENTS',lv_pctg,lv_deg);
6313 END IF;
6314
6315 TSK_RM_PROCESS_EFFECTIVITY:= TSK_RM_PROCESS_EFFECTIVITY- 1;
6316 IF TSK_RM_PROCESS_EFFECTIVITY=0 THEN
6317 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_PROCESS_EFFECTIVITY',lv_pctg,lv_deg);
6318 END IF;
6319
6320 ELSIF pTASK_NUMBER= TASK_BOR THEN
6321
6322 TSK_RM_BILL_OF_RESOURCES:= TSK_RM_BILL_OF_RESOURCES- 1;
6323 IF TSK_RM_BILL_OF_RESOURCES=0 THEN
6324 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_BILL_OF_RESOURCES',lv_pctg,lv_deg);
6325 END IF;
6326
6327 TSK_RM_BOR_REQUIREMENTS:= TSK_RM_BOR_REQUIREMENTS- 1;
6328 IF TSK_RM_BOR_REQUIREMENTS=0 THEN
6329 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_BOR_REQUIREMENTS',lv_pctg,lv_deg);
6330 END IF;
6331
6332 ELSIF pTASK_NUMBER= TASK_CALENDAR_DATE THEN
6333
6334 TSK_RM_RESOURCE_CHANGES:= TSK_RM_RESOURCE_CHANGES- 1;
6335 IF TSK_RM_RESOURCE_CHANGES=0 THEN
6336 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_RESOURCE_CHANGES',lv_pctg,lv_deg);
6337 END IF;
6338
6339 TSK_RM_CALENDAR_DATES:= TSK_RM_CALENDAR_DATES- 1;
6340 IF TSK_RM_CALENDAR_DATES=0 THEN
6341 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_CALENDAR_DATES',lv_pctg,lv_deg);
6342 END IF;
6343
6344 TSK_RM_PERIOD_START_DATES:= TSK_RM_PERIOD_START_DATES- 1;
6345 IF TSK_RM_PERIOD_START_DATES=0 THEN
6346 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_PERIOD_START_DATES',lv_pctg,lv_deg);
6347 END IF;
6348
6349 TSK_RM_CAL_YEAR_START_DATES:= TSK_RM_CAL_YEAR_START_DATES- 1;
6350 IF TSK_RM_CAL_YEAR_START_DATES=0 THEN
6351 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_CAL_YEAR_START_DATES',lv_pctg,lv_deg);
6352 END IF;
6353
6354 TSK_RM_CAL_WEEK_START_DATES:= TSK_RM_CAL_WEEK_START_DATES- 1;
6355 IF TSK_RM_CAL_WEEK_START_DATES=0 THEN
6356 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_CAL_WEEK_START_DATES',lv_pctg,lv_deg);
6357 END IF;
6358
6359 TSK_RM_RESOURCE_SHIFTS:= TSK_RM_RESOURCE_SHIFTS- 1;
6360 IF TSK_RM_RESOURCE_SHIFTS=0 THEN
6361 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_RESOURCE_SHIFTS',lv_pctg,lv_deg);
6362 END IF;
6363
6364 TSK_RM_CALENDAR_SHIFTS:= TSK_RM_CALENDAR_SHIFTS- 1;
6365 IF TSK_RM_CALENDAR_SHIFTS=0 THEN
6366 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_CALENDAR_SHIFTS',lv_pctg,lv_deg);
6367 END IF;
6368
6369 TSK_RM_SHIFT_DATES:= TSK_RM_SHIFT_DATES- 1;
6370 IF TSK_RM_SHIFT_DATES=0 THEN
6371 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SHIFT_DATES',lv_pctg,lv_deg);
6372 END IF;
6373
6374 TSK_RM_SHIFT_TIMES:= TSK_RM_SHIFT_TIMES- 1;
6375 IF TSK_RM_SHIFT_TIMES=0 THEN
6376 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SHIFT_TIMES',lv_pctg,lv_deg);
6377 END IF;
6378
6379 TSK_RM_SHIFT_EXCEPTIONS:= TSK_RM_SHIFT_EXCEPTIONS- 1;
6380 IF TSK_RM_SHIFT_EXCEPTIONS=0 THEN
6381 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SHIFT_EXCEPTIONS',lv_pctg,lv_deg);
6382 END IF;
6383
6384 TSK_RM_CALENDAR_ASSIGNMENTS:= TSK_RM_CALENDAR_ASSIGNMENTS- 1;
6385 IF TSK_RM_CALENDAR_ASSIGNMENTS=0 THEN
6386 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_CALENDAR_ASSIGNMENTS',lv_pctg,lv_deg);
6387 END IF;
6388
6389 ELSIF pTASK_NUMBER= TASK_CATEGORY THEN
6390
6391 TSK_RM_ITEM_CATEGORIES:= TSK_RM_ITEM_CATEGORIES- 1;
6392 IF TSK_RM_ITEM_CATEGORIES=0 THEN
6393 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_ITEM_CATEGORIES',lv_pctg,lv_deg);
6394 END IF;
6395
6396 TSK_RM_CATEGORY_SETS:= TSK_RM_CATEGORY_SETS- 1;
6397 IF TSK_RM_CATEGORY_SETS=0 THEN
6398 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_CATEGORY_SETS',lv_pctg,lv_deg);
6399 END IF;
6400
6401 ELSIF pTASK_NUMBER= TASK_MDS_DEMAND THEN
6402
6403 TSK_RM_DEMANDS:= TSK_RM_DEMANDS- 1;
6404 IF TSK_RM_DEMANDS=0 THEN
6405 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_DEMANDS',lv_pctg,lv_deg);
6406 END IF;
6407
6408 ELSIF pTASK_NUMBER= TASK_WIP_DEMAND THEN
6409
6410 TSK_RM_DEMANDS:= TSK_RM_DEMANDS- 1;
6411 IF TSK_RM_DEMANDS=0 THEN
6412 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_DEMANDS',lv_pctg,lv_deg);
6413 END IF;
6414
6415 ELSIF pTASK_NUMBER in (TASK_SALES_ORDER1,TASK_SALES_ORDER2,TASK_SALES_ORDER3,TASK_AHL) THEN
6416
6417 TSK_RM_SALES_ORDERS:= TSK_RM_SALES_ORDERS- 1;
6418 IF TSK_RM_SALES_ORDERS=0 THEN
6419 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SALES_ORDERS',lv_pctg,lv_deg);
6420 END IF;
6421
6422 ELSIF pTASK_NUMBER= TASK_HARD_RESERVATION THEN
6423
6424 TSK_RM_RESERVATIONS:= TSK_RM_RESERVATIONS- 1;
6425 IF TSK_RM_RESERVATIONS=0 THEN
6426 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_RESERVATIONS',lv_pctg,lv_deg);
6427 END IF;
6428
6429 ELSIF pTASK_NUMBER IN ( TASK_ITEM1, TASK_ITEM2, TASK_ITEM3) THEN
6430
6431 TSK_RM_SYSTEM_ITEMS:= TSK_RM_SYSTEM_ITEMS- 1;
6432 IF TSK_RM_SYSTEM_ITEMS=0 THEN
6433 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SYSTEM_ITEMS',lv_pctg,lv_deg);
6434 END IF;
6435
6436 ELSIF pTASK_NUMBER = TASK_BUYER_CONTACT THEN
6437
6438 TSK_RM_PARTNER_CONTACTS:= TSK_RM_PARTNER_CONTACTS- 1;
6439 IF TSK_RM_PARTNER_CONTACTS=0 THEN
6440 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_PARTNER_CONTACTS',lv_pctg,lv_deg);
6441 END IF;
6442
6443 ELSIF pTASK_NUMBER = TASK_RESOURCE THEN
6444
6445 TSK_RM_DEPARTMENT_RESOURCES:= TSK_RM_DEPARTMENT_RESOURCES- 1;
6446 IF TSK_RM_DEPARTMENT_RESOURCES=0 THEN
6447 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_DEPARTMENT_RESOURCES',lv_pctg,lv_deg);
6448 END IF;
6449
6450 TSK_RM_SIMULATION_SETS:= TSK_RM_SIMULATION_SETS- 1;
6451 IF TSK_RM_SIMULATION_SETS=0 THEN
6452 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SIMULATION_SETS',lv_pctg,lv_deg);
6453 END IF;
6454
6455 TSK_RM_RESOURCE_GROUPS:= TSK_RM_RESOURCE_GROUPS- 1;
6456 IF TSK_RM_RESOURCE_GROUPS=0 THEN
6457 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_RESOURCE_GROUPS',lv_pctg,lv_deg);
6458 END IF;
6459
6460 TSK_RM_RESOURCE_REQUIREMENTS:= TSK_RM_RESOURCE_REQUIREMENTS- 1;
6461 IF TSK_RM_RESOURCE_REQUIREMENTS=0 THEN
6462 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_RESOURCE_REQUIREMENTS',lv_pctg,lv_deg);
6463 END IF;
6464
6465 ELSIF pTASK_NUMBER = TASK_SAFETY_STOCK THEN
6466
6467 TSK_RM_SAFETY_STOCKS:= TSK_RM_SAFETY_STOCKS- 1;
6468 IF TSK_RM_SAFETY_STOCKS=0 THEN
6469 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SAFETY_STOCKS',lv_pctg,lv_deg);
6470 END IF;
6471
6472 ELSIF pTASK_NUMBER = TASK_SCHEDULE THEN
6473
6474 TSK_RM_DESIGNATORS:= TSK_RM_DESIGNATORS- 1;
6475 IF TSK_RM_DESIGNATORS=0 THEN
6476 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_DESIGNATORS',lv_pctg,lv_deg);
6477 END IF;
6478
6479 ELSIF pTASK_NUMBER = TASK_SOURCING THEN
6480
6481 TSK_RM_ASSIGNMENT_SETS:= TSK_RM_ASSIGNMENT_SETS- 1;
6482 IF TSK_RM_ASSIGNMENT_SETS=0 THEN
6483 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_ASSIGNMENT_SETS',lv_pctg,lv_deg);
6484 END IF;
6485
6486 TSK_RM_SR_ASSIGNMENTS:= TSK_RM_SR_ASSIGNMENTS- 1;
6487 IF TSK_RM_SR_ASSIGNMENTS=0 THEN
6488 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SR_ASSIGNMENTS',lv_pctg,lv_deg);
6489 END IF;
6490
6491 TSK_RM_SOURCING_RULES:= TSK_RM_SOURCING_RULES- 1;
6492 IF TSK_RM_SOURCING_RULES=0 THEN
6493 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SOURCING_RULES',lv_pctg,lv_deg);
6494 END IF;
6495
6496 TSK_RM_SR_RECEIPT_ORG:= TSK_RM_SR_RECEIPT_ORG- 1;
6497 IF TSK_RM_SR_RECEIPT_ORG=0 THEN
6498 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SR_RECEIPT_ORG',lv_pctg,lv_deg);
6499 END IF;
6500
6501 TSK_RM_SR_SOURCE_ORG:= TSK_RM_SR_SOURCE_ORG- 1;
6502 IF TSK_RM_SR_SOURCE_ORG=0 THEN
6503 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SR_SOURCE_ORG',lv_pctg,lv_deg);
6504 END IF;
6505
6506 TSK_RM_INTERORG_SHIP_METHODS:= TSK_RM_INTERORG_SHIP_METHODS- 1;
6507 IF TSK_RM_INTERORG_SHIP_METHODS=0 THEN
6508 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_INTERORG_SHIP_METHODS',lv_pctg,lv_deg);
6509 END IF;
6510
6511 TSK_RM_REGIONS := TSK_RM_REGIONS - 1;
6512 IF TSK_RM_REGIONS = 0 THEN
6513 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_REGIONS',lv_pctg,lv_deg);
6514 END IF;
6515
6516 TSK_RM_ZONE_REGIONS := TSK_RM_ZONE_REGIONS - 1;
6517 IF TSK_RM_ZONE_REGIONS = 0 THEN
6518 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_ZONE_REGIONS',lv_pctg,lv_deg);
6519 END IF;
6520
6521 TSK_RM_CARRIER_SERVICES:= TSK_RM_CARRIER_SERVICES- 1;
6522 IF TSK_RM_CARRIER_SERVICES=0 THEN
6523 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_CARRIER_SERVICES',lv_pctg,lv_deg);
6524 END IF;
6525
6526 TSK_RM_REGION_SITES:= TSK_RM_REGION_SITES- 1;
6527 IF TSK_RM_REGION_SITES=0 THEN
6528 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_REGION_SITES',lv_pctg,lv_deg);
6529 END IF;
6530
6531 ELSIF pTASK_NUMBER = TASK_SUB_INVENTORY THEN
6532
6533 TSK_RM_SUB_INVENTORIES:= TSK_RM_SUB_INVENTORIES- 1;
6534 IF TSK_RM_SUB_INVENTORIES=0 THEN
6535 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SUB_INVENTORIES',lv_pctg,lv_deg);
6536 END IF;
6537
6538 ELSIF pTASK_NUMBER = TASK_SUPPLIER_CAPACITY THEN
6539
6540 TSK_RM_ITEM_SUPPLIERS:= TSK_RM_ITEM_SUPPLIERS- 1;
6541 IF TSK_RM_ITEM_SUPPLIERS=0 THEN
6542 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_ITEM_SUPPLIERS',lv_pctg,lv_deg);
6543 END IF;
6544
6545 TSK_RM_SUPPLIER_CAPACITIES:= TSK_RM_SUPPLIER_CAPACITIES- 1;
6546 IF TSK_RM_SUPPLIER_CAPACITIES=0 THEN
6547 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SUPPLIER_CAPACITIES',lv_pctg,lv_deg);
6548 END IF;
6549
6550 TSK_RM_SUPPLIER_FLEX_FENCES:= TSK_RM_SUPPLIER_FLEX_FENCES- 1;
6551 IF TSK_RM_SUPPLIER_FLEX_FENCES=0 THEN
6552 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SUPPLIER_FLEX_FENCES',lv_pctg,lv_deg);
6553 END IF;
6554
6555 ELSIF pTASK_NUMBER IN ( TASK_PO_SUPPLY, TASK_WIP_SUPPLY, TASK_OH_SUPPLY, TASK_MPS_SUPPLY, TASK_PO_PO_SUPPLY, TASK_PO_REQ_SUPPLY) THEN
6556
6557 TSK_RM_SUPPLIES:= TSK_RM_SUPPLIES- 1;
6558 IF TSK_RM_SUPPLIES=0 THEN
6559 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SUPPLIES',lv_pctg,lv_deg);
6560 END IF;
6561
6562 TSK_RM_JOB_OP_NETWORKS := TSK_RM_JOB_OP_NETWORKS - 1;
6563 IF TSK_RM_JOB_OP_NETWORKS=0 THEN
6564 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_JOB_OPERATION_NETWORKS',lv_pctg,lv_deg);
6565 END IF;
6566
6567 TSK_RM_JOB_OPERATIONS := TSK_RM_JOB_OPERATIONS - 1;
6568 IF TSK_RM_JOB_OPERATIONS=0 THEN
6569 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_JOB_OPERATIONS',lv_pctg,lv_deg);
6570 END IF;
6571
6572 TSK_RM_JOB_REQUIREMENT_OPS := TSK_RM_JOB_REQUIREMENT_OPS - 1;
6573 IF TSK_RM_JOB_REQUIREMENT_OPS=0 THEN
6574 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_JOB_REQUIREMENT_OPS',lv_pctg,lv_deg);
6575 END IF;
6576
6577 TSK_RM_JOB_OP_RESOURCES := TSK_RM_JOB_OP_RESOURCES - 1;
6578 IF TSK_RM_JOB_OP_RESOURCES=0 THEN
6579 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_JOB_OP_RESOURCES',lv_pctg,lv_deg);
6580 END IF;
6581
6582 ELSIF pTASK_NUMBER = TASK_TRADING_PARTNER THEN
6583
6584 TSK_RM_TRADING_PARTNERS:= TSK_RM_TRADING_PARTNERS- 1;
6585 IF TSK_RM_TRADING_PARTNERS=0 THEN
6586 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_TRADING_PARTNERS',lv_pctg,lv_deg);
6587 END IF;
6588
6589 TSK_RM_TRADING_PARTNER_SITES:= TSK_RM_TRADING_PARTNER_SITES- 1;
6590 IF TSK_RM_TRADING_PARTNER_SITES=0 THEN
6591 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_TRADING_PARTNER_SITES',lv_pctg,lv_deg);
6592 END IF;
6593
6594 TSK_RM_LOCATION_ASSOCIATIONS:= TSK_RM_LOCATION_ASSOCIATIONS- 1;
6595 IF TSK_RM_LOCATION_ASSOCIATIONS=0 THEN
6596 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_LOCATION_ASSOCIATIONS',lv_pctg,lv_deg);
6597 END IF;
6598
6599 TSK_RM_PARTNER_CONTACTS:= TSK_RM_PARTNER_CONTACTS- 1;
6600 IF TSK_RM_PARTNER_CONTACTS=0 THEN
6601 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_PARTNER_CONTACTS',lv_pctg,lv_deg);
6602 END IF;
6603
6604 ELSIF pTASK_NUMBER = TASK_UNIT_NUMBER THEN
6605
6606 TSK_RM_UNIT_NUMBERS:= TSK_RM_UNIT_NUMBERS- 1;
6607 IF TSK_RM_UNIT_NUMBERS=0 THEN
6608 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_UNIT_NUMBERS',lv_pctg,lv_deg);
6609 END IF;
6610
6611 ELSIF pTASK_NUMBER = TASK_PROJECT THEN
6612
6613 TSK_RM_PROJECTS:= TSK_RM_PROJECTS- 1;
6614 IF TSK_RM_PROJECTS=0 THEN
6615 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_PROJECTS',lv_pctg,lv_deg);
6616 END IF;
6617
6618 TSK_RM_PROJECT_TASKS:= TSK_RM_PROJECT_TASKS- 1;
6619 IF TSK_RM_PROJECT_TASKS=0 THEN
6620 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_PROJECT_TASKS',lv_pctg,lv_deg);
6621 END IF;
6622
6623 ELSIF pTASK_NUMBER = TASK_PARAMETER THEN
6624
6625 TSK_RM_PARAMETERS:= TSK_RM_PARAMETERS- 1;
6626 IF TSK_RM_PARAMETERS=0 THEN
6627 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_PARAMETERS',lv_pctg,lv_deg);
6628 END IF;
6629
6630 ELSIF pTASK_NUMBER = TASK_UOM THEN
6631
6632 TSK_RM_UNITS_OF_MEASURE:= TSK_RM_UNITS_OF_MEASURE- 1;
6633 IF TSK_RM_UNITS_OF_MEASURE=0 THEN
6634 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_UNITS_OF_MEASURE',lv_pctg,lv_deg);
6635 END IF;
6636
6637 TSK_RM_UOM_CLASS_CONVERSIONS:= TSK_RM_UOM_CLASS_CONVERSIONS- 1;
6638 IF TSK_RM_UOM_CLASS_CONVERSIONS=0 THEN
6639 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_UOM_CLASS_CONVERSIONS',lv_pctg,lv_deg);
6640 END IF;
6641
6642 TSK_RM_UOM_CONVERSIONS:= TSK_RM_UOM_CONVERSIONS- 1;
6643 IF TSK_RM_UOM_CONVERSIONS=0 THEN
6644 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_UOM_CONVERSIONS',lv_pctg,lv_deg);
6645 END IF;
6646
6647 ELSIF pTASK_NUMBER = TASK_BIS THEN
6648
6649 TSK_RM_BIS_PERIODS:= TSK_RM_BIS_PERIODS- 1;
6650 IF TSK_RM_BIS_PERIODS=0 THEN
6651 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_BIS_PERIODS',lv_pctg,lv_deg);
6652 END IF;
6653
6654 TSK_RM_BIS_PFMC_MEASURES:= TSK_RM_BIS_PFMC_MEASURES- 1;
6655 IF TSK_RM_BIS_PFMC_MEASURES=0 THEN
6656 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_BIS_PFMC_MEASURES',lv_pctg,lv_deg);
6657 END IF;
6658
6659 TSK_RM_BIS_TARGET_LEVELS:= TSK_RM_BIS_TARGET_LEVELS- 1;
6660 IF TSK_RM_BIS_TARGET_LEVELS=0 THEN
6661 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_BIS_TARGET_LEVELS',lv_pctg,lv_deg);
6662 END IF;
6663
6664 TSK_RM_BIS_TARGETS:= TSK_RM_BIS_TARGETS- 1;
6665 IF TSK_RM_BIS_TARGETS=0 THEN
6666 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_BIS_TARGETS',lv_pctg,lv_deg);
6667 END IF;
6668
6669 TSK_RM_BIS_BUSINESS_PLANS:= TSK_RM_BIS_BUSINESS_PLANS- 1;
6670 IF TSK_RM_BIS_BUSINESS_PLANS=0 THEN
6671 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_BIS_BUSINESS_PLANS',lv_pctg,lv_deg);
6672 END IF;
6673
6674 ELSIF pTASK_NUMBER = TASK_ATP_RULES THEN
6675
6676 TSK_RM_ATP_RULES:= TSK_RM_ATP_RULES- 1;
6677 IF TSK_RM_ATP_RULES=0 THEN
6678 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_ATP_RULES',lv_pctg,lv_deg);
6679 END IF;
6680
6681 ELSIF pTASK_NUMBER = TASK_USER_SUPPLY THEN
6682
6683 TSK_RM_SUPPLIES:= TSK_RM_SUPPLIES- 1;
6684 IF TSK_RM_SUPPLIES=0 THEN
6685 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SUPPLIES',lv_pctg,lv_deg);
6686 END IF;
6687
6688 ELSIF pTASK_NUMBER = TASK_USER_DEMAND THEN
6689
6690 TSK_RM_DEMANDS:= TSK_RM_DEMANDS- 1;
6691 IF TSK_RM_DEMANDS=0 THEN
6692 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_DEMANDS',lv_pctg,lv_deg);
6693 END IF;
6694
6695 ELSIF pTASK_NUMBER = TASK_PLANNERS THEN
6696
6697 TSK_RM_PLANNERS:= TSK_RM_PLANNERS- 1;
6698 IF TSK_RM_PLANNERS=0 THEN
6699 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_PLANNERS',lv_pctg,lv_deg);
6700 END IF;
6701
6702 ELSIF pTASK_NUMBER = TASK_DEMAND_CLASS THEN
6703
6704 TSK_RM_DEMAND_CLASSES:= TSK_RM_DEMAND_CLASSES- 1;
6705 IF TSK_RM_DEMAND_CLASSES=0 THEN
6706 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_DEMAND_CLASSES',lv_pctg,lv_deg);
6707 END IF;
6708
6709 ELSIF pTASK_NUMBER = TASK_ITEM_SUBSTITUTES THEN
6710
6711 TSK_RM_ITEM_SUBSTITUTES := TSK_RM_ITEM_SUBSTITUTES - 1;
6712 IF TSK_RM_ITEM_SUBSTITUTES = 0 THEN
6713 FND_STATS.gather_table_stats(lv_owner,'MSC_ST_ITEM_SUBSTITUTES',lv_pctg,lv_deg);
6714 END IF;
6715
6716 ELSIF pTASK_NUMBER = TASK_TRIP THEN
6717
6718 TSK_RM_TRIPS := TSK_RM_TRIPS - 1;
6719 IF TSK_RM_TRIPS = 0 THEN
6720 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_TRIPS',lv_pctg,lv_deg);
6721 END IF;
6722
6723 TSK_RM_TRIP_STOPS := TSK_RM_TRIP_STOPS - 1;
6724 IF TSK_RM_TRIP_STOPS = 0 THEN
6725 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_TRIP_STOPS',lv_pctg,lv_deg);
6726 END IF;
6727 /* ds change start */
6728 ELSIF pTASK_NUMBER = TASK_RESOURCE_INSTANCE THEN
6729 TSK_RM_RESOURCE_INSTANCE := TSK_RM_RESOURCE_INSTANCE -1;
6730 IF TSK_RM_RESOURCE_INSTANCE = 0 THEN
6731 FND_STATS.gather_table_stats(lv_owner, 'MSC_ST_DEPT_RES_INSTANCES',lv_pctg,lv_deg);
6732 FND_STATS.gather_table_stats(lv_owner, 'MSC_ST_RESOURCE_INSTANCE_REQS',lv_pctg,lv_deg);
6733 FND_STATS.gather_table_stats(lv_owner, 'MSC_ST_JOB_OP_RES_INSTANCES',lv_pctg,lv_deg);
6734 END IF;
6735 ELSIF pTASK_NUMBER = TASK_RESOURCE_SETUP THEN
6736 TSK_RM_RESOURCE_SETUP := TSK_RM_RESOURCE_SETUP -1;
6737 IF TSK_RM_RESOURCE_SETUP = 0 THEN
6738 FND_STATS.gather_table_stats(lv_owner, 'MSC_ST_RESOURCE_SETUPS',lv_pctg,lv_deg);
6739 FND_STATS.gather_table_stats(lv_owner, 'MSC_ST_SETUP_TRANSITIONS',lv_pctg,lv_deg);
6740 FND_STATS.gather_table_stats(lv_owner, 'MSC_ST_STD_OP_RESOURCES',lv_pctg,lv_deg);
6741 END IF;
6742 /* ds change end */
6743 ELSIF pTASK_NUMBER = TASK_ABC_CLASSES THEN
6744 TSK_RM_ABC_CLASSES := TSK_RM_ABC_CLASSES - 1;
6745 IF TSK_RM_ABC_CLASSES =0 THEN
6746 FND_STATS.gather_table_stats(lv_owner, 'MSC_ST_ABC_CLASSES',lv_pctg,lv_deg);
6747 END IF;
6748
6749 ELSIF pTASK_NUMBER = TASK_FISCAL_CALENDAR THEN
6750 TSK_RM_FISCAL_CALENDAR := TSK_RM_FISCAL_CALENDAR - 1;
6751 IF TSK_RM_FISCAL_CALENDAR = 0 THEN
6752 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_CALENDAR_MONTHS',lv_pctg,lv_deg);
6753 END IF;
6754
6755 ELSIF pTASK_NUMBER = TASK_SALES_CHANNEL THEN
6756 TSK_RM_SALES_CHANNEL := TSK_RM_SALES_CHANNEL - 1;
6757 IF TSK_RM_SALES_CHANNEL = 0 THEN
6758 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SR_LOOKUPS',lv_pctg,lv_deg);
6759 END IF;
6760
6761 ELSIF pTASK_NUMBER = TASK_IRO THEN
6762 TSK_RM_INTERNAL_REPAIR := TSK_RM_INTERNAL_REPAIR - 1;
6763 IF TSK_RM_INTERNAL_REPAIR = 0 THEN
6764 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_SUPPLIES',lv_pctg,lv_deg);
6765 END IF;
6766
6767 ELSIF pTASK_NUMBER = TASK_IRO_DEMAND THEN
6768 TSK_RM_INTERNAL_REPAIR := TSK_RM_INTERNAL_REPAIR - 1;
6769 IF TSK_RM_INTERNAL_REPAIR = 0 THEN
6770 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_DEMANDS',lv_pctg,lv_deg);
6771 END IF;
6772 ELSIF pTASK_NUMBER = TASK_PAYBACK_DEMAND_SUPPLY THEN
6773 TSK_RM_PAYBACK_DEMAND_SUPPLY := TSK_RM_PAYBACK_DEMAND_SUPPLY - 1;
6774 IF TSK_RM_PAYBACK_DEMAND_SUPPLY = 0 THEN
6775 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_OPEN_PAYBACKS',lv_pctg,lv_deg);
6776 END IF;
6777 ELSIF pTASK_NUMBER = TASK_CURRENCY_CONVERSION THEN
6778 TSK_RM_CURRENCY_CONVERSION := TSK_RM_CURRENCY_CONVERSION - 1;
6779 IF TSK_RM_CURRENCY_CONVERSION = 0 THEN
6780 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_CURRENCY_CONVERSIONS',lv_pctg,lv_deg);
6781 END IF;
6782 ELSIF pTASK_NUMBER = TASK_DELIVERY_DETAILS THEN
6783 TSK_RM_DELIVERY_DETAILS := TSK_RM_DELIVERY_DETAILS - 1;
6784 IF TSK_RM_DELIVERY_DETAILS = 0 THEN
6785 FND_STATS.gather_table_stats( lv_owner,'MSC_ST_DELIVERY_DETAILS',lv_pctg,lv_deg);
6786 END IF;
6787 END IF;
6788
6789
6790 END ANALYZE_ST_TABLE;
6791
6792 /* ds_plan: change end */
6793
6794 END MSC_CL_PULL;