DBA Data[Home] [Help]

PACKAGE BODY: APPS.MRP_WFS_FORM_FLOW_SCHEDULE

Source


1 PACKAGE BODY MRP_WFS_Form_Flow_Schedule AS
2 /* $Header: MRPFSCNB.pls 120.2.12000000.2 2007/07/26 01:43:53 ksuleman ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'MRP_WFS_Form_Flow_Schedule';
7 
8 --  Global variables holding cached record.
9 
10 g_flow_schedule_rec           MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
11 g_db_flow_schedule_rec        MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
12 
13 --  Forward declaration of procedures maintaining entity record cache.
14 /*
15 Enhancement : 2665434
16 Description : Changed the usage of the record type from old record type
17 (MRP_FLow_Schedule_PUB.Flow_Schedule_Rec_Type) to new record type
18 (MRP_FLow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type)
19 */
20 
21 PROCEDURE Write_flow_schedule
22 (   p_flow_schedule_rec             IN  MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
23 ,   p_db_record                     IN  BOOLEAN := NULL
24 );
25 
26 /*
27 Enhancement : 2665434
28 Description : Changed the usage of the record type from old record type
29 (MRP_FLow_Schedule_PUB.Flow_Schedule_Rec_Type) to new record type
30 (MRP_FLow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type)
31 */
32 FUNCTION Get_flow_schedule
33 (   p_db_record                     IN  BOOLEAN := NULL
34 ,   p_wip_entity_id                 IN  NUMBER
35 )
36 RETURN MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
37 
38 /*Enhancement : 2665434
39 Changed the usage of the record type from old record type
40 (MRP_FLow_Schedule_PUB.Flow_Schedule_Rec_Type) to new record type
41 (MRP_FLow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type)
42 Using the logic to initialize g_flow_schedule_rec and g_db_flow_schedule_rec to NULL instead
43 of G_MISS_REC.
44 */
45 PROCEDURE Clear_flow_schedule;
46 
47 /*Enhancement : 2665434
48 New Function created to store the value in the cache correctly.
49 */
50 FUNCTION Convert_Null_To_Miss
51 (   p_flow_schedule_rec             IN  MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
52 ) RETURN MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type ;
53 
54 
55 --  Global variable holding performed operations.
56 
57 g_opr__tbl                    MRP_Flow_Schedule_PUB.Flow_Schedule_Tbl_Type;
58 
59 --  Procedure : Default_Attributes
60 --
61 
62 PROCEDURE Default_Attributes
63 (   x_return_status                 OUT NOCOPY VARCHAR2
64 ,   x_msg_count                     OUT NOCOPY NUMBER
65 ,   x_msg_data                      OUT NOCOPY VARCHAR2
66 ,   x_alternate_bom_designator      OUT NOCOPY VARCHAR2
67 ,   x_alternate_routing_desig       OUT NOCOPY VARCHAR2
68 ,   x_attribute1                    OUT NOCOPY VARCHAR2
69 ,   x_attribute10                   OUT NOCOPY VARCHAR2
70 ,   x_attribute11                   OUT NOCOPY VARCHAR2
71 ,   x_attribute12                   OUT NOCOPY VARCHAR2
72 ,   x_attribute13                   OUT NOCOPY VARCHAR2
73 ,   x_attribute14                   OUT NOCOPY VARCHAR2
74 ,   x_attribute15                   OUT NOCOPY VARCHAR2
75 ,   x_attribute2                    OUT NOCOPY VARCHAR2
76 ,   x_attribute3                    OUT NOCOPY VARCHAR2
77 ,   x_attribute4                    OUT NOCOPY VARCHAR2
78 ,   x_attribute5                    OUT NOCOPY VARCHAR2
79 ,   x_attribute6                    OUT NOCOPY VARCHAR2
80 ,   x_attribute7                    OUT NOCOPY VARCHAR2
81 ,   x_attribute8                    OUT NOCOPY VARCHAR2
82 ,   x_attribute9                    OUT NOCOPY VARCHAR2
83 ,   x_attribute_category            OUT NOCOPY VARCHAR2
84 ,   x_bom_revision                  OUT NOCOPY VARCHAR2
85 ,   x_bom_revision_date             OUT NOCOPY DATE
86 ,   x_build_sequence                OUT NOCOPY NUMBER
87 ,   x_class_code                    OUT NOCOPY VARCHAR2
88 ,   x_completion_locator_id         OUT NOCOPY NUMBER
89 ,   x_completion_subinventory       OUT NOCOPY VARCHAR2
90 ,   x_date_closed                   OUT NOCOPY DATE
91 ,   x_demand_class                  OUT NOCOPY VARCHAR2
92 ,   x_demand_source_delivery        OUT NOCOPY VARCHAR2
93 ,   x_demand_source_header_id       OUT NOCOPY NUMBER
94 ,   x_demand_source_line            OUT NOCOPY VARCHAR2
95 ,   x_demand_source_type            OUT NOCOPY NUMBER
96 ,   x_line_id                       OUT NOCOPY NUMBER
97 ,   x_material_account              OUT NOCOPY NUMBER
98 ,   x_material_overhead_account     OUT NOCOPY NUMBER
99 ,   x_material_variance_account     OUT NOCOPY NUMBER
100 ,   x_mps_net_quantity              OUT NOCOPY NUMBER
101 ,   x_mps_scheduled_comp_date       OUT NOCOPY DATE
102 ,   x_organization_id               OUT NOCOPY NUMBER
103 ,   x_outside_processing_acct       OUT NOCOPY NUMBER
104 ,   x_outside_proc_var_acct         OUT NOCOPY NUMBER
105 ,   x_overhead_account              OUT NOCOPY NUMBER
106 ,   x_overhead_variance_account     OUT NOCOPY NUMBER
107 ,   x_planned_quantity              OUT NOCOPY NUMBER
108 ,   x_primary_item_id               OUT NOCOPY NUMBER
109 ,   x_project_id                    OUT NOCOPY NUMBER
110 ,   x_quantity_completed            OUT NOCOPY NUMBER
111 ,   x_resource_account              OUT NOCOPY NUMBER
112 ,   x_resource_variance_account     OUT NOCOPY NUMBER
113 ,   x_routing_revision              OUT NOCOPY VARCHAR2
114 ,   x_routing_revision_date         OUT NOCOPY DATE
115 ,   x_scheduled_completion_date     OUT NOCOPY DATE
116 ,   x_scheduled_flag                OUT NOCOPY NUMBER
117 ,   x_scheduled_start_date          OUT NOCOPY DATE
118 ,   x_schedule_group_id             OUT NOCOPY NUMBER
119 ,   x_schedule_number               OUT NOCOPY VARCHAR2
120 ,   x_status                        OUT NOCOPY NUMBER
121 ,   x_std_cost_adjustment_acct      OUT NOCOPY NUMBER
122 ,   x_task_id                       OUT NOCOPY NUMBER
123 ,   x_wip_entity_id                 OUT NOCOPY NUMBER
124 ,   x_completion_locator            OUT NOCOPY VARCHAR2
125 ,   x_line                          OUT NOCOPY VARCHAR2
126 ,   x_organization                  OUT NOCOPY VARCHAR2
127 ,   x_primary_item                  OUT NOCOPY VARCHAR2
128 ,   x_project                       OUT NOCOPY VARCHAR2
129 ,   x_schedule_group                OUT NOCOPY VARCHAR2
130 ,   x_task                          OUT NOCOPY VARCHAR2
131 ,   x_wip_entity                    OUT NOCOPY VARCHAR2
132 ,   x_end_item_unit_number          OUT NOCOPY VARCHAR2
133 ,   x_quantity_scrapped            OUT NOCOPY NUMBER
134 )
135 IS
136 l_flow_schedule_rec           MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
137 l_flow_schedule_val_rec       MRP_Flow_Schedule_PVT.Flow_Schedule_Val_PVT_Rec_Type;
138 l_control_rec                 MRP_GLOBALS.Control_Rec_Type;
139 l_return_status               VARCHAR2(1);
140 l_x_flow_schedule_rec         MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
141 l_p_old_flow_schedule_rec     MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
142 BEGIN
143 
144     --  Set control flags.
145 
146     l_control_rec.controlled_operation := TRUE;
147     l_control_rec.default_attributes   := TRUE;
148 
149     l_control_rec.change_attributes    := FALSE;
150     l_control_rec.validate_entity      := FALSE;
151     l_control_rec.write_to_DB          := FALSE;
152     l_control_rec.process              := FALSE;
153 
154     --  Instruct API to retain its caches
155 
156     l_control_rec.clear_api_cache      := FALSE;
157     l_control_rec.clear_api_requests   := FALSE;
158 
159     --  Load IN parameters if any exist
160 
161 
162     --  Defaulting of flex values is currently done by the form.
163     --  Set flex attributes to NULL in order to avoid defaulting them.
164     --  Take this out so the default values in the form works.
165 /*
166     l_flow_schedule_rec.attribute1                := 'NULL';
167     l_flow_schedule_rec.attribute10               := 'NULL';
168     l_flow_schedule_rec.attribute11               := 'NULL';
169     l_flow_schedule_rec.attribute12               := 'NULL';
170     l_flow_schedule_rec.attribute13               := 'NULL';
171     l_flow_schedule_rec.attribute14               := 'NULL';
172     l_flow_schedule_rec.attribute15               := 'NULL';
173     l_flow_schedule_rec.attribute2                := 'NULL';
174     l_flow_schedule_rec.attribute3                := 'NULL';
175     l_flow_schedule_rec.attribute4                := 'NULL';
176     l_flow_schedule_rec.attribute5                := 'NULL';
177     l_flow_schedule_rec.attribute6                := 'NULL';
178     l_flow_schedule_rec.attribute7                := 'NULL';
179     l_flow_schedule_rec.attribute8                := 'NULL';
180     l_flow_schedule_rec.attribute9                := 'NULL';
181     l_flow_schedule_rec.attribute_category        := 'NULL';
182 */
183 
184     -- Schedule number must be set by the form so that the
185     -- sequence can be maintained
186     l_flow_schedule_rec.schedule_number		  := NULL;
187 
188     --  Set Operation to Create
189 
190     l_flow_schedule_rec.operation := MRP_GLOBALS.G_OPR_CREATE;
191 
192     --  Call MRP_Flow_Schedule_PVT.Process_flow_schedule
193 
194     MRP_Flow_Schedule_PVT.Process_flow_schedule
195     (   p_api_version_number          => 1.0
196     ,   p_init_msg_list               => FND_API.G_TRUE
197     ,   x_return_status               => l_return_status
198     ,   x_msg_count                   => x_msg_count
199     ,   x_msg_data                    => x_msg_data
200     ,   p_control_rec                 => l_control_rec
201     ,   p_flow_schedule_rec           => l_flow_schedule_rec
202     ,   p_old_flow_schedule_rec       => l_p_old_flow_schedule_rec
203     ,   x_flow_schedule_rec           => l_x_flow_schedule_rec
204     );
205 
206     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
207         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
208     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
209         RAISE FND_API.G_EXC_ERROR;
210     END IF;
211 
212 
213     --  Load OUT parameters.
214 
215     x_alternate_bom_designator     := l_x_flow_schedule_rec.alternate_bom_designator;
216     x_alternate_routing_desig      := l_x_flow_schedule_rec.alternate_routing_desig;
217     x_attribute1                   := l_x_flow_schedule_rec.attribute1;
218     x_attribute10                  := l_x_flow_schedule_rec.attribute10;
219     x_attribute11                  := l_x_flow_schedule_rec.attribute11;
220     x_attribute12                  := l_x_flow_schedule_rec.attribute12;
221     x_attribute13                  := l_x_flow_schedule_rec.attribute13;
222     x_attribute14                  := l_x_flow_schedule_rec.attribute14;
223     x_attribute15                  := l_x_flow_schedule_rec.attribute15;
224     x_attribute2                   := l_x_flow_schedule_rec.attribute2;
225     x_attribute3                   := l_x_flow_schedule_rec.attribute3;
226     x_attribute4                   := l_x_flow_schedule_rec.attribute4;
227     x_attribute5                   := l_x_flow_schedule_rec.attribute5;
228     x_attribute6                   := l_x_flow_schedule_rec.attribute6;
229     x_attribute7                   := l_x_flow_schedule_rec.attribute7;
230     x_attribute8                   := l_x_flow_schedule_rec.attribute8;
231     x_attribute9                   := l_x_flow_schedule_rec.attribute9;
232     x_attribute_category           := l_x_flow_schedule_rec.attribute_category;
233     x_bom_revision                 := l_x_flow_schedule_rec.bom_revision;
234     x_bom_revision_date            := l_x_flow_schedule_rec.bom_revision_date;
235     x_build_sequence               := l_x_flow_schedule_rec.build_sequence;
236     x_class_code                   := l_x_flow_schedule_rec.class_code;
237     x_completion_locator_id        := l_x_flow_schedule_rec.completion_locator_id;
238     x_completion_subinventory      := l_x_flow_schedule_rec.completion_subinventory;
239     x_date_closed                  := l_x_flow_schedule_rec.date_closed;
240     x_demand_class                 := l_x_flow_schedule_rec.demand_class;
241     x_demand_source_delivery       := l_x_flow_schedule_rec.demand_source_delivery;
242     x_demand_source_header_id      := l_x_flow_schedule_rec.demand_source_header_id;
243     x_demand_source_line           := l_x_flow_schedule_rec.demand_source_line;
244     x_demand_source_type           := l_x_flow_schedule_rec.demand_source_type;
245     x_line_id                      := l_x_flow_schedule_rec.line_id;
246     x_material_account             := l_x_flow_schedule_rec.material_account;
247     x_material_overhead_account    := l_x_flow_schedule_rec.material_overhead_account;
248     x_material_variance_account    := l_x_flow_schedule_rec.material_variance_account;
249     x_mps_net_quantity             := l_x_flow_schedule_rec.mps_net_quantity;
250     x_mps_scheduled_comp_date      := l_x_flow_schedule_rec.mps_scheduled_comp_date;
251     x_organization_id              := l_x_flow_schedule_rec.organization_id;
252     x_outside_processing_acct      := l_x_flow_schedule_rec.outside_processing_acct;
253     x_outside_proc_var_acct        := l_x_flow_schedule_rec.outside_proc_var_acct;
254     x_overhead_account             := l_x_flow_schedule_rec.overhead_account;
255     x_overhead_variance_account    := l_x_flow_schedule_rec.overhead_variance_account;
256     x_planned_quantity             := l_x_flow_schedule_rec.planned_quantity;
257     x_primary_item_id              := l_x_flow_schedule_rec.primary_item_id;
258     x_project_id                   := l_x_flow_schedule_rec.project_id;
259     x_quantity_completed           := l_x_flow_schedule_rec.quantity_completed;
260     x_resource_account             := l_x_flow_schedule_rec.resource_account;
261     x_resource_variance_account    := l_x_flow_schedule_rec.resource_variance_account;
262     x_routing_revision             := l_x_flow_schedule_rec.routing_revision;
263     x_routing_revision_date        := l_x_flow_schedule_rec.routing_revision_date;
264     x_scheduled_completion_date    := l_x_flow_schedule_rec.scheduled_completion_date;
265     x_scheduled_flag               := l_x_flow_schedule_rec.scheduled_flag;
266     x_scheduled_start_date         := l_x_flow_schedule_rec.scheduled_start_date;
267     x_schedule_group_id            := l_x_flow_schedule_rec.schedule_group_id;
268     x_schedule_number              := l_x_flow_schedule_rec.schedule_number;
269     x_status                       := l_x_flow_schedule_rec.status;
270     x_std_cost_adjustment_acct     := l_x_flow_schedule_rec.std_cost_adjustment_acct;
271     x_task_id                      := l_x_flow_schedule_rec.task_id;
272     x_wip_entity_id                := l_x_flow_schedule_rec.wip_entity_id;
273     x_end_item_unit_number         := l_x_flow_schedule_rec.end_item_unit_number;
274     x_quantity_scrapped           := l_x_flow_schedule_rec.quantity_scrapped;
275     --  Load display out parameters if any
276 
277     l_flow_schedule_val_rec := MRP_Flow_Schedule_Util.Get_Values
278     (   p_flow_schedule_rec           => l_x_flow_schedule_rec
279     ,   p_old_flow_schedule_rec	      => l_p_old_flow_schedule_rec
280     );
281 
282     x_completion_locator           := l_flow_schedule_val_rec.completion_locator;
283     x_line                         := l_flow_schedule_val_rec.line;
284     x_organization                 := l_flow_schedule_val_rec.organization;
285     x_primary_item                 := l_flow_schedule_val_rec.primary_item;
286     x_project                      := l_flow_schedule_val_rec.project;
287     x_schedule_group               := l_flow_schedule_val_rec.schedule_group;
288     x_task                         := l_flow_schedule_val_rec.task;
289     x_wip_entity                   := l_flow_schedule_val_rec.wip_entity;
290 
291     --  Write to cache.
292     --  Set db_flag to False before writing to cache
293 
294     l_x_flow_schedule_rec.db_flag := FND_API.G_FALSE;
295 
296     Write_flow_schedule
297     (   p_flow_schedule_rec           => l_x_flow_schedule_rec
298     );
299 
300     --  Set return status.
301 
302     x_return_status := FND_API.G_RET_STS_SUCCESS;
303 
304     --  Get message count and data
305 
306     FND_MSG_PUB.Count_And_Get
307     (   p_count                       => x_msg_count
308     ,   p_data                        => x_msg_data
309     );
310 
311 
312 EXCEPTION
313 
314     WHEN FND_API.G_EXC_ERROR THEN
315 
316         x_return_status := FND_API.G_RET_STS_ERROR;
317 
318         --  Get message count and data
319 
320         FND_MSG_PUB.Count_And_Get
321         (   p_count                       => x_msg_count
322         ,   p_data                        => x_msg_data
323         );
324 
325     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
326 
327         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
328 
329         --  Get message count and data
330 
331         FND_MSG_PUB.Count_And_Get
332         (   p_count                       => x_msg_count
333         ,   p_data                        => x_msg_data
334         );
335 
336     WHEN OTHERS THEN
337 
338         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
339 
340         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
341         THEN
342             FND_MSG_PUB.Add_Exc_Msg
343             (   G_PKG_NAME
344             ,   'Default_Attributes'
345             );
346         END IF;
347 
348         --  Get message count and data
349 
350         FND_MSG_PUB.Count_And_Get
351         (   p_count                       => x_msg_count
352         ,   p_data                        => x_msg_data
353         );
354 
355 END Default_Attributes;
356 
357 --  Procedure   :   Change_Attribute
358 --
359 
360 PROCEDURE Change_Attribute
361 (   x_return_status                 OUT NOCOPY VARCHAR2
362 ,   x_msg_count                     OUT NOCOPY NUMBER
363 ,   x_msg_data                      OUT NOCOPY VARCHAR2
364 ,   p_wip_entity_id                 IN  NUMBER
365 ,   p_attr_id                       IN  NUMBER
366 ,   p_attr_value                    IN  VARCHAR2
367 ,   p_attribute1                    IN  VARCHAR2
368 ,   p_attribute10                   IN  VARCHAR2
369 ,   p_attribute11                   IN  VARCHAR2
370 ,   p_attribute12                   IN  VARCHAR2
371 ,   p_attribute13                   IN  VARCHAR2
372 ,   p_attribute14                   IN  VARCHAR2
373 ,   p_attribute15                   IN  VARCHAR2
374 ,   p_attribute2                    IN  VARCHAR2
375 ,   p_attribute3                    IN  VARCHAR2
376 ,   p_attribute4                    IN  VARCHAR2
377 ,   p_attribute5                    IN  VARCHAR2
378 ,   p_attribute6                    IN  VARCHAR2
379 ,   p_attribute7                    IN  VARCHAR2
380 ,   p_attribute8                    IN  VARCHAR2
381 ,   p_attribute9                    IN  VARCHAR2
382 ,   p_attribute_category            IN  VARCHAR2
383 ,   x_alternate_bom_designator      OUT NOCOPY VARCHAR2
384 ,   x_alternate_routing_desig       OUT NOCOPY VARCHAR2
385 ,   x_attribute1                    OUT NOCOPY VARCHAR2
386 ,   x_attribute10                   OUT NOCOPY VARCHAR2
387 ,   x_attribute11                   OUT NOCOPY VARCHAR2
388 ,   x_attribute12                   OUT NOCOPY VARCHAR2
389 ,   x_attribute13                   OUT NOCOPY VARCHAR2
390 ,   x_attribute14                   OUT NOCOPY VARCHAR2
391 ,   x_attribute15                   OUT NOCOPY VARCHAR2
392 ,   x_attribute2                    OUT NOCOPY VARCHAR2
393 ,   x_attribute3                    OUT NOCOPY VARCHAR2
394 ,   x_attribute4                    OUT NOCOPY VARCHAR2
395 ,   x_attribute5                    OUT NOCOPY VARCHAR2
396 ,   x_attribute6                    OUT NOCOPY VARCHAR2
397 ,   x_attribute7                    OUT NOCOPY VARCHAR2
398 ,   x_attribute8                    OUT NOCOPY VARCHAR2
399 ,   x_attribute9                    OUT NOCOPY VARCHAR2
400 ,   x_attribute_category            OUT NOCOPY VARCHAR2
401 ,   x_bom_revision                  OUT NOCOPY VARCHAR2
402 ,   x_bom_revision_date             OUT NOCOPY DATE
403 ,   x_build_sequence                OUT NOCOPY NUMBER
404 ,   x_class_code                    OUT NOCOPY VARCHAR2
405 ,   x_completion_locator_id         OUT NOCOPY NUMBER
406 ,   x_completion_subinventory       OUT NOCOPY VARCHAR2
407 ,   x_date_closed                   OUT NOCOPY DATE
408 ,   x_demand_class                  OUT NOCOPY VARCHAR2
409 ,   x_demand_source_delivery        OUT NOCOPY VARCHAR2
410 ,   x_demand_source_header_id       OUT NOCOPY NUMBER
411 ,   x_demand_source_line            OUT NOCOPY VARCHAR2
412 ,   x_demand_source_type            OUT NOCOPY NUMBER
413 ,   x_line_id                       OUT NOCOPY NUMBER
414 ,   x_material_account              OUT NOCOPY NUMBER
415 ,   x_material_overhead_account     OUT NOCOPY NUMBER
416 ,   x_material_variance_account     OUT NOCOPY NUMBER
417 ,   x_mps_net_quantity              OUT NOCOPY NUMBER
418 ,   x_mps_scheduled_comp_date       OUT NOCOPY DATE
419 ,   x_organization_id               OUT NOCOPY NUMBER
420 ,   x_outside_processing_acct       OUT NOCOPY NUMBER
421 ,   x_outside_proc_var_acct         OUT NOCOPY NUMBER
422 ,   x_overhead_account              OUT NOCOPY NUMBER
423 ,   x_overhead_variance_account     OUT NOCOPY NUMBER
424 ,   x_planned_quantity              OUT NOCOPY NUMBER
425 ,   x_primary_item_id               OUT NOCOPY NUMBER
426 ,   x_project_id                    OUT NOCOPY NUMBER
427 ,   x_quantity_completed            OUT NOCOPY NUMBER
428 ,   x_request_id                    OUT NOCOPY NUMBER
429 ,   x_resource_account              OUT NOCOPY NUMBER
430 ,   x_resource_variance_account     OUT NOCOPY NUMBER
431 ,   x_routing_revision              OUT NOCOPY VARCHAR2
432 ,   x_routing_revision_date         OUT NOCOPY DATE
433 ,   x_scheduled_completion_date     OUT NOCOPY DATE
434 ,   x_scheduled_flag                OUT NOCOPY NUMBER
435 ,   x_scheduled_start_date          OUT NOCOPY DATE
436 ,   x_schedule_group_id             OUT NOCOPY NUMBER
437 ,   x_schedule_number               OUT NOCOPY VARCHAR2
438 ,   x_status                        OUT NOCOPY NUMBER
439 ,   x_std_cost_adjustment_acct      OUT NOCOPY NUMBER
440 ,   x_task_id                       OUT NOCOPY NUMBER
441 ,   x_wip_entity_id                 OUT NOCOPY NUMBER
442 ,   x_completion_locator            OUT NOCOPY VARCHAR2
443 ,   x_line                          OUT NOCOPY VARCHAR2
444 ,   x_organization                  OUT NOCOPY VARCHAR2
445 ,   x_primary_item                  OUT NOCOPY VARCHAR2
446 ,   x_project                       OUT NOCOPY VARCHAR2
447 ,   x_schedule_group                OUT NOCOPY VARCHAR2
448 ,   x_task                          OUT NOCOPY VARCHAR2
449 ,   x_wip_entity                    OUT NOCOPY VARCHAR2
450 ,   x_end_item_unit_number          OUT NOCOPY VARCHAR2
451 ,   x_quantity_scrapped             OUT NOCOPY NUMBER
452 )
453 IS
454 l_flow_schedule_rec           MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
455 l_old_flow_schedule_rec       MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
456 l_flow_schedule_val_rec       MRP_Flow_Schedule_PVT.Flow_Schedule_Val_PVT_Rec_Type;
457 l_control_rec                 MRP_GLOBALS.Control_Rec_Type;
458 l_return_status               VARCHAR2(1);
459 l_x_flow_schedule_rec         MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
460 temp		varchar2(1000);
461 BEGIN
462 
463     --  Set control flags.
464 
465     l_control_rec.controlled_operation := TRUE;
466     l_control_rec.change_attributes    := TRUE;
467 
468     l_control_rec.default_attributes   := FALSE;
469     l_control_rec.validate_entity      := FALSE;
470     l_control_rec.write_to_DB          := FALSE;
471     l_control_rec.process              := FALSE;
472 
473     --  Instruct API to retain its caches
474 
475     l_control_rec.clear_api_cache      := FALSE;
476     l_control_rec.clear_api_requests   := FALSE;
477 
478     --  Read flow_schedule from cache
479 
480     l_flow_schedule_rec := Get_flow_schedule
481     (   p_db_record                   => FALSE
482     ,   p_wip_entity_id               => p_wip_entity_id
483     );
484 
485     l_old_flow_schedule_rec        := l_flow_schedule_rec;
486 
487     IF p_attr_id = MRP_Flow_Schedule_Util.G_ALTERNATE_BOM_DESIGNATOR THEN
488         l_flow_schedule_rec.alternate_bom_designator := p_attr_value;
489     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_ALTERNATE_ROUTING_DESIG THEN
490         l_flow_schedule_rec.alternate_routing_desig := p_attr_value;
491     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_BOM_REVISION THEN
492         l_flow_schedule_rec.bom_revision := p_attr_value;
493     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_BOM_REVISION_DATE THEN
494         l_flow_schedule_rec.bom_revision_date := fnd_date.canonical_to_date(p_attr_value);
495     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_BUILD_SEQUENCE THEN
496         l_flow_schedule_rec.build_sequence := TO_NUMBER(p_attr_value);
497     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_CLASS THEN
498         l_flow_schedule_rec.class_code := p_attr_value;
499     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_COMPLETION_LOCATOR THEN
500         l_flow_schedule_rec.completion_locator_id := TO_NUMBER(p_attr_value);
501     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_COMPLETION_SUBINVENTORY THEN
502         l_flow_schedule_rec.completion_subinventory := p_attr_value;
503     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_DATE_CLOSED THEN
504         l_flow_schedule_rec.date_closed := fnd_date.canonical_to_date(p_attr_value);
505     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_DEMAND_CLASS THEN
506         l_flow_schedule_rec.demand_class := p_attr_value;
507     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_DEMAND_SOURCE_DELIVERY THEN
508         l_flow_schedule_rec.demand_source_delivery := p_attr_value;
509     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_DEMAND_SOURCE_HEADER THEN
510         l_flow_schedule_rec.demand_source_header_id := TO_NUMBER(p_attr_value);
511     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_DEMAND_SOURCE_LINE THEN
512         l_flow_schedule_rec.demand_source_line := p_attr_value;
513     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_DEMAND_SOURCE_TYPE THEN
514         l_flow_schedule_rec.demand_source_type := TO_NUMBER(p_attr_value);
515     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_LINE THEN
516         l_flow_schedule_rec.line_id := TO_NUMBER(p_attr_value);
517     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_MATERIAL_ACCOUNT THEN
518         l_flow_schedule_rec.material_account := TO_NUMBER(p_attr_value);
519     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_MATERIAL_OVERHEAD_ACCOUNT THEN
520         l_flow_schedule_rec.material_overhead_account := TO_NUMBER(p_attr_value);
521     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_MATERIAL_VARIANCE_ACCOUNT THEN
522         l_flow_schedule_rec.material_variance_account := TO_NUMBER(p_attr_value);
523     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_MPS_NET_QUANTITY THEN
524         l_flow_schedule_rec.mps_net_quantity := TO_NUMBER(p_attr_value);
525     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_MPS_SCHEDULED_COMP_DATE THEN
526         l_flow_schedule_rec.mps_scheduled_comp_date := fnd_date.canonical_to_date(p_attr_value);
527     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_ORGANIZATION THEN
528         l_flow_schedule_rec.organization_id := TO_NUMBER(p_attr_value);
529     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_OUTSIDE_PROCESSING_ACCT THEN
530         l_flow_schedule_rec.outside_processing_acct := TO_NUMBER(p_attr_value);
531     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_OUTSIDE_PROC_VAR_ACCT THEN
532         l_flow_schedule_rec.outside_proc_var_acct := TO_NUMBER(p_attr_value);
533     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_OVERHEAD_ACCOUNT THEN
534         l_flow_schedule_rec.overhead_account := TO_NUMBER(p_attr_value);
535     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_OVERHEAD_VARIANCE_ACCOUNT THEN
536         l_flow_schedule_rec.overhead_variance_account := TO_NUMBER(p_attr_value);
537     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_PLANNED_QUANTITY THEN
538         l_flow_schedule_rec.planned_quantity := TO_NUMBER(p_attr_value);
539     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_PRIMARY_ITEM THEN
540         l_flow_schedule_rec.primary_item_id := TO_NUMBER(p_attr_value);
541     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_PROJECT THEN
542         l_flow_schedule_rec.project_id := TO_NUMBER(p_attr_value);
543     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_QUANTITY_COMPLETED THEN
544         l_flow_schedule_rec.quantity_completed := TO_NUMBER(p_attr_value);
545     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_REQUEST THEN
546         l_flow_schedule_rec.request_id := TO_NUMBER(p_attr_value);
547     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_RESOURCE_ACCOUNT THEN
548         l_flow_schedule_rec.resource_account := TO_NUMBER(p_attr_value);
549     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_RESOURCE_VARIANCE_ACCOUNT THEN
550         l_flow_schedule_rec.resource_variance_account := TO_NUMBER(p_attr_value);
551     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_ROUTING_REVISION THEN
552         l_flow_schedule_rec.routing_revision := p_attr_value;
553     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_ROUTING_REVISION_DATE THEN
554         l_flow_schedule_rec.routing_revision_date := fnd_date.canonical_to_date(p_attr_value);
555     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_SCHEDULED_COMPLETION_DATE THEN
556         l_flow_schedule_rec.scheduled_completion_date := fnd_date.canonical_to_date(p_attr_value);
557     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_SCHEDULED THEN
558         l_flow_schedule_rec.scheduled_flag := TO_NUMBER(p_attr_value);
559     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_SCHEDULED_START_DATE THEN
560         l_flow_schedule_rec.scheduled_start_date := fnd_date.canonical_to_date(p_attr_value);
561     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_SCHEDULE_GROUP THEN
562         l_flow_schedule_rec.schedule_group_id := TO_NUMBER(p_attr_value);
563     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_SCHEDULE_NUMBER THEN
564         l_flow_schedule_rec.schedule_number := p_attr_value;
565     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_STATUS THEN
566         l_flow_schedule_rec.status := TO_NUMBER(p_attr_value);
567     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_STD_COST_ADJUSTMENT_ACCT THEN
568         l_flow_schedule_rec.std_cost_adjustment_acct := TO_NUMBER(p_attr_value);
569     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_TASK THEN
570         l_flow_schedule_rec.task_id := TO_NUMBER(p_attr_value);
571     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_WIP_ENTITY THEN
572         l_flow_schedule_rec.wip_entity_id := TO_NUMBER(p_attr_value);
573     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_END_ITEM_UNIT_NUMBER THEN
574         l_flow_schedule_rec.end_item_unit_number:= p_attr_value;
575     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_QUANTITY_SCRAPPED THEN
576         l_flow_schedule_rec.quantity_scrapped:=  TO_NUMBER(p_attr_value);
577     ELSIF p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE1
578     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE10
579     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE11
580     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE12
581     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE13
582     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE14
583     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE15
584     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE2
585     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE3
586     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE4
587     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE5
588     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE6
589     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE7
590     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE8
591     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE9
592     OR     p_attr_id = MRP_Flow_Schedule_Util.G_ATTRIBUTE_CATEGORY
593     THEN
594 
595         l_flow_schedule_rec.attribute1 := p_attribute1;
596         l_flow_schedule_rec.attribute10 := p_attribute10;
597         l_flow_schedule_rec.attribute11 := p_attribute11;
598         l_flow_schedule_rec.attribute12 := p_attribute12;
599         l_flow_schedule_rec.attribute13 := p_attribute13;
600         l_flow_schedule_rec.attribute14 := p_attribute14;
601         l_flow_schedule_rec.attribute15 := p_attribute15;
602         l_flow_schedule_rec.attribute2 := p_attribute2;
603         l_flow_schedule_rec.attribute3 := p_attribute3;
604         l_flow_schedule_rec.attribute4 := p_attribute4;
605         l_flow_schedule_rec.attribute5 := p_attribute5;
606         l_flow_schedule_rec.attribute6 := p_attribute6;
607         l_flow_schedule_rec.attribute7 := p_attribute7;
608         l_flow_schedule_rec.attribute8 := p_attribute8;
609         l_flow_schedule_rec.attribute9 := p_attribute9;
610         l_flow_schedule_rec.attribute_category := p_attribute_category;
611 
612     ELSE
613 
614         --  Unexpected error, unrecognized attribute
615 
616         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
617         THEN
618             FND_MSG_PUB.Add_Exc_Msg
619             (   G_PKG_NAME
620             ,   'Change_Attribute'
621             ,   'Unrecognized attribute'
622             );
623         END IF;
624 
625         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
626 
627     END IF;
628 
629     --  Set Operation.
630 
631     IF FND_API.To_Boolean(l_flow_schedule_rec.db_flag) THEN
632         l_flow_schedule_rec.operation := MRP_GLOBALS.G_OPR_UPDATE;
633     ELSE
634         l_flow_schedule_rec.operation := MRP_GLOBALS.G_OPR_CREATE;
635     END IF;
636 
637     --  Call MRP_Flow_Schedule_PVT.Process_flow_schedule
638 
639     MRP_Flow_Schedule_PVT.Process_flow_schedule
640     (   p_api_version_number          => 1.0
641     ,   p_init_msg_list               => FND_API.G_TRUE
642     ,   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
643     ,   x_return_status               => l_return_status
644     ,   x_msg_count                   => x_msg_count
645     ,   x_msg_data                    => x_msg_data
646     ,   p_control_rec                 => l_control_rec
647     ,   p_flow_schedule_rec           => l_flow_schedule_rec
648     ,   p_old_flow_schedule_rec       => l_old_flow_schedule_rec
649     ,   x_flow_schedule_rec           => l_x_flow_schedule_rec
650     );
651 
652     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
653         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
654     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
655         RAISE FND_API.G_EXC_ERROR;
656     END IF;
657 
658 
659     --  Init OUT parameters to missing.
660 
661     x_alternate_bom_designator     := NULL;
662     x_alternate_routing_desig      := NULL;
663     x_attribute1                   := NULL;
664     x_attribute10                  := NULL;
665     x_attribute11                  := NULL;
666     x_attribute12                  := NULL;
667     x_attribute13                  := NULL;
668     x_attribute14                  := NULL;
669     x_attribute15                  := NULL;
670     x_attribute2                   := NULL;
671     x_attribute3                   := NULL;
672     x_attribute4                   := NULL;
673     x_attribute5                   := NULL;
674     x_attribute6                   := NULL;
675     x_attribute7                   := NULL;
676     x_attribute8                   := NULL;
677     x_attribute9                   := NULL;
678     x_attribute_category           := NULL;
679     x_bom_revision                 := NULL;
680     x_bom_revision_date            := NULL;
681     x_build_sequence               := NULL;
682     x_class_code                   := NULL;
683     x_completion_locator_id        := NULL;
684     x_completion_subinventory      := NULL;
685     x_date_closed                  := NULL;
686     x_demand_class                 := NULL;
687     x_demand_source_delivery       := NULL;
688     x_demand_source_header_id      := NULL;
689     x_demand_source_line           := NULL;
690     x_demand_source_type           := NULL;
691     x_line_id                      := NULL;
692     x_material_account             := NULL;
693     x_material_overhead_account    := NULL;
694     x_material_variance_account    := NULL;
695     x_mps_net_quantity             := NULL;
696     x_mps_scheduled_comp_date      := NULL;
697     x_organization_id              := NULL;
698     x_outside_processing_acct      := NULL;
699     x_outside_proc_var_acct        := NULL;
700     x_overhead_account             := NULL;
701     x_overhead_variance_account    := NULL;
702     x_planned_quantity             := NULL;
703     x_primary_item_id              := NULL;
704     x_project_id                   := NULL;
705     x_quantity_completed           := NULL;
706     x_request_id		   := NULL;
707     x_resource_account             := NULL;
708     x_resource_variance_account    := NULL;
709     x_routing_revision             := NULL;
710     x_routing_revision_date        := NULL;
711     x_scheduled_completion_date    := NULL;
712     x_scheduled_flag               := NULL;
713     x_scheduled_start_date         := NULL;
714     x_schedule_group_id            := NULL;
715     x_schedule_number              := NULL;
716     x_status                       := NULL;
717     x_std_cost_adjustment_acct     := NULL;
718     x_task_id                      := NULL;
719     x_wip_entity_id                := NULL;
720     x_completion_locator           := NULL;
721     x_line                         := NULL;
722     x_organization                 := NULL;
723     x_primary_item                 := NULL;
724     x_project                      := NULL;
725     x_schedule_group               := NULL;
726     x_task                         := NULL;
727     x_wip_entity                   := NULL;
728     x_end_item_unit_number         := NULL;
729     x_quantity_scrapped           := NULL;
730 
731     --  Load display out parameters if any
732 
733     l_flow_schedule_val_rec := MRP_Flow_Schedule_Util.Get_Values
734     (   p_flow_schedule_rec           => l_x_flow_schedule_rec
735     ,   p_old_flow_schedule_rec       => l_flow_schedule_rec
736     );
737 
738     --  Return changed attributes.
739 
740     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.alternate_bom_designator,
741                             l_flow_schedule_rec.alternate_bom_designator)
742     THEN
743         x_alternate_bom_designator := l_x_flow_schedule_rec.alternate_bom_designator;
744     END IF;
745 
746     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.alternate_routing_desig,
747                             l_flow_schedule_rec.alternate_routing_desig)
748     THEN
749         x_alternate_routing_desig := l_x_flow_schedule_rec.alternate_routing_desig;
750     END IF;
751 
752     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute1,
753                             l_flow_schedule_rec.attribute1)
754     THEN
755         x_attribute1 := l_x_flow_schedule_rec.attribute1;
756     END IF;
757 
758     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute10,
759                             l_flow_schedule_rec.attribute10)
760     THEN
761         x_attribute10 := l_x_flow_schedule_rec.attribute10;
762     END IF;
763 
764     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute11,
765                             l_flow_schedule_rec.attribute11)
766     THEN
767         x_attribute11 := l_x_flow_schedule_rec.attribute11;
768     END IF;
769 
770     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute12,
771                             l_flow_schedule_rec.attribute12)
772     THEN
773         x_attribute12 := l_x_flow_schedule_rec.attribute12;
774     END IF;
775 
776     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute13,
777                             l_flow_schedule_rec.attribute13)
778     THEN
779         x_attribute13 := l_x_flow_schedule_rec.attribute13;
780     END IF;
781 
782     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute14,
783                             l_flow_schedule_rec.attribute14)
784     THEN
785         x_attribute14 := l_x_flow_schedule_rec.attribute14;
786     END IF;
787 
788     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute15,
789                             l_flow_schedule_rec.attribute15)
790     THEN
791         x_attribute15 := l_x_flow_schedule_rec.attribute15;
792     END IF;
793 
794     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute2,
795                             l_flow_schedule_rec.attribute2)
796     THEN
797         x_attribute2 := l_x_flow_schedule_rec.attribute2;
798     END IF;
799 
800     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute3,
801                             l_flow_schedule_rec.attribute3)
802     THEN
803         x_attribute3 := l_x_flow_schedule_rec.attribute3;
804     END IF;
805 
806     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute4,
807                             l_flow_schedule_rec.attribute4)
808     THEN
809         x_attribute4 := l_x_flow_schedule_rec.attribute4;
810     END IF;
811 
812     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute5,
813                             l_flow_schedule_rec.attribute5)
814     THEN
815         x_attribute5 := l_x_flow_schedule_rec.attribute5;
816     END IF;
817 
818     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute6,
819                             l_flow_schedule_rec.attribute6)
820     THEN
821         x_attribute6 := l_x_flow_schedule_rec.attribute6;
822     END IF;
823 
824     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute7,
825                             l_flow_schedule_rec.attribute7)
826     THEN
827         x_attribute7 := l_x_flow_schedule_rec.attribute7;
828     END IF;
829 
830     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute8,
831                             l_flow_schedule_rec.attribute8)
832     THEN
833         x_attribute8 := l_x_flow_schedule_rec.attribute8;
834     END IF;
835 
836     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute9,
837                             l_flow_schedule_rec.attribute9)
838     THEN
839         x_attribute9 := l_x_flow_schedule_rec.attribute9;
840     END IF;
841 
842     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.attribute_category,
843                             l_flow_schedule_rec.attribute_category)
844     THEN
845         x_attribute_category := l_x_flow_schedule_rec.attribute_category;
846     END IF;
847 
848     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.bom_revision,
849                             l_flow_schedule_rec.bom_revision)
850     THEN
851         x_bom_revision := l_x_flow_schedule_rec.bom_revision;
852     END IF;
853 
854     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.bom_revision_date,
855                             l_flow_schedule_rec.bom_revision_date)
856     THEN
857         x_bom_revision_date := l_x_flow_schedule_rec.bom_revision_date;
858     END IF;
859 
860     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.build_sequence,
861                             l_flow_schedule_rec.build_sequence)
862     THEN
863         x_build_sequence := l_x_flow_schedule_rec.build_sequence;
864     END IF;
865 
866     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.class_code,
867                             l_flow_schedule_rec.class_code)
868     THEN
869         x_class_code := l_x_flow_schedule_rec.class_code;
870     END IF;
871 
872     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.completion_locator_id,
873                             l_flow_schedule_rec.completion_locator_id)
874     THEN
875         x_completion_locator_id := l_x_flow_schedule_rec.completion_locator_id;
876         x_completion_locator := l_flow_schedule_val_rec.completion_locator;
877     END IF;
878 
879     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.completion_subinventory,
880                             l_flow_schedule_rec.completion_subinventory)
881     THEN
882         x_completion_subinventory := l_x_flow_schedule_rec.completion_subinventory;
883     END IF;
884 
885     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.date_closed,
886                             l_flow_schedule_rec.date_closed)
887     THEN
888         x_date_closed := l_x_flow_schedule_rec.date_closed;
889     END IF;
890 
891     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.demand_class,
892                             l_flow_schedule_rec.demand_class)
893     THEN
894         x_demand_class := l_x_flow_schedule_rec.demand_class;
895     END IF;
896 
897     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.demand_source_delivery,
898                             l_flow_schedule_rec.demand_source_delivery)
899     THEN
900         x_demand_source_delivery := l_x_flow_schedule_rec.demand_source_delivery;
901     END IF;
902 
903     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.demand_source_header_id,
904                             l_flow_schedule_rec.demand_source_header_id)
905     THEN
906         x_demand_source_header_id := l_x_flow_schedule_rec.demand_source_header_id;
907     END IF;
908 
909     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.demand_source_line,
910                             l_flow_schedule_rec.demand_source_line)
911     THEN
912         x_demand_source_line := l_x_flow_schedule_rec.demand_source_line;
913     END IF;
914 
915     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.demand_source_type,
916                             l_flow_schedule_rec.demand_source_type)
917     THEN
918         x_demand_source_type := l_x_flow_schedule_rec.demand_source_type;
919     END IF;
920 
921     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.line_id,
922                             l_flow_schedule_rec.line_id)
923     THEN
924         x_line_id := l_x_flow_schedule_rec.line_id;
925         x_line := l_flow_schedule_val_rec.line;
926     END IF;
927 
928     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.material_account,
929                             l_flow_schedule_rec.material_account)
930     THEN
931         x_material_account := l_x_flow_schedule_rec.material_account;
932     END IF;
933 
934     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.material_overhead_account,
935                             l_flow_schedule_rec.material_overhead_account)
936     THEN
937         x_material_overhead_account := l_x_flow_schedule_rec.material_overhead_account;
938     END IF;
939 
940     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.material_variance_account,
941                             l_flow_schedule_rec.material_variance_account)
942     THEN
943         x_material_variance_account := l_x_flow_schedule_rec.material_variance_account;
944     END IF;
945 
946     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.mps_net_quantity,
947                             l_flow_schedule_rec.mps_net_quantity)
948     THEN
949         x_mps_net_quantity := l_x_flow_schedule_rec.mps_net_quantity;
950     END IF;
951 
952     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.mps_scheduled_comp_date,
953                             l_flow_schedule_rec.mps_scheduled_comp_date)
954     THEN
955         x_mps_scheduled_comp_date := l_x_flow_schedule_rec.mps_scheduled_comp_date;
956     END IF;
957 
958     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.organization_id,
959                             l_flow_schedule_rec.organization_id)
960     THEN
961         x_organization_id := l_x_flow_schedule_rec.organization_id;
962         x_organization := l_flow_schedule_val_rec.organization;
963     END IF;
964 
965     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.outside_processing_acct,
966                             l_flow_schedule_rec.outside_processing_acct)
967     THEN
968         x_outside_processing_acct := l_x_flow_schedule_rec.outside_processing_acct;
969     END IF;
970 
971     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.outside_proc_var_acct,
972                             l_flow_schedule_rec.outside_proc_var_acct)
973     THEN
974         x_outside_proc_var_acct := l_x_flow_schedule_rec.outside_proc_var_acct;
975     END IF;
976 
977     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.overhead_account,
978                             l_flow_schedule_rec.overhead_account)
979     THEN
980         x_overhead_account := l_x_flow_schedule_rec.overhead_account;
981     END IF;
982 
983     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.overhead_variance_account,
984                             l_flow_schedule_rec.overhead_variance_account)
985     THEN
986         x_overhead_variance_account := l_x_flow_schedule_rec.overhead_variance_account;
987     END IF;
988 
989     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.planned_quantity,
990                             l_flow_schedule_rec.planned_quantity)
991     THEN
992         x_planned_quantity := l_x_flow_schedule_rec.planned_quantity;
993     END IF;
994 
995     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.primary_item_id,
996                             l_flow_schedule_rec.primary_item_id)
997     THEN
998         x_primary_item_id := l_x_flow_schedule_rec.primary_item_id;
999         x_primary_item := l_flow_schedule_val_rec.primary_item;
1000     END IF;
1001 
1002     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.project_id,
1003                             l_flow_schedule_rec.project_id)
1004     THEN
1005         x_project_id := l_x_flow_schedule_rec.project_id;
1006         x_project := l_flow_schedule_val_rec.project;
1007     END IF;
1008 
1009     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.quantity_completed,
1010                             l_flow_schedule_rec.quantity_completed)
1011     THEN
1012         x_quantity_completed := l_x_flow_schedule_rec.quantity_completed;
1013     END IF;
1014 
1015     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.request_id,
1016                             l_flow_schedule_rec.request_id)
1017     THEN
1018         x_request_id := l_x_flow_schedule_rec.request_id;
1019     END IF;
1020 
1021     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.resource_account,
1022                             l_flow_schedule_rec.resource_account)
1023     THEN
1024         x_resource_account := l_x_flow_schedule_rec.resource_account;
1025     END IF;
1026 
1027     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.resource_variance_account,
1028                             l_flow_schedule_rec.resource_variance_account)
1029     THEN
1030         x_resource_variance_account := l_x_flow_schedule_rec.resource_variance_account;
1031     END IF;
1032 
1033     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.routing_revision,
1034                             l_flow_schedule_rec.routing_revision)
1035     THEN
1036         x_routing_revision := l_x_flow_schedule_rec.routing_revision;
1037     END IF;
1038 
1039     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.routing_revision_date,
1040                             l_flow_schedule_rec.routing_revision_date)
1041     THEN
1042         x_routing_revision_date := l_x_flow_schedule_rec.routing_revision_date;
1043     END IF;
1044 
1045     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.scheduled_completion_date,
1046                             l_flow_schedule_rec.scheduled_completion_date)
1047     THEN
1048         x_scheduled_completion_date := l_x_flow_schedule_rec.scheduled_completion_date;
1049     END IF;
1050 
1051     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.scheduled_flag,
1052                             l_flow_schedule_rec.scheduled_flag)
1053     THEN
1054         x_scheduled_flag := l_x_flow_schedule_rec.scheduled_flag;
1055     END IF;
1056 
1057     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.scheduled_start_date,
1058                             l_flow_schedule_rec.scheduled_start_date)
1059     THEN
1060         x_scheduled_start_date := l_x_flow_schedule_rec.scheduled_start_date;
1061     END IF;
1062 
1063     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.schedule_group_id,
1064                             l_flow_schedule_rec.schedule_group_id)
1065     THEN
1066         x_schedule_group_id := l_x_flow_schedule_rec.schedule_group_id;
1067         x_schedule_group := l_flow_schedule_val_rec.schedule_group;
1068     END IF;
1069 
1070     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.schedule_number,
1071                             l_flow_schedule_rec.schedule_number)
1072     THEN
1073         x_schedule_number := l_x_flow_schedule_rec.schedule_number;
1074     END IF;
1075 
1076     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.status,
1077                             l_flow_schedule_rec.status)
1078     THEN
1079         x_status := l_x_flow_schedule_rec.status;
1080     END IF;
1081 
1082     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.std_cost_adjustment_acct,
1083                             l_flow_schedule_rec.std_cost_adjustment_acct)
1084     THEN
1085         x_std_cost_adjustment_acct := l_x_flow_schedule_rec.std_cost_adjustment_acct;
1086     END IF;
1087 
1088     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.task_id,
1089                             l_flow_schedule_rec.task_id)
1090     THEN
1091         x_task_id := l_x_flow_schedule_rec.task_id;
1092         x_task := l_flow_schedule_val_rec.task;
1093     END IF;
1094 
1095     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.wip_entity_id,
1096                             l_flow_schedule_rec.wip_entity_id)
1097     THEN
1098         x_wip_entity_id := l_x_flow_schedule_rec.wip_entity_id;
1099         x_wip_entity := l_flow_schedule_val_rec.wip_entity;
1100     END IF;
1101 
1102     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.end_item_unit_number,
1103                             l_flow_schedule_rec.end_item_unit_number)
1104     THEN
1105         x_end_item_unit_number := l_x_flow_schedule_rec.end_item_unit_number;
1106     END IF;
1107 
1108     IF NOT MRP_GLOBALS.Equal(l_x_flow_schedule_rec.quantity_scrapped,
1109                             l_flow_schedule_rec.quantity_scrapped)
1110     THEN
1111         x_quantity_scrapped := l_x_flow_schedule_rec.quantity_scrapped;
1112     END IF;
1113 
1114     /*Store in the cache G_MISS values instead of NULL .So that when we call
1115     complete_record finally it can update to NULL */
1116 
1117     l_x_flow_schedule_rec := convert_null_to_miss(l_x_flow_schedule_rec);
1118 
1119     --  Write to cache.
1120 
1121     Write_flow_schedule
1122     (   p_flow_schedule_rec           => l_x_flow_schedule_rec
1123     );
1124 
1125     --  Set return status.
1126 
1127     x_return_status := FND_API.G_RET_STS_SUCCESS;
1128 
1129     --  Get message count and data
1130 
1131     FND_MSG_PUB.Count_And_Get
1132     (   p_count                       => x_msg_count
1133     ,   p_data                        => x_msg_data
1134     );
1135 
1136 
1137 EXCEPTION
1138 
1139     WHEN FND_API.G_EXC_ERROR THEN
1140 
1141         x_return_status := FND_API.G_RET_STS_ERROR;
1142 
1143         --  Get message count and data
1144 
1145         FND_MSG_PUB.Count_And_Get
1146         (   p_count                       => x_msg_count
1147         ,   p_data                        => x_msg_data
1148         );
1149 
1150     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1151 
1152         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1153 
1154         --  Get message count and data
1155 
1156         FND_MSG_PUB.Count_And_Get
1157         (   p_count                       => x_msg_count
1158         ,   p_data                        => x_msg_data
1159         );
1160 
1161     WHEN OTHERS THEN
1162 
1163         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1164 
1165         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1166         THEN
1167             FND_MSG_PUB.Add_Exc_Msg
1168             (   G_PKG_NAME
1169             ,   'Change_Attribute'
1170             );
1171         END IF;
1172 
1173         --  Get message count and data
1174 
1175         FND_MSG_PUB.Count_And_Get
1176         (   p_count                       => x_msg_count
1177         ,   p_data                        => x_msg_data
1178         );
1179 
1180 END Change_Attribute;
1181 
1182 -- Function Convert_Miss_To_Null
1183 --
1184 
1185 FUNCTION Convert_Null_To_Miss
1186 (   p_flow_schedule_rec             IN  MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
1187 ) RETURN MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
1188 IS
1189 l_flow_schedule_rec           MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type:= p_flow_schedule_rec;
1190 BEGIN
1191 
1192     IF l_flow_schedule_rec.alternate_bom_designator IS NULL THEN
1193         l_flow_schedule_rec.alternate_bom_designator := FND_API.G_MISS_CHAR;
1194     END IF;
1195 
1196     IF l_flow_schedule_rec.alternate_routing_desig  IS NULL  THEN
1197         l_flow_schedule_rec.alternate_routing_desig := FND_API.G_MISS_CHAR;
1198     END IF;
1199 
1200     IF l_flow_schedule_rec.attribute1  IS NULL  THEN
1201         l_flow_schedule_rec.attribute1 := FND_API.G_MISS_CHAR;
1202     END IF;
1203 
1204     IF l_flow_schedule_rec.attribute10  IS NULL  THEN
1205         l_flow_schedule_rec.attribute10 := FND_API.G_MISS_CHAR;
1206     END IF;
1207 
1208     IF l_flow_schedule_rec.attribute11  IS NULL  THEN
1209         l_flow_schedule_rec.attribute11 := FND_API.G_MISS_CHAR;
1210     END IF;
1211 
1212     IF l_flow_schedule_rec.attribute12  IS NULL  THEN
1213         l_flow_schedule_rec.attribute12 := FND_API.G_MISS_CHAR;
1214     END IF;
1215 
1216     IF l_flow_schedule_rec.attribute13  IS NULL  THEN
1217         l_flow_schedule_rec.attribute13 := FND_API.G_MISS_CHAR;
1218     END IF;
1219 
1220     IF l_flow_schedule_rec.attribute14  IS NULL  THEN
1221         l_flow_schedule_rec.attribute14 := FND_API.G_MISS_CHAR;
1222     END IF;
1223 
1224     IF l_flow_schedule_rec.attribute15  IS NULL  THEN
1225         l_flow_schedule_rec.attribute15 := FND_API.G_MISS_CHAR;
1226     END IF;
1227 
1228     IF l_flow_schedule_rec.attribute2  IS NULL  THEN
1229         l_flow_schedule_rec.attribute2 := FND_API.G_MISS_CHAR;
1230     END IF;
1231 
1232     IF l_flow_schedule_rec.attribute3  IS NULL  THEN
1233         l_flow_schedule_rec.attribute3 := FND_API.G_MISS_CHAR;
1234     END IF;
1235 
1236     IF l_flow_schedule_rec.attribute4  IS NULL  THEN
1237         l_flow_schedule_rec.attribute4 := FND_API.G_MISS_CHAR;
1238     END IF;
1239 
1240     IF l_flow_schedule_rec.attribute5  IS NULL  THEN
1241         l_flow_schedule_rec.attribute5 := FND_API.G_MISS_CHAR;
1242     END IF;
1243 
1244     IF l_flow_schedule_rec.attribute6  IS NULL  THEN
1245         l_flow_schedule_rec.attribute6 := FND_API.G_MISS_CHAR;
1246     END IF;
1247 
1248     IF l_flow_schedule_rec.attribute7  IS NULL  THEN
1249         l_flow_schedule_rec.attribute7 := FND_API.G_MISS_CHAR;
1250     END IF;
1251 
1252     IF l_flow_schedule_rec.attribute8  IS NULL  THEN
1253         l_flow_schedule_rec.attribute8 := FND_API.G_MISS_CHAR;
1254     END IF;
1255 
1256     IF l_flow_schedule_rec.attribute9  IS NULL  THEN
1257         l_flow_schedule_rec.attribute9 := FND_API.G_MISS_CHAR;
1258     END IF;
1259 
1260     IF l_flow_schedule_rec.attribute_category  IS NULL  THEN
1261         l_flow_schedule_rec.attribute_category := FND_API.G_MISS_CHAR;
1262     END IF;
1263 
1264     IF l_flow_schedule_rec.bom_revision  IS NULL  THEN
1265         l_flow_schedule_rec.bom_revision := FND_API.G_MISS_CHAR;
1266     END IF;
1267 
1268     IF l_flow_schedule_rec.bom_revision_date  IS NULL  THEN
1269         l_flow_schedule_rec.bom_revision_date := FND_API.G_MISS_DATE;
1270     END IF;
1271 
1272     IF l_flow_schedule_rec.build_sequence  IS NULL  THEN
1273         l_flow_schedule_rec.build_sequence := FND_API.G_MISS_NUM;
1274     END IF;
1275 
1276     IF l_flow_schedule_rec.class_code  IS NULL  THEN
1277         l_flow_schedule_rec.class_code := FND_API.G_MISS_CHAR;
1278     END IF;
1279 
1280     IF l_flow_schedule_rec.completion_locator_id  IS NULL  THEN
1281         l_flow_schedule_rec.completion_locator_id := FND_API.G_MISS_NUM;
1282     END IF;
1283 
1284     IF l_flow_schedule_rec.completion_subinventory  IS NULL  THEN
1285         l_flow_schedule_rec.completion_subinventory := FND_API.G_MISS_CHAR;
1286     END IF;
1287 
1288     IF l_flow_schedule_rec.created_by  IS NULL  THEN
1289         l_flow_schedule_rec.created_by := FND_API.G_MISS_NUM;
1290     END IF;
1291 
1292     IF l_flow_schedule_rec.creation_date  IS NULL  THEN
1293         l_flow_schedule_rec.creation_date := FND_API.G_MISS_DATE;
1294     END IF;
1295 
1296     IF l_flow_schedule_rec.date_closed  IS NULL  THEN
1297         l_flow_schedule_rec.date_closed := FND_API.G_MISS_DATE;
1298     END IF;
1299 
1300     IF l_flow_schedule_rec.demand_class  IS NULL  THEN
1301         l_flow_schedule_rec.demand_class := FND_API.G_MISS_CHAR;
1302     END IF;
1303 
1304     IF l_flow_schedule_rec.demand_source_delivery  IS NULL  THEN
1305         l_flow_schedule_rec.demand_source_delivery := FND_API.G_MISS_CHAR;
1306     END IF;
1307 
1308     IF l_flow_schedule_rec.demand_source_header_id  IS NULL  THEN
1309         l_flow_schedule_rec.demand_source_header_id := FND_API.G_MISS_NUM;
1310     END IF;
1311 
1312     IF l_flow_schedule_rec.demand_source_line  IS NULL  THEN
1313         l_flow_schedule_rec.demand_source_line := FND_API.G_MISS_CHAR;
1314     END IF;
1315 
1316     IF l_flow_schedule_rec.demand_source_type  IS NULL  THEN
1317         l_flow_schedule_rec.demand_source_type := FND_API.G_MISS_NUM;
1318     END IF;
1319 
1320     IF l_flow_schedule_rec.last_updated_by  IS NULL  THEN
1321         l_flow_schedule_rec.last_updated_by := FND_API.G_MISS_NUM;
1322     END IF;
1323 
1324     IF l_flow_schedule_rec.last_update_date  IS NULL  THEN
1325         l_flow_schedule_rec.last_update_date := FND_API.G_MISS_DATE;
1326     END IF;
1327 
1328     IF l_flow_schedule_rec.last_update_login  IS NULL  THEN
1329         l_flow_schedule_rec.last_update_login := FND_API.G_MISS_NUM;
1330     END IF;
1331 
1332     IF l_flow_schedule_rec.line_id  IS NULL  THEN
1333         l_flow_schedule_rec.line_id := FND_API.G_MISS_NUM;
1334     END IF;
1335 
1336     IF l_flow_schedule_rec.material_account  IS NULL  THEN
1337         l_flow_schedule_rec.material_account := FND_API.G_MISS_NUM;
1338     END IF;
1339 
1340     IF l_flow_schedule_rec.material_overhead_account  IS NULL  THEN
1341         l_flow_schedule_rec.material_overhead_account := FND_API.G_MISS_NUM;
1342     END IF;
1343 
1344     IF l_flow_schedule_rec.material_variance_account  IS NULL  THEN
1345         l_flow_schedule_rec.material_variance_account := FND_API.G_MISS_NUM;
1346     END IF;
1347 
1348     IF l_flow_schedule_rec.mps_net_quantity  IS NULL  THEN
1349         l_flow_schedule_rec.mps_net_quantity := FND_API.G_MISS_NUM;
1350     END IF;
1351 
1352     IF l_flow_schedule_rec.mps_scheduled_comp_date  IS NULL  THEN
1353         l_flow_schedule_rec.mps_scheduled_comp_date := FND_API.G_MISS_DATE;
1354     END IF;
1355 
1356     IF l_flow_schedule_rec.organization_id  IS NULL  THEN
1357         l_flow_schedule_rec.organization_id := FND_API.G_MISS_NUM;
1358     END IF;
1359 
1360     IF l_flow_schedule_rec.outside_processing_acct  IS NULL  THEN
1361         l_flow_schedule_rec.outside_processing_acct := FND_API.G_MISS_NUM;
1362     END IF;
1363 
1364     IF l_flow_schedule_rec.outside_proc_var_acct  IS NULL  THEN
1365         l_flow_schedule_rec.outside_proc_var_acct := FND_API.G_MISS_NUM;
1366     END IF;
1367 
1368     IF l_flow_schedule_rec.overhead_account  IS NULL  THEN
1369         l_flow_schedule_rec.overhead_account := FND_API.G_MISS_NUM;
1370     END IF;
1371 
1372     IF l_flow_schedule_rec.overhead_variance_account  IS NULL  THEN
1373         l_flow_schedule_rec.overhead_variance_account := FND_API.G_MISS_NUM;
1374     END IF;
1375 
1376     IF l_flow_schedule_rec.planned_quantity  IS NULL  THEN
1377         l_flow_schedule_rec.planned_quantity := FND_API.G_MISS_NUM;
1378     END IF;
1379 
1380     IF l_flow_schedule_rec.primary_item_id  IS NULL  THEN
1381         l_flow_schedule_rec.primary_item_id := FND_API.G_MISS_NUM;
1382     END IF;
1383 
1384     IF l_flow_schedule_rec.program_application_id  IS NULL  THEN
1385         l_flow_schedule_rec.program_application_id := FND_API.G_MISS_NUM;
1386     END IF;
1387 
1388     IF l_flow_schedule_rec.program_id  IS NULL  THEN
1389         l_flow_schedule_rec.program_id := FND_API.G_MISS_NUM;
1390     END IF;
1391 
1392     IF l_flow_schedule_rec.program_update_date  IS NULL  THEN
1393         l_flow_schedule_rec.program_update_date := FND_API.G_MISS_DATE;
1394     END IF;
1395 
1396     IF l_flow_schedule_rec.project_id  IS NULL  THEN
1397         l_flow_schedule_rec.project_id := FND_API.G_MISS_NUM;
1398     END IF;
1399 
1400     IF l_flow_schedule_rec.quantity_completed  IS NULL  THEN
1401         l_flow_schedule_rec.quantity_completed := FND_API.G_MISS_NUM;
1402     END IF;
1403 
1404     IF l_flow_schedule_rec.request_id  IS NULL  THEN
1405         l_flow_schedule_rec.request_id := FND_API.G_MISS_NUM;
1406     END IF;
1407 
1408     IF l_flow_schedule_rec.resource_account  IS NULL  THEN
1409         l_flow_schedule_rec.resource_account := FND_API.G_MISS_NUM;
1410     END IF;
1411 
1412     IF l_flow_schedule_rec.resource_variance_account  IS NULL  THEN
1413         l_flow_schedule_rec.resource_variance_account := FND_API.G_MISS_NUM;
1414     END IF;
1415 
1416     IF l_flow_schedule_rec.routing_revision  IS NULL  THEN
1417         l_flow_schedule_rec.routing_revision := FND_API.G_MISS_CHAR;
1418     END IF;
1419 
1420     IF l_flow_schedule_rec.routing_revision_date  IS NULL  THEN
1421         l_flow_schedule_rec.routing_revision_date := FND_API.G_MISS_DATE;
1422     END IF;
1423 
1424     IF l_flow_schedule_rec.scheduled_completion_date  IS NULL  THEN
1425         l_flow_schedule_rec.scheduled_completion_date := FND_API.G_MISS_DATE;
1426     END IF;
1427 
1428     IF l_flow_schedule_rec.scheduled_flag  IS NULL  THEN
1429         l_flow_schedule_rec.scheduled_flag := FND_API.G_MISS_NUM;
1430     END IF;
1431 
1432     IF l_flow_schedule_rec.scheduled_start_date  IS NULL  THEN
1433         l_flow_schedule_rec.scheduled_start_date := FND_API.G_MISS_DATE;
1434     END IF;
1435 
1436     IF l_flow_schedule_rec.schedule_group_id  IS NULL  THEN
1437         l_flow_schedule_rec.schedule_group_id := FND_API.G_MISS_NUM;
1438     END IF;
1439 
1440     IF l_flow_schedule_rec.schedule_number  IS NULL  THEN
1441         l_flow_schedule_rec.schedule_number := FND_API.G_MISS_CHAR;
1442     END IF;
1443 
1444     IF l_flow_schedule_rec.status  IS NULL  THEN
1445         l_flow_schedule_rec.status := FND_API.G_MISS_NUM;
1446     END IF;
1447 
1448     IF l_flow_schedule_rec.std_cost_adjustment_acct  IS NULL  THEN
1449         l_flow_schedule_rec.std_cost_adjustment_acct := FND_API.G_MISS_NUM;
1450     END IF;
1451 
1452     IF l_flow_schedule_rec.task_id  IS NULL  THEN
1453         l_flow_schedule_rec.task_id := FND_API.G_MISS_NUM;
1454     END IF;
1455 
1456     IF l_flow_schedule_rec.wip_entity_id  IS NULL  THEN
1457         l_flow_schedule_rec.wip_entity_id := FND_API.G_MISS_NUM;
1458     END IF;
1459 
1460     IF l_flow_schedule_rec.end_item_unit_number  IS NULL  THEN
1461         l_flow_schedule_rec.end_item_unit_number := FND_API.G_MISS_CHAR;
1462     END IF;
1463 
1464     IF l_flow_schedule_rec.quantity_scrapped  IS NULL  THEN
1465        l_flow_schedule_rec.quantity_scrapped := FND_API.G_MISS_NUM;
1466     END IF;
1467 
1468     RETURN l_flow_schedule_rec;
1469 
1470 END Convert_Null_To_Miss;
1471 
1472 --  Procedure       Validate_And_Write
1473 --
1474 
1475 PROCEDURE Validate_And_Write
1476 (   x_return_status                 OUT NOCOPY VARCHAR2
1477 ,   x_msg_count                     OUT NOCOPY NUMBER
1478 ,   x_msg_data                      OUT NOCOPY VARCHAR2
1479 ,   p_wip_entity_id                 IN  NUMBER
1480 ,   x_creation_date                 OUT NOCOPY DATE
1481 ,   x_created_by                    OUT NOCOPY NUMBER
1482 ,   x_last_update_date              OUT NOCOPY DATE
1483 ,   x_last_updated_by               OUT NOCOPY NUMBER
1484 ,   x_last_update_login             OUT NOCOPY NUMBER
1485 )
1486 IS
1487 l_flow_schedule_rec           MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
1488 l_old_flow_schedule_rec       MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
1489 l_control_rec                 MRP_GLOBALS.Control_Rec_Type;
1490 l_return_status               VARCHAR2(1);
1491 l_x_flow_schedule_rec         MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
1492 BEGIN
1493 
1494     --  Set control flags.
1495 
1496     l_control_rec.controlled_operation := TRUE;
1497     l_control_rec.validate_entity      := TRUE;
1498     l_control_rec.write_to_DB          := TRUE;
1499 
1500     l_control_rec.default_attributes   := FALSE;
1501     l_control_rec.change_attributes    := FALSE;
1502     l_control_rec.process              := FALSE;
1503 
1504     --  Instruct API to retain its caches
1505 
1506     l_control_rec.clear_api_cache      := FALSE;
1507     l_control_rec.clear_api_requests   := FALSE;
1508 
1509     --  Read flow_schedule from cache
1510 
1511     l_old_flow_schedule_rec := Get_flow_schedule
1512     (   p_db_record                   => TRUE
1513     ,   p_wip_entity_id               => p_wip_entity_id
1514     );
1515 
1516     l_flow_schedule_rec := Get_flow_schedule
1517     (   p_db_record                   => FALSE
1518     ,   p_wip_entity_id               => p_wip_entity_id
1519     );
1520 
1521     --  Set Operation.
1522 
1523     IF FND_API.To_Boolean(l_flow_schedule_rec.db_flag) THEN
1524         l_flow_schedule_rec.operation := MRP_GLOBALS.G_OPR_UPDATE;
1525     ELSE
1526         l_flow_schedule_rec.operation := MRP_GLOBALS.G_OPR_CREATE;
1527     END IF;
1528 
1529     --  Call MRP_Flow_Schedule_PVT.Process_flow_schedule
1530     MRP_Flow_Schedule_PVT.Process_flow_schedule
1531     (   p_api_version_number          => 1.0
1532     ,   p_init_msg_list               => FND_API.G_TRUE
1533     ,   x_return_status               => l_return_status
1534     ,   x_msg_count                   => x_msg_count
1535     ,   x_msg_data                    => x_msg_data
1536     ,   p_control_rec                 => l_control_rec
1537     ,   p_flow_schedule_rec           => l_flow_schedule_rec
1538     ,   p_old_flow_schedule_rec       => l_old_flow_schedule_rec
1539     ,   x_flow_schedule_rec           => l_x_flow_schedule_rec
1540     );
1541 
1542     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1543         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1544     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1545         RAISE FND_API.G_EXC_ERROR;
1546     END IF;
1547 
1548     --  Load OUT parameters.
1549 
1550 
1551     x_creation_date                := l_x_flow_schedule_rec.creation_date;
1552     x_created_by                   := l_x_flow_schedule_rec.created_by;
1553     x_last_update_date             := l_x_flow_schedule_rec.last_update_date;
1554     x_last_updated_by              := l_x_flow_schedule_rec.last_updated_by;
1555     x_last_update_login            := l_x_flow_schedule_rec.last_update_login;
1556 
1557     --  Clear flow_schedule record cache
1558 
1559     Clear_flow_schedule;
1560 
1561     --  Keep track of performed operations.
1562 
1563     l_old_flow_schedule_rec.operation := l_flow_schedule_rec.operation;
1564 
1565 
1566     --  Set return status.
1567 
1568     x_return_status := FND_API.G_RET_STS_SUCCESS;
1569 
1570     --  Get message count and data
1571 
1572     FND_MSG_PUB.Count_And_Get
1573     (   p_count                       => x_msg_count
1574     ,   p_data                        => x_msg_data
1575     );
1576 
1577 
1578 EXCEPTION
1579 
1580     WHEN FND_API.G_EXC_ERROR THEN
1581 
1582         x_return_status := FND_API.G_RET_STS_ERROR;
1583 
1584         --  Get message count and data
1585 
1586         FND_MSG_PUB.Count_And_Get
1587         (   p_count                       => x_msg_count
1588         ,   p_data                        => x_msg_data
1589         );
1590 
1591     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1592 
1593         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1594 
1595         --  Get message count and data
1596 
1597         FND_MSG_PUB.Count_And_Get
1598         (   p_count                       => x_msg_count
1599         ,   p_data                        => x_msg_data
1600         );
1601 
1602     WHEN OTHERS THEN
1603 
1604         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1605 
1606         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1607         THEN
1608             FND_MSG_PUB.Add_Exc_Msg
1609             (   G_PKG_NAME
1610             ,   'Validate_And_Write'
1611             );
1612         END IF;
1613 
1614         --  Get message count and data
1615 
1616         FND_MSG_PUB.Count_And_Get
1617         (   p_count                       => x_msg_count
1618         ,   p_data                        => x_msg_data
1619         );
1620 
1621 END Validate_And_Write;
1622 
1623 --  Procedure       Delete_Row
1624 --
1625 
1626 PROCEDURE Delete_Row
1627 (   x_return_status                 OUT NOCOPY VARCHAR2
1628 ,   x_msg_count                     OUT NOCOPY NUMBER
1629 ,   x_msg_data                      OUT NOCOPY VARCHAR2
1630 ,   p_wip_entity_id                 IN  NUMBER
1631 )
1632 IS
1633 l_flow_schedule_rec           MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
1634 l_p_old_flow_schedule_rec     MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
1635 l_control_rec                 MRP_GLOBALS.Control_Rec_Type;
1636 l_return_status               VARCHAR2(1);
1637 l_x_flow_schedule_rec         MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
1638 BEGIN
1639 
1640     --  Set control flags.
1641 
1642     l_control_rec.controlled_operation := TRUE;
1643     l_control_rec.validate_entity      := TRUE;
1644     l_control_rec.write_to_DB          := TRUE;
1645 
1646     l_control_rec.default_attributes   := FALSE;
1647     l_control_rec.change_attributes    := FALSE;
1648     l_control_rec.process              := FALSE;
1649 
1650     --  Instruct API to retain its caches
1651 
1652     l_control_rec.clear_api_cache      := FALSE;
1653     l_control_rec.clear_api_requests   := FALSE;
1654 
1655     --  Read DB record from cache
1656 
1657     l_flow_schedule_rec := Get_flow_schedule
1658     (   p_db_record                   => TRUE
1659     ,   p_wip_entity_id               => p_wip_entity_id
1660     );
1661 
1662     --  Set Operation.
1663 
1664     l_flow_schedule_rec.operation := MRP_GLOBALS.G_OPR_DELETE;
1665 
1666     --  Call MRP_Flow_Schedule_PVT.Process_flow_schedule
1667 
1668     MRP_Flow_Schedule_PVT.Process_flow_schedule
1669     (   p_api_version_number          => 1.0
1670     ,   p_init_msg_list               => FND_API.G_TRUE
1671     ,   x_return_status               => l_return_status
1672     ,   x_msg_count                   => x_msg_count
1673     ,   x_msg_data                    => x_msg_data
1674     ,   p_control_rec                 => l_control_rec
1675     ,   p_flow_schedule_rec           => l_flow_schedule_rec
1676     ,	p_old_flow_schedule_rec       => l_p_old_flow_schedule_rec
1677     ,   x_flow_schedule_rec           => l_x_flow_schedule_rec
1678     );
1679 
1680     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1681         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1682     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1683         RAISE FND_API.G_EXC_ERROR;
1684     END IF;
1685 
1686 
1687     --  Clear flow_schedule record cache
1688 
1689     Clear_flow_schedule;
1690 
1691     --  Set return status.
1692 
1693     x_return_status := FND_API.G_RET_STS_SUCCESS;
1694 
1695     --  Get message count and data
1696 
1697     FND_MSG_PUB.Count_And_Get
1698     (   p_count                       => x_msg_count
1699     ,   p_data                        => x_msg_data
1700     );
1701 
1702 
1703 EXCEPTION
1704 
1705     WHEN FND_API.G_EXC_ERROR THEN
1706 
1707         x_return_status := FND_API.G_RET_STS_ERROR;
1708 
1709         --  Get message count and data
1710 
1711         FND_MSG_PUB.Count_And_Get
1712         (   p_count                       => x_msg_count
1713         ,   p_data                        => x_msg_data
1714         );
1715 
1716     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1717 
1718         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1719 
1720         --  Get message count and data
1721 
1722         FND_MSG_PUB.Count_And_Get
1723         (   p_count                       => x_msg_count
1724         ,   p_data                        => x_msg_data
1725         );
1726 
1727     WHEN OTHERS THEN
1728 
1729         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1730 
1731         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1732         THEN
1733             FND_MSG_PUB.Add_Exc_Msg
1734             (   G_PKG_NAME
1735             ,   'Delete_Row'
1736             );
1737         END IF;
1738 
1739         --  Get message count and data
1740 
1741         FND_MSG_PUB.Count_And_Get
1742         (   p_count                       => x_msg_count
1743         ,   p_data                        => x_msg_data
1744         );
1745 
1746 END Delete_Row;
1747 
1748 --  Procedure       Process_Entity
1749 --
1750 
1751 PROCEDURE Process_Entity
1752 (   x_return_status                 OUT NOCOPY VARCHAR2
1753 ,   x_msg_count                     OUT NOCOPY NUMBER
1754 ,   x_msg_data                      OUT NOCOPY VARCHAR2
1755 )
1756 IS
1757 l_control_rec                 MRP_GLOBALS.Control_Rec_Type;
1758 l_return_status               VARCHAR2(1);
1759 l_x_flow_schedule_rec         MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
1760 l_p_flow_schedule_rec	      MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
1761 l_p_old_flow_schedule_rec     MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
1762 BEGIN
1763 
1764     --  Set control flags.
1765 
1766     l_control_rec.controlled_operation := TRUE;
1767     l_control_rec.process              := TRUE;
1768     l_control_rec.process_entity       := MRP_GLOBALS.G_ENTITY_FLOW_SCHEDULE;
1769 
1770     l_control_rec.default_attributes   := FALSE;
1771     l_control_rec.change_attributes    := FALSE;
1772     l_control_rec.validate_entity      := FALSE;
1773     l_control_rec.write_to_DB          := FALSE;
1774 
1775     --  Instruct API to clear its request table
1776 
1777     l_control_rec.clear_api_cache      := FALSE;
1778     l_control_rec.clear_api_requests   := FALSE;
1779 
1780     --  Call MRP_Flow_Schedule_PVT.Process_flow_schedule
1781 
1782     MRP_Flow_Schedule_PVT.Process_flow_schedule
1783     (   p_api_version_number          => 1.0
1784     ,   p_init_msg_list               => FND_API.G_TRUE
1785     ,   x_return_status               => l_return_status
1786     ,   x_msg_count                   => x_msg_count
1787     ,   x_msg_data                    => x_msg_data
1788     ,   p_control_rec                 => l_control_rec
1789     ,   x_flow_schedule_rec           => l_x_flow_schedule_rec
1790     ,   p_flow_schedule_rec           => l_p_flow_schedule_rec
1791     ,   p_old_flow_schedule_rec       => l_p_old_flow_schedule_rec
1792     );
1793 
1794     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1795         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1796     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1797         RAISE FND_API.G_EXC_ERROR;
1798     END IF;
1799 
1800 
1801     --  Set return status.
1802 
1803     x_return_status := FND_API.G_RET_STS_SUCCESS;
1804 
1805     --  Get message count and data
1806 
1807     FND_MSG_PUB.Count_And_Get
1808     (   p_count                       => x_msg_count
1809     ,   p_data                        => x_msg_data
1810     );
1811 
1812 
1813 EXCEPTION
1814 
1815     WHEN FND_API.G_EXC_ERROR THEN
1816 
1817         x_return_status := FND_API.G_RET_STS_ERROR;
1818 
1819         --  Get message count and data
1820 
1821         FND_MSG_PUB.Count_And_Get
1822         (   p_count                       => x_msg_count
1823         ,   p_data                        => x_msg_data
1824         );
1825 
1826     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1827 
1828         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1829 
1830         --  Get message count and data
1831 
1832         FND_MSG_PUB.Count_And_Get
1833         (   p_count                       => x_msg_count
1834         ,   p_data                        => x_msg_data
1835         );
1836 
1837     WHEN OTHERS THEN
1838 
1839         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1840 
1841         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1842         THEN
1843             FND_MSG_PUB.Add_Exc_Msg
1844             (   G_PKG_NAME
1845             ,   'Process_Entity'
1846             );
1847         END IF;
1848 
1849         --  Get message count and data
1850 
1851         FND_MSG_PUB.Count_And_Get
1852         (   p_count                       => x_msg_count
1853         ,   p_data                        => x_msg_data
1854         );
1855 
1856 END Process_Entity;
1857 
1858 --  Procedure       Process_Object
1859 --
1860 
1861 PROCEDURE Process_Object
1862 (   x_return_status                 OUT NOCOPY VARCHAR2
1863 ,   x_msg_count                     OUT NOCOPY NUMBER
1864 ,   x_msg_data                      OUT NOCOPY VARCHAR2
1865 )
1866 IS
1867 l_control_rec                 MRP_GLOBALS.Control_Rec_Type;
1868 l_return_status               VARCHAR2(1);
1869 l_x_flow_schedule_rec         MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
1870 l_p_flow_schedule_rec	      MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
1871 l_p_old_flow_schedule_rec     MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
1872 
1873 BEGIN
1874 
1875     --  Set control flags.
1876 
1877     l_control_rec.controlled_operation := TRUE;
1878     l_control_rec.process              := TRUE;
1879     l_control_rec.process_entity       := MRP_GLOBALS.G_ENTITY_ALL;
1880 
1881     l_control_rec.default_attributes   := FALSE;
1882     l_control_rec.change_attributes    := FALSE;
1883     l_control_rec.validate_entity      := FALSE;
1884     l_control_rec.write_to_DB          := FALSE;
1885 
1886     --  Instruct API to clear its request table
1887 
1888     l_control_rec.clear_api_cache      := FALSE;
1889     l_control_rec.clear_api_requests   := TRUE;
1890 
1891     --  Call MRP_Flow_Schedule_PVT.Process_flow_schedule
1892 
1893     MRP_Flow_Schedule_PVT.Process_flow_schedule
1894     (   p_api_version_number          => 1.0
1895     ,   p_init_msg_list               => FND_API.G_TRUE
1896     ,   x_return_status               => l_return_status
1897     ,   x_msg_count                   => x_msg_count
1898     ,   x_msg_data                    => x_msg_data
1899     ,   p_control_rec                 => l_control_rec
1900     ,   x_flow_schedule_rec           => l_x_flow_schedule_rec
1901     ,   p_flow_schedule_rec           => l_p_flow_schedule_rec
1902     ,   p_old_flow_schedule_rec       => l_p_old_flow_schedule_rec
1903     );
1904 
1905     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1906         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1907     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1908         RAISE FND_API.G_EXC_ERROR;
1909     END IF;
1910 
1911 
1912     --  Set return status.
1913 
1914     x_return_status := FND_API.G_RET_STS_SUCCESS;
1915 
1916     --  Get message count and data
1917 
1918     FND_MSG_PUB.Count_And_Get
1919     (   p_count                       => x_msg_count
1920     ,   p_data                        => x_msg_data
1921     );
1922 
1923 
1924 EXCEPTION
1925 
1926     WHEN FND_API.G_EXC_ERROR THEN
1927 
1928         x_return_status := FND_API.G_RET_STS_ERROR;
1929 
1930         --  Get message count and data
1931 
1932         FND_MSG_PUB.Count_And_Get
1933         (   p_count                       => x_msg_count
1934         ,   p_data                        => x_msg_data
1935         );
1936 
1937     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1938 
1939         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1940 
1941         --  Get message count and data
1942 
1943         FND_MSG_PUB.Count_And_Get
1944         (   p_count                       => x_msg_count
1945         ,   p_data                        => x_msg_data
1946         );
1947 
1948     WHEN OTHERS THEN
1949 
1950         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1951 
1952         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1953         THEN
1954             FND_MSG_PUB.Add_Exc_Msg
1955             (   G_PKG_NAME
1956             ,   'Process_Object'
1957             );
1958         END IF;
1959 
1960         --  Get message count and data
1961 
1962         FND_MSG_PUB.Count_And_Get
1963         (   p_count                       => x_msg_count
1964         ,   p_data                        => x_msg_data
1965         );
1966 
1967 END Process_Object;
1968 
1969 --  Procedure       lock_Row
1970 --
1971 
1972 PROCEDURE Lock_Row
1973 (   x_return_status                 OUT NOCOPY VARCHAR2
1974 ,   x_msg_count                     OUT NOCOPY NUMBER
1975 ,   x_msg_data                      OUT NOCOPY VARCHAR2
1976 ,   p_alternate_bom_designator      IN  VARCHAR2
1977 ,   p_alternate_routing_desig       IN  VARCHAR2
1978 ,   p_attribute1                    IN  VARCHAR2
1979 ,   p_attribute10                   IN  VARCHAR2
1980 ,   p_attribute11                   IN  VARCHAR2
1981 ,   p_attribute12                   IN  VARCHAR2
1982 ,   p_attribute13                   IN  VARCHAR2
1983 ,   p_attribute14                   IN  VARCHAR2
1984 ,   p_attribute15                   IN  VARCHAR2
1985 ,   p_attribute2                    IN  VARCHAR2
1986 ,   p_attribute3                    IN  VARCHAR2
1987 ,   p_attribute4                    IN  VARCHAR2
1988 ,   p_attribute5                    IN  VARCHAR2
1989 ,   p_attribute6                    IN  VARCHAR2
1990 ,   p_attribute7                    IN  VARCHAR2
1991 ,   p_attribute8                    IN  VARCHAR2
1992 ,   p_attribute9                    IN  VARCHAR2
1993 ,   p_attribute_category            IN  VARCHAR2
1994 ,   p_bom_revision                  IN  VARCHAR2
1995 ,   p_bom_revision_date             IN  DATE
1996 ,   p_build_sequence                IN  NUMBER
1997 ,   p_class_code                    IN  VARCHAR2
1998 ,   p_completion_locator_id         IN  NUMBER
1999 ,   p_completion_subinventory       IN  VARCHAR2
2000 ,   p_created_by                    IN  NUMBER
2001 ,   p_creation_date                 IN  DATE
2002 ,   p_date_closed                   IN  DATE
2003 ,   p_demand_class                  IN  VARCHAR2
2004 ,   p_demand_source_delivery        IN  VARCHAR2
2005 ,   p_demand_source_header_id       IN  NUMBER
2006 ,   p_demand_source_line            IN  VARCHAR2
2007 ,   p_demand_source_type            IN  NUMBER
2008 ,   p_last_updated_by               IN  NUMBER
2009 ,   p_last_update_date              IN  DATE
2010 ,   p_last_update_login             IN  NUMBER
2011 ,   p_line_id                       IN  NUMBER
2012 ,   p_material_account              IN  NUMBER
2013 ,   p_material_overhead_account     IN  NUMBER
2014 ,   p_material_variance_account     IN  NUMBER
2015 ,   p_mps_net_quantity              IN  NUMBER
2016 ,   p_mps_scheduled_comp_date       IN  DATE
2017 ,   p_organization_id               IN  NUMBER
2018 ,   p_outside_processing_acct       IN  NUMBER
2019 ,   p_outside_proc_var_acct         IN  NUMBER
2020 ,   p_overhead_account              IN  NUMBER
2021 ,   p_overhead_variance_account     IN  NUMBER
2022 ,   p_planned_quantity              IN  NUMBER
2023 ,   p_primary_item_id               IN  NUMBER
2024 ,   p_program_application_id        IN  NUMBER
2025 ,   p_program_id                    IN  NUMBER
2026 ,   p_program_update_date           IN  DATE
2027 ,   p_project_id                    IN  NUMBER
2028 ,   p_quantity_completed            IN  NUMBER
2029 ,   p_request_id                    IN  NUMBER
2030 ,   p_resource_account              IN  NUMBER
2031 ,   p_resource_variance_account     IN  NUMBER
2032 ,   p_routing_revision              IN  VARCHAR2
2033 ,   p_routing_revision_date         IN  DATE
2034 ,   p_scheduled_completion_date     IN  DATE
2035 ,   p_scheduled_flag                IN  NUMBER
2036 ,   p_scheduled_start_date          IN  DATE
2037 ,   p_schedule_group_id             IN  NUMBER
2038 ,   p_schedule_number               IN  VARCHAR2
2039 ,   p_status                        IN  NUMBER
2040 ,   p_std_cost_adjustment_acct      IN  NUMBER
2041 ,   p_task_id                       IN  NUMBER
2042 ,   p_wip_entity_id                 IN  NUMBER
2043 ,   p_end_item_unit_number          IN  VARCHAR2
2044 ,   p_quantity_scrapped             IN  NUMBER
2045 )
2046 IS
2047 l_return_status               VARCHAR2(1);
2048 l_flow_schedule_rec           MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
2049 l_x_flow_schedule_rec         MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
2050 l_file				UTL_FILE.file_type;
2051 BEGIN
2052 
2053     --  Load flow_schedule record
2054 
2055     l_flow_schedule_rec.alternate_bom_designator := p_alternate_bom_designator;
2056     l_flow_schedule_rec.alternate_routing_desig := p_alternate_routing_desig;
2057     l_flow_schedule_rec.attribute1 := p_attribute1;
2058     l_flow_schedule_rec.attribute10 := p_attribute10;
2059     l_flow_schedule_rec.attribute11 := p_attribute11;
2060     l_flow_schedule_rec.attribute12 := p_attribute12;
2061     l_flow_schedule_rec.attribute13 := p_attribute13;
2062     l_flow_schedule_rec.attribute14 := p_attribute14;
2063     l_flow_schedule_rec.attribute15 := p_attribute15;
2064     l_flow_schedule_rec.attribute2 := p_attribute2;
2065     l_flow_schedule_rec.attribute3 := p_attribute3;
2066     l_flow_schedule_rec.attribute4 := p_attribute4;
2067     l_flow_schedule_rec.attribute5 := p_attribute5;
2068     l_flow_schedule_rec.attribute6 := p_attribute6;
2069     l_flow_schedule_rec.attribute7 := p_attribute7;
2070     l_flow_schedule_rec.attribute8 := p_attribute8;
2071     l_flow_schedule_rec.attribute9 := p_attribute9;
2072     l_flow_schedule_rec.attribute_category := p_attribute_category;
2073     l_flow_schedule_rec.bom_revision := p_bom_revision;
2074     l_flow_schedule_rec.bom_revision_date := p_bom_revision_date;
2075     l_flow_schedule_rec.build_sequence := p_build_sequence;
2076     l_flow_schedule_rec.class_code := p_class_code;
2077     l_flow_schedule_rec.completion_locator_id := p_completion_locator_id;
2078     l_flow_schedule_rec.completion_subinventory := p_completion_subinventory;
2079     l_flow_schedule_rec.created_by := p_created_by;
2080     l_flow_schedule_rec.creation_date := p_creation_date;
2081     l_flow_schedule_rec.date_closed := p_date_closed;
2082     l_flow_schedule_rec.demand_class := p_demand_class;
2083     l_flow_schedule_rec.demand_source_delivery := p_demand_source_delivery;
2084     l_flow_schedule_rec.demand_source_header_id := p_demand_source_header_id;
2085     l_flow_schedule_rec.demand_source_line := p_demand_source_line;
2086     l_flow_schedule_rec.demand_source_type := p_demand_source_type;
2087     l_flow_schedule_rec.last_updated_by := p_last_updated_by;
2088     l_flow_schedule_rec.last_update_date := p_last_update_date;
2089     l_flow_schedule_rec.last_update_login := p_last_update_login;
2090     l_flow_schedule_rec.line_id    := p_line_id;
2091     l_flow_schedule_rec.material_account := p_material_account;
2092     l_flow_schedule_rec.material_overhead_account := p_material_overhead_account;
2093     l_flow_schedule_rec.material_variance_account := p_material_variance_account;
2094     l_flow_schedule_rec.mps_net_quantity := p_mps_net_quantity;
2095     l_flow_schedule_rec.mps_scheduled_comp_date := p_mps_scheduled_comp_date;
2096     l_flow_schedule_rec.organization_id := p_organization_id;
2097     l_flow_schedule_rec.outside_processing_acct := p_outside_processing_acct;
2098     l_flow_schedule_rec.outside_proc_var_acct := p_outside_proc_var_acct;
2099     l_flow_schedule_rec.overhead_account := p_overhead_account;
2100     l_flow_schedule_rec.overhead_variance_account := p_overhead_variance_account;
2101     l_flow_schedule_rec.planned_quantity := p_planned_quantity;
2102     l_flow_schedule_rec.primary_item_id := p_primary_item_id;
2103     l_flow_schedule_rec.program_application_id := p_program_application_id;
2104     l_flow_schedule_rec.program_id := p_program_id;
2105     l_flow_schedule_rec.program_update_date := p_program_update_date;
2106     l_flow_schedule_rec.project_id := p_project_id;
2107     l_flow_schedule_rec.quantity_completed := p_quantity_completed;
2108     l_flow_schedule_rec.request_id := p_request_id;
2109     l_flow_schedule_rec.resource_account := p_resource_account;
2110     l_flow_schedule_rec.resource_variance_account := p_resource_variance_account;
2111     l_flow_schedule_rec.routing_revision := p_routing_revision;
2112     l_flow_schedule_rec.routing_revision_date := p_routing_revision_date;
2113     l_flow_schedule_rec.scheduled_completion_date := p_scheduled_completion_date;
2114     l_flow_schedule_rec.scheduled_flag := p_scheduled_flag;
2115     l_flow_schedule_rec.scheduled_start_date := p_scheduled_start_date;
2116     l_flow_schedule_rec.schedule_group_id := p_schedule_group_id;
2117     l_flow_schedule_rec.schedule_number := p_schedule_number;
2118     l_flow_schedule_rec.status     := p_status;
2119     l_flow_schedule_rec.std_cost_adjustment_acct := p_std_cost_adjustment_acct;
2120     l_flow_schedule_rec.task_id    := p_task_id;
2121     l_flow_schedule_rec.wip_entity_id := p_wip_entity_id;
2122     l_flow_schedule_rec.end_item_unit_number := p_end_item_unit_number;
2123     l_flow_schedule_rec.quantity_scrapped := p_quantity_scrapped;
2124 
2125     l_flow_schedule_rec.operation := MRP_GLOBALS.G_OPR_LOCK;
2126 
2127     --  Call MRP_Flow_Schedule_PVT.Lock_flow_schedule
2128 
2129     MRP_Flow_Schedule_PVT.Lock_flow_schedule
2130     (   p_api_version_number          => 1.0
2131     ,   p_init_msg_list               => FND_API.G_TRUE
2132     ,   x_return_status               => l_return_status
2133     ,   x_msg_count                   => x_msg_count
2134     ,   x_msg_data                    => x_msg_data
2135     ,   p_flow_schedule_rec           => l_flow_schedule_rec
2136     ,   x_flow_schedule_rec           => l_x_flow_schedule_rec
2137     );
2138 
2139     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
2140 
2141         --  Set DB flag and write record to cache.
2142 
2143         l_x_flow_schedule_rec.db_flag := FND_API.G_TRUE;
2144 
2145         Write_flow_schedule
2146         (   p_flow_schedule_rec           => l_x_flow_schedule_rec
2147         ,   p_db_record                   => TRUE
2148         );
2149 
2150     END IF;
2151 
2152     --  Set return status.
2153 
2154     x_return_status := l_return_status;
2155 
2156     --  Get message count and data
2157 
2158     FND_MSG_PUB.Count_And_Get
2159     (   p_count                       => x_msg_count
2160     ,   p_data                        => x_msg_data
2161     );
2162 
2163 
2164 EXCEPTION
2165 
2166     WHEN OTHERS THEN
2167 
2168             FND_MSG_PUB.Add_Exc_Msg
2169             (   G_PKG_NAME
2170             ,   'Lock_Row: yes you really are here'
2171             );
2172         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2173         THEN
2174             FND_MSG_PUB.Add_Exc_Msg
2175             (   G_PKG_NAME
2176             ,   'Lock_Row'
2177             );
2178         END IF;
2179 
2180         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2181 
2182         --  Get message count and data
2183 
2184         FND_MSG_PUB.Count_And_Get
2185         (   p_count                       => x_msg_count
2186         ,   p_data                        => x_msg_data
2187         );
2188 
2189 END Lock_Row;
2190 
2191 PROCEDURE Create_Flow_Schedule
2192 (   x_return_status                 OUT NOCOPY VARCHAR2
2193 ,   x_msg_count                     OUT NOCOPY NUMBER
2194 ,   x_msg_data                      OUT NOCOPY VARCHAR2
2195 ,   p_alternate_bom_designator      IN  VARCHAR2
2196 ,   p_alternate_routing_desig       IN  VARCHAR2
2197 ,   p_attribute1                    IN  VARCHAR2
2198 ,   p_attribute10                   IN  VARCHAR2
2199 ,   p_attribute11                   IN  VARCHAR2
2200 ,   p_attribute12                   IN  VARCHAR2
2201 ,   p_attribute13                   IN  VARCHAR2
2202 ,   p_attribute14                   IN  VARCHAR2
2203 ,   p_attribute15                   IN  VARCHAR2
2204 ,   p_attribute2                    IN  VARCHAR2
2205 ,   p_attribute3                    IN  VARCHAR2
2206 ,   p_attribute4                    IN  VARCHAR2
2207 ,   p_attribute5                    IN  VARCHAR2
2208 ,   p_attribute6                    IN  VARCHAR2
2209 ,   p_attribute7                    IN  VARCHAR2
2210 ,   p_attribute8                    IN  VARCHAR2
2211 ,   p_attribute9                    IN  VARCHAR2
2212 ,   p_attribute_category            IN  VARCHAR2
2213 ,   p_bom_revision                  IN  VARCHAR2
2214 ,   p_bom_revision_date             IN  DATE
2215 ,   p_build_sequence                IN  NUMBER
2216 ,   p_class_code                    IN  VARCHAR2
2217 ,   p_completion_locator_id         IN  NUMBER
2218 ,   p_completion_subinventory       IN  VARCHAR2
2219 ,   p_created_by                    IN  NUMBER
2220 ,   p_creation_date                 IN  DATE
2221 ,   p_date_closed                   IN  DATE
2222 ,   p_demand_class                  IN  VARCHAR2
2223 ,   p_demand_source_delivery        IN  VARCHAR2
2224 ,   p_demand_source_header_id       IN  NUMBER
2225 ,   p_demand_source_line            IN  VARCHAR2
2226 ,   p_demand_source_type            IN  NUMBER
2227 ,   p_last_updated_by               IN  NUMBER
2228 ,   p_last_update_date              IN  DATE
2229 ,   p_last_update_login             IN  NUMBER
2230 ,   p_line_id                       IN  NUMBER
2231 ,   p_material_account              IN  NUMBER
2232 ,   p_material_overhead_account     IN  NUMBER
2233 ,   p_material_variance_account     IN  NUMBER
2234 ,   p_mps_net_quantity              IN  NUMBER
2235 ,   p_mps_scheduled_comp_date       IN  DATE
2236 ,   p_organization_id               IN  NUMBER
2237 ,   p_outside_processing_acct       IN  NUMBER
2238 ,   p_outside_proc_var_acct         IN  NUMBER
2239 ,   p_overhead_account              IN  NUMBER
2240 ,   p_overhead_variance_account     IN  NUMBER
2241 ,   p_planned_quantity              IN  NUMBER
2242 ,   p_primary_item_id               IN  NUMBER
2243 ,   p_program_application_id        IN  NUMBER
2244 ,   p_program_id                    IN  NUMBER
2245 ,   p_program_update_date           IN  DATE
2246 ,   p_project_id                    IN  NUMBER
2247 ,   p_quantity_completed            IN  NUMBER
2248 ,   p_request_id                    IN  NUMBER
2249 ,   p_resource_account              IN  NUMBER
2250 ,   p_resource_variance_account     IN  NUMBER
2251 ,   p_routing_revision              IN  VARCHAR2
2252 ,   p_routing_revision_date         IN  DATE
2253 ,   p_scheduled_completion_date     IN  DATE
2254 ,   p_scheduled_flag                IN  NUMBER
2255 ,   p_scheduled_start_date          IN  DATE
2256 ,   p_schedule_group_id             IN  NUMBER
2257 ,   p_schedule_number               IN  VARCHAR2
2258 ,   p_status                        IN  NUMBER
2259 ,   p_std_cost_adjustment_acct      IN  NUMBER
2260 ,   p_task_id                       IN  NUMBER
2261 ,   p_wip_entity_id                 IN  NUMBER
2262 ,   p_end_item_unit_number          IN  VARCHAR2
2263 ,   p_quantity_scrapped             IN  NUMBER
2264 ,   x_wip_entity_id                 OUT NOCOPY NUMBER
2265 
2266 )
2267 IS
2268 l_return_status               VARCHAR2(1);
2269 l_control_rec                 MRP_GLOBALS.Control_Rec_Type ;
2270 l_flow_schedule_rec           MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
2271 l_x_flow_schedule_rec         MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
2272 l_p_old_flow_schedule_rec     MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
2273 BEGIN
2274 
2275     --  Load flow_schedule record
2276 
2277     l_flow_schedule_rec.alternate_bom_designator := p_alternate_bom_designator;
2278     l_flow_schedule_rec.alternate_routing_desig := p_alternate_routing_desig;
2279     l_flow_schedule_rec.attribute1 := p_attribute1;
2280     l_flow_schedule_rec.attribute10 := p_attribute10;
2281     l_flow_schedule_rec.attribute11 := p_attribute11;
2282     l_flow_schedule_rec.attribute12 := p_attribute12;
2283     l_flow_schedule_rec.attribute13 := p_attribute13;
2284     l_flow_schedule_rec.attribute14 := p_attribute14;
2285     l_flow_schedule_rec.attribute15 := p_attribute15;
2286     l_flow_schedule_rec.attribute2 := p_attribute2;
2287     l_flow_schedule_rec.attribute3 := p_attribute3;
2288     l_flow_schedule_rec.attribute4 := p_attribute4;
2289     l_flow_schedule_rec.attribute5 := p_attribute5;
2290     l_flow_schedule_rec.attribute6 := p_attribute6;
2291     l_flow_schedule_rec.attribute7 := p_attribute7;
2292     l_flow_schedule_rec.attribute8 := p_attribute8;
2293     l_flow_schedule_rec.attribute9 := p_attribute9;
2294     l_flow_schedule_rec.attribute_category := p_attribute_category;
2295     l_flow_schedule_rec.bom_revision := p_bom_revision;
2296     l_flow_schedule_rec.bom_revision_date := p_bom_revision_date;
2297     l_flow_schedule_rec.build_sequence := p_build_sequence;
2298     l_flow_schedule_rec.class_code := p_class_code;
2299     l_flow_schedule_rec.completion_locator_id := p_completion_locator_id;
2300     l_flow_schedule_rec.completion_subinventory := p_completion_subinventory;
2301     l_flow_schedule_rec.created_by := p_created_by;
2302     l_flow_schedule_rec.creation_date := p_creation_date;
2303     l_flow_schedule_rec.date_closed := p_date_closed;
2304     l_flow_schedule_rec.demand_class := p_demand_class;
2305     l_flow_schedule_rec.demand_source_delivery := p_demand_source_delivery;
2306     l_flow_schedule_rec.demand_source_header_id := p_demand_source_header_id;
2307     l_flow_schedule_rec.demand_source_line := p_demand_source_line;
2308     l_flow_schedule_rec.demand_source_type := p_demand_source_type;
2309     l_flow_schedule_rec.last_updated_by := p_last_updated_by;
2310     l_flow_schedule_rec.last_update_date := p_last_update_date;
2311     l_flow_schedule_rec.last_update_login := p_last_update_login;
2312     l_flow_schedule_rec.line_id    := p_line_id;
2313     l_flow_schedule_rec.material_account := p_material_account;
2314     l_flow_schedule_rec.material_overhead_account := p_material_overhead_account;
2315     l_flow_schedule_rec.material_variance_account := p_material_variance_account;
2316     l_flow_schedule_rec.mps_net_quantity := p_mps_net_quantity;
2317     l_flow_schedule_rec.mps_scheduled_comp_date := p_mps_scheduled_comp_date;
2318     l_flow_schedule_rec.organization_id := p_organization_id;
2319     l_flow_schedule_rec.outside_processing_acct := p_outside_processing_acct;
2320     l_flow_schedule_rec.outside_proc_var_acct := p_outside_proc_var_acct;
2321     l_flow_schedule_rec.overhead_account := p_overhead_account;
2322     l_flow_schedule_rec.overhead_variance_account := p_overhead_variance_account;
2323     l_flow_schedule_rec.planned_quantity := p_planned_quantity;
2324     l_flow_schedule_rec.primary_item_id := p_primary_item_id;
2325     l_flow_schedule_rec.program_application_id := p_program_application_id;
2326     l_flow_schedule_rec.program_id := p_program_id;
2327     l_flow_schedule_rec.program_update_date := p_program_update_date;
2328     l_flow_schedule_rec.project_id := p_project_id;
2329     l_flow_schedule_rec.quantity_completed := p_quantity_completed;
2330     l_flow_schedule_rec.request_id := p_request_id;
2331     l_flow_schedule_rec.resource_account := p_resource_account;
2332     l_flow_schedule_rec.resource_variance_account := p_resource_variance_account;
2333     l_flow_schedule_rec.routing_revision := p_routing_revision;
2334     l_flow_schedule_rec.routing_revision_date := p_routing_revision_date;
2335     l_flow_schedule_rec.scheduled_completion_date := p_scheduled_completion_date;
2336     l_flow_schedule_rec.scheduled_flag := p_scheduled_flag;
2337     l_flow_schedule_rec.scheduled_start_date := p_scheduled_start_date;
2338     l_flow_schedule_rec.schedule_group_id := p_schedule_group_id;
2339     l_flow_schedule_rec.schedule_number := p_schedule_number;
2340     l_flow_schedule_rec.status     := p_status;
2341     l_flow_schedule_rec.std_cost_adjustment_acct := p_std_cost_adjustment_acct;
2342     l_flow_schedule_rec.task_id    := p_task_id;
2343     l_flow_schedule_rec.wip_entity_id := p_wip_entity_id;
2344     l_flow_schedule_rec.end_item_unit_number := p_end_item_unit_number;
2345     l_flow_schedule_rec.quantity_scrapped := p_quantity_scrapped;
2346     l_flow_schedule_rec.operation := MRP_GLOBALS.G_OPR_CREATE;
2347 
2348     --  Call MRP_Flow_Schedule_PVT.Process_Flow_Schedule
2349 
2350     MRP_Flow_Schedule_PVT.Process_Flow_Schedule
2351     (   p_api_version_number          => 1.0
2352     ,   p_init_msg_list               => FND_API.G_TRUE
2353     ,   x_return_status               => l_return_status
2354     ,   x_msg_count                   => x_msg_count
2355     ,   x_msg_data                    => x_msg_data
2356     ,   p_control_rec		      => l_control_rec
2357     ,   p_flow_schedule_rec           => l_flow_schedule_rec
2358     ,   p_old_flow_schedule_rec	      => l_p_old_flow_schedule_rec
2359     ,   x_flow_schedule_rec           => l_x_flow_schedule_rec
2360     );
2361 
2362     x_wip_entity_id := l_x_flow_schedule_rec.wip_entity_id;
2363 
2364     x_return_status := l_return_status;
2365 
2366     --  Get message count and data
2367 
2368     FND_MSG_PUB.Count_And_Get
2369     (   p_count                       => x_msg_count
2370     ,   p_data                        => x_msg_data
2371     );
2372 
2373 
2374 EXCEPTION
2375 
2376     WHEN OTHERS THEN
2377 
2378         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2379         THEN
2380             FND_MSG_PUB.Add_Exc_Msg
2381             (   G_PKG_NAME
2382             ,   'Create_Flow_Schedule'
2383             );
2384         END IF;
2385 
2386         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2387 
2388         --  Get message count and data
2389 
2390         FND_MSG_PUB.Count_And_Get
2391         (   p_count                       => x_msg_count
2392         ,   p_data                        => x_msg_data
2393         );
2394 
2395 END Create_Flow_Schedule;
2396 
2397 
2398 --  Procedures maintaining flow_schedule record cache.
2399 
2400 PROCEDURE Write_flow_schedule
2401 (   p_flow_schedule_rec             IN  MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
2402 ,   p_db_record                     IN  BOOLEAN := NULL
2403 )
2404 IS
2405 BEGIN
2406 
2407     g_flow_schedule_rec := p_flow_schedule_rec;
2408 
2409     IF nvl(p_db_record,FALSE) THEN
2410 
2411         g_db_flow_schedule_rec := p_flow_schedule_rec;
2412 
2413     END IF;
2414 
2415 END Write_Flow_Schedule;
2416 
2417 FUNCTION Get_flow_schedule
2418 (   p_db_record                     IN  BOOLEAN := NULL
2419 ,   p_wip_entity_id                 IN  NUMBER
2420 )
2421 RETURN MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
2422 IS
2423 BEGIN
2424 
2425     IF  ((p_wip_entity_id <> g_flow_schedule_rec.wip_entity_id ) or (g_flow_schedule_rec.wip_entity_id IS NULL)) and (p_wip_entity_id IS NOT NULL)
2426     THEN
2427 
2428         --  Query row from DB
2429 
2430         g_flow_schedule_rec := MRP_Flow_Schedule_Util.Query_Row
2431         (   p_wip_entity_id               => p_wip_entity_id
2432         );
2433 
2434         g_flow_schedule_rec.db_flag    := FND_API.G_TRUE;
2435 
2436         --  Load DB record
2437 
2438         g_db_flow_schedule_rec         := g_flow_schedule_rec;
2439 
2440     END IF;
2441 
2442     IF nvl(p_db_record,FALSE) THEN
2443 
2444         RETURN g_db_flow_schedule_rec;
2445 
2446     ELSE
2447 
2448         RETURN g_flow_schedule_rec;
2449 
2450     END IF;
2451 
2452 END Get_Flow_Schedule;
2453 
2454 PROCEDURE Clear_Flow_Schedule
2455 IS
2456 	l_flow_schedule_rec            MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
2457 	l_db_flow_schedule_rec         MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
2458 BEGIN
2459 
2460     g_flow_schedule_rec            := l_flow_schedule_rec            ;
2461     g_db_flow_schedule_rec         := l_db_flow_schedule_rec         ;
2462 
2463 END Clear_Flow_Schedule;
2464 
2465 PROCEDURE get_default_dff (
2466                 x_return_status OUT NOCOPY varchar2,
2467                 p_attribute1 IN OUT NOCOPY varchar2,
2468                 p_attribute2 IN OUT NOCOPY varchar2,
2469                 p_attribute3 IN OUT NOCOPY varchar2,
2470                 p_attribute4 IN OUT NOCOPY varchar2,
2471                 p_attribute5 IN OUT NOCOPY varchar2,
2472                 p_attribute6 IN OUT NOCOPY varchar2,
2473                 p_attribute7 IN OUT NOCOPY varchar2,
2474                 p_attribute8 IN OUT NOCOPY varchar2,
2475                 p_attribute9 IN OUT NOCOPY varchar2,
2476                 p_attribute10 IN OUT NOCOPY varchar2,
2477                 p_attribute11 IN OUT NOCOPY varchar2,
2478                 p_attribute12 IN OUT NOCOPY varchar2,
2479                 p_attribute13 IN OUT NOCOPY varchar2,
2480                 p_attribute14 IN OUT NOCOPY varchar2,
2481                 p_attribute15 IN OUT NOCOPY varchar2
2482 
2483 ) IS
2484    flexfield fnd_dflex.dflex_r;
2485    flexinfo  fnd_dflex.dflex_dr;
2486    contexts  fnd_dflex.contexts_dr;
2487    cur_context fnd_dflex.context_r;
2488    i BINARY_INTEGER;
2489    segments  fnd_dflex.segments_dr;
2490 
2491 BEGIN
2492 
2493    x_return_status := NULL;
2494    fnd_dflex.get_flexfield('WIP', 'WIP_FLOW_SCHEDULES', flexfield, flexinfo);
2495 
2496    fnd_dflex.get_contexts(flexfield, contexts);
2497    FOR i IN 1 .. contexts.ncontexts LOOP
2498       IF(contexts.is_enabled(i) and (contexts.is_global(i) or flexinfo.default_context_value = contexts.context_code(i))) THEN
2499          cur_context.flexfield := flexfield;
2500          cur_context.context_code := contexts.context_code(i);
2501          fnd_dflex.get_segments(cur_context,segments,TRUE);
2502          FOR j IN 1 .. segments.nsegments LOOP
2503            IF (segments.application_column_name(j) = 'ATTRIBUTE1') THEN
2504              p_attribute1 := segments.default_value(j);
2505            ELSIF (segments.application_column_name(j) = 'ATTRIBUTE2') THEN
2506              p_attribute2 := segments.default_value(j);
2507            ELSIF (segments.application_column_name(j) = 'ATTRIBUTE3') THEN
2508              p_attribute3 := segments.default_value(j);
2509            ELSIF (segments.application_column_name(j) = 'ATTRIBUTE4') THEN
2510              p_attribute4 := segments.default_value(j);
2511            ELSIF (segments.application_column_name(j) = 'ATTRIBUTE5') THEN
2512              p_attribute5 := segments.default_value(j);
2513            ELSIF (segments.application_column_name(j) = 'ATTRIBUTE6') THEN
2514              p_attribute6 := segments.default_value(j);
2515            ELSIF (segments.application_column_name(j) = 'ATTRIBUTE7') THEN
2516              p_attribute7 := segments.default_value(j);
2517            ELSIF (segments.application_column_name(j) = 'ATTRIBUTE8') THEN
2518              p_attribute8 := segments.default_value(j);
2519            ELSIF (segments.application_column_name(j) = 'ATTRIBUTE9') THEN
2520              p_attribute9 := segments.default_value(j);
2521            ELSIF (segments.application_column_name(j) = 'ATTRIBUTE10') THEN
2522              p_attribute10 := segments.default_value(j);
2523            ELSIF (segments.application_column_name(j) = 'ATTRIBUTE11') THEN
2524              p_attribute11 := segments.default_value(j);
2525            ELSIF (segments.application_column_name(j) = 'ATTRIBUTE12') THEN
2526              p_attribute12 := segments.default_value(j);
2527            ELSIF (segments.application_column_name(j) = 'ATTRIBUTE13') THEN
2528              p_attribute13 := segments.default_value(j);
2529            ELSIF (segments.application_column_name(j) = 'ATTRIBUTE14') THEN
2530              p_attribute14 := segments.default_value(j);
2531            ELSIF (segments.application_column_name(j) = 'ATTRIBUTE15') THEN
2532              p_attribute15 := segments.default_value(j);
2533            END IF;
2534          END LOOP;
2535       END IF;
2536    END LOOP;
2537 
2538 EXCEPTION
2539     WHEN OTHERS THEN
2540 
2541         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2542 
2543 END get_default_dff;
2544 
2545 PROCEDURE Create_Raw_Flow_Schedules
2546 (   x_return_status                 OUT NOCOPY VARCHAR2
2547 ,   x_msg_count                     OUT NOCOPY NUMBER
2548 ,   x_msg_data                      OUT NOCOPY VARCHAR2
2549 ,   x_created_count              IN OUT NOCOPY NUMBER
2550 ,   x_lock_count                 IN OUT NOCOPY NUMBER
2551 ,   p_organization_id               IN  NUMBER
2552 ,   p_line_id                       IN  NUMBER
2553 ,   p_unscheduled_order_type        IN  NUMBER
2554 ,   p_demand_start_date             IN  DATE
2555 ,   p_demand_end_date               IN  DATE
2556 ,   p_schedule_group_id             IN  NUMBER
2557 ,   p_schedule_rule_id              IN  NUMBER
2558 ,   p_rule_user_defined             IN  NUMBER
2559 ,   p_primary_routing               IN  NUMBER  /* Bug 2906442 */
2560     )
2561 IS
2562    l_return_status      varchar2(1);
2563    l_msg_count		NUMBER;
2564    l_msg_data		VARCHAR2(2000);
2565    l_wip_entity_id      NUMBER;
2566    l_wip_entity_id2      NUMBER;
2567    l_valid_demand	BOOLEAN;
2568 
2569 
2570    l_demand_class		VARCHAR2(30) := NULL;
2571    l_demand_source_delivery 	VARCHAR2(30) := NULL;
2572    l_demand_source_header_id	NUMBER := NULL;
2573    l_demand_source_line		VARCHAR2(30) := NULL;
2574    l_demand_source_type		NUMBER := NULL;
2575    l_line_id			NUMBER := NULL;
2576    l_organization_id		NUMBER := NULL;
2577    l_planned_quantity		NUMBER := NULL;
2578    l_primary_item_id		NUMBER := NULL;
2579    l_project_id			NUMBER := NULL;
2580    l_scheduled_completion_date	DATE := NULL;
2581    l_schedule_group_id		NUMBER := NULL;
2582    l_task_id			NUMBER := NULL;
2583    l_schedule_number		VARCHAR2(30) := NULL;
2584    l_scheduled_flag		NUMBER := NULL;
2585    l_end_item_unit_number       VARCHAR2(30) := NULL;
2586    l_replenish_to_order_flag	VARCHAR2(1) := 'N';
2587    l_build_in_wip_flag		VARCHAR2(1) := 'N';
2588 
2589    l_attribute1			VARCHAR2(150);
2590    l_attribute10		VARCHAR2(150);
2591    l_attribute11		VARCHAR2(150);
2592    l_attribute12		VARCHAR2(150);
2593    l_attribute13		VARCHAR2(150);
2594    l_attribute14		VARCHAR2(150);
2595    l_attribute15		VARCHAR2(150);
2596    l_attribute2			VARCHAR2(150);
2597    l_attribute3			VARCHAR2(150);
2598    l_attribute4			VARCHAR2(150);
2599    l_attribute5			VARCHAR2(150);
2600    l_attribute6			VARCHAR2(150);
2601    l_attribute7			VARCHAR2(150);
2602    l_attribute8			VARCHAR2(150);
2603    l_attribute9			VARCHAR2(150);
2604 
2605    l_rowid	VARCHAR2(100);
2606 
2607 /* performance bug 4911906 - split C1 to so/po part */
2608    CURSOR C1_SO IS
2609       SELECT
2610 	row_id,
2611 	demand_class,
2612 	demand_source_delivery,
2613 	demand_source_header_id,
2614 	demand_source_line,
2615 	demand_source_type,
2616 	order_quantity,
2617 	inventory_item_id,
2618 	project_id,
2619 	order_date,
2620 	task_id,
2621 	end_item_unit_number,
2622 	replenish_to_order_flag,
2623 	build_in_wip_flag
2624       FROM
2625       /*mrp_unscheduled_orders_v */
2626   (
2627   SELECT
2628        sl1.rowid row_id,
2629        sl1.ship_from_org_id organization_id,
2630        sl1.inventory_item_id,
2631        inv_salesorder.get_salesorder_for_oeheader(SL1.HEADER_ID) demand_source_header_id,
2632        TO_CHAR(SL1.LINE_ID) demand_source_line,
2633        TO_CHAR(NULL) demand_source_delivery,
2634        2 demand_source_type,
2635        wl.line_id,
2636        sl1.schedule_ship_date order_date,
2637        GREATEST((INV_DECIMALS_PUB.GET_PRIMARY_QUANTITY(SL1.SHIP_FROM_ORG_ID,
2638                                                        SL1.INVENTORY_ITEM_ID,
2639                                                        SL1.ORDER_QUANTITY_UOM,
2640                                                        SL1.ORDERED_QUANTITY) -
2641                 MRP_FLOW_SCHEDULE_UTIL.GET_FLOW_QUANTITY(SL1.LINE_ID,
2642                                                           2,
2643                                                           TO_CHAR(NULL),
2644                                                           MSI1.REPLENISH_TO_ORDER_FLAG) -
2645                 MRP_FLOW_SCHEDULE_UTIL.GET_RESERVATION_QUANTITY(SL1.SHIP_FROM_ORG_ID,
2646                                                                  SL1.INVENTORY_ITEM_ID,
2647                                                                  SL1.LINE_ID,
2648                                                                  MSI1.REPLENISH_TO_ORDER_FLAG)),
2649                 0) order_quantity,
2650        SL1.Project_Id,
2651        SL1.Task_Id,
2652        sl1.demand_class_code demand_class,
2653        sl1.end_item_unit_number,
2654        msi1.replenish_to_order_flag,
2655        msi1.build_in_wip_flag,
2656        MRP_FLOW_SCHEDULE_UTIL.GET_ROUTING_DESIGNATOR(SL1.INVENTORY_ITEM_ID,
2657                                                      SL1.SHIP_FROM_ORG_ID,
2658                                                      WL.LINE_ID) alternate_routing_designator
2659   FROM
2660        OE_ORDER_LINES_ALL SL1,
2661        MTL_SYSTEM_ITEMS_KFV MSI1,
2662        WIP_LINES WL,
2663        (select sl2.line_id,
2664                decode((select 1
2665                         from oe_order_holds_all oh
2666                        where oh.header_id = sl2.header_id
2667                          and rownum = 1
2668                          and oh.released_flag = 'N'),
2669                       null,
2670                       0,
2671                       decode(sl2.ato_line_id,
2672                              null,
2673                              mrp_flow_schedule_util.check_holds(sl2.header_id,
2674                                                                 sl2.line_id,
2675                                                                 'OEOL',
2676                                                                 'LINE_SCHEDULING'),
2677                              mrp_flow_schedule_util.check_holds(sl2.header_id,
2678                                                                 sl2.line_id,
2679                                                                 null,
2680                                                                 null))) hold
2681           from oe_order_lines_all sl2) line_holds,
2682        (select sl2.line_id,
2683                CTO_WIP_WORKFLOW_API_PK.workflow_build_status(sl2.LINE_ID) status
2684           from oe_order_lines_all sl2) line_build
2685  WHERE
2686    line_build.line_id = sl1.line_id
2687    AND 1 = decode(MSI1.REPLENISH_TO_ORDER_FLAG, 'N', 1, line_build.status)
2688    AND MSI1.BUILD_IN_WIP_FLAG = 'Y'
2689    AND MSI1.PICK_COMPONENTS_FLAG = 'N'
2690    AND MSI1.BOM_ITEM_TYPE = 4
2691    AND MSI1.ORGANIZATION_ID = SL1.SHIP_FROM_ORG_ID
2692    AND MSI1.INVENTORY_ITEM_ID = SL1.INVENTORY_ITEM_ID
2693    AND SL1.ORDERED_QUANTITY > 0
2694    AND SL1.VISIBLE_DEMAND_FLAG = 'Y'
2695    AND SL1.OPEN_FLAG = 'Y'
2696    AND SL1.ITEM_TYPE_CODE in ('STANDARD', 'CONFIG', 'INCLUDED', 'OPTION')
2697    AND OE_INSTALL.GET_ACTIVE_PRODUCT = 'ONT'
2698    AND wl.organization_id = sl1.ship_from_org_id
2699    AND wl.line_id in (select line_id
2700                         from bom_operational_routings bor2
2701                        where bor2.assembly_item_id = sl1.inventory_item_id
2702                          and bor2.organization_id = sl1.ship_from_org_id
2703                          and bor2.cfm_routing_flag = 1)
2704    AND SL1.SHIPPED_QUANTITY is NULL
2705    and sl1.line_id = line_holds.line_id
2706    and line_holds.hold = 0
2707    AND NVL(SL1.FULFILLED_FLAG, 'N') <> 'Y'
2708   ) so_orders
2709       WHERE line_id = p_line_id
2710 	AND organization_id = p_organization_id
2711 	AND order_quantity > 0
2712 /*	AND unscheduled_order_option = p_unscheduled_order_type */
2713 	AND order_date >= p_demand_start_date
2714 	AND order_date <= p_demand_end_date
2715         AND ((p_primary_routing = 1                /* Bug 2906442 */
2716               and alternate_routing_designator is null)
2717              or
2718               p_primary_routing = 2 );
2719 
2720 
2721    CURSOR C1_PO IS
2722       SELECT
2723 	row_id,
2724 	demand_class,
2725 	demand_source_delivery,
2726 	demand_source_header_id,
2727 	demand_source_line,
2728 	demand_source_type,
2729 	order_quantity,
2730 	inventory_item_id,
2731 	project_id,
2732 	order_date,
2733 	task_id,
2734 	end_item_unit_number,
2735 	replenish_to_order_flag,
2736 	build_in_wip_flag
2737       FROM
2738   (
2739   SELECT MR1.ROWID row_id,
2740        MR1.ORGANIZATION_ID,
2741        MR1.INVENTORY_ITEM_ID,
2742        mr1.demand_class,
2743        100 demand_source_type,
2744        null DEMAND_SOURCE_HEADER_ID,
2745        TO_CHAR(MR1.TRANSACTION_ID) DEMAND_SOURCE_LINE,
2746        null demand_source_delivery,
2747        WL.LINE_ID,
2748        NVL(MR1.FIRM_DATE, MR1.NEW_SCHEDULE_DATE) order_date,
2749        GREATEST((NVL(MR1.FIRM_QUANTITY, MR1.NEW_ORDER_QUANTITY) -
2750                 MRP_FLOW_SCHEDULE_UTIL.GET_FLOW_QUANTITY(TO_CHAR(MR1.TRANSACTION_ID),
2751                                                           100,
2752                                                           NULL,
2753                                                           NULL)),
2754                 0) order_quantity,
2755        MR1.PROJECT_ID,
2756        MR1.TASK_ID,
2757        MR1.END_ITEM_UNIT_NUMBER,
2758        KFV.REPLENISH_TO_ORDER_FLAG,
2759        KFV.BUILD_IN_WIP_FLAG,
2760        MRP_FLOW_SCHEDULE_UTIL.GET_ROUTING_DESIGNATOR(MR1.INVENTORY_ITEM_ID,
2761                                                      MR1.ORGANIZATION_ID,
2762                                                      WL.LINE_ID) alternate_routing_designator
2763   FROM MTL_SYSTEM_ITEMS_B   KFV,
2764        MRP_SYSTEM_ITEMS     RSI1,
2765        MRP_PLANS            MP1,
2766        MRP_RECOMMENDATIONS  MR1,
2767        WIP_LINES            WL
2768  WHERE MP1.PLAN_COMPLETION_DATE IS NOT NULL
2769    AND MP1.DATA_COMPLETION_DATE IS NOT NULL
2770    AND MP1.COMPILE_DESIGNATOR = MR1.COMPILE_DESIGNATOR
2771    AND (MP1.ORGANIZATION_ID = MR1.ORGANIZATION_ID OR
2772        (MP1.ORGANIZATION_ID IN
2773        (SELECT ORGANIZATION_ID
2774             FROM MRP_PLAN_ORGANIZATIONS
2775            WHERE COMPILE_DESIGNATOR = MR1.COMPILE_DESIGNATOR
2776              AND PLANNED_ORGANIZATION = MR1.ORGANIZATION_ID)))
2777    AND MR1.ORGANIZATION_ID = MR1.SOURCE_ORGANIZATION_ID
2778    AND KFV.INVENTORY_ITEM_ID = RSI1.INVENTORY_ITEM_ID
2779    AND KFV.ORGANIZATION_ID = RSI1.ORGANIZATION_ID
2780    AND NVL(KFV.RELEASE_TIME_FENCE_CODE, -1) <> 6 /* KANBAN ITEM */
2781    AND MR1.ORDER_TYPE = 5 /* PLANNED ORDER */
2782    AND MR1.ORGANIZATION_ID = RSI1.ORGANIZATION_ID
2783    AND MR1.COMPILE_DESIGNATOR = RSI1.COMPILE_DESIGNATOR
2784    AND MR1.INVENTORY_ITEM_ID = RSI1.INVENTORY_ITEM_ID
2785    AND MR1.COMPILE_DESIGNATOR =
2786        (SELECT DESIGNATOR
2787           FROM MRP_DESIGNATORS_VIEW
2788          WHERE PRODUCTION = 1
2789            AND ORGANIZATION_ID = MP1.ORGANIZATION_ID
2790            AND DESIGNATOR = MR1.COMPILE_DESIGNATOR)
2791    AND RSI1.BUILD_IN_WIP_FLAG = 1 /* YES */
2792    AND RSI1.BOM_ITEM_TYPE = 4
2793    AND (RSI1.IN_SOURCE_PLAN = 2 OR RSI1.IN_SOURCE_PLAN IS NULL)
2794    AND wl.organization_id = MR1.ORGANIZATION_ID
2795    AND wl.line_id in (select line_id
2796                         from bom_operational_routings bor2
2797                        where bor2.assembly_item_id = MR1.INVENTORY_ITEM_ID
2798                          and bor2.organization_id = MR1.ORGANIZATION_ID
2799                          and bor2.cfm_routing_flag = 1)
2800   ) po_orders
2801       WHERE line_id = p_line_id
2802 	AND organization_id = p_organization_id
2803 	AND order_quantity > 0
2804 /*	AND unscheduled_order_option = p_unscheduled_order_type */
2805 	AND order_date >= p_demand_start_date
2806 	AND order_date <= p_demand_end_date
2807         AND ((p_primary_routing = 1                /* Bug 2906442 */
2808               and alternate_routing_designator is null)
2809              or
2810               p_primary_routing = 2 );
2811 
2812    CURSOR C2 IS
2813       SELECT
2814 	wip_entities_s.nextval
2815       FROM dual;
2816 
2817 BEGIN
2818 
2819    x_created_count := 0;
2820    x_lock_count := 0;
2821    l_return_status := FND_API.G_RET_STS_SUCCESS;
2822 
2823 
2824    l_line_id			:= p_LINE_ID;
2825    l_organization_id		:= p_ORGANIZATION_ID;
2826    l_schedule_group_id		:= p_SCHEDULE_GROUP_ID;
2827 
2828    -- Set the status to 3 for to be scheduled
2829    l_scheduled_flag		:= 3;
2830 
2831    MRP_WFS_Form_Flow_Schedule.get_default_dff
2832      (
2833       l_return_status,
2834       l_attribute1,
2835       l_attribute2,
2836       l_attribute3,
2837       l_attribute4,
2838       l_attribute5,
2839       l_attribute6,
2840       l_attribute7,
2841       l_attribute8,
2842       l_attribute9,
2843       l_attribute10,
2844       l_attribute11,
2845       l_attribute12,
2846       l_attribute13,
2847       l_attribute14,
2848       l_attribute15);
2849 
2850 /*   OPEN C1; */
2851    if( p_unscheduled_order_type = 1 ) then /* sales order */
2852      OPEN C1_SO;
2853    else
2854      OPEN C1_PO;
2855    end if;
2856 
2857    LOOP
2858 
2859    if( p_unscheduled_order_type = 1 ) then
2860       FETCH C1_SO INTO
2861         l_rowid,
2862         l_demand_class,
2863 	l_demand_source_delivery,
2864 	l_demand_source_header_id,
2865 	l_demand_source_line,
2866 	l_demand_source_type,
2867 	l_planned_quantity,
2868 	l_primary_item_id,
2869 	l_project_id,
2870 	l_scheduled_completion_date,
2871 	l_task_id,
2872         l_end_item_unit_number,
2873 	l_replenish_to_order_flag,
2874 	l_build_in_wip_flag;
2875 
2876       EXIT WHEN C1_SO%NOTFOUND;
2877   else
2878       FETCH C1_PO INTO
2879         l_rowid,
2880         l_demand_class,
2881 	l_demand_source_delivery,
2882 	l_demand_source_header_id,
2883 	l_demand_source_line,
2884 	l_demand_source_type,
2885 	l_planned_quantity,
2886 	l_primary_item_id,
2887 	l_project_id,
2888 	l_scheduled_completion_date,
2889 	l_task_id,
2890         l_end_item_unit_number,
2891 	l_replenish_to_order_flag,
2892 	l_build_in_wip_flag;
2893 
2894       EXIT WHEN C1_PO%NOTFOUND;
2895   end if;
2896 
2897       IF (p_SCHEDULE_RULE_ID <> -1 AND p_RULE_USER_DEFINED = 1) THEN
2898 	 MRP_CUSTOM_LINE_SCHEDULE.Is_Valid_Demand
2899 	   (
2900 	    1.0,
2901 	    p_SCHEDULE_RULE_ID,
2902 	    p_LINE_ID,
2903 	    p_ORGANIZATION_ID,
2904 	    l_demand_source_type,
2905 	    l_demand_source_line,
2906 	    l_valid_demand,
2907 	    l_return_status,
2908 	    l_msg_count,
2909 	    l_msg_data
2910 	   );
2911 
2912 	 -- Check return status
2913 	 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2914 	    x_return_status := l_return_status;
2915 	    x_msg_count := l_msg_count;
2916 	    x_msg_data := l_msg_data;
2917 
2918 	    IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2919 	       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2920 	     ELSE
2921 	       RAISE FND_API.G_EXC_ERROR;
2922 	    END IF;
2923 	 END IF;
2924 
2925       ELSE
2926 	 l_valid_demand := TRUE;
2927       END IF;
2928 
2929       IF l_valid_demand THEN
2930 	 -- Planned orders
2931 	 IF p_unscheduled_order_type = 2 THEN
2932           BEGIN
2933 	     -- Lock the planned order rows so we don't get duplicate
2934 	     -- flow schedules
2935 	     SELECT rowid
2936 	     INTO l_rowid
2937 	     FROM mrp_recommendations
2938 	     WHERE rowid = l_rowid
2939 	     FOR UPDATE of quantity_in_process NOWAIT;
2940 
2941           EXCEPTION
2942 	     WHEN NO_DATA_FOUND THEN
2943 		NULL;
2944 	     WHEN APP_EXCEPTION.RECORD_LOCK_EXCEPTION THEN
2945 		x_lock_count := x_lock_count + 1;
2946           END;
2947 	 END IF;
2948 
2949 	 OPEN C2;
2950 	 FETCH C2 INTO l_wip_entity_id;
2951 	 CLOSE C2;
2952 
2953 	 --l_schedule_number := nvl(substr(FND_PROFILE.value('WIP_JOB_PREFIX'),1,20), 'X')
2954 	 --  || to_char(l_wip_entity_id);
2955 
2956          --Bug 6122344
2957          l_schedule_number := 'FLM-INTERNAL' || to_char(l_wip_entity_id);
2958 
2959 	 MRP_WFS_Form_Flow_Schedule.Create_Flow_Schedule
2960 	   (
2961 	    x_return_status		=> l_return_status,
2962 	    x_msg_count		        => l_msg_count,
2963 	    x_msg_data		        => l_msg_data,
2964 	    p_alternate_bom_designator  => FND_API.G_MISS_CHAR,
2965 	    p_alternate_routing_desig	=> FND_API.G_MISS_CHAR,
2966 	    p_attribute1		=> l_attribute1,
2967 	    p_attribute10		=> l_attribute10,
2968 	    p_attribute11		=> l_attribute11,
2969 	    p_attribute12		=> l_attribute12,
2970 	    p_attribute13		=> l_attribute13,
2971 	    p_attribute14		=> l_attribute14,
2972 	    p_attribute15		=> l_attribute15,
2973 	    p_attribute2		=> l_attribute2,
2974 	    p_attribute3		=> l_attribute3,
2975 	    p_attribute4		=> l_attribute4,
2976 	    p_attribute5		=> l_attribute5,
2977 	    p_attribute6		=> l_attribute6,
2978 	    p_attribute7		=> l_attribute7,
2979 	    p_attribute8		=> l_attribute8,
2980 	    p_attribute9		=> l_attribute9,
2981 	    p_attribute_category	=> FND_API.G_MISS_CHAR,
2982 	    p_bom_revision		=> FND_API.G_MISS_CHAR,
2983 	    p_bom_revision_date	        => FND_API.G_MISS_DATE,
2984 	    p_build_sequence		=> FND_API.G_MISS_NUM,
2985 	    p_class_code		=> FND_API.G_MISS_CHAR,
2986 	   p_completion_locator_id	=> FND_API.G_MISS_NUM,
2987 	   p_completion_subinventory	=> FND_API.G_MISS_CHAR,
2988 	   p_created_by		        => FND_API.G_MISS_NUM,
2989 	   p_creation_date		=> FND_API.G_MISS_DATE,
2990 	   p_date_closed		=> FND_API.G_MISS_DATE,
2991 	   p_demand_class		=> l_demand_class,
2992 	   p_demand_source_delivery	=> l_demand_source_delivery,
2993 	   p_demand_source_header_id	=> l_demand_source_header_id,
2994 	   p_demand_source_line	        => l_demand_source_line,
2995 	   p_demand_source_type	        => l_demand_source_type,
2996 	   p_last_updated_by		=> FND_API.G_MISS_NUM,
2997 	   p_last_update_date		=> FND_API.G_MISS_DATE,
2998 	   p_last_update_login	        => FND_API.G_MISS_NUM,
2999 	   p_line_id			=> l_line_id,
3000 	   p_material_account		=> FND_API.G_MISS_NUM,
3001 	   p_material_overhead_account  => FND_API.G_MISS_NUM,
3002 	   p_material_variance_account  => FND_API.G_MISS_NUM,
3003 	   p_mps_net_quantity		=> FND_API.G_MISS_NUM,
3004 	   p_mps_scheduled_comp_date	=> FND_API.G_MISS_DATE,
3005 	   p_organization_id		=> l_organization_id,
3006 	   p_outside_processing_acct	=> FND_API.G_MISS_NUM,
3007 	   p_outside_proc_var_acct	=> FND_API.G_MISS_NUM,
3008 	   p_overhead_account		=> FND_API.G_MISS_NUM,
3009 	   p_overhead_variance_account  => FND_API.G_MISS_NUM,
3010 	   p_planned_quantity		=> l_planned_quantity,
3011 	   p_primary_item_id		=> l_primary_item_id,
3012 	   p_program_application_id	=> FND_API.G_MISS_NUM,
3013 	   p_program_id		        => FND_API.G_MISS_NUM,
3014 	   p_program_update_date	=> FND_API.G_MISS_DATE,
3015 	   p_project_id		        => l_project_id,
3016 	   p_quantity_completed	        => FND_API.G_MISS_NUM,
3017 	   p_request_id		        => USERENV('SESSIONID'), -- bug 4529167
3018 	   p_resource_account		=> FND_API.G_MISS_NUM,
3019 	   p_resource_variance_account  => FND_API.G_MISS_NUM,
3020 	   p_routing_revision		=> FND_API.G_MISS_CHAR,
3021 	   p_routing_revision_date	=> FND_API.G_MISS_DATE,
3022 	   p_scheduled_completion_date  => l_scheduled_completion_date,
3023 	   p_scheduled_flag		=> l_scheduled_flag,
3024 	   p_scheduled_start_date	=> FND_API.G_MISS_DATE,
3025 	   p_schedule_group_id	        => l_schedule_group_id,
3026 	   p_schedule_number		=> l_schedule_number,
3027 	   p_status			=> FND_API.G_MISS_NUM,
3028 	   p_std_cost_adjustment_acct	=> FND_API.G_MISS_NUM,
3029 	   p_task_id			=> l_task_id,
3030 	   p_wip_entity_id		=> l_wip_entity_id,
3031 	   p_end_item_unit_number       => l_end_item_unit_number,
3032 	   p_quantity_scrapped          => FND_API.G_MISS_NUM,
3033 	   x_wip_entity_id		=> l_wip_entity_id2
3034 	   );
3035 
3036 	 -- Check return status
3037 	 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3038 	    x_return_status := l_return_status;
3039 	    x_msg_count := l_msg_count;
3040 	    x_msg_data := l_msg_data;
3041 
3042 	    IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3043 	       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3044 	     ELSE
3045 	       RAISE FND_API.G_EXC_ERROR;
3046 	    END IF;
3047 	 END IF;
3048 
3049 	 --fix bug#3235193
3050          --Description: move the CTO create API call to a centralized place in
3051          --             MRPSLSWB.fmb - pu MRPSLSWB - set_schedule_number()
3052          --             comment CTO create API call below
3053 	 -- For config item linked to SO, call CTO create API to notify workflow
3054  	 /*IF (l_replenish_to_order_flag = 'Y' AND
3055 	     l_build_in_wip_flag = 'Y' AND
3056 	     l_demand_source_line IS NOT NULL AND
3057 	     l_demand_source_type = 2) THEN
3058 	    CTO_WIP_WORKFLOW_API_PK.flow_creation
3059 	      (
3060 	       to_number(l_demand_source_line),
3061 	       l_return_status,
3062 	       l_msg_count,
3063 	       l_msg_data);
3064          END IF;*/
3065          --end of fix bug#3235193
3066 
3067 	 x_created_count := x_created_count + 1;
3068 
3069       END IF;
3070 
3071    END LOOP;
3072 
3073 /*   CLOSE C1; */
3074    if(p_unscheduled_order_type = 1 ) then
3075      CLOSE C1_SO;
3076    else
3077      CLOSE C1_PO;
3078    end if;
3079 
3080    x_return_status := l_return_status;
3081 
3082    --  Get message count and data
3083 
3084    FND_MSG_PUB.Count_And_Get
3085      (   p_count     => x_msg_count
3086 	,p_data      => x_msg_data
3087      );
3088 
3089 EXCEPTION
3090 
3091    WHEN OTHERS THEN
3092 
3093       IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3094         THEN
3095 	 FND_MSG_PUB.Add_Exc_Msg
3096 	   (   G_PKG_NAME
3097 	      ,'Create_Schedules'
3098 	   );
3099       END IF;
3100 
3101       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3102 
3103       --  Get message count and data
3104 
3105       FND_MSG_PUB.Count_And_Get
3106 	(
3107 	   p_count    => x_msg_count
3108 	  ,p_data     => x_msg_data
3109 	);
3110 
3111 END Create_Raw_Flow_Schedules;
3112 
3113 
3114 END MRP_WFS_Form_Flow_Schedule;