DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_LIN_SCH

Source


1 PACKAGE BODY OE_LIN_SCH AS
2 /* $Header: OEXLNSHB.pls 115.2 99/07/16 08:13:17 porting shi $ */
3 
4 OE_SUCCESS  CONSTANT VARCHAR2(1) := 'Y';
5 OE_FAILURE  CONSTANT VARCHAR2(1) := 'N';
6 
7 
8 PROCEDURE Get_Reserved_Quantity
9 (
10         P_Line_Id                   IN NUMBER,
11         P_Reserved_Quantity         OUT NUMBER,
12 	P_Return_Status	            OUT VARCHAR2
13 )
14 is
15 
16 begin
17 
18 P_Return_Status:=OE_SUCCESS;
19 
20 
21         SELECT  SUM( QUANTITY )
22         INTO    P_Reserved_Quantity
23         FROM    SO_LINE_DETAILS
24         WHERE   SCHEDULE_STATUS_CODE = 'RESERVED'
25         AND     LINE_ID = P_Line_Id
26         AND     NVL ( INCLUDED_ITEM_FLAG , 'N' ) = 'N';
27 
28 
29 exception
30 
31   when no_data_found then
32        P_Reserved_Quantity := 0;
33 
34  when others then
35       P_Return_Status:=OE_FAILURE;
36       OE_MSG.Internal_Exception(Routine=>
37                                 'OE_LIN_SCH.Get_Reserved_Quantity',
38                                 Operation=>'Scheduling',
39 				Object=>'LINE',
40                                 Message=>' When Others');
41 
42 
43 end Get_Reserved_Quantity;
44 
45 PROCEDURE Get_Released_Quantity
46 (
47         P_Line_Id                   IN NUMBER,
48         P_Config_Item_Exists IN VARCHAR2,
49         P_Line_Released_Quantity      OUT NUMBER,
50 	P_Return_Status			  OUT VARCHAR2
51 )
52 is
53 
54 begin
55 
56 P_Return_Status:=OE_SUCCESS;
57 
58 
59 SELECT  NVL ( SUM ( QUANTITY ) , 0 )
60 INTO    P_Line_released_Quantity
61 FROM    SO_LINE_DETAILS
62 WHERE   LINE_ID = P_Line_Id
63 AND     NVL ( INCLUDED_ITEM_FLAG , 'N' ) = 'N'
64 AND     NVL ( RELEASED_FLAG , 'Y' ) = 'Y'
65 AND     NVL ( CONFIGURATION_ITEM_FLAG , 'N' ) =
66         DECODE ( P_Config_Item_Exists , 'Y' , 'Y' , 'N' );
67 
68 
69 
70 exception
71 
72   when no_data_found then
73        P_Line_released_Quantity:=0;
74 
75  when others then
76       P_Return_Status:=OE_FAILURE;
77       OE_MSG.Internal_Exception(Routine=>
78                                 'OE_LIN_SCH.Get_Released_Quantity',
79                                 Operation=>'Scheduling',
80 				Object=>'LINE',
81                                 Message=>' When Others');
82 
83 
84 end Get_Released_Quantity;
85 
86 
87 PROCEDURE Check_Details_Complexity
88 (
89         P_Line_Id                   IN NUMBER,
90         Details_Complexity_Count          OUT NUMBER,
91 	P_Return_Status			  OUT VARCHAR2
92 )
93 is
94 
95 begin
96 
97 P_Return_Status:=OE_SUCCESS;
98 
99 
100 SELECT COUNT(*)
101 INTO   Details_Complexity_Count
102 FROM   SO_LINE_DETAILS
103 WHERE  LINE_ID = P_Line_Id
104 AND     NVL ( RELEASED_FLAG , 'N' ) = 'N'
105 GROUP BY COMPONENT_CODE
106 HAVING COUNT ( DisTINCT WAREHOUSE_ID ) > 1
107 OR     COUNT ( DisTINCT SCHEDULE_DATE ) > 1
108 OR     COUNT ( DisTINCT REVISION ) > 1
109 OR     COUNT ( DisTINCT LOT_NUMBER ) > 1
110 OR     COUNT ( DisTINCT SUBINVENTORY ) > 1
111 OR     COUNT ( DisTINCT DEMAND_CLASS_CODE ) > 1
112 OR   ( COUNT ( SUBINVENTORY ) > 0
113 AND    COUNT ( SUBINVENTORY ) <> COUNT ( * ) )
114 OR   ( COUNT ( WAREHOUSE_ID ) > 0
115 AND    COUNT ( WAREHOUSE_ID ) <> COUNT ( * ) )
116 OR   ( COUNT ( SCHEDULE_DATE ) > 0
117 AND    COUNT ( SCHEDULE_DATE ) <> COUNT ( * ) )
118 OR   ( COUNT ( LOT_NUMBER ) > 0
119 AND    COUNT ( LOT_NUMBER ) <> COUNT ( * ) )
120 OR   ( COUNT ( REVisION ) > 0
121 AND    COUNT ( REVisION ) <> COUNT ( * ) )
122 OR   ( COUNT ( DEMAND_CLASS_CODE ) > 0
123 AND    COUNT ( DEMAND_CLASS_CODE ) <> COUNT ( * ) );
124 
125 
126 exception
127    when no_data_found then
128         Details_Complexity_Count:=0;
129 
130  when others then
131       P_Return_Status:=OE_FAILURE;
132       OE_MSG.Internal_Exception(Routine=>
133                                 'OE_LIN_SCH.Check_Details_Complexity',
134                                 Operation=>'Scheduling',
135 				Object=>'LINE',
136                                 Message=>' When Others');
137 
138 
139 end Check_Details_Complexity;
140 
141 PROCEDURE Get_Scheduling_Quantity
142 (
143         P_Line_Id                   IN NUMBER,
144         P_Config_Item_Exists IN VARCHAR2,
145         P_Reserved_Quantity         OUT NUMBER,
146         P_Line_Released_Quantity      OUT NUMBER,
147         Details_Complexity_Count          OUT NUMBER,
148 	P_Return_Status			  IN OUT VARCHAR2
149 )
150 
151 is
152 
153 begin
154 
155 	P_Return_Status:=OE_SUCCESS;
156 
157 
158         OE_LIN_SCH.Get_Reserved_Quantity(
159                 P_Line_Id=>P_Line_Id,
160                 P_Reserved_Quantity=>P_Reserved_Quantity,
161 		P_Return_Status=>P_Return_Status
162                  );
163 
164 	if ( P_Return_Status = OE_FAILURE ) then
165 	   return;
166 	end if;
167 
168 
169         OE_LIN_SCH.Get_Released_Quantity(
170                 P_Line_Id=>P_Line_Id,
171                 P_Config_Item_Exists=>
172                 P_Config_Item_Exists,
173                 P_Line_Released_Quantity=>
174                 P_Line_Released_Quantity,
175 		P_Return_Status=>P_Return_Status);
176 
177 	if ( P_Return_Status = OE_FAILURE ) then
178 	   return;
179 	end if;
180 
181 
182        OE_LIN_SCH.Check_Details_Complexity(
183                 P_Line_Id=>P_Line_Id,
184                 Details_Complexity_Count=>Details_Complexity_Count,
185 		P_Return_Status=>P_Return_Status
186                 );
187 
188 end;
189 
190 PROCEDURE Check_Scheduling_Quantity
191 (
192         P_Line_Id                   IN NUMBER,
193         P_Config_Item_Exists        IN VARCHAR2,
194         P_Ordered_Quantity          IN NUMBER,
195         P_Cancelled_Quantity        IN NUMBER,
196         P_Reserved_Quantity         IN OUT NUMBER,
197         Return_Status                     IN OUT VARCHAR2
198 )
199 
200 is
201 
202   L_Details_Complexity_Count          NUMBER;
203   L_Released_Quantity                 NUMBER;
204   L_Reserved_Quantity                 NUMBER;
205 
206 begin
207         Return_Status:=OE_SUCCESS;
208 
209         OE_LIN_SCH.Get_Scheduling_Quantity(
210 			P_Line_Id,
211         		P_Config_Item_Exists,
212         		L_Reserved_Quantity,
213         		L_Released_Quantity,
214         		L_Details_Complexity_Count,
215 			Return_Status
216 			);
217 
218 	if ( Return_Status = OE_FAILURE ) then
219 	   return;
220 	end if;
221 
222         if (nvl(P_Reserved_Quantity,0) > (nvl(P_Ordered_Quantity,0) -
223                                          nvl(P_Cancelled_Quantity,0) )) then
224             OE_MSG.Set_Buffer_Message('OE_SCH_RES_MORE_ORD_QTY','','');
225             Return_Status:=OE_FAILURE;
226             Return;
227 	elsif (nvl(P_Reserved_Quantity,0) < nvl(L_Released_Quantity,0)) then
228     OE_MSG.Set_Buffer_Message('OE_SCH_RES_LESS_REL_QTY','RELEASED_QUANTITY',to_char(L_Released_Quantity));
229             Return_Status:=OE_FAILURE;
230             Return;
231         else
232             if L_Details_Complexity_Count > 0 then
233             	OE_MSG.Set_Buffer_Message('OE_SCH_COMPLEX_DETAILS','','');
234             	Return_Status:=OE_FAILURE;
235             	Return;
236             end if;
237         end if;
238 
239 
240 end;
241 
242 PROCEDURE Get_Schedule_Status
243 (
244 
245         P_Line_Id                         IN NUMBER,
246         P_Schedule_Status_Code            IN OUT VARCHAR2,
247         P_Schedule_Status_Name            OUT VARCHAR2,
248         P_Schedule_Action_Code            OUT VARCHAR2,
249         P_Return_Status                   OUT VARCHAR2
250 )
251 is
252 
253 begin
254 
255 P_Return_Status:=OE_SUCCESS;
256 
257 
258 P_Schedule_Action_Code := null;
259 P_Schedule_Status_Code := null;
260 P_Schedule_Status_Name := null;
261 
262 SELECT DECODE( NVL( SUM( DECODE( SCHEDULE_STATUS_CODE,
263            'RESERVED', QUANTITY, 0 ) ), 0 ),
264        0,
265        DECODE( NVL( SUM( DECODE( SCHEDULE_STATUS_CODE,
266            'SUPPLY RESERVED', QUANTITY, 0 ) ), 0 ),
267        0,
268        DECODE( NVL( SUM( DECODE( SCHEDULE_STATUS_CODE,
269            'DEMANDED', QUANTITY, 0 ) ), 0 ),
270        0, NULL,
271        'DEMANDED' ),
272        'SUPPLY RESERVED' ),
273        'RESERVED' )
274 	INTO   P_Schedule_Status_Code
275 	FROM   SO_LINE_DETAILS
276 	WHERE  LINE_ID = P_Line_Id;
277 
278 SELECT MEANING
279 	INTO   P_Schedule_Status_Name
280 	FROM   SO_LOOKUPS
281 	WHERE  LOOKUP_TYPE = 'SCHEDULE STATUS'
282 	AND  LOOKUP_CODE = P_Schedule_Status_Code;
283 
284 exception
285 
286   when no_data_found then
287        null;
288 
289  when others then
290       P_Return_Status:=OE_FAILURE;
291       OE_MSG.Internal_Exception(Routine=>
292                                 'OE_LIN_SCH.Get_Schedule_Status',
293                                 Operation=>'Scheduling',
294 				Object=>'LINE',
295                                 Message=>' When Others');
296 
297 end;
298 
299 
300 PROCEDURE Get_Schedule_DB_Values
301 (
302         P_Row_Id                          IN VARCHAR2,
303         P_Line_Id                         IN NUMBER,
304         P_schedule_date                   OUT VARCHAR2,
305         P_demand_Class_Code               OUT VARCHAR2,
306         P_Ship_To_Site_Use_Id             OUT NUMBER,
307         P_Warehouse_id                    OUT Number,
308         P_Ship_To_Contact_Id              OUT NUMBER,
309         P_Shipment_Priority_Code          OUT VARCHAR2,
310         P_Ship_Method_Code                OUT VARCHAR2,
311         P_Schedule_Date_Svrid             OUT NUMBER,
312         P_Demand_Class_Svrid              OUT NUMBER,
313         P_Ship_To_Svrid                   OUT NUMBER,
314         P_Warehouse_Svrid                 OUT NUMBER,
315         P_Ordered_Quantity                OUT NUMBER,
316         P_Unit_Code                       OUT VARCHAR2,
317         P_Reserved_Quantity               OUT NUMBER,
318         P_Return_Status                   OUT VARCHAR2
319 
320 ) is
321 
322 
323 begin
324 
325       P_Return_Status:=OE_SUCCESS;
326 
327         SELECT      SCHEDULE_DATE
328                 ,   DEMAND_CLASS_CODE
329                 ,   SHIP_TO_SITE_USE_ID
330                 ,   WAREHOUSE_ID
331                 ,   SHIP_TO_CONTACT_ID
332                 ,   SHIPMENT_PRIORITY_CODE
333                 ,   SHIP_METHOD_CODE
334                 ,   SCHEDULE_DATE_SVRID
335                 ,   DEMAND_CLASS_SVRID
336                 ,   SHIP_TO_SVRID
337                 ,   WAREHOUSE_SVRID
338                 ,   ORDERED_QUANTITY
339                 ,   UNIT_CODE
340         INTO        P_SCHEDULE_DATE
341                 ,   P_DEMAND_CLASS_CODE
342                 ,   P_SHIP_TO_SITE_USE_ID
343                 ,   P_WAREHOUSE_ID
344                 ,   P_SHIP_TO_CONTACT_ID
345                 ,   P_SHIPMENT_PRIORITY_CODE
346                 ,   P_SHIP_METHOD_CODE
347                 ,   P_SCHEDULE_DATE_SVRID
348                 ,   P_DEMAND_CLASS_SVRID
349                 ,   P_SHIP_TO_SVRID
350                 ,   P_WAREHOUSE_SVRID
351                 ,   P_ORDERED_QUANTITY
352                 ,   P_UNIT_CODE
353         FROM    SO_LINES
354         WHERE   ROWID = P_Row_id;
355 
356 
357         SELECT  SUM ( NVL ( QUANTITY , 0 ) )
358         INTO    P_RESERVED_QUANTITY
359         FROM    SO_LINE_DETAILS
360         WHERE   SCHEDULE_STATUS_CODE = 'RESERVED'
361         AND     LINE_ID = P_Line_Id
362         AND     NVL ( INCLUDED_ITEM_FLAG , 'N' ) = 'N';
363 
364         P_Return_Status:=OE_SUCCESS;
365 
366 
367 exception
368 
369  when no_data_found then
370       P_Reserved_Quantity:=NULL;
371       P_Return_Status:=OE_SUCCESS;
372 
373  when others then
374       P_Return_Status:=OE_FAILURE;
375       OE_MSG.Internal_Exception(Routine=>
376                                 'OE_LIN_SCH.Get_Schedule_DB_Values',
377                                 Operation=>'Scheduling',
378 				Object=>'LINE',
379                                 Message=>' When Others');
380 
381 end;
382 
383 
384 PROCEDURE Validate_Scheduling_Attributes
385 (
386         P_DB_Record_Flag                  IN VARCHAR2,
387         P_Lin_Obj_Schedule_Action_Code    IN VARCHAR2,
388         P_Lin_Obj_Reserved_Quantity       IN NUMBER,
389         P_Lin_Obj_Ordered_Quantity        IN NUMBER,
390         P_Lin_Obj_Ship_To_Site_Use_Id     IN NUMBER,
391         P_Lin_Obj_Warehouse_Id            IN Number,
392         P_Lin_Obj_Schedule_Date           IN DATE,
393         P_Lin_Obj_Demand_Class_Code       IN VARCHAR2,
394         P_Row_Id                          IN VARCHAR2,
395         P_Line_Id                         IN NUMBER,
396         P_World_DB_schedule_date          IN OUT VARCHAR2,
397         P_World_DB_demand_Class_Code      IN OUT VARCHAR2,
398         P_World_DB_Ship_To_Site_Use_Id    IN OUT NUMBER,
399         P_World_DB_Warehouse_id           IN OUT Number,
400         P_World_DB_Ship_To_Contact_Id     IN OUT NUMBER,
401         P_World_DB_Ship_Priority_Code     IN OUT VARCHAR2,
402         P_World_DB_Ship_Method_Code       IN OUT VARCHAR2,
403         P_World_DB_Schedule_Date_Svrid    IN OUT NUMBER,
404         P_World_DB_Demand_Class_Svrid     IN OUT NUMBER,
405         P_World_DB_Ship_To_Svrid          IN OUT NUMBER,
406         P_World_DB_Warehouse_Svrid        IN OUT NUMBER,
407         P_World_DB_Ordered_Quantity       IN OUT NUMBER,
408         P_World_DB_Unit_Code              IN OUT VARCHAR2,
412 )
409         P_World_DB_Reserved_Quantity      IN OUT NUMBER,
410         P_Return_Status                   IN OUT VARCHAR2
411 
413 is
414 
415 
416 begin
417 
418 P_Return_Status:=OE_SUCCESS;
419 
420 if ( P_DB_Record_Flag = 'N' ) then
421    if ( P_Lin_Obj_Schedule_Action_Code is NULL
422         or P_Lin_Obj_Schedule_Action_Code =  'RESERVE' ) then
423       return;
424    elsif ( P_Lin_Obj_Schedule_Action_Code not in ( 'DEMAND', 'ATP CHECK')) then
425         if ( P_Lin_Obj_Reserved_Quantity is null
426              or P_Lin_Obj_Reserved_Quantity = 0   ) then
427            return;
428         else
429            OE_MSG.Set_Buffer_Message('OE_SCH_NO_RES_QTY_REQUIRED','','');
430            P_Return_Status:=OE_FAILURE;
431            return;
432         end if;
433    end if;
434 end if;
435 
436 OE_LIN_SCH.Get_Schedule_DB_Values(
437         P_Row_Id=>P_Row_Id,
438         P_Line_Id=>P_Line_Id,
439         P_schedule_date=>P_World_DB_schedule_date,
440         P_demand_Class_Code=>P_World_DB_demand_Class_Code,
441         P_Ship_To_Site_Use_Id=>P_World_DB_Ship_To_Site_Use_Id,
442         P_Warehouse_id=>P_World_DB_Warehouse_id,
443         P_Ship_To_Contact_Id=>P_World_DB_Ship_To_Contact_Id,
444         P_Shipment_Priority_Code=>P_World_DB_Ship_Priority_Code,
445         P_Ship_Method_Code=>P_World_DB_Ship_Method_Code,
446         P_Schedule_Date_Svrid=>P_World_DB_Schedule_Date_Svrid,
447         P_Demand_Class_Svrid=>P_World_DB_Demand_Class_Svrid,
448         P_Ship_To_Svrid=>P_World_DB_Ship_To_Svrid,
449         P_Warehouse_Svrid=>P_World_DB_Warehouse_Svrid,
450         P_Ordered_Quantity=>P_World_DB_Ordered_Quantity,
451         P_Unit_Code=>P_World_DB_Unit_Code,
452         P_Reserved_Quantity=>P_World_DB_Reserved_Quantity,
453         P_Return_Status=>P_Return_Status);
454 
455 if ( P_return_Status = OE_FAILURE ) then
456    return;
457 end if;
458 
459 if ( P_Lin_Obj_Schedule_Action_Code is null ) then
460    if ( P_Lin_Obj_Reserved_quantity <> P_World_DB_Reserved_Quantity ) then
461      if ( P_Lin_Obj_Ordered_Quantity <> P_world_DB_Ordered_Quantity ) then
462            OE_MSG.Set_Buffer_Message('OE_SCH_RES_QTY_CHG_NOT_ALLOWED','','');
463            P_Return_Status:=OE_FAILURE;
464            return;
465     end if;
466   end if;
467 else
468      if ( P_Lin_Obj_Ordered_Quantity <> P_world_DB_Ordered_Quantity ) then
469            OE_MSG.Set_Buffer_Message('OE_SCH_RES_QTY_CHG_NOT_ALLOWED','','');
470            P_Return_Status:=OE_FAILURE;
471            return;
472     end if;
473 end if;
474 
475 if ( P_Lin_Obj_Schedule_Action_Code is null ) then
476    return;
477 elsif ( P_Lin_Obj_Schedule_Action_Code in ( 'UNRESERVE', 'UNDEMAND',
478                                             'UNSCHEDULE') ) then
479       if ( P_Lin_Obj_Reserved_quantity <> P_World_DB_Reserved_Quantity )
480          then
481            OE_MSG.Set_Buffer_Message('OE_SCH_RES_QTY_CHG_NOT_ALLOWED','','');
482            P_Return_Status:=OE_FAILURE;
483            return;
484       elsif ( P_Lin_Obj_Warehouse_Id <> P_world_DB_Warehouse_Id )
485          then
486            OE_MSG.Set_Buffer_Message('OE_SCH_WH_CHG_NOT_ALLOWED','','');
487            P_Return_Status:=-1;
488            return;
489       elsif ( P_Lin_Obj_Schedule_Date <> P_World_DB_Schedule_Date )
490          then
491             OE_MSG.Set_Buffer_Message('OE_SCH_DATE_CHG_NOT_ALLOWED','','');
492            P_Return_Status:=OE_FAILURE;
493             return;
494      elsif ( P_Lin_Obj_Demand_Class_Code <> P_World_DB_Demand_Class_Code) then
495             OE_MSG.Set_Buffer_Message('OE_SCH_DEM_CL_CHG_NOT_ALLOWED','','');
496            P_Return_Status:=OE_FAILURE;
497             return;
498      end if;
499 elsif ( P_Lin_Obj_Schedule_Action_Code in ( 'ATP CHECK', 'DEMAND')) then
500    if ( P_Lin_Obj_Schedule_Action_Code = 'ATP CHECK' ) then
501      if ( P_Lin_Obj_Ship_To_Site_Use_Id <> P_World_DB_Ship_To_Site_Use_Id ) then
502           OE_MSG.Set_Buffer_Message('OE_SCH_SHIP_TO_CHG_NOT_ALLOWED','','');
503            P_Return_Status:=OE_FAILURE;
504           return;
505      end if;
506    end if;
507    if ( P_Lin_Obj_Reserved_quantity <> P_World_DB_Reserved_Quantity )
508       then
509         OE_MSG.Set_Buffer_Message('OE_SCH_RES_QTY_CHG_NOT_ALLOWED','','');
510         P_Return_Status:=OE_FAILURE;
511         return;
512    end if;
513 elsif ( P_Lin_Obj_Schedule_Action_Code in ( 'RESERVE') ) then
514    if ( P_Lin_Obj_Reserved_quantity <> P_World_DB_Reserved_Quantity )
515       then
516         OE_MSG.Set_Buffer_Message('OE_SCH_RES_QTY_CHG_NOT_ALLOWED','','');
517         P_Return_Status:=OE_FAILURE;
518         return;
519    end if;
520 end if;
521 
522 exception
523 
524  when others then
525       P_Return_Status:=OE_FAILURE;
526       OE_MSG.Internal_Exception(Routine=>
527                                 'OE_LIN_SCH.Validate_Scheduling_Attributes',
528                                 Operation=>'',
529                                 Object=>'LINE',
530                                 Message=>' When Others');
531 
532 
533 end;
534 
535 
536 PROCEDURE Scheduling_Security
537 (
538         Attribute                           IN VARCHAR2,
539         ATO_Model_Flag                      IN VARCHAR2,
540         ATO_Line_Id                         IN NUMBER,
541         Supply_Reservation_Exists           IN VARCHAR2,
542         DB_Record_Flag                      IN VARCHAR2,
543         Source_Object                       IN VARCHAR2,
544         Order_Category                      IN VARCHAR2,
545         Row_Id                              IN VARCHAR2,
546         Return_Status                       OUT VARCHAR2
547 )
548 
549 is
550 
551         L_Count NUMBER;
552         L_Return_Status VARCHAR2(1);
553 
554 begin
555 
556         OE_LIN.Fully_Released(
557                     Row_Id,
558                     L_Return_Status);
559         if ( L_Return_Status = 'N' ) then
560              Return_Status:='N';
561              return;
562         end if;
563 
564         OE_LIN.Fully_Cancelled(
565                     Row_Id,
566                     L_Return_Status);
567         if ( L_Return_Status = 'N' ) then
568              Return_Status:='N';
569              return;
570         end if;
571 
572         Return_Status:='Y';
573 
574 exception
575 
576  when others then
577       Return_Status:=OE_FAILURE;
578       OE_MSG.Internal_Exception(Routine=>
579                                 'OE_LIN_SCH.Scheduling_Security',
580                                 Operation=>'',
581 				Object=>'LINE',
582                                 Message=>' When Others');
583 
584 end Scheduling_Security;
585 
586 -- The following package need to be removed
587 -- after the c code is checked in. - Rajan
588 
589 PROCEDURE Query_Reserved_Quantity
590 (
591 
592         P_Line_Id                         IN NUMBER,
593         P_Reservations                    IN VARCHAR2,
594         P_Reserved_Quantity               OUT NUMBER,
595         P_Return_Status                   OUT VARCHAR2
596 )
597 is
598 
599 begin
600 
601 P_Return_Status:=OE_SUCCESS;
602 
603 
604 if ( P_Reservations <> 'Y' ) then
605    P_Reserved_Quantity := NULL;
606    return;
607 end if;
608 
609 SELECT  SUM( QUANTITY )
610    INTO    P_Reserved_Quantity
611    FROM    SO_LINE_DETAILS
612    WHERE   SCHEDULE_STATUS_CODE = 'RESERVED'
613    AND     LINE_ID = P_Line_Id
614    AND     NVL ( INCLUDED_ITEM_FLAG , 'N' ) = 'N';
615 
616 exception
617 
618   when no_data_found then
619        null;
620 
621  when others then
622       P_Return_Status:=OE_FAILURE;
623       OE_MSG.Internal_Exception(Routine=>
624                                 'OE_LIN.Query_Reserved_Quantity',
625                                 Operation=>'Scheduling',
626                                 Object=>'LINE',
627                                 Message=>' When Others');
628 
629 end;
630 
631 end OE_LIN_SCH;