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