DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_SCH_CONC_REQUESTS

Source


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;