[Home] [Help]
PACKAGE BODY: APPS.MRP_RELEASE_PK
Source
1 PACKAGE BODY mrp_release_pk AS
2 /* $Header: MRPARELB.pls 120.3 2006/09/14 06:12:00 arrsubra noship $ */
3 WIP_DIS_MASS_LOAD CONSTANT INTEGER := 1;
4 PO_MASS_LOAD CONSTANT INTEGER := 8;
5
6 PO_REQUISITION CONSTANT INTEGER := 2;
7 WIP_DISCRETE_JOB CONSTANT INTEGER := 3;
8
9 MAKE CONSTANT INTEGER := 1;
10 BUY CONSTANT INTEGER := 2;
11 PLANNED_ORDER CONSTANT INTEGER := 5;
12 UNRELEASED_NO_CHARGES CONSTANT INTEGER := 1;
13 STANDARD_ITEM CONSTANT INTEGER := 4;
14 NO_AUTO_RELEASE CONSTANT INTEGER := 5;
15 NO_KANBAN_RELEASE CONSTANT INTEGER := 6;
16
17 MRP_PLAN CONSTANT INTEGER := 1;
18 MPS_PLAN CONSTANT INTEGER := 2;
19 MRP_PLANNED_ITEM CONSTANT INTEGER := 3;
20 MPS_PLANNED_ITEM CONSTANT INTEGER := 4;
21
22 NULL_VALUE CONSTANT INTEGER := -23453;
23 MAGIC_STRING CONSTANT VARCHAR2(10) := '734jkhJK24';
24 BUFFER_SIZE_LEN CONSTANT INTEGER := 1000000;
25
26 SYS_YES CONSTANT INTEGER := 1;
27 SYS_NO CONSTANT INTEGER := 2;
28
29 -- ========================================================================
30 --
31 -- Selects the rows in MRP_RECOMMENDATIONS for all orgs in a given plan
32 -- that meet the auto-release criteria and release those planned orders.
33 --
34 -- ========================================================================
35
36 PROCEDURE mrp_auto_release(
37 errbuf OUT NOCOPY VARCHAR2, --2663505
41 arg_use_start_date IN VARCHAR2) IS
38 retcode OUT NOCOPY NUMBER, --2663505
39 arg_org_id IN NUMBER,
40 arg_plan_name IN VARCHAR2,
42
43 VERSION CONSTANT CHAR(80) :=
44 '$Header: MRPARELB.pls 120.3 2006/09/14 06:12:00 arrsubra noship $';
45
46 counter NUMBER := 0;
47
48 var_user_id NUMBER;
49 var_po_group_by NUMBER;
50 var_po_batch_number NUMBER;
51 var_wip_group_id NUMBER;
52 var_loaded_jobs NUMBER;
53 var_loaded_reqs NUMBER;
54 var_loaded_scheds NUMBER;
55 var_resched_jobs NUMBER;
56 var_resched_reqs NUMBER;
57 var_wip_req_id NUMBER;
58 var_req_load_id NUMBER;
59 var_req_resched_id NUMBER;
60
61 var_rowid ROWID;
62 var_start_date DATE;
63 var_demand_class VARCHAR(30);
64 var_wip_class_code VARCHAR(10);
65 var_plan_type NUMBER;
66 var_make_buy_code NUMBER;
67 var_primary_uom_code VARCHAR(3);
68 var_planner_employee_id NUMBER;
69 var_employee_id NUMBER;
70 var_default_job_prefix VARCHAR(80);
71 var_job_prefix VARCHAR(80);
72 var_firm_jobs VARCHAR(80) := 'N';
73 var_impl_status_code NUMBER;
74 var_location_id NUMBER;
75 var_count NUMBER;
76 var_org_code VARCHAR(3);
77 var_org_id NUMBER;
78 var_prev_org_id NUMBER := -1;
79 var_inventory_item_id NUMBER;
80 var_prev_inventory_item_id NUMBER := -1;
81 var_item VARCHAR(50);
82 var_new_schedule_date DATE;
83 var_new_order_quantity NUMBER;
84 var_planner_code VARCHAR(10);
85 var_debug BOOLEAN := FALSE;
86 var_entity VARCHAR(30);
87 var_buf VARCHAR2(240);
88 var_project_id NUMBER;
89 var_prev_project_id NUMBER := -1;
90
91 err_msg_1 VARCHAR2(30);
92 err_class_1 VARCHAR2(10);
93 err_msg_2 VARCHAR2(30);
94 err_class_2 VARCHAR2(10);
95
96 invalid_plan EXCEPTION;
97
98 CURSOR job_status IS
99 SELECT NVL(mwdo.orders_default_job_status, UNRELEASED_NO_CHARGES),
100 NVL(mwdo.job_class_code, var_wip_class_code),
101 NVL(mwdo.orders_firm_jobs, 'N')
102 FROM mrp_workbench_display_options mwdo,
103 fnd_user fu
104 WHERE fu.employee_id = var_planner_employee_id
105 AND fu.start_date <= sysdate
106 AND NVL(fu.end_date, sysdate) >= sysdate
107 AND mwdo.user_id = fu.user_id;
108
109 --
110 -- PLANNING_MAKE_BUY_CODE cannot be used to determine whether an item is
111 -- a make or buy item for time-phased make-buy item, instead use
112 --
113 -- Curr org Source org Item type
114 -- -------- ---------- ---------
115 -- X X Make (always populated for Make item)
116 -- X Y Buy
117 -- X - Buy (for Vendor)
118 --
119 -- MRP_PLANNING_CODE cannot be used to determine whether or not an item
120 -- should be released based on the plan type (MPS/MRP) for Supply Chain
121 -- Planning, instead use
122 --
123 -- In source plan Release
124 -- -------------- -------
125 -- Yes No (items from input supply schedules)
126 -- No Yes (items from input demand schedules)
127 --
128
129 CURSOR planned_orders IS
130 SELECT mr.rowid, mr.organization_id, mr.inventory_item_id,
131 mr.new_schedule_date, mr.new_order_quantity,
132 msi.primary_uom_code,
133 decode(msi.planner_code,NULL,mplm.employee_id,mpl.employee_id),
134 DECODE(mr.source_organization_id, mr.organization_id, MAKE, BUY) ,
135 nvl(mr.implement_project_id,mr.project_id)
136 FROM bom_calendar_dates cal1,
137 bom_calendar_dates cal2,
138 mtl_planners mplm,
139 mtl_planners mpl,
140 mtl_parameters mparam,
141 mtl_system_items master_msi,
142 mtl_system_items msi,
143 mrp_system_items rsi,
144 mrp_recommendations mr,
145 mrp_plan_organizations_v mpo
146 WHERE mpo.organization_id = arg_org_id
147 AND mpo.compile_designator = arg_plan_name
148 AND mr.organization_id = mpo.planned_organization
149 AND mr.compile_designator = mpo.compile_designator
150 AND mr.order_type = PLANNED_ORDER
151 AND NVL(mr.schedule_compression_days, 0) = 0
152 AND mr.new_order_placement_date BETWEEN TRUNC(var_start_date)
153 AND cal2.calendar_date
154 AND msi.organization_id = mr.organization_id
155 AND msi.inventory_item_id = mr.inventory_item_id
156 AND msi.bom_item_type = STANDARD_ITEM
157 AND NVL(msi.release_time_fence_code, NO_AUTO_RELEASE) NOT IN
158 (NO_AUTO_RELEASE, NO_KANBAN_RELEASE)
159 AND ((msi.build_in_wip_flag = 'Y'
160 AND NVL(msi.repetitive_planning_flag, 'N') = 'N'
161 AND DECODE(mr.source_organization_id, mr.organization_id, MAKE,
165 BUY) = BUY))
162 BUY) = MAKE)
163 OR (msi.purchasing_enabled_flag = 'Y'
164 AND DECODE(mr.source_organization_id, mr.organization_id, MAKE,
166 AND NOT EXISTS ( SELECT 1 FROM bom_operational_routings
167 WHERE assembly_item_id = mr.inventory_item_id
168 AND organization_id = mr.organization_id
169 AND nvl(alternate_routing_designator,'-23453') =
170 nvl(mr.alternate_routing_designator,'-23453')
171 AND cfm_routing_flag = 1)
172 AND rsi.organization_id = mr.organization_id
173 AND rsi.compile_designator = mr.compile_designator
174 AND rsi.inventory_item_id = mr.inventory_item_id
175 AND NVL(rsi.in_source_plan, SYS_NO) <> SYS_YES
176 AND master_msi.organization_id = mparam.master_organization_id
177 AND master_msi.inventory_item_id = msi.inventory_item_id
178 AND mpl.organization_id (+) = msi.organization_id
179 AND mpl.planner_code (+) = NVL(msi.planner_code, MAGIC_STRING)
180 AND mplm.organization_id (+)= master_msi.organization_id
181 AND mplm.planner_code (+)= NVL(master_msi.planner_code, MAGIC_STRING)
182 AND mparam.organization_id = mr.organization_id
183 AND cal1.calendar_code = mparam.calendar_code
184 AND cal1.exception_set_id = mparam.calendar_exception_set_id
185 AND cal1.calendar_date = TRUNC(var_start_date)
186 AND cal2.calendar_code = cal1.calendar_code
187 AND cal2.exception_set_id = cal1.exception_set_id
188 AND cal2.seq_num = cal1.next_seq_num +
189 NVL(DECODE(msi.release_time_fence_code,
190 1, msi.cumulative_total_lead_time,
191 2, msi.cum_manufacturing_lead_time,
192 3, msi.full_lead_time,
193 4, msi.release_time_fence_days,
194 0),
195 0)
196 ORDER BY 2;
197
198 BEGIN
199 retcode := 0;
200 errbuf := NULL;
201
202 var_debug := FND_PROFILE.VALUE('MRP_DEBUG') = 'Y';
203
204 -- ------------------------------------------------------------------------
205 -- Validate the plan
206 -- ------------------------------------------------------------------------
207 BEGIN
208 var_entity := 'Plan Validation';
209 mrp_valid_plan_desig_pkg.mrp_valid_plan_designator(
210 arg_plan_name, arg_org_id, 'Y', 'Y', 'Y', 'N');
211
212 EXCEPTION
213 WHEN OTHERS THEN
214 fnd_message.set_name('MRP', 'UNSUCCESSFUL PLAN VALIDATION');
215 var_buf := fnd_message.get;
216 fnd_file.put_line(FND_FILE.LOG, var_buf);
217
218 retcode := 2;
219 errbuf := var_buf;
220 RETURN;
221 END;
222
223 -- ------------------------------------------------------------------------
224 -- Setup
225 -- ------------------------------------------------------------------------
226 var_user_id := FND_GLOBAL.USER_ID;
227 var_default_job_prefix := FND_PROFILE.VALUE('WIP_JOB_PREFIX');
228 var_po_group_by := FND_PROFILE.VALUE('MRP_LOAD_REQ_GROUP_BY');
229
230 var_entity := 'Setup';
231
232 SELECT mp.curr_plan_type,
233 wip_job_schedule_interface_s.nextval,
234 mrp_workbench_query_s.nextval,
235 DECODE(UPPER(arg_use_start_date),
236 'Y', mp.plan_start_date, 'N', sysdate, sysdate),
237 sched.demand_class
238 INTO var_plan_type,
239 var_wip_group_id, var_po_batch_number,
240 var_start_date, var_demand_class
241 FROM mrp_plans mp,
242 mrp_schedule_designators sched
243 WHERE sched.organization_id (+)= mp.organization_id
244 AND sched.schedule_designator (+)= mp.compile_designator
245 AND mp.organization_id = arg_org_id
246 AND mp.compile_designator = arg_plan_name;
247
248 IF var_debug THEN
249 var_buf := '+++++++++++++++++';
250 fnd_file.put_line(FND_FILE.LOG, var_buf);
251 var_buf := 'User ID : '||var_user_id;
252 fnd_file.put_line(FND_FILE.LOG, var_buf);
253 var_buf := 'Owning org : '||arg_org_id;
254 fnd_file.put_line(FND_FILE.LOG, var_buf);
255 var_buf := 'Plan : '||arg_plan_name;
256 fnd_file.put_line(FND_FILE.LOG, var_buf);
257 var_buf := 'Plan type : '||var_plan_type;
258 fnd_file.put_line(FND_FILE.LOG, var_buf);
259 var_buf := 'Use start date : '||arg_use_start_date;
260 fnd_file.put_line(FND_FILE.LOG, var_buf);
261 var_buf := 'Start date : '||var_start_date;
262 fnd_file.put_line(FND_FILE.LOG, var_buf);
263 var_buf := 'WIP default job prefix : '||var_default_job_prefix;
264 fnd_file.put_line(FND_FILE.LOG, var_buf);
265 var_buf := 'WIP group ID : '||var_wip_group_id;
266 fnd_file.put_line(FND_FILE.LOG, var_buf);
267 var_buf := 'PO group by : '||var_po_group_by;
268 fnd_file.put_line(FND_FILE.LOG, var_buf);
269 var_buf := 'PO batch number : '||var_po_batch_number;
270 fnd_file.put_line(FND_FILE.LOG, var_buf);
271 var_buf := 'Demand Class : '||var_demand_class;
272 fnd_file.put_line(FND_FILE.LOG, var_buf);
273 END IF;
274
275 -- ------------------------------------------------------------------------
276 -- Get planned orders that meet the auto-release criteria
277 -- ------------------------------------------------------------------------
278 var_entity := 'Planned Orders';
279
280 OPEN planned_orders;
281
282 LOOP
283 var_entity := 'Fetch Planned Orders';
284
285 FETCH planned_orders INTO var_rowid,
286 var_org_id,
287 var_inventory_item_id,
288 var_new_schedule_date,
289 var_new_order_quantity,
290 var_primary_uom_code,
291 var_planner_employee_id,
292 var_make_buy_code,
293 var_project_id;
294
295 EXIT WHEN planned_orders%NOTFOUND;
296
297 -- ----------------------------------------------------------------------
298 -- Get organization dependent info
299 -- ----------------------------------------------------------------------
300 IF (var_org_id <> var_prev_org_id) THEN
301 /*
302 var_entity := 'WIP Discrete Class';
303
304 BEGIN
305 SELECT wp.default_discrete_class
306 INTO var_wip_class_code
307 FROM wip_parameters wp
308 WHERE wp.organization_id = var_org_id;
309
310 EXCEPTION
311 WHEN NO_DATA_FOUND THEN
312 var_wip_class_code := NULL;
313 WHEN OTHERS THEN
314 var_buf := var_entity||': '||sqlerrm;
315 fnd_file.put_line(FND_FILE.LOG, var_buf);
316
317 ROLLBACK;
318 retcode := 2;
319 errbuf := var_buf;
320 RETURN;
321 END;
322 */
323 var_entity := 'PO Location';
324
325 BEGIN
326 SELECT loc.location_id
327 INTO var_location_id
328 FROM hr_locations loc,
329 hr_organization_units unit
330 WHERE unit.organization_id = var_org_id
331 AND unit.location_id = loc.location_id;
332
333 EXCEPTION
334 WHEN NO_DATA_FOUND THEN
335 var_location_id := NULL;
336 WHEN OTHERS THEN
337 var_buf := var_entity||': '||sqlerrm;
338 fnd_file.put_line(FND_FILE.LOG, var_buf);
339
340 ROLLBACK;
341 retcode := 2;
342 errbuf := var_buf;
343 RETURN;
344 END;
345
346 IF var_debug THEN
347 var_buf := '=================';
348 fnd_file.put_line(FND_FILE.LOG, var_buf);
349 var_buf := 'Organization ID : '||var_org_id;
350 fnd_file.put_line(FND_FILE.LOG, var_buf);
351 var_buf := 'Location ID : '||var_location_id;
352 fnd_file.put_line(FND_FILE.LOG, var_buf);
353 END IF;
354 END IF; /* Org ID */
355
356 -- ----------------------------------------------------------------------
357 -- Get item dependent info
358 -- ----------------------------------------------------------------------
359 IF ( (var_prev_inventory_item_id <> var_inventory_item_id) OR
360 (NVL(var_prev_project_id,-1) <> NVL(var_project_id,-1)) ) THEN
361
362 var_wip_class_code := wip_common.default_acc_class (
363 var_org_id,
364 var_inventory_item_id,
365 1, -- Entity type for discrete job
366 -- 5514051 NULL,-- Project id
367 var_project_id,
368 err_msg_1,
369 err_class_1,
370 err_msg_2,
371 err_class_2);
372
373 IF (var_wip_class_code is NULL) THEN
374 BEGIN
375
376 var_entity := 'WIP Discrete Class';
377
378 SELECT wp.default_discrete_class
379 INTO var_wip_class_code
380 FROM wip_parameters wp
381 WHERE wp.organization_id = var_org_id;
382
383 EXCEPTION
384 WHEN NO_DATA_FOUND THEN
385 var_wip_class_code := NULL;
386 WHEN OTHERS THEN
387 var_buf := var_entity||': '||sqlerrm;
388 fnd_file.put_line(FND_FILE.LOG, var_buf);
389
390 ROLLBACK;
391 retcode := 2;
392 errbuf := var_buf;
393 RETURN;
394 END;
395 END IF;
396 END IF; /* Item Id */
397
398 IF (var_make_buy_code = MAKE) THEN
399
400 -- --------------------------------------------------------------------
401 -- Get WIP Jobs parameter
402 -- --------------------------------------------------------------------
403 IF var_planner_employee_id IS NULL THEN
404
405 var_impl_status_code := UNRELEASED_NO_CHARGES;
406 var_job_prefix := var_default_job_prefix;
407
408 ELSE
409
410 BEGIN
411 var_entity := 'WIP Job Status';
412
413 OPEN job_status;
414 FETCH job_status INTO var_impl_status_code,var_wip_class_code ,
415 var_firm_jobs;
416 var_job_prefix := var_default_job_prefix;
417
418 IF job_status%NOTFOUND THEN
419 var_impl_status_code := UNRELEASED_NO_CHARGES;
420 var_job_prefix := var_default_job_prefix;
421 END IF;
422
423 CLOSE job_status;
424 END;
425
426 END IF;
427
428 IF var_debug THEN
429 var_buf := '----------------- ';
430 fnd_file.put_line(FND_FILE.LOG, var_buf);
431 var_buf := 'Item ID : '||var_inventory_item_id;
432 fnd_file.put_line(FND_FILE.LOG, var_buf);
433 var_buf := 'Item Make/Buy : '||var_make_buy_code;
434 fnd_file.put_line(FND_FILE.LOG, var_buf);
435 var_buf := 'WIP class code : '||var_wip_class_code;
436 fnd_file.put_line(FND_FILE.LOG, var_buf);
437 var_buf := 'Date : '||var_new_schedule_date;
438 fnd_file.put_line(FND_FILE.LOG, var_buf);
439 var_buf := 'Quantity : '||var_new_order_quantity;
440 fnd_file.put_line(FND_FILE.LOG, var_buf);
441 var_buf := 'Planner emp ID : '||var_planner_employee_id;
442 fnd_file.put_line(FND_FILE.LOG, var_buf);
443 var_buf := 'WIP job status : '||var_impl_status_code;
444 fnd_file.put_line(FND_FILE.LOG, var_buf);
445 var_buf := 'WIP job prefix : '||var_job_prefix;
446 fnd_file.put_line(FND_FILE.LOG, var_buf);
447 END IF;
448
449 -- --------------------------------------------------------------------
450 -- Update WIP Jobs planned orders
451 -- --------------------------------------------------------------------
452 var_entity := 'WIP Planned Orders';
453
454 UPDATE mrp_recommendations
455 SET old_order_quantity = new_order_quantity,
456 quantity_in_process = new_order_quantity,
457 implement_date = new_schedule_date,
458 implement_quantity = new_order_quantity,
459 implement_firm = DECODE(var_firm_jobs,
460 'Y', 1,
461 2),
462 implement_job_name = var_job_prefix||to_char(wip_job_number_s.nextval),
463 implement_status_code = var_impl_status_code,
464 implement_wip_class_code = NVL(var_wip_class_code,var_job_prefix),
465 implement_source_org_id = NULL,
466 implement_vendor_id = NULL,
467 implement_vendor_site_id = NULL,
468 implement_project_id = project_id,
469 implement_task_id = task_id,
470 implement_demand_class = var_demand_class,
471 load_type = WIP_DIS_MASS_LOAD,
472 implement_as = WIP_DISCRETE_JOB
473 WHERE rowid = var_rowid;
474
475 ELSIF (var_make_buy_code = BUY) THEN
476
477 -- --------------------------------------------------------------------
478 -- Verify PO Reqs parameters
479 --
480 -- If Planner is not an active employee, do not release
481 -- --------------------------------------------------------------------
482 var_entity := 'Employee';
483
484 SELECT count(*)
485 INTO var_count
486 FROM hr_employees_current_v emp
487 WHERE emp.employee_id = NVL(var_planner_employee_id, NULL_VALUE);
488
489 IF var_debug THEN
490 var_buf := '----------------- ';
491 fnd_file.put_line(FND_FILE.LOG, var_buf);
492 var_buf := 'Item ID : '||var_inventory_item_id;
493 fnd_file.put_line(FND_FILE.LOG, var_buf);
494 var_buf := 'Item Make/Buy : '||var_make_buy_code;
495 fnd_file.put_line(FND_FILE.LOG, var_buf);
496 var_buf := 'Date : '||var_new_schedule_date;
497 fnd_file.put_line(FND_FILE.LOG, var_buf);
498 var_buf := 'Quantity : '||var_new_order_quantity;
499 fnd_file.put_line(FND_FILE.LOG, var_buf);
500 var_buf := 'Planner emp ID : '||var_planner_employee_id;
501 fnd_file.put_line(FND_FILE.LOG, var_buf);
502 var_buf := 'Active employee : '||var_count;
503 fnd_file.put_line(FND_FILE.LOG, var_buf);
504 END IF;
505
506 IF (var_count = 0) THEN
507
508 -- PO Req is not released because Planner is not an active employee
509
510 var_entity := 'Non-released PO Req';
511
512 SELECT param.organization_code, msik.concatenated_segments,
513 msik.planner_code
514 INTO var_org_code, var_item, var_planner_code
515 FROM mtl_system_items_kfv msik,
516 mtl_parameters param,
517 mrp_recommendations mr
518 WHERE mr.rowid = var_rowid
519 AND msik.organization_id = mr.organization_id
520 AND msik.inventory_item_id = mr.inventory_item_id
521 AND param.organization_id = mr.organization_id;
522
523 var_buf := '................. ';
524 fnd_file.put_line(FND_FILE.LOG, var_buf);
525
526 fnd_message.set_name('MRP', 'MRP_UNRELEASED_ORDER1');
527 var_buf := fnd_message.get;
528 fnd_file.put_line(FND_FILE.LOG, var_buf);
529
530 fnd_message.set_name('MRP', 'MRP_UNRELEASED_ORDER2');
531 fnd_message.set_token('PLANNER_VALUE', var_planner_code);
532 fnd_message.set_token('ORG_VALUE', var_org_code);
533 fnd_message.set_token('ITEM_VALUE', var_item);
534 fnd_message.set_token('DATE_VALUE', to_char(var_new_schedule_date));
535 fnd_message.set_token('QTY_VALUE', to_char(var_new_order_quantity));
536 var_buf := fnd_message.get;
537 fnd_file.put_line(FND_FILE.LOG, var_buf);
538
539 ELSE
540
541 -- ------------------------------------------------------------------
542 -- Update PO Reqs planned orders
543 -- ------------------------------------------------------------------
544 var_entity := 'PO Planned Orders';
545
546 UPDATE mrp_recommendations
547 SET old_order_quantity = new_order_quantity,
548 quantity_in_process = new_order_quantity,
549 implement_date = new_schedule_date,
550 implement_quantity = new_order_quantity,
551 implement_firm = firm_planned_type,
552 implement_dock_date = new_dock_date,
553 implement_employee_id = var_planner_employee_id,
554 implement_uom_code = var_primary_uom_code,
555 implement_location_id = var_location_id,
556 implement_source_org_id = source_organization_id,
557 implement_vendor_id = source_vendor_id,
558 implement_vendor_site_id = source_vendor_site_id,
559 implement_project_id = project_id,
560 implement_task_id = task_id,
561 implement_demand_class = NULL,
562 load_type = PO_MASS_LOAD,
563 implement_as = PO_REQUISITION
564 WHERE rowid = var_rowid;
565
566 END IF; /* Count */
567
568 END IF; /* Make Buy code */
569
570 var_prev_org_id := var_org_id;
571 var_prev_inventory_item_id := var_inventory_item_id;
572 var_prev_project_id := var_project_id;
573
574 END LOOP;
575
576 CLOSE planned_orders;
577
578 COMMIT WORK;
579
580 -- ------------------------------------------------------------------------
581 -- Release the planned orders
582 -- ------------------------------------------------------------------------
583 var_entity := 'Release Planned Orders';
584
585 MRP_Rel_Plan_PUB.mrp_release_plan_sc
586 (arg_org_id, arg_org_id, arg_plan_name, var_user_id,
587 var_po_group_by, var_po_batch_number, var_wip_group_id,
588 var_loaded_jobs, var_loaded_reqs, var_loaded_scheds,
589 var_resched_jobs, var_resched_reqs, var_wip_req_id,
590 var_req_load_id, var_req_resched_id);
591
592 var_buf := '+++++++++++++++++ ';
593 fnd_file.put_line(FND_FILE.LOG, var_buf);
594
595 fnd_message.set_name('MRP', 'LOADED_WIP');
596 fnd_message.set_token('VALUE', to_char(var_loaded_jobs));
597 var_buf := fnd_message.get;
598 fnd_file.put_line(FND_FILE.LOG, var_buf);
599
600 fnd_message.set_name('MRP', 'LOADED_PO');
601 fnd_message.set_token('VALUE', to_char(var_loaded_reqs));
602 var_buf := fnd_message.get;
603 fnd_file.put_line(FND_FILE.LOG, var_buf);
604
605 fnd_message.set_name('MRP', 'LOAD_WIP_REQUEST_ID');
606 fnd_message.set_token('VALUE', to_char(var_wip_req_id));
607 var_buf := fnd_message.get;
608 fnd_file.put_line(FND_FILE.LOG, var_buf);
609
610 fnd_message.set_name('MRP', 'LOAD_PO_REQUEST_ID');
611 fnd_message.set_token('VALUE', to_char(var_req_load_id));
612 var_buf := fnd_message.get;
613 fnd_file.put_line(FND_FILE.LOG, var_buf);
614
615 IF ((var_loaded_jobs > 0) AND (var_wip_req_id = 0)) THEN
616 fnd_file.new_line(FND_FILE.LOG, 1);
617 fnd_message.set_name('MRP', 'CANNOT SUBMIT REQUEST-JOBS');
618 var_buf := fnd_message.get;
619 fnd_file.put_line(FND_FILE.LOG, var_buf);
620
621 retcode := 2;
622 errbuf := var_buf;
623 END IF;
624
625 IF ((var_loaded_reqs > 0) AND (var_req_load_id = 0)) THEN
626 fnd_file.new_line(FND_FILE.LOG, 1);
627 fnd_message.set_name('MRP', 'CANNOT SUBMIT REQUEST-REQS');
628 var_buf := fnd_message.get;
629 fnd_file.put_line(FND_FILE.LOG, var_buf);
630
631 retcode := 2;
632 errbuf := var_buf;
633 END IF;
634
635 RETURN;
636
637 EXCEPTION
638 WHEN OTHERS THEN
639 var_buf := var_entity||': '||sqlerrm;
640 fnd_file.put_line(FND_FILE.LOG, var_buf);
641
642 ROLLBACK;
643 retcode := 2;
644 errbuf := var_buf;
645 RETURN;
646 END mrp_auto_release;
647
648 END mrp_release_pk;