1 PACKAGE BODY OE_SCH_CONC_REQUESTS AS
2 /* $Header: OEXCSCHB.pls 120.30.12020000.7 2013/04/09 08:03:44 spothula ship $ */
3
4 -- Global constant holding the package name
5 G_PKG_NAME CONSTANT VARCHAR2(30) := 'OE_SCH_CONC_REQUESTS';
6 --5166476
7 /*
8 TYPE status_arr IS TABLE OF VARCHAR2(1) INDEX BY BINARY_INTEGER;
9 OE_line_status_Tbl status_arr;
10 */
11
12 FUNCTION model_processed(p_model_id IN NUMBER
13 ,p_line_id IN NUMBER)
14 RETURN BOOLEAN
15 IS
16 l_found BOOLEAN:= FALSE;
17 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
18 BEGIN
19
20 /* If many of the lines selected are part of a smc/ato/non-smc model, then delayed
21 * request must get logged only for one of the lines.
22 */
23 IF oe_model_id_tbl.EXISTS(p_model_id) THEN
24 l_found := TRUE;
25 ELSIF p_model_id = p_line_id THEN
26 oe_model_id_tbl(p_model_id) := p_model_id;
27 END IF;
28 RETURN (l_found);
29 END model_processed;
30
31 FUNCTION included_processed(p_inc_item_id IN NUMBER)
32 RETURN BOOLEAN
33 IS
34 l_found BOOLEAN:= FALSE;
35 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
36 BEGIN
37
38 /* to list the included items processed alone
39 */
40 IF l_debug_level > 0 THEN
41 OE_DEBUG_PUB.Add('INSIDE INCLUDED_PROCESSED',1);
42 END IF;
43
44 IF oe_included_id_tbl.EXISTS(p_inc_item_id) THEN
45 l_found := TRUE;
46 ELSE
47 oe_included_id_tbl(p_inc_item_id) := p_inc_item_id;
48 END IF;
49 IF l_found THEN
50 IF l_debug_level > 0 THEN
51 OE_DEBUG_PUB.Add('INCLIDED ITEM LISTED',1);
52 END IF;
53 ELSE
54 IF l_debug_level > 0 THEN
55 OE_DEBUG_PUB.Add('INCLIDED ITEM NOT LISTED',1);
56 END IF;
57 END IF;
58 RETURN (l_found);
59 END included_processed;
60
61 FUNCTION set_processed(p_set_id IN NUMBER)
62 RETURN BOOLEAN
63 IS
64 l_found BOOLEAN:= FALSE;
65 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
66 BEGIN
67
68 /* If many of the lines selected are part of a ship set / Arrival set, then delayed
69 * request must get logged only for one of the lines.
70 */
71 IF oe_set_id_tbl.EXISTS(p_set_id) THEN
72 l_found := TRUE;
73 ELSE
74 oe_set_id_tbl(p_set_id) := p_set_id;
75 END IF;
76 RETURN (l_found);
77 END set_processed;
78
79 FUNCTION Line_Eligible (p_line_id IN NUMBER)
80 RETURN BOOLEAN
81 IS
82 l_activity_status_code VARCHAR2(8);
83 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
84 -- Begin : ER 13114460
85 l_msg_count NUMBER;
86 l_msg_data VARCHAR2(2000);
87 l_result VARCHAR2(30);
88 l_out_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
89 -- End : ER 13114460
90
91 BEGIN
92
93 -- Check for workflow status to be Purchase Release Eligible
94 SELECT ACTIVITY_STATUS
95 INTO l_activity_status_code
96 FROM wf_item_activity_statuses wias, wf_process_activities wpa
97 WHERE wias.item_type = 'OEOL' AND
98 wias.item_key = to_char(p_line_id) AND
99 wias.process_activity = wpa.instance_id AND
100 wpa.activity_item_type = 'OEOL' AND
101 wpa.activity_name = 'SCHEDULING_ELIGIBLE' AND
102 wias.activity_status = 'NOTIFIED';
103
104 -- Return true since the record exists.
105
106 -- Begin : ER 13114460
107
108 OE_Holds_PUB.Check_Holds
109 ( p_api_version => 1.0
110 , p_init_msg_list => FND_API.G_FALSE
111 , p_commit => FND_API.G_FALSE
112 , p_validation_level => FND_API.G_VALID_LEVEL_FULL
113 , x_return_status => l_out_return_status
114 , x_msg_count => l_msg_count
115 , x_msg_data => l_msg_data
116 , p_line_id => p_line_id
117 , p_hold_id => NULL
118 , p_entity_code => NULL
119 , p_entity_id => NULL
120 , p_wf_item => 'OEOL'
121 , p_wf_activity => 'LINE_SCHEDULING'
122 , p_chk_act_hold_only => 'Y'
123 , x_result_out => l_result
124 );
125
126 IF l_debug_level > 0 THEN
127 oe_debug_pub.add( 'AFTER CALLING CHECK HOLDS: ' ||
128 L_OUT_RETURN_STATUS , 1 ) ;
129 END IF;
130
131 IF (l_out_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
132 IF l_out_return_status = FND_API.G_RET_STS_ERROR THEN
133 RAISE FND_API.G_EXC_ERROR;
134 ELSE
135 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
136 END IF;
137 END IF;
138
139 IF (l_result = FND_API.G_TRUE) THEN
140 RETURN FALSE;
141 END IF;
142
143 -- End : ER 13114460
144 RETURN TRUE;
145
146 EXCEPTION
147 WHEN NO_DATA_FOUND THEN
148 IF l_debug_level > 0 THEN
149 oe_debug_pub.add( 'RETURNING FALSE 1 ' , 1 ) ;
150 END IF;
151 RETURN FALSE;
152 WHEN OTHERS THEN
153 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
154 END Line_Eligible;
155
156 /*-----------------------------------------------------------------
157 PROCEDURE : Request
158 DESCRIPTION: Schedule Orders Concurrent Request
159
160 Change log:
161 Bug 8813015: Parameter p_picked is added to allow exclusion of
162 pick released lines.
163 -----------------------------------------------------------------*/
164 PROCEDURE Request (ERRBUF OUT NOCOPY VARCHAR2,
165 RETCODE OUT NOCOPY VARCHAR2,
166 /* Moac */
167 p_org_id IN NUMBER,
168 p_order_number_low IN NUMBER,
169 p_order_number_high IN NUMBER,
170 p_request_date_low IN VARCHAR2,
171 p_request_date_high IN VARCHAR2,
172 p_customer_po_number IN VARCHAR2,
173 p_ship_to_location IN VARCHAR2,
174 p_order_type IN VARCHAR2,
175 p_customer IN VARCHAR2,
176 p_ordered_date_low IN VARCHAR2,
177 p_ordered_date_high IN VARCHAR2,
178 p_warehouse IN VARCHAR2,
179 p_item IN VARCHAR2,
180 p_demand_class IN VARCHAR2,
181 p_planning_priority IN VARCHAR2,
182 p_shipment_priority IN VARCHAR2,
183 p_line_type IN VARCHAR2,
184 p_line_request_date_low IN VARCHAR2,
185 p_line_request_date_high IN VARCHAR2,
186 p_line_ship_to_location IN VARCHAR2,
187 p_sch_ship_date_low IN VARCHAR2,
188 p_sch_ship_date_high IN VARCHAR2,
189 p_sch_arrival_date_low IN VARCHAR2,
190 p_sch_arrival_date_high IN VARCHAR2,
191 p_booked IN VARCHAR2,
192 p_sch_mode IN VARCHAR2,
193 p_dummy1 IN VARCHAR2,
194 p_dummy2 IN VARCHAR2,
195 p_apply_warehouse IN VARCHAR2,
196 p_apply_sch_date IN VARCHAR2,
197 p_order_by_first IN VARCHAR2,
198 p_order_by_sec IN VARCHAR2,
199 p_picked IN VARCHAR2 DEFAULT NULL, --Bug 8813015
200 p_dummy3 IN VARCHAR2 DEFAULT NULL, -- 12639770
201 p_commit_threshold IN NUMBER DEFAULT NULL -- 12639770
202 )
203 IS
204 l_apply_sch_date DATE;
205 l_arrival_set_id NUMBER;
206 l_ato_line_id NUMBER;
207 l_atp_tbl OE_ATP.Atp_Tbl_Type;
208 l_booked_flag VARCHAR2(1);
209 l_control_rec OE_GLOBALS.Control_Rec_Type;
210 l_cursor_id INTEGER;
211 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
212 l_found BOOLEAN;
213 l_header_id NUMBER;
214 l_init_msg_list VARCHAR2(1) := FND_API.G_FALSE;
215 l_item_type_code VARCHAR2(30);
216 l_line_id NUMBER;
217 l_line_rec OE_ORDER_PUB.Line_Rec_Type;
218 l_line_request_date_high DATE;
219 l_line_request_date_low DATE;
220 l_line_tbl OE_ORDER_PUB.Line_Tbl_Type;
221 l_msg_count NUMBER;
222 l_msg_data VARCHAR2(2000) := NULL;
223 l_old_line_tbl OE_ORDER_PUB.Line_Tbl_Type;
224 l_order_date_type_code VARCHAR2(30);
225 l_ordered_date_high DATE;
226 l_ordered_date_low DATE;
227 l_process_order BOOLEAN := FALSE;
228 l_rec_failure NUMBER := 0;
229 l_rec_processed NUMBER := 0;
230 l_rec_success NUMBER := 0;
231 l_request_date DATE;
232 l_request_date_high DATE;
233 l_request_date_low DATE;
234 l_request_id VARCHAR2(50);
235 l_return_status VARCHAR2(1);
236 l_retval INTEGER;
237 l_sch_arrival_date_high DATE;
238 l_sch_arrival_date_low DATE;
239 l_sch_ship_date_high DATE;
240 l_sch_ship_date_low DATE;
241 l_schedule_status_code VARCHAR2(30);
242 l_ship_from_org_id NUMBER;
243 l_ship_set_id NUMBER;
244 l_smc_flag VARCHAR2(1);
245 l_stmt VARCHAR2(2000);
246 l_temp_flag BOOLEAN; -- temp variable (re-usable).
247 l_temp_line_id NUMBER;
248 l_temp_num NUMBER; -- temp variable (re-usable).
249 l_top_model_line_id NUMBER;
250 l_link_to_line_id NUMBER;
251 l_locked_line_id NUMBER; --8731703
252 -- Moac
253 l_single_org BOOLEAN := FALSE;
254 l_old_org_id NUMBER := -99;
255 l_org_id NUMBER;
256 l_selected_line_tbl OE_GLOBALS.Selected_Record_Tbl; -- R12.MOAC
257 l_failure BOOLEAN := FALSE;
258 l_index NUMBER;
259 l_line_count NUMBER :=0; -- 12639770
260 l_prg_start_date DATE := sysdate; -- 12639770
261 -- Moac. Changed the below cursor logic to also join to oe_order_lines for OU.
262 CURSOR wf_item IS
263 SELECT item_key, l.org_id,wias.process_activity --added process_activity for bug 13542899
264 FROM wf_item_activity_statuses wias,
265 wf_process_activities wpa,
266 oe_order_lines l
267 WHERE wias.item_type = 'OEOL'
268 AND wias.process_activity = wpa.instance_id
269 AND wpa.activity_item_type = 'OEOL'
270 AND wpa.activity_name = 'SCHEDULING_ELIGIBLE'
271 AND wias.activity_status = 'NOTIFIED'
272 AND wias.item_key = l.line_id
273 AND wias.begin_date < l_prg_start_date --13426757
274 Order by l.org_id;
275
276 CURSOR progress_pto IS
277 SELECT line_id
278 FROM oe_order_lines_all
279 WHERE header_id = l_header_id
280 AND top_model_line_id = l_line_id
281 AND item_type_code in ('MODEL','KIT','CLASS','OPTION')
282 AND ((ato_line_id is not null AND
283 ato_line_id = line_id) OR
284 ato_line_id is null)
285 AND open_flag = 'Y';
286 -- 13426757
287 TYPE wf_item_type IS TABLE OF wf_item%rowtype;
288 l_wf_item_rec wf_item_type;
289 l_commit_threshold NUMBER := NVL(p_commit_threshold,100);
290 BEGIN
291 --Bug#4220950
292 ERRBUF := 'Schedule Orders Request completed successfully';
293 RETCODE := 0;
294
295 -- Moac Start
296 IF MO_GLOBAL.get_access_mode = 'S' THEN
297 l_single_org := true;
298 ELSIF p_org_id IS NOT NULL THEN
299 l_single_org := true;
300 MO_GLOBAL.set_policy_context(p_access_mode => 'S', p_org_id => p_org_id);
301 END IF;
302 -- Moac End.
303
304 -- Turning debug on for testing purpose.
305 fnd_file.put_line(FND_FILE.LOG, 'Parameters:');
306 fnd_file.put_line(FND_FILE.LOG, ' order_number_low = '||
307 p_order_number_low);
308 fnd_file.put_line(FND_FILE.LOG, ' order_number_high = '||
309 p_order_number_high);
310 fnd_file.put_line(FND_FILE.LOG, ' request_date_low = '||
311 p_request_date_low);
312 fnd_file.put_line(FND_FILE.LOG, ' request_date_high = '||
313 p_request_date_high);
314 fnd_file.put_line(FND_FILE.LOG, ' customer_po_number = '||
315 p_customer_po_number);
316 fnd_file.put_line(FND_FILE.LOG, ' ship_to_location = '||
317 p_ship_to_location);
318 fnd_file.put_line(FND_FILE.LOG, ' order_type = '||
319 p_order_type);
320 fnd_file.put_line(FND_FILE.LOG, ' customer = '||
321 p_customer);
322 fnd_file.put_line(FND_FILE.LOG, ' item = '||
323 p_item);
324 fnd_file.put_line(FND_FILE.LOG, ' ordered_date_low = ' ||
325 p_ordered_date_low);
326 fnd_file.put_line(FND_FILE.LOG, ' ordered_date_high = ' ||
327 p_ordered_date_high);
328 fnd_file.put_line(FND_FILE.LOG, ' warehouse = ' ||
329 p_warehouse);
330 fnd_file.put_line(FND_FILE.LOG, ' demand_class = ' ||
331 p_demand_class);
332 fnd_file.put_line(FND_FILE.LOG, ' planning_priority = ' ||
333 p_planning_priority);
334 fnd_file.put_line(FND_FILE.LOG, ' shipment_priority = ' ||
335 p_shipment_priority);
336 fnd_file.put_line(FND_FILE.LOG, ' line_type = ' ||
337 p_line_type);
338 fnd_file.put_line(FND_FILE.LOG, ' line_request_date_low = ' ||
339 p_line_request_date_low);
340 fnd_file.put_line(FND_FILE.LOG, ' line_request_date_high = ' ||
341 p_line_request_date_high);
342 fnd_file.put_line(FND_FILE.LOG, ' line_ship_to_location = ' ||
343 p_line_ship_to_location);
344 fnd_file.put_line(FND_FILE.LOG, ' sch_ship_date_low = ' ||
345 p_sch_ship_date_low);
346 fnd_file.put_line(FND_FILE.LOG, ' sch_ship_date_high = ' ||
347 p_sch_ship_date_high);
348 fnd_file.put_line(FND_FILE.LOG, ' sch_arrival_date_low = ' ||
349 p_sch_arrival_date_low);
350 fnd_file.put_line(FND_FILE.LOG, ' sch_arrival_date_high = ' ||
351 p_sch_arrival_date_high);
352 fnd_file.put_line(FND_FILE.LOG, ' booked = ' ||
353 p_booked);
354 fnd_file.put_line(FND_FILE.LOG, ' sch_mode = ' ||
355 p_sch_mode);
356 fnd_file.put_line(FND_FILE.LOG, ' dummy1 = ' ||
357 p_dummy1);
358 fnd_file.put_line(FND_FILE.LOG, ' apply_warehouse = ' ||
359 p_apply_warehouse);
360 fnd_file.put_line(FND_FILE.LOG, ' apply_sch_date = ' ||
361 p_apply_sch_date);
362 fnd_file.put_line(FND_FILE.LOG, ' order_by_first = ' ||
363 p_order_by_first);
364 fnd_file.put_line(FND_FILE.LOG, ' order_by_sec = ' ||
365 p_order_by_sec);
366 --Bug 8813015: start
367 fnd_file.put_line(FND_FILE.LOG, ' picked = ' ||
368 p_picked);
369 --Bug 8813015: end
370 --12639770
371 fnd_file.put_line(FND_FILE.LOG, ' Threshold = ' ||
372 p_commit_threshold);
373
374 FND_PROFILE.Get(NAME => 'CONC_REQUEST_ID',
375 VAL => l_request_id);
376 OE_MSG_PUB.Initialize; -- Initializing message pub to clear messages.
377
378 -- ER 13114460
379 /* Set the global if p_sch_mode is LINE_ELIGIBLE or NULL */
380 IF NVL(p_sch_mode, 'LINE_ELIGIBLE') = 'LINE_ELIGIBLE' THEN
381 G_CHECKED_FOR_HOLDS := 'Y';
382 END IF;
383
384 IF p_sch_mode NOT IN ('SCHEDULE','RESCHEDULE') AND
385 (p_apply_sch_date IS NOT NULL OR
386 p_apply_warehouse IS NOT NULL)
387 THEN
388 Fnd_Message.set_name('ONT', 'ONT_SCH_INVALID_MODE_ATTRB');
389 Oe_Msg_Pub.Add;
390 OE_MSG_PUB.Save_Messages(p_request_id => l_request_id);
391 l_msg_data := Fnd_Message.get_string('ONT',
392 'ONT_SCH_INVALID_MODE_ATTRB');
393 FND_FILE.Put_Line(FND_FILE.LOG, l_msg_data);
394 ERRBUF := 'ONT_SCH_INVALID_MODE_ATTRB';
395 IF l_debug_level > 0 THEN
396 OE_DEBUG_PUB.Add('Error : Schedule date supplied for wrong mode.',1);
397 END IF;
398 RETCODE := 2;
399 RETURN;
400 END IF;
401
402 -- Convert dates passed as varchar2 parameters to date variables.
403 SELECT fnd_date.canonical_to_date(p_request_date_low),
404 fnd_date.canonical_to_date(p_request_date_high),
405 fnd_date.canonical_to_date(p_ordered_date_low),
406 fnd_date.canonical_to_date(p_ordered_date_high),
407 fnd_date.canonical_to_date(p_line_request_date_low),
408 fnd_date.canonical_to_date(p_line_request_date_high),
409 fnd_date.canonical_to_date(p_sch_ship_date_low),
410 fnd_date.canonical_to_date(p_sch_ship_date_high),
411 fnd_date.canonical_to_date(p_sch_arrival_date_low),
412 fnd_date.canonical_to_date(p_sch_arrival_date_high)
413 -- fnd_date.canonical_to_date(p_apply_sch_date)
414 INTO l_request_date_low,
415 l_request_date_high,
416 l_ordered_date_low,
417 l_ordered_date_high,
418 l_line_request_date_low,
419 l_line_request_date_high,
420 l_sch_ship_date_low,
421 l_sch_ship_date_high,
422 l_sch_arrival_date_low,
423 l_sch_arrival_date_high
424 -- l_apply_sch_date
425 FROM DUAL;
426
427 SELECT fnd_date.chardt_to_date(p_apply_sch_date)
428 INTO l_apply_sch_date
429 FROM dual;
430
431 IF l_debug_level > 0 THEN
432 OE_DEBUG_PUB.Add('Schedule date'||l_apply_sch_date,1);
433 END IF;
434 /* When user does not specifiy any parameters, we drive the scheduling
435 * through workflow. Pick up all the lines which are schedule eligible
436 * and notified status, call wf_engine to complete the activity.
437 * If value is passed through any of the parameters, then get the header and
438 * line records and call wf_engine.
439 */
440 IF p_order_number_low IS NULL AND
441 p_order_number_high IS NULL AND
442 p_request_date_low IS NULL AND
443 p_request_date_high IS NULL AND
444 p_customer_po_number IS NULL AND
445 p_ship_to_location IS NULL AND
446 p_order_type IS NULL AND
447 p_customer IS NULL AND
448 p_item IS NULL AND
449 p_ordered_date_low IS NULL AND
450 p_ordered_date_high IS NULL AND
451 p_warehouse IS NULL AND
452 p_demand_class IS NULL AND
453 p_planning_priority IS NULL AND
454 p_shipment_priority IS NULL AND
455 p_line_type IS NULL AND
456 p_line_request_date_low IS NULL AND
457 p_line_request_date_high IS NULL AND
458 p_line_ship_to_location IS NULL AND
459 p_sch_ship_date_low IS NULL AND
460 p_sch_ship_date_high IS NULL AND
461 p_sch_arrival_date_low IS NULL AND
462 p_sch_arrival_date_high IS NULL AND
463 NVL(p_sch_mode ,'LINE_ELIGIBLE') = 'LINE_ELIGIBLE' AND --13426757
464 nvl(p_booked, 'Y') = 'Y' AND
465 Nvl(p_picked,'Y') = 'Y' --Bug 8813015
466 THEN
467 --13426757
468 -- Have bulk collect with limit as commit threshold
469 -- Commit and close the cursor after each set execution
470 BEGIN
471 IF l_debug_level > 0 THEN
472 oe_debug_pub.add('commit_threshold '||l_commit_threshold,1);
473 END IF;
474 --LOOP
475 OPEN wf_item;
476 Loop -- 16467034
477 FETCH wf_item BULK COLLECT INTO l_wf_item_rec LIMIT l_commit_threshold;
478 EXIT WHEN l_wf_item_rec.count = 0;
479 FOR k IN 1..l_wf_item_rec.count LOOP
480 IF l_debug_level > 0 THEN
481 oe_debug_pub.add('***** 1. Processing item key '||l_wf_item_rec(k).item_key ||' *****', 1);
482 END IF;
483
484 -- Moac Start
485 IF NOT l_single_org and l_wf_item_rec(k).org_id <> l_old_org_id THEN
486 l_old_org_id := l_wf_item_rec(k).org_id;
487 MO_GLOBAL.set_policy_context(p_access_mode => 'S', p_org_id => l_wf_item_rec(k).org_id);
488 END IF;
489 -- Moac End
490
491 -- Need to check whether still line is eligible for processing
492 IF Line_Eligible(p_line_id => to_number(l_wf_item_rec(K).ITEM_KEY)) THEN
493 --8448911
494 g_conc_program := 'Y';
495 g_recorded := 'N';
496
497 IF l_debug_level > 0 THEN
498 oe_debug_pub.add( 'COMPLETING ACTIVITY FOR : ' || l_wf_item_rec(K).ITEM_KEY , 1 ) ;
499 END IF;
500
501 g_process_records := 0;
502 g_failed_records := 0;
503 -- 8606874
504 --Lock the line first
505 BEGIN
506 SELECT line_id
507 INTO l_locked_line_id
508 FROM oe_order_lines_all
509 WHERE line_id = to_number(l_wf_item_rec(K).ITEM_KEY)
510 FOR UPDATE NOWAIT;
511
512 wf_engine.CompleteActivityInternalName
513 ('OEOL',
514 l_wf_item_rec(k).item_key,
515 'SCHEDULING_ELIGIBLE',
516 'COMPLETE',
517 TRUE ); -- 15870313
518 EXCEPTION
519 WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
520 IF l_debug_level > 0 THEN
521 oe_debug_pub.add('OEXCSCHB.pls: unable to lock the line:'||l_wf_item_rec(K).ITEM_KEY,1);
522 END IF;
523 wf_item_activity_status.create_status('OEOL',
524 l_wf_item_rec(K).ITEM_KEY,
525 l_wf_item_rec(K).process_activity,
526 'NOTIFIED',
527 NULL,
528 SYSDATE,
529 null);--13542899
530 WHEN OTHERS THEN
531 IF l_debug_level > 0 THEN
532 oe_debug_pub.add('*** 1. Error - '||SUBSTR(SQLERRM,1,200),1);
533 END IF;
534 END;
535 /* --8448911
536 OE_MSG_PUB.Count_And_Get
537 ( p_count => l_msg_count,
538 p_data => l_msg_data);
539
540 FOR I in 1..l_msg_count LOOP
541 l_msg_data := OE_MSG_PUB.Get(I,'F');
542
543 -- Write Messages in the log file
544 fnd_file.put_line(FND_FILE.LOG, l_msg_data);
545
546 END LOOP;
547 */
548 --5166476
549
550 --IF g_failed_records > 0 THEN
551 IF OE_SCH_CONC_REQUESTS.oe_line_status_tbl.EXISTS(l_wf_item_rec(k).item_key) AND
552 OE_SCH_CONC_REQUESTS.oe_line_status_tbl(l_wf_item_rec(k).item_key)= 'N' THEN
553 l_failure := TRUE;
554 END IF;
555 IF l_debug_level > 0 THEN
556 oe_debug_pub.add( 'R1 PROCESSED: '||l_rec_processed||' FAILED: '||l_rec_failure , 1 ) ;
557 END IF;
558
559 -- Moac
560 END IF;
561 END LOOP;
562 --CLOSE wf_item;
563 COMMIT;
564 END LOOP;
565 close wf_item ; --16467034
566 END;
567 ELSE -- Some parameter is passed
568
569 -- Open cursor.
570 l_cursor_id := DBMS_SQL.OPEN_CURSOR;
571
572 -- Building the dynamic query based on parameters passed.
573 -- Moac Changed below cursor to use oe_order_headers_all
574 /*Start MOAC_SQL_CHANGE */
575 l_stmt := 'SELECT ' ;
576 --BUG 13901213
577 IF p_order_number_low is not null and p_order_number_high is not null then
578 l_stmt := l_stmt || ' /*+ INDEX(H OE_ORDER_HEADERS_U2) */ ' ;
579 END IF;
580
581 l_stmt := l_stmt || ' H.header_id, L.Line_id, L.org_id ' ;
582 --BUG 13901213 End
583
584 IF NVL(p_sch_mode, 'LINE_ELIGIBLE') = 'LINE_ELIGIBLE' THEN
585 l_stmt := l_stmt || 'FROM oe_order_headers_all H, oe_order_lines L, '
586 || ' wf_item_activity_statuses wias, wf_process_activities wpa ';
587 ELSE
588 l_stmt := l_stmt || 'FROM oe_order_headers_all H, oe_order_lines L ';
589 END IF;
590 l_stmt := l_stmt || 'WHERE H.header_id = L.header_id '
591 || 'AND H.org_id = L.org_id '
592 || 'AND nvl(H.transaction_phase_code,''F'')=''F''' -- Bug 8517633
593 || 'AND H.open_flag = ''Y'''||' AND L.open_flag = ''Y'''
594 --9098824: Start
595 ||' AND L.line_category_code <> '||'''RETURN'''
596 ||' AND L.item_type_code <> '||'''SERVICE'''
597 ||' AND NVL(L.subscription_enable_flag,''N'')=''N''' -- sol_ord_er #16014165
598 ||' AND L.source_type_code <> '||'''EXTERNAL'''
599 --9098824: End
600 ;
601 /*End MOAC_SQL_CHANGE */
602
603 -- Building where clause.
604 -- Moac Start
605 IF p_org_id is NOT NULL THEN
606 l_stmt := l_stmt || ' AND L.org_id = :org_id';
607 END IF;
608 -- Moac End
609
610 IF p_order_number_low IS NOT NULL THEN
611 l_stmt := l_stmt || ' AND H.order_number >= :order_number_low';
612 END IF;
613 IF p_order_number_high IS NOT NULL THEN
614 l_stmt := l_stmt || ' AND H.order_number <= :order_number_high';
615 END IF;
616 IF p_request_date_low IS NOT NULL THEN
617 l_stmt := l_stmt || ' AND H.request_date >= :request_date_low';
618 END IF;
619 IF p_request_date_high IS NOT NULL THEN
620 l_stmt := l_stmt || ' AND H.request_date <= :request_date_high';
621 END IF;
622 IF p_customer_po_number IS NOT NULL THEN
623 l_stmt := l_stmt || ' AND H.cust_po_number = :customer_po_number';
624 END IF;
625 IF p_ship_to_location IS NOT NULL THEN
626 l_stmt := l_stmt || ' AND H.ship_to_org_id = :ship_to_location';
627 END IF;
628 IF p_order_type IS NOT NULL THEN
629 l_stmt := l_stmt || ' AND H.order_type_id = :order_type';
630 END IF;
631 IF p_customer IS NOT NULL THEN
632 l_stmt := l_stmt || ' AND H.sold_to_org_id = :customer';
633 END IF;
634 IF p_item IS NOT NULL THEN
635 l_stmt := l_stmt || ' AND L.inventory_item_id = :item';
636 END IF;
637 IF p_ordered_date_low IS NOT NULL THEN
638 l_stmt := l_stmt || ' AND H.ordered_date >= :ordered_date_low';
639 END IF;
640 IF p_ordered_date_high IS NOT NULL THEN
641 l_stmt := l_stmt || ' AND H.ordered_date <= :ordered_date_high';
642 END IF;
643 IF p_warehouse IS NOT NULL THEN
644 l_stmt := l_stmt || ' AND L.ship_from_org_id = :warehouse';
645 END IF;
646 IF p_demand_class IS NOT NULL THEN
647 l_stmt := l_stmt || ' AND L.demand_class_code = :demand_class';
648 END IF;
649 IF p_planning_priority IS NOT NULL THEN
650 l_stmt := l_stmt || ' AND L.planning_priority = :planning_priority';
651 END IF;
652 IF p_shipment_priority IS NOT NULL THEN
653 l_stmt := l_stmt || ' AND L.shipment_priority_code = :shipment_priority';
654 END IF;
655 IF p_line_type IS NOT NULL THEN
656 l_stmt := l_stmt || ' AND L.line_type_id = :line_type';
657 END IF;
658 IF p_line_request_date_low IS NOT NULL THEN
659 l_stmt := l_stmt || ' AND L.request_date >= :line_request_date_low';
660 END IF;
661 IF p_line_request_date_high IS NOT NULL THEN
662 l_stmt := l_stmt || ' AND L.request_date <= :line_request_date_high';
663 END IF;
664 IF p_line_ship_to_location IS NOT NULL THEN
665 l_stmt := l_stmt || ' AND L.ship_to_org_id = :line_ship_to_location';
666 END IF;
667 IF p_sch_ship_date_low IS NOT NULL THEN
668 l_stmt := l_stmt || ' AND L.schedule_ship_date >= :sch_ship_date_low';
669 END IF;
670 IF p_sch_ship_date_high IS NOT NULL THEN
671 l_stmt := l_stmt || ' AND L.schedule_ship_date <= :sch_ship_date_high';
672 END IF;
673 IF p_sch_arrival_date_low IS NOT NULL THEN
674 l_stmt := l_stmt || ' AND L.schedule_arrival_date >= :sch_arrival_date_low';
675 END IF;
676 IF p_sch_arrival_date_high IS NOT NULL THEN
677 l_stmt := l_stmt || ' AND L.schedule_arrival_date <= :sch_arrival_date_high';
678 END IF;
679 IF p_booked IS NOT NULL THEN
680 l_stmt := l_stmt || ' AND L.booked_flag = :booked';
681 END IF;
682 --Bug 8813015: start
683 IF Nvl(p_picked,'Y') = 'N' THEN
684 l_stmt := l_stmt || ' AND not exists (select 1 from wsh_delivery_details wdd';
685 l_stmt := l_stmt || ' where wdd.source_code = ''OE''';
686 l_stmt := l_stmt || ' and wdd.source_line_id = l.line_id';
687 l_stmt := l_stmt || ' and wdd.released_status in ';
688 l_stmt := l_stmt || ' (''S'',''C'',''Y'')) ';
689 END IF;
690 --Bug 8813015: end
691
692 IF p_sch_mode = 'SCHEDULE' THEN
693 l_stmt := l_stmt || ' AND L.schedule_status_code IS NULL';
694 ELSIF p_sch_mode IN ('UNSCHEDULE','RESCHEDULE','RESCHEDULE_RD') THEN
695 l_stmt := l_stmt || ' AND L.schedule_status_code IS NOT NULL';
696 ELSIF NVL(p_sch_mode, 'LINE_ELIGIBLE') = 'LINE_ELIGIBLE' THEN
697 l_stmt := l_stmt || ' AND wias.item_type = ''OEOL'''
698 || ' AND wias.process_activity = wpa.instance_id'
699 || ' AND wpa.activity_item_type = ''OEOL'''
700 || ' AND wpa.activity_name = ''SCHEDULING_ELIGIBLE'''
701 || ' AND wias.activity_status = ''NOTIFIED'''
702 || ' AND wias.item_key = to_char(L.line_id)'
703 || ' AND wias.begin_date < :prg_start_date'; -- 12639770
704 END IF;
705
706 -- Building order by clause.
707 IF p_order_by_first IS NOT NULL THEN
708 l_stmt := l_stmt ||' ORDER BY L.'||p_order_by_first;
709 IF p_order_by_sec IS NOT NULL THEN
710 l_stmt := l_stmt ||', L.'||p_order_by_sec;
711 END IF;
712 ELSIF p_order_by_sec IS NOT NULL THEN
713 l_stmt := l_stmt ||' ORDER BY L.'||p_order_by_sec;
714
715
716 END IF;
717 -- Moac start
718 IF NOT l_single_org then
719 IF p_order_by_first IS NOT NULL OR
720 p_order_by_sec IS NOT NULL THEN
721 l_stmt := l_stmt || ', L.org_id' ;
722 ELSE
723 l_stmt := l_stmt ||' ORDER BY L.org_id';
724 END IF;
725 END IF;
726 -- Moac End.
727 IF NOT l_single_org OR
728 (p_order_by_first IS NOT NULL OR
729 p_order_by_sec IS NOT NULL) then
730 l_stmt := l_stmt || ', L.top_model_line_id,l.line_id' ; --5166476
731 ELSE
732 l_stmt := l_stmt ||' ORDER BY L.top_model_line_id,l.line_id' ;
733 END IF;
734
735 IF l_debug_level > 0 THEN
736 oe_debug_pub.add('Query : ' || l_stmt, 1 ) ;
737 END IF;
738
739 -- Parse statement.
740 DBMS_SQL.Parse(l_cursor_id,l_stmt,DBMS_SQL.NATIVE);
741
742 -- Bind variables
743 -- Moac Start
744 IF p_org_id is NOT NULL THEN
745 DBMS_SQL.Bind_Variable(l_cursor_id, ':org_id', p_org_id);
746 END IF;
747 -- Moac End
748
749 IF p_order_number_low IS NOT NULL THEN
750 DBMS_SQL.Bind_Variable(l_cursor_id, ':order_number_low',
751 p_order_number_low);
752 END IF;
753 IF p_order_number_high IS NOT NULL THEN
754 DBMS_SQL.Bind_Variable(l_cursor_id, ':order_number_high',
755 p_order_number_high);
756 END IF;
757 IF p_request_date_low IS NOT NULL THEN
758 DBMS_SQL.Bind_Variable(l_cursor_id, ':request_date_low',
759 l_request_date_low);
760 END IF;
761 IF p_request_date_high IS NOT NULL THEN
762 DBMS_SQL.Bind_Variable(l_cursor_id, ':request_date_high',
763 l_request_date_high);
764 END IF;
765 IF p_customer_po_number IS NOT NULL THEN
766 DBMS_SQL.Bind_Variable(l_cursor_id, ':customer_po_number',
767 p_customer_po_number);
768 END IF;
769 IF p_ship_to_location IS NOT NULL THEN
770 DBMS_SQL.Bind_Variable(l_cursor_id, ':ship_to_location',
771 p_ship_to_location);
772 END IF;
773 IF p_order_type IS NOT NULL THEN
774 DBMS_SQL.Bind_Variable(l_cursor_id, ':order_type', p_order_type);
775 END IF;
776 IF p_customer IS NOT NULL THEN
777 DBMS_SQL.Bind_Variable(l_cursor_id, ':customer', p_customer);
778 END IF;
779 IF p_item IS NOT NULL THEN
780 DBMS_SQL.Bind_Variable(l_cursor_id, ':item', p_item);
781 END IF;
782 IF p_ordered_date_low IS NOT NULL THEN
783 DBMS_SQL.Bind_Variable(l_cursor_id, ':ordered_date_low',
784 l_ordered_date_low);
785 END IF;
786 IF p_ordered_date_high IS NOT NULL THEN
787 DBMS_SQL.Bind_Variable(l_cursor_id, ':ordered_date_high',
788 l_ordered_date_high);
789 END IF;
790 IF p_warehouse IS NOT NULL THEN
791 DBMS_SQL.Bind_Variable(l_cursor_id, ':warehouse', p_warehouse);
792 END IF;
793 IF p_demand_class IS NOT NULL THEN
794 DBMS_SQL.Bind_Variable(l_cursor_id, ':demand_class', p_demand_class);
795 END IF;
796 IF p_planning_priority IS NOT NULL THEN
797 DBMS_SQL.Bind_Variable(l_cursor_id, ':planning_priority',
798 p_planning_priority);
799 END IF;
800 IF p_shipment_priority IS NOT NULL THEN
801 DBMS_SQL.Bind_Variable(l_cursor_id, ':shipment_priority',
802 p_shipment_priority);
803 END IF;
804 IF p_line_type IS NOT NULL THEN
805 DBMS_SQL.Bind_Variable(l_cursor_id, ':line_type', p_line_type);
806 END IF;
807 IF p_line_request_date_low IS NOT NULL THEN
808 DBMS_SQL.Bind_Variable(l_cursor_id, ':line_request_date_low',
809 l_line_request_date_low);
810 END IF;
811 IF p_line_request_date_high IS NOT NULL THEN
812 DBMS_SQL.Bind_Variable(l_cursor_id, ':line_request_date_high',
813 l_line_request_date_high);
814 END IF;
815 IF p_line_ship_to_location IS NOT NULL THEN
816 DBMS_SQL.Bind_Variable(l_cursor_id, ':line_ship_to_location',
817 p_line_ship_to_location);
818 END IF;
819 IF p_sch_ship_date_low IS NOT NULL THEN
820 DBMS_SQL.Bind_Variable(l_cursor_id, ':sch_ship_date_low',
821 l_sch_ship_date_low);
822 END IF;
823 IF p_sch_ship_date_high IS NOT NULL THEN
824 DBMS_SQL.Bind_Variable(l_cursor_id, ':sch_ship_date_high',
825 l_sch_ship_date_high);
826 END IF;
827 IF p_sch_arrival_date_low IS NOT NULL THEN
828 DBMS_SQL.Bind_Variable(l_cursor_id, ':sch_arrival_date_low',
829 l_sch_arrival_date_low);
830 END IF;
831 IF p_sch_arrival_date_high IS NOT NULL THEN
832 DBMS_SQL.Bind_Variable(l_cursor_id, ':sch_arrival_date_high',
833 l_sch_arrival_date_high);
834 END IF;
835 IF p_booked IS NOT NULL THEN
836 DBMS_SQL.Bind_Variable(l_cursor_id, ':booked', p_booked);
837 END IF;
838 --12639770
839 IF NVL(p_sch_mode, 'LINE_ELIGIBLE') = 'LINE_ELIGIBLE' THEN
840 DBMS_SQL.Bind_Variable(l_cursor_id, ':prg_start_date', l_prg_start_date);
841 END IF;
842
843 --Bug 8813015: start
844 --This code is to be un-commented while providing option for
845 --picked lines in scheduling concurrent request UI.
846 /*
847 IF p_picked IS NOT NULL THEN
848 DBMS_SQL.Bind_Variable(l_cursor_id, ':picked', p_picked);
849 END IF;
850 */
851 --Bug 8813015: end
852
853 -- Map output columns
854 DBMS_SQL.Define_Column(l_cursor_id, 1, l_header_id);
855 DBMS_SQL.Define_Column(l_cursor_id, 2, l_line_id);
856 DBMS_SQL.Define_Column(l_cursor_id, 3, l_org_id); -- Moac
857
858 IF l_debug_level > 0 THEN
859 oe_debug_pub.add('Before executing query.',1);
860 END IF;
861
862 -- Execute query.
863 l_retval := DBMS_SQL.Execute(l_cursor_id);
864
865 IF l_debug_level > 0 THEN
866 oe_debug_pub.add('Execution Result : ' || l_retval, 2) ;
867 END IF;
868
869 -- Process each row retrieved.
870 LOOP
871
872 IF l_debug_level > 0 THEN
873 oe_debug_pub.add('Execution Result : ' || l_retval, 2) ;
874 END IF;
875
876 IF DBMS_SQL.Fetch_Rows(l_cursor_id) = 0 THEN
877 EXIT;
878 END IF;
879
880 DBMS_SQL.Column_Value(l_cursor_id, 1, l_header_id);
881 DBMS_SQL.Column_Value(l_cursor_id, 2, l_line_id);
882 DBMS_SQL.Column_Value(l_cursor_id, 3, l_org_id); -- Moac
883
884
885 IF l_debug_level > 0 THEN
886 oe_debug_pub.add('***** 1. Processing Line Id '||
887 l_line_id ||' *****', 1);
888 END IF;
889 --4777400: Context set is Moved up to set before call to get_date_type
890 -- Moac Start
891 IF NOT l_single_org and l_org_id <> l_old_org_id THEN
892 l_old_org_id := l_org_id;
893 MO_GLOBAL.set_policy_context(p_access_mode => 'S', p_org_id => l_org_id);
894 END IF;
895 -- Moac End.
896 l_order_date_type_code := NVL
897 (OE_SCHEDULE_UTIL.Get_Date_Type(l_header_id),'SHIP');
898 l_temp_line_id := 0;
899
900 BEGIN
901
902 SELECT L.line_id,
903 L.booked_flag,
904 L.request_date,
905 L.ship_from_org_id,
906 L.ship_set_id,
907 L.arrival_set_id,
908 L.ato_line_id,
909 L.top_model_line_id,
910 L.link_to_line_id,
911 L.ship_model_complete_flag,
912 L.item_type_code,
913 L.schedule_status_code
914 INTO l_temp_line_id,
915 l_booked_flag,
916 l_request_date,
917 l_ship_from_org_id,
918 l_ship_set_id,
919 l_arrival_set_id,
920 l_ato_line_id,
921 l_top_model_line_id,
922 l_link_to_line_id,
923 l_smc_flag,
924 l_item_type_code,
925 l_schedule_status_code
926 FROM oe_order_lines_all L
927 WHERE L.open_flag = 'Y'
928 AND L.line_id = l_line_id;
929
930
931 EXCEPTION
932 WHEN no_data_found THEN
933 NULL;
934 END;
935
936
937 IF l_temp_line_id <> 0 THEN
938
939 g_conc_program := 'Y';
940 g_recorded := 'N'; -- 5166476
941
942 IF nvl(p_sch_mode, 'LINE_ELIGIBLE') = 'LINE_ELIGIBLE' THEN
943 --5166476
944 IF Line_Eligible(p_line_id => l_line_id) THEN
945
946 IF l_debug_level > 0 THEN
947 oe_debug_pub.add(to_char(l_line_id) || ' - Line Eligible', 1);
948 END IF;
949
950 --l_found := FALSE;
951
952 --IF NOT l_found THEN
953 g_process_records := 0;
954 g_failed_records := 0;
955 -- 8731703
956 -- Lock the record before processing
957 BEGIN
958 SELECT line_id
959 INTO l_locked_line_id
960 FROM oe_order_lines_all
961 WHERE line_id = l_line_id
962 FOR UPDATE NOWAIT;
963 wf_engine.CompleteActivityInternalName ('OEOL',
964 to_char(l_line_id),
965 'SCHEDULING_ELIGIBLE',
966 'COMPLETE',
967 TRUE ); --15870313
968 l_line_count := l_line_count+1; -- 12639770
969 /*
970 OE_MSG_PUB.Count_And_Get (p_count => l_msg_count,
971 p_data => l_msg_data);
972
973 FOR I in 1..l_msg_count LOOP
974 l_msg_data := OE_MSG_PUB.Get(I,'F');
975
976 -- Write Messages in the log file
977 FND_FILE.PUT_LINE(FND_FILE.LOG, l_msg_data);
978
979 END LOOP;
980 */
981 EXCEPTION
982 WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
983 IF l_debug_level > 0 THEN
984 oe_debug_pub.add('OEXWSCHB.pls: unable to lock the line:'||l_line_id,1);
985 END IF;
986 WHEN OTHERS THEN
987 IF l_debug_level > 0 THEN
988 oe_debug_pub.add('*** 1. Error - '||SUBSTR(SQLERRM,1,200),1);
989 END IF;
990 END;
991
992 --5166476
993
994 --IF g_failed_records > 0 THEN
995 IF OE_SCH_CONC_REQUESTS.oe_line_status_tbl.EXISTS(l_line_id) AND
996 OE_SCH_CONC_REQUESTS.oe_line_status_tbl(l_line_id) ='N' THEN
997 l_failure := TRUE;
998 END IF;
999 IF l_debug_level > 0 THEN
1000 oe_debug_pub.add( 'R2 PROCESSED: '||l_rec_processed||' FAILED: '||l_rec_failure, 1 ) ;
1001 END IF;
1002
1003 --END IF;
1004 END IF;
1005 --12639770
1006 IF NVL(p_commit_threshold,0) > 0 THEN
1007 IF l_line_count = p_commit_threshold THEN
1008 COMMIT;
1009 l_line_count:=0;
1010 END IF;
1011 END IF;
1012 ELSIF p_sch_mode = 'SCHEDULE' AND
1013 l_schedule_status_code IS NULL THEN
1014
1015 IF l_debug_level > 0 THEN
1016 oe_debug_pub.add(to_char(l_line_id) || ' - Schedule', 1);
1017 END IF;
1018 l_found := FALSE;
1019
1020 IF l_smc_flag = 'Y' AND
1021 l_top_model_line_id IS NOT NULL THEN
1022 l_found := model_processed(l_top_model_line_id,l_top_model_line_id);
1023 --5166476
1024 IF l_found AND
1025 oe_line_status_tbl.EXISTS(l_top_model_line_id) THEN
1026 IF OE_SCH_CONC_REQUESTS.OE_line_status_Tbl(l_top_model_line_id) = 'N' THEN
1027 --5166476
1028 OE_SCH_CONC_REQUESTS.OE_line_status_Tbl(l_line_id) := 'N';
1029 ELSE
1030 OE_SCH_CONC_REQUESTS.OE_line_status_Tbl(l_line_id) := 'Y';
1031 END IF;
1032 IF l_debug_level > 0 THEN
1033 oe_debug_pub.add( 'R3.1 PROCESSED: '||l_line_id, 1 ) ;
1034 END IF;
1035 END IF;
1036 ELSIF l_ato_line_id IS NOT NULL THEN
1037 --l_top_model_line_id = l_ato_line_id THEN --5166476
1038 l_found := model_processed(l_ato_line_id,l_ato_line_id);
1039 --5166476
1040 IF l_found AND
1041 oe_line_status_tbl.EXISTS(l_ato_line_id) THEN
1042 IF OE_SCH_CONC_REQUESTS.OE_line_status_Tbl(l_ato_line_id) ='N' THEN
1043 OE_SCH_CONC_REQUESTS.OE_line_status_Tbl(l_line_id) := 'N';
1044 ELSE
1045 OE_SCH_CONC_REQUESTS.OE_line_status_Tbl(l_line_id) := 'Y';
1046 END IF;
1047 IF l_debug_level > 0 THEN
1048 oe_debug_pub.add( 'R3.2 PROCESSED: '||l_line_id, 1 ) ;
1049 END IF;
1050 END IF;
1051 IF NOT l_found AND
1052 l_top_model_line_id IS NOT NULL AND
1053 l_top_model_line_id <> l_ato_line_id AND
1054 (p_apply_warehouse IS NULL AND
1055 p_apply_sch_date IS NULL)THEN
1056 l_found := model_processed(l_top_model_line_id,l_line_id);
1057 END IF;
1058
1059 ELSIF l_top_model_line_id IS NOT NULL THEN
1060 IF (p_apply_warehouse IS NOT NULL OR
1061 p_apply_sch_date IS NOT NULL) AND
1062 l_item_type_code NOT IN (OE_GLOBALS.G_ITEM_INCLUDED) THEN
1063 l_found := model_processed(l_line_id,l_line_id);
1064 IF l_debug_level > 0 THEN
1065 oe_debug_pub.add( 'R3.4 PROCESSED '||l_line_id,1);
1066 END IF;
1067 --5166476
1068 ELSIF l_top_model_line_id <> l_link_to_line_id AND
1069 l_item_type_code = (OE_GLOBALS.G_ITEM_INCLUDED) AND
1070 (p_apply_warehouse IS NOT NULL OR
1071 p_apply_sch_date IS NOT NULL) THEN
1072 l_found := model_processed(l_link_to_line_id,l_line_id);
1073 IF l_found AND
1074 oe_line_status_tbl.EXISTS(l_link_to_line_id) AND
1075 oe_line_status_tbl(l_link_to_line_id) ='N' THEN
1076 oe_line_status_tbl(l_line_id) := 'N';
1077 END IF;
1078 ELSE
1079
1080 l_found := model_processed(l_top_model_line_id,l_line_id);
1081 --5166476
1082 IF l_found AND
1083 oe_line_status_tbl.EXISTS(l_top_model_line_id) AND
1084 oe_line_status_tbl(l_top_model_line_id) ='N' THEN
1085 oe_line_status_tbl(l_line_id) := 'N';
1086 IF l_debug_level > 0 THEN
1087 oe_debug_pub.add( 'R3.5 PROCESSED: '||l_line_id, 1 ) ;
1088 END IF;
1089 END IF;
1090
1091 END IF;
1092 END IF;
1093
1094 IF NOT l_found THEN
1095 IF p_apply_warehouse IS NOT NULL OR
1096 p_apply_sch_date IS NOT NULL
1097 THEN
1098
1099 -- Define a save point
1100 SAVEPOINT Schedule_Line;
1101
1102 IF l_rec_processed > 1 THEN
1103 -- Initially this will be set to FND_API.G_TRUE
1104 l_init_msg_list := FND_API.G_FALSE;
1105 END IF;
1106
1107 oe_line_util.lock_row
1108 (x_return_status => l_return_status
1109 ,p_x_line_rec => l_line_rec
1110 ,p_line_id => l_line_id);
1111
1112 --l_line_tbl := OE_ORDER_PUB.G_MISS_LINE_TBL;
1113 --l_old_line_tbl := OE_ORDER_PUB.G_MISS_LINE_TBL;
1114 --l_line_tbl(1) := OE_ORDER_PUB.G_MISS_LINE_REC;
1115 --l_line_tbl(1).line_id := l_line_id;
1116 --l_line_tbl(1).header_id := l_header_id;
1117 l_line_tbl(1) := l_line_rec;
1118 l_old_line_tbl(1) := l_line_rec;
1119
1120 l_line_tbl(1).operation := OE_GLOBALS.G_OPR_UPDATE;
1121
1122 IF p_apply_warehouse IS NOT NULL THEN
1123 l_line_tbl(1).ship_from_org_id := p_apply_warehouse;
1124 END IF;
1125
1126 IF p_apply_sch_date IS NOT NULL THEN
1127 IF l_order_date_type_code = 'SHIP' THEN
1128 l_line_tbl(1).schedule_ship_date := l_apply_sch_date;
1129 ELSE
1130 l_line_tbl(1).schedule_arrival_date := l_apply_sch_date;
1131 END IF;
1132 ELSE
1133 IF l_order_date_type_code = 'SHIP' THEN
1134 l_line_tbl(1).schedule_ship_date := l_request_date;
1135 ELSE
1136 l_line_tbl(1).schedule_arrival_date := l_request_date;
1137 END IF;
1138
1139 END IF;
1140 --4892724
1141 l_line_tbl(1).change_reason := 'SYSTEM';
1142 l_line_tbl(1).change_comments := 'SCHEDULE ORDERS CONCURRENT PROGRAM';
1143
1144
1145 -- Call to process order
1146 l_control_rec.controlled_operation := TRUE;
1147 l_control_rec.write_to_db := TRUE;
1148 l_control_rec.PROCESS := FALSE;
1149 l_control_rec.default_attributes := TRUE;
1150 l_control_rec.change_attributes := TRUE;
1151 l_process_order := TRUE;
1152 l_control_rec.check_security := TRUE;-- 5168540
1153
1154 g_process_records := 0;
1155 g_failed_records := 0;
1156
1157 Oe_Order_Pvt.Lines
1158 (p_init_msg_list => l_init_msg_list,
1159 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
1160 p_control_rec => l_control_rec,
1161 p_x_line_tbl => l_line_tbl,
1162 p_x_old_line_tbl => l_old_line_tbl,
1163 x_return_status => l_return_status);
1164
1165 IF l_debug_level > 0 THEN
1166 oe_debug_pub.add('Oe_Order_Pvt.Lines returns with - '
1167 || l_return_status);
1168 END IF;
1169
1170 IF l_return_status IN (FND_API.G_RET_STS_ERROR,
1171 FND_API.G_RET_STS_UNEXP_ERROR) THEN
1172 IF l_debug_level > 0 THEN
1173 oe_debug_pub.add('#### FAILURE #### LINE_ID - '
1174 || to_char(l_line_id) || ' ####');
1175 END IF;
1176 --5166476
1177 IF g_recorded = 'N' THEN
1178 --5166476
1179 OE_SCH_CONC_REQUESTS.oe_line_status_tbl(l_line_id) :='N';
1180 g_recorded := 'Y';
1181 END IF;
1182 --5166476
1183 --IF l_smc_flag = 'Y' AND
1184 IF l_top_model_line_id IS NOT NULL AND
1185 l_smc_flag = 'Y' AND
1186 l_ato_line_id IS NULL THEN
1187 OE_line_status_Tbl(l_top_model_line_id) := 'N';
1188 ELSIF l_ato_line_id IS NOT NULL THEN
1189 OE_line_status_Tbl(l_ato_line_id) := 'N';
1190 END IF;
1191
1192
1193 l_failure := TRUE;
1194
1195 ROLLBACK TO SAVEPOINT Schedule_Line;
1196
1197 END IF;
1198
1199 IF l_debug_level > 0 THEN
1200 oe_debug_pub.add( 'R3 PROCESSED: '||l_line_id,1);
1201 END IF;
1202
1203 ELSE -- No scheduling attributes are provided
1204
1205 --Define a savepoint Bug 13810638
1206 SAVEPOINT Schedule_Line;
1207
1208 IF l_debug_level > 0 THEN
1209 oe_debug_pub.add('No scheduling attributes. Booked flag - '
1210 || l_booked_flag);
1211 END IF;
1212
1213 g_process_records := 0;
1214 g_failed_records := 0;
1215
1216 --R12.MOAC
1217 l_selected_line_tbl(1).id1 := l_line_id;
1218
1219 l_process_order := TRUE; --Bug 13810638
1220
1221 OE_GROUP_SCH_UTIL.Schedule_Multi_lines
1222 (p_selected_line_tbl => l_selected_line_tbl, --R12.MOAC
1223 p_line_count => 1,
1224 p_sch_action => 'SCHEDULE',
1225 x_atp_tbl => l_atp_tbl,
1226 x_return_status => l_return_status,
1227 x_msg_count => l_msg_count,
1228 x_msg_data => l_msg_data);
1229
1230 --ELSE
1231 IF l_debug_level > 0 THEN
1232 oe_debug_pub.add('Return Status After Schedule_Multi_lines '||l_return_status,1);
1233 END IF;
1234
1235 IF NVL(l_booked_flag,'N') ='Y'
1236 AND l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1237
1238 IF l_debug_level > 0 THEN
1239 oe_debug_pub.add('It is a Booked Order' );
1240 END IF;
1241 -- Added PTO Logic as part of bug 5186581
1242 IF l_top_model_line_id is not null
1243 AND l_top_model_line_id = l_line_id
1244 AND l_ato_line_id is null
1245 AND l_smc_flag = 'N' THEN
1246
1247 IF l_debug_level > 0 THEN
1248
1249 oe_debug_pub.add('It is a PTO Model' );
1250 END IF;
1251
1252 -- Workflow wont progress all child lines for the Non SMC PTO model scenario. We have to progress all the
1253 -- child lines if the to Model is NON SMC
1254
1255 FOR M IN progress_pto LOOP
1256
1257
1258 IF l_debug_level > 0 THEN
1259 oe_debug_pub.add('Progressing Line ' || M.line_id, 1);
1260 END IF;
1261
1262 BEGIN
1263 -- COMPLETING ACTIVITY
1264 wf_engine.CompleteActivityInternalName
1265 ('OEOL',
1266 to_char(M.line_id),
1267 'SCHEDULING_ELIGIBLE',
1268 'COMPLETE',
1269 TRUE ); --15870313
1270 EXCEPTION
1271 WHEN OTHERS THEN
1272 NULL;
1273 END;
1274
1275
1276 END LOOP;
1277
1278 ELSE -- Call for each line or ATO/SMC...
1279
1280
1281 BEGIN
1282 -- COMPLETING ACTIVITY
1283 wf_engine.CompleteActivityInternalName
1284 ('OEOL',
1285 to_char(l_line_id),
1286 'SCHEDULING_ELIGIBLE',
1287 'COMPLETE',
1288 TRUE ); --15870313
1289 EXCEPTION
1290 WHEN OTHERS THEN
1291 NULL;
1292 END;
1293 END IF;
1294 END IF;
1295 --5166476
1296
1297 --IF g_failed_records > 0 THEN
1298 IF OE_SCH_CONC_REQUESTS.oe_line_status_tbl.EXISTS(l_line_id) AND
1299 OE_SCH_CONC_REQUESTS.oe_line_status_tbl(l_line_id) = 'N' THEN
1300 l_failure := TRUE;
1301 END IF;
1302
1303 --Bug 13810638
1304 IF l_return_status IN
1305 (FND_API.G_RET_STS_ERROR,FND_API.G_RET_STS_UNEXP_ERROR)
1306 THEN
1307 ROLLBACK TO SAVEPOINT Schedule_Line;
1308 IF l_debug_level > 0 THEN
1309 oe_debug_pub.add('#### FAILURE #### LINE_ID - '
1310 || to_char(l_line_id) || ' ####');
1311 END IF;
1312 l_failure := TRUE;
1313 END IF;
1314
1315 IF l_debug_level > 0 THEN
1316 oe_debug_pub.add( 'R4 PROCESSED: '||l_rec_processed||' FAILED: '||l_rec_failure, 1 ) ;
1317 END IF;
1318 END IF;
1319 END IF;
1320
1321
1322 ELSIF p_sch_mode = 'UNSCHEDULE' AND
1323 l_schedule_status_code IS NOT NULL THEN
1324
1325 IF l_debug_level > 0 THEN
1326 oe_debug_pub.add(to_char(l_line_id) || ' - Unschedule', 1);
1327 END IF;
1328
1329 l_found := FALSE;
1330
1331 IF l_smc_flag = 'Y' AND
1332 l_top_model_line_id IS NOT NULL THEN
1333 l_found := model_processed(l_top_model_line_id,l_top_model_line_id);
1334 ELSIF l_ato_line_id IS NOT NULL THEN
1335 --l_top_model_line_id = l_ato_line_id THEN
1336 l_found := model_processed(l_ato_line_id,l_ato_line_id);
1337 ELSIF l_smc_flag = 'N' AND
1338 l_top_model_line_id IS NOT NULL AND
1339 (l_ato_line_id IS NULL OR
1340 l_ato_line_id <> l_top_model_line_id) AND
1341 l_item_type_code = OE_GLOBALS.G_ITEM_INCLUDED THEN
1342
1343 l_found := included_processed(l_line_id);
1344 END IF;
1345
1346 IF NOT l_found THEN
1347
1348 --Define a savepoint Bug 13810638
1349 SAVEPOINT Schedule_Line;
1350
1351 g_process_records := 0;
1352 g_failed_records := 0;
1353
1354 IF l_item_type_code = OE_GLOBALS.G_ITEM_INCLUDED THEN
1355 --5166476
1356 --g_process_records := g_process_records + 1;
1357 OE_SCH_CONC_REQUESTS.oe_line_status_tbl(l_line_id) := 'Y';
1358 END IF;
1359 --R12.MOAC
1360 l_selected_line_tbl(1).id1 := l_line_id;
1361 l_process_order := TRUE; --Bug 13810638
1362 OE_GROUP_SCH_UTIL.Schedule_Multi_lines
1363 (p_selected_line_tbl => l_selected_line_tbl,
1364 p_line_count => 1,
1365 p_sch_action => 'UNSCHEDULE',
1366 x_atp_tbl => l_atp_tbl,
1367 x_return_status => l_return_status,
1368 x_msg_count => l_msg_count,
1369 x_msg_data => l_msg_data);
1370 --5166476
1371
1372 --IF g_failed_records > 0 THEN
1373 IF OE_SCH_CONC_REQUESTS.oe_line_status_tbl.EXISTS(l_line_id) AND
1374 OE_SCH_CONC_REQUESTS.oe_line_status_tbl(l_line_id) = 'N' THEN
1375 l_failure := TRUE;
1376 END IF;
1377
1378 --Bug 13810638
1379 IF l_return_status IN
1380 (FND_API.G_RET_STS_ERROR,FND_API.G_RET_STS_UNEXP_ERROR)
1381 THEN
1382 ROLLBACK TO SAVEPOINT Schedule_Line;
1383 IF l_debug_level > 0 THEN
1384 oe_debug_pub.add('#### FAILURE #### LINE_ID - '
1385 || to_char(l_line_id) || ' ####');
1386 END IF;
1387 l_failure := TRUE;
1388 END IF;
1389
1390 IF l_debug_level > 0 THEN
1391 oe_debug_pub.add( 'R5 PROCESSED: '||l_rec_processed||' FAILED: '||l_rec_failure, 1 ) ;
1392 END IF;
1393
1394 END IF;
1395 ELSIF p_sch_mode IN ('RESCHEDULE','RESCHEDULE_RD') THEN
1396
1397 l_temp_flag := FALSE;
1398
1399 IF l_debug_level > 0 THEN
1400 oe_debug_pub.add(to_char(l_line_id) || ' - Reschedule', 1);
1401 END IF;
1402
1403 IF l_smc_flag = 'Y' AND
1404 l_top_model_line_id IS NOT NULL THEN
1405 l_temp_flag := model_processed(l_top_model_line_id,l_top_model_line_id);
1406 --5166476
1407 IF l_temp_flag AND
1408 oe_line_status_tbl.EXISTS(l_top_model_line_id) AND
1409 oe_line_status_tbl(l_top_model_line_id) = 'N' THEN
1410 oe_line_status_tbl(l_line_id) := 'N';
1411 /*
1412 l_rec_processed := l_rec_processed + 1;
1413 l_rec_failure := l_rec_failure + 1;
1414 */
1415 IF l_debug_level > 0 THEN
1416 oe_debug_pub.add( 'R6.1 PROCESSED: '||l_rec_processed||' FAILED: '||l_rec_failure, 1 ) ;
1417 END IF;
1418 END IF;
1419 ELSIF l_ato_line_id IS NOT NULL THEN
1420 --l_ato_line_id = l_top_model_line_id THEN
1421 l_temp_flag := model_processed(l_ato_line_id,l_ato_line_id);
1422 --5166476
1423 IF l_temp_flag AND
1424 oe_line_status_tbl.EXISTS(l_ato_line_id) AND
1425 oe_line_status_tbl(l_ato_line_id) = 'N' THEN
1426 oe_line_status_tbl(l_line_id) := 'N';
1427 /*
1428 l_rec_processed := l_rec_processed + 1;
1429 l_rec_failure := l_rec_failure + 1;
1430 */
1431 IF l_debug_level > 0 THEN
1432 oe_debug_pub.add( 'R6.2 PROCESSED: '||l_rec_processed||' FAILED: '||l_rec_failure, 1 ) ;
1433 END IF;
1434 END IF;
1435
1436 END IF;
1437
1438 /* If many of the lines selected are part of a set, then delayed
1439 * request must get logged only for one of the lines.
1440 */
1441 IF l_ship_set_id IS NOT NULL OR
1442 l_arrival_set_id IS NOT NULL THEN
1443
1444 l_temp_flag := set_processed( NVL(l_ship_set_id,l_arrival_set_id));
1445 END IF;
1446
1447 IF NOT l_temp_flag THEN
1448
1449 -- Define a save point
1450 SAVEPOINT Schedule_Line;
1451
1452 IF l_rec_processed > 1 THEN
1453 l_init_msg_list := FND_API.G_FALSE;
1454 END IF;
1455
1456 oe_line_util.lock_row
1457 (x_return_status => l_return_status
1458 ,p_x_line_rec => l_line_rec
1459 ,p_line_id => l_line_id);
1460
1461 l_line_tbl(1) := l_line_rec;
1462 l_old_line_tbl(1) := l_line_rec;
1463
1464 l_line_tbl(1).operation := OE_GLOBALS.G_OPR_UPDATE;
1465
1466 IF p_sch_mode = 'RESCHEDULE_RD' THEN
1467 l_apply_sch_date := l_line_tbl(1).request_date;
1468 END IF;
1469
1470 l_line_tbl(1).ship_from_org_id
1471 := NVL(p_apply_warehouse, l_ship_from_org_id);
1472
1473
1474 IF l_apply_sch_date IS NOT NULL THEN
1475 IF l_order_date_type_code = 'SHIP' THEN
1476 l_line_tbl(1).schedule_ship_date := l_apply_sch_date;
1477 ELSE
1478 l_line_tbl(1).schedule_arrival_date := l_apply_sch_date;
1479 END IF;
1480 END IF;
1481
1482 --l_line_tbl(1).schedule_action_code := OE_SCHEDULE_UTIL.OESCH_ACT_RESCHEDULE;
1483
1484 --4892724
1485 l_line_tbl(1).change_reason := 'SYSTEM';
1486 l_line_tbl(1).change_comments := 'SCHEDULE ORDERS CONCURRENT PROGRAM';
1487
1488 -- Call to process order
1489 l_control_rec.controlled_operation := TRUE;
1490 l_control_rec.write_to_db := TRUE;
1491 --l_control_rec.PROCESS := FALSE;
1492 l_control_rec.default_attributes := TRUE;
1493 l_control_rec.change_attributes := TRUE;
1494 l_process_order := TRUE;
1495 l_control_rec.check_security := TRUE;-- 5168540
1496
1497 g_process_records := 0;
1498 g_failed_records := 0;
1499
1500 Oe_Order_Pvt.Lines
1501 (p_validation_level => FND_API.G_VALID_LEVEL_FULL,
1502 p_init_msg_list => l_init_msg_list,
1503 p_control_rec => l_control_rec,
1504 p_x_line_tbl => l_line_tbl,
1505 p_x_old_line_tbl => l_old_line_tbl,
1506 x_return_status => l_return_status);
1507
1508 IF l_debug_level > 0 THEN
1509 oe_debug_pub.add('Oe_Order_Pvt.Lines returns with - '
1510 || l_return_status);
1511 END IF;
1512
1513 IF l_return_status IN
1514 (FND_API.G_RET_STS_ERROR,FND_API.G_RET_STS_UNEXP_ERROR)
1515 THEN
1516 ROLLBACK TO SAVEPOINT Schedule_Line;
1517 IF l_debug_level > 0 THEN
1518 oe_debug_pub.add('#### FAILURE #### LINE_ID - '
1519 || to_char(l_line_id) || ' ####');
1520 END IF;
1521 --5166476
1522 OE_SCH_CONC_REQUESTS.oe_line_status_tbl(l_line_id) := 'N';
1523 --516476
1524 IF l_smc_flag = 'Y' AND
1525 l_top_model_line_id IS NOT NULL THEN
1526 OE_line_status_Tbl(l_top_model_line_id) := 'N';
1527 ELSIF l_ato_line_id IS NOT NULL THEN
1528 OE_line_status_Tbl(l_ato_line_id) := 'N';
1529 END IF;
1530 l_failure := TRUE;
1531 END IF;
1532 IF l_debug_level > 0 THEN
1533 oe_debug_pub.add( 'R6 PROCESSED: '||l_rec_processed||' FAILED: '||l_rec_failure, 1 ) ;
1534 END IF;
1535
1536 END IF;
1537 END IF; -- line eligible
1538
1539 IF l_process_order = TRUE
1540 AND l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1541 IF l_debug_level > 0 THEN
1542 oe_debug_pub.add('After Call to Process Order ',1);
1543 END IF;
1544 BEGIN
1545
1546 l_control_rec.controlled_operation := TRUE;
1547 l_control_rec.process := TRUE;
1548 l_control_rec.process_entity := OE_GLOBALS.G_ENTITY_ALL;
1549 l_control_rec.check_security := FALSE;
1550 l_control_rec.clear_dependents := FALSE;
1551 l_control_rec.default_attributes := FALSE;
1552 l_control_rec.change_attributes := FALSE;
1553 l_control_rec.validate_entity := FALSE;
1554 l_control_rec.write_to_DB := FALSE;
1555
1556 -- Instruct API to clear its request table
1557
1558 l_control_rec.clear_api_cache := FALSE;
1559 l_control_rec.clear_api_requests := TRUE;
1560
1561 oe_line_util.Post_Line_Process (p_control_rec => l_control_rec,
1562 p_x_line_tbl => l_line_tbl );
1563 g_process_records := 0;
1564 g_failed_records := 0;
1565
1566 IF l_debug_level > 0 THEN
1567 oe_debug_pub.add('GOING TO EXECUTE DELAYED REQUESTS ', 2);
1568 END IF;
1569
1570 OE_DELAYED_REQUESTS_PVT.Process_Delayed_Requests
1571 (x_return_status => l_return_status);
1572
1573 IF l_return_status IN (FND_API.G_RET_STS_ERROR,
1574 FND_API.G_RET_STS_UNEXP_ERROR) THEN
1575 IF l_debug_level > 0 THEN
1576 oe_debug_pub.add('#### FAILURE #### LINE_ID - '
1577 || to_char(l_line_id) || ' ####');
1578 END IF;
1579
1580 l_failure := TRUE;
1581
1582 OE_Delayed_Requests_PVT.Clear_Request(l_return_status);
1583
1584 IF l_debug_level > 0 THEN
1585 oe_debug_pub.add('AFTER CLEARING DELAYED REQUESTS: '|| l_return_status, 2);
1586 END IF;
1587
1588 ROLLBACK TO SAVEPOINT Schedule_Line;
1589 END IF;
1590 EXCEPTION
1591 WHEN OTHERS THEN
1592 IF l_debug_level > 0 THEN
1593 oe_debug_pub.add('IN WHEN OTHERS, Error:'|| SQLERRM, 2);
1594 END IF;
1595 OE_Delayed_Requests_PVT.Clear_Request(l_return_status);
1596 IF l_debug_level > 0 THEN
1597 oe_debug_pub.add('IN WHEN OTHERS '|| l_return_status, 2);
1598 END IF;
1599 END;
1600
1601 l_process_order := FALSE;
1602 ELSE -- (5174789)Return status is not success
1603 OE_DELAYED_REQUESTS_PVT.Clear_Request(l_return_status);
1604 l_process_order := FALSE;
1605 END IF;
1606
1607 END IF;
1608 END LOOP; -- loop for each row of dynamic query.
1609
1610 -- close the cursor
1611 DBMS_SQL.Close_Cursor(l_cursor_id);
1612
1613 END IF; -- if parameters passed are null.
1614
1615 OE_MSG_PUB.Save_Messages(p_request_id => to_number(l_request_id));
1616 --5166476
1617 --l_rec_success := l_rec_processed - l_rec_failure;
1618 l_rec_success :=0;
1619 l_rec_processed := 0;
1620 l_rec_failure := 0;
1621 l_index := OE_SCH_CONC_REQUESTS.oe_line_status_tbl.FIRST;
1622 WHILE l_index is not null
1623 LOOP
1624 --oe_debug_pub.add( 'R7 : '||l_index||' Status: '||oe_line_status_tbl(l_index), 1 ) ;
1625 IF OE_SCH_CONC_REQUESTS.oe_line_status_tbl(l_index) = 'Y' THEN
1626 l_rec_success := l_rec_success + 1;
1627 ELSE
1628 l_rec_failure := l_rec_failure + 1;
1629 END IF;
1630 l_rec_processed := l_rec_processed +1;
1631 l_index := OE_SCH_CONC_REQUESTS.oe_line_status_tbl.NEXT(l_index);
1632 END LOOP;
1633
1634 FND_FILE.PUT_LINE(FND_FILE.LOG, 'Total Lines Selected : ' || l_rec_processed);
1635 FND_FILE.PUT_LINE(FND_FILE.LOG, 'Lines Failed : ' || l_rec_failure);
1636 FND_FILE.PUT_LINE(FND_FILE.LOG, 'Lines Successfully Processed : ' || l_rec_success);
1637
1638 IF l_failure THEN
1639 RETCODE := 1;
1640 END IF;
1641
1642 EXCEPTION
1643 WHEN FND_API.G_EXC_ERROR THEN
1644 fnd_file.put_line(FND_FILE.LOG,
1645 'Error executing Scheduling, Exception:G_EXC_ERROR');
1646
1647 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1648 fnd_file.put_line(FND_FILE.LOG,
1649 'Error executing Scheduling, Exception:G_EXC_UNEXPECTED_ERROR');
1650
1651 WHEN OTHERS THEN
1652 fnd_file.put_line(FND_FILE.LOG, 'Unexpected error in OE_SCH_CONC_REQUESTS.Request');
1653 fnd_file.put_line(FND_FILE.LOG, substr(sqlerrm, 1, 2000));
1654 DBMS_SQL.Close_Cursor(l_cursor_id);
1655
1656 END Request;
1657
1658 END OE_SCH_CONC_REQUESTS;