[Home] [Help]
PACKAGE BODY: APPS.ENG_ECO_PUB
Source
1 PACKAGE BODY ENG_Eco_PUB AS
2 /* $Header: ENGBECOB.pls 120.0.12000000.2 2007/04/13 13:32:55 ksathupa ship $ */
3
4
5
6 -- Global constant holding the package name
7 -- HISTORY
8 --
9 -- L1: 25-AUG-00 Biao Zhang ECO enhancement
10 -- 12-AUT-02 Masanori Kimizuka Eng Change Enhancement
11 -- Added Does_ChangeLine_Have_Same_ECO
12 -- Added Does_People_Have_Same_ECO
13 -- Added Process_Eco with New Entities
14 -- 11-DEC-02 Bruno Bontempi Taken away people processing
15
16
17 G_PKG_NAME CONSTANT VARCHAR2(30) := 'ENG_Eco_PUB';
18
19
20 -- Function Does_Rev_Have_Same_ECO
21
22 FUNCTION Does_Rev_Have_Same_ECO
23 ( p_eco_revision_tbl IN ENG_ECO_PUB.Eco_Revision_Tbl_Type
24 , p_change_notice IN VARCHAR2
25 , p_organization_code IN VARCHAR2
26 ) RETURN BOOLEAN
27 IS
28 table_index NUMBER;
29 record_count NUMBER;
30 BEGIN
31 record_count := p_eco_revision_tbl.COUNT;
32
33 FOR table_index IN 1..record_count
34 LOOP
35 IF NVL(p_eco_revision_tbl(table_index).ECO_name, FND_API.G_MISS_CHAR) <>
36 NVL(p_change_notice, FND_API.G_MISS_CHAR)
37 OR
38 NVL(p_eco_revision_tbl(table_index).organization_code, FND_API.G_MISS_CHAR) <>
39 NVL(p_organization_code, FND_API.G_MISS_CHAR)
40 THEN
41 RETURN FALSE;
42 END IF;
43 END LOOP;
44
45 RETURN TRUE;
46 END Does_Rev_Have_Same_ECO;
47
48 -- Function Does_Item_Have_Same_ECO
49
50 FUNCTION Does_Item_Have_Same_ECO
51 ( p_revised_item_tbl IN ENG_ECO_PUB.Revised_Item_Tbl_Type
52 , p_change_notice IN VARCHAR2
53 , p_organization_code IN VARCHAR2
54 ) RETURN BOOLEAN
55 IS
56 table_index NUMBER;
57 record_count NUMBER;
58 BEGIN
59 record_count := p_revised_item_tbl.COUNT;
60
61 FOR table_index IN 1..record_count
62 LOOP
63 IF NVL(p_revised_item_tbl(table_index).ECO_name, FND_API.G_MISS_CHAR) <>
64 NVL(p_change_notice, FND_API.G_MISS_CHAR)
65 OR
66 NVL(p_revised_item_tbl(table_index).organization_code, FND_API.G_MISS_CHAR) <>
67 NVL(p_organization_code, FND_API.G_MISS_CHAR)
68 THEN
69 RETURN FALSE;
70 END IF;
71 END LOOP;
72
73 RETURN TRUE;
74 END Does_Item_Have_Same_ECO;
75
76 -- Function Does_Comp_Have_Same_ECO
77
78 FUNCTION Does_Comp_Have_Same_ECO
79 ( p_rev_component_tbl IN BOM_BO_PUB.Rev_Component_Tbl_Type
80 , p_change_notice IN VARCHAR2
81 , p_organization_code IN VARCHAR2
82 ) RETURN BOOLEAN
83 IS
84 table_index NUMBER;
85 record_count NUMBER;
86 BEGIN
87 record_count := p_rev_component_tbl.COUNT;
88
89 FOR table_index IN 1..record_count
90 LOOP
91 IF NVL(p_rev_component_tbl(table_index).ECO_name, FND_API.G_MISS_CHAR) <>
92 NVL(p_change_notice, FND_API.G_MISS_CHAR)
93 OR
94 NVL(p_rev_component_tbl(table_index).organization_code, FND_API.G_MISS_CHAR) <>
95 NVL(p_organization_code, FND_API.G_MISS_CHAR)
96 THEN
97 RETURN FALSE;
98 END IF;
99 END LOOP;
100
101 RETURN TRUE;
102 END Does_Comp_Have_Same_ECO;
103
104 -- Function Does_Desg_Have_Same_ECO
105
106 FUNCTION Does_Desg_Have_Same_ECO
107 ( p_ref_designator_tbl IN BOM_BO_PUB.Ref_Designator_Tbl_Type
108 , p_change_notice IN VARCHAR2
109 , p_organization_code IN VARCHAR2
110 ) RETURN BOOLEAN
111 IS
112 table_index NUMBER;
113 record_count NUMBER;
114 BEGIN
115 record_count := p_ref_designator_tbl.COUNT;
116
117 FOR table_index IN 1..record_count
118 LOOP
119 IF NVL(p_ref_designator_tbl(table_index).ECO_name, FND_API.G_MISS_CHAR) <>
120 NVL(p_change_notice, FND_API.G_MISS_CHAR)
121 OR
122 NVL(p_ref_designator_tbl(table_index).organization_code, FND_API.G_MISS_CHAR) <>
123 NVL(p_organization_code, FND_API.G_MISS_CHAR)
124 THEN
125 RETURN FALSE;
126 END IF;
127 END LOOP;
128
129 RETURN TRUE;
130 END Does_Desg_Have_Same_ECO;
131
132 -- Function Does_SComp_Have_Same_ECO
133
134 FUNCTION Does_SComp_Have_Same_ECO
135 ( p_sub_component_tbl IN BOM_BO_PUB.Sub_Component_Tbl_Type
136 , p_change_notice IN VARCHAR2
137 , p_organization_code IN VARCHAR2
138 ) RETURN BOOLEAN
139 IS
140 table_index NUMBER;
141 record_count NUMBER;
142 BEGIN
143 record_count := p_sub_component_tbl.COUNT;
144
145 FOR table_index IN 1..record_count
146 LOOP
147 IF NVL(p_sub_component_tbl(table_index).ECO_name, FND_API.G_MISS_CHAR) <>
148 NVL(p_change_notice, FND_API.G_MISS_CHAR)
149 OR
150 NVL(p_sub_component_tbl(table_index).organization_code, FND_API.G_MISS_CHAR) <>
151 NVL(p_organization_code, FND_API.G_MISS_CHAR)
152 THEN
153 RETURN FALSE;
154 END IF;
155 END LOOP;
156
157 RETURN TRUE;
158 END Does_SComp_Have_Same_ECO;
159
160 -- L1 The following is added for ECO enhancement
161 /********************************************************************
162 * Function : Does_Op_Have_Same_ECO
163 * Parameters IN : Revised Operation exposed column record
164 * change_notice
165 * Organization Name
166 * Parameters OUT: N/A
167 * Purpose : This function is to check all the records have the * same change_notice and same organization.
168 *********************************************************************/
169 FUNCTION Does_Op_Have_Same_ECO
170 ( p_rev_operation_tbl IN Bom_Rtg_Pub.Rev_Operation_Tbl_Type
171 , p_change_notice IN VARCHAR2
172 , p_organization_code IN VARCHAR2
173 ) RETURN BOOLEAN
174 IS
175 table_index NUMBER;
176 record_count NUMBER;
177 BEGIN
178 record_count := p_rev_operation_tbl.COUNT;
179
180 FOR table_index IN 1..record_count
181 LOOP
182 IF NVL(p_rev_operation_tbl(table_index).ECO_name, FND_API.G_MISS_CHAR) <>
183 NVL(p_change_notice, FND_API.G_MISS_CHAR)
184 OR
185 NVL(p_rev_operation_tbl(table_index).organization_code,
186 FND_API.G_MISS_CHAR) <>
187 NVL(p_organization_code, FND_API.G_MISS_CHAR)
188
189 THEN
190 RETURN FALSE;
191 END IF;
192 END LOOP;
193
194 RETURN TRUE;
195 END Does_Op_Have_Same_ECO;
196
197 /********************************************************************
198 * Function : Does_Res_Have_Same_ECO
199 * Parameters IN : Operation resource exposed column record
200 * change_notice
201 * Organization Name
202 * Parameters OUT: N/A
203 * Purpose : This function is to check all the records have the * same change_notice and same organization.
204 *********************************************************************/
205 FUNCTION Does_Res_Have_Same_ECO
206 ( p_rev_op_resource_tbl IN Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type
207 , p_change_notice IN VARCHAR2
208 , p_organization_code IN VARCHAR2
209 ) RETURN BOOLEAN
210 IS
211 table_index NUMBER;
212 record_count NUMBER;
213 BEGIN
214 record_count := p_rev_op_resource_tbl.COUNT;
215
216 FOR table_index IN 1..record_count
217 LOOP
218 IF NVL(p_rev_op_resource_tbl(table_index).ECO_name,
219 FND_API.G_MISS_CHAR) <>
220 NVL(p_change_notice, FND_API.G_MISS_CHAR)
221 OR
222 NVL(p_rev_op_resource_tbl(table_index).organization_code,
223 FND_API.G_MISS_CHAR) <>
224 NVL(p_organization_code, FND_API.G_MISS_CHAR)
225 THEN
226 RETURN FALSE;
227 END IF;
228 END LOOP;
229
230 RETURN TRUE;
231 END Does_Res_Have_Same_ECO;
232
233 /********************************************************************
234 * Function : Does_SubRes_Have_Same_ECO
235 * Parameters IN : Operation Sub resource exposed column record
236 * change_notice
237 * Organization Name
238 * Parameters OUT: N/A
239 * Purpose : This function is to check all the records have the * same change_notice and same organization.
240 *********************************************************************/
241 FUNCTION Does_SubRes_Have_Same_ECO
242 ( p_rev_sub_resource_tbl IN Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type
243 , p_change_notice IN VARCHAR2
244 , p_organization_code IN VARCHAR2
245 ) RETURN BOOLEAN
246 IS
247 table_index NUMBER;
248 record_count NUMBER;
249 BEGIN
250 record_count := p_rev_sub_resource_tbl .COUNT;
251
252 FOR table_index IN 1..record_count
253 LOOP
254 IF NVL(p_rev_sub_resource_tbl(table_index).ECO_name,
255 FND_API.G_MISS_CHAR) <>
256 NVL(p_change_notice, FND_API.G_MISS_CHAR)
257 OR
258 NVL(p_rev_sub_resource_tbl(table_index).organization_code, FND_API.G_MISS_CHAR) <>
259 NVL(p_organization_code, FND_API.G_MISS_CHAR)
260 THEN
261 RETURN FALSE;
262 END IF;
263 END LOOP;
264
265 RETURN TRUE;
266 END Does_SubRes_Have_Same_ECO;
267
268 --L1 The above is added for ECO enhancement
269
270
271 /********************************************************************
272 * Function : Does_ChangeLine_Have_Same_ECO
273 * Parameters IN : Change Line exposed column record
274 * change_notice
275 * Organization Name
276 * Parameters OUT: N/A
277 * Purpose : This function is to check all the records have the
278 * same change_notice and same organization.
279 *********************************************************************/
280 FUNCTION Does_ChangeLine_Have_Same_ECO
281 ( p_change_line_tbl IN ENG_ECO_PUB.Change_Line_Tbl_Type
282 , p_change_notice IN VARCHAR2
283 , p_organization_code IN VARCHAR2
284 ) RETURN BOOLEAN
285 IS
286 table_index NUMBER;
287 record_count NUMBER;
288 BEGIN
289 record_count := p_change_line_tbl.COUNT;
290
291 FOR table_index IN 1..record_count
292 LOOP
293 IF NVL(p_change_line_tbl(table_index).ECO_name ,FND_API.G_MISS_CHAR) <>
294 NVL(p_change_notice, FND_API.G_MISS_CHAR)
295 OR
296 NVL(p_change_line_tbl(table_index).organization_code, FND_API.G_MISS_CHAR) <>
297 NVL(p_organization_code, FND_API.G_MISS_CHAR)
298 THEN
299 RETURN FALSE;
300 END IF;
301 END LOOP;
302
303 RETURN TRUE;
304 END Does_ChangeLine_Have_Same_ECO ;
305
306
307 -- Function Check_Records_In_Same_ECO
308
309 FUNCTION Check_Records_In_Same_ECO
310 ( p_ECO_rec IN ENG_ECO_PUB.Eco_Rec_Type
311 , p_eco_revision_tbl IN ENG_ECO_PUB.Eco_Revision_Tbl_Type
312 , p_revised_item_tbl IN ENG_ECO_PUB.Revised_Item_Tbl_Type
313 , p_rev_component_tbl IN BOM_BO_PUB.Rev_Component_Tbl_Type
314 , p_ref_designator_tbl IN BOM_BO_PUB.Ref_Designator_Tbl_Type
315 , p_sub_component_tbl IN BOM_BO_PUB.Sub_Component_Tbl_Type
316 , p_rev_operation_tbl IN Bom_Rtg_Pub.Rev_Operation_Tbl_Type
317 , p_rev_op_resource_tbl IN Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type
318 , p_rev_sub_resource_tbl IN Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type
319 , p_change_line_tbl IN ENG_ECO_PUB.Change_Line_Tbl_Type -- Eng Change
320 , x_change_notice OUT NOCOPY VARCHAR2
321 , x_organization_code OUT NOCOPY VARCHAR2
322 ) RETURN BOOLEAN
323 IS
324 record_count NUMBER;
325 l_organization_code VARCHAR2(3);
326 l_change_notice VARCHAR2(10);
327 BEGIN
328 IF (p_ECO_rec.ECO_name IS NOT NULL AND
329 p_ECO_rec.ECO_name <> FND_API.G_MISS_CHAR)
330 OR
331 (p_ECO_rec.organization_code IS NOT NULL AND
332 p_ECO_rec.organization_code <> FND_API.G_MISS_CHAR)
333 THEN
334 l_change_notice := p_ECO_rec.ECO_name;
335 l_organization_code := p_ECO_rec.organization_code;
336 x_change_notice := p_ECO_rec.ECO_name;
337 x_organization_code := p_ECO_rec.organization_code;
338
339 IF NOT Does_Rev_Have_Same_ECO
340 ( p_eco_revision_tbl => p_eco_revision_tbl
341 , p_change_notice => l_change_notice
342 , p_organization_code => l_organization_code
343 )
344 THEN
345 RETURN FALSE;
346 END IF;
347
348
349 -- Eng Change
350 IF NOT Does_ChangeLine_Have_Same_ECO
351 ( p_change_line_tbl => p_change_line_tbl
352 , p_change_notice => l_change_notice
353 , p_organization_code => l_organization_code
354 )
355 THEN
356 RETURN FALSE;
357 END IF;
358
359 IF NOT Does_Item_Have_Same_ECO
360 ( p_revised_item_tbl => p_revised_item_tbl
361 , p_change_notice => l_change_notice
362 , p_organization_code => l_organization_code
363 )
364 THEN
365 RETURN FALSE;
366 END IF;
367
368 IF NOT Does_Comp_Have_Same_ECO
369 ( p_rev_component_tbl => p_rev_component_tbl
370 , p_change_notice => l_change_notice
371 , p_organization_code => l_organization_code
372 )
373 THEN
374 RETURN FALSE;
375 END IF;
376
377 IF NOT Does_Desg_Have_Same_ECO
378 ( p_ref_designator_tbl => p_ref_designator_tbl
379 , p_change_notice => l_change_notice
380 , p_organization_code => l_organization_code
381 )
382 THEN
383 RETURN FALSE;
384 END IF;
385
386 IF NOT Does_SComp_Have_Same_ECO
387 ( p_sub_component_tbl => p_sub_component_tbl
388 , p_change_notice => l_change_notice
389 , p_organization_code => l_organization_code
390 )
391 THEN
392 RETURN FALSE;
393 END IF;
394
395 -- L1: The following is added for ECO enhancement
396 IF NOT Does_Op_Have_Same_ECO
397 ( p_rev_operation_tbl =>p_rev_operation_tbl
398 , p_change_notice => l_change_notice
399 , p_organization_code => l_organization_code
400 )
401 THEN
402 RETURN FALSE;
403 END IF;
404
405 IF NOT Does_Res_Have_Same_ECO
406 ( p_rev_op_resource_tbl => p_rev_op_resource_tbl
407 , p_change_notice => l_change_notice
408 , p_organization_code => l_organization_code
409 )
410 THEN
411 RETURN FALSE;
412 END IF;
413
414 IF NOT Does_SubRes_Have_Same_ECO
415 ( p_rev_sub_resource_tbl => p_rev_sub_resource_tbl
416 , p_change_notice => l_change_notice
417 , p_organization_code => l_organization_code
418 )
419 THEN
420 RETURN FALSE;
421 END IF;
422 -- L1: The above is added for ECO enhancement
423
424
425 RETURN TRUE;
426 END IF;
427
428 record_count := p_eco_revision_tbl.COUNT;
429 IF record_count <> 0
430 THEN
431 l_change_notice := p_eco_revision_tbl(1).ECO_name;
432 l_organization_code := p_eco_revision_tbl(1).organization_code;
433 x_change_notice := p_eco_revision_tbl(1).ECO_name;
434 x_organization_code := p_eco_revision_tbl(1).organization_code;
435
436 IF record_count > 1
437 THEN
438 IF NOT Does_Rev_Have_Same_ECO
439 ( p_eco_revision_tbl => p_eco_revision_tbl
440 , p_change_notice => l_change_notice
441 , p_organization_code => l_organization_code
442 )
443 THEN
444 RETURN FALSE;
445 END IF;
446 END IF;
447
448 IF NOT Does_Item_Have_Same_ECO
449 ( p_revised_item_tbl => p_revised_item_tbl
450 , p_change_notice => l_change_notice
451 , p_organization_code => l_organization_code
452 )
453 THEN
454 RETURN FALSE;
455 END IF;
456
457
458 -- Eng Change
459 IF NOT Does_ChangeLine_Have_Same_ECO
460 ( p_change_line_tbl => p_change_line_tbl
461 , p_change_notice => l_change_notice
462 , p_organization_code => l_organization_code
463 )
464 THEN
465 RETURN FALSE;
466 END IF;
467
468 IF NOT Does_Comp_Have_Same_ECO
469 ( p_rev_component_tbl => p_rev_component_tbl
470 , p_change_notice => l_change_notice
471 , p_organization_code => l_organization_code
472 )
473 THEN
474 RETURN FALSE;
475 END IF;
476
477 IF NOT Does_Desg_Have_Same_ECO
478 ( p_ref_designator_tbl => p_ref_designator_tbl
479 , p_change_notice => l_change_notice
480 , p_organization_code => l_organization_code
481 )
482 THEN
483 RETURN FALSE;
484 END IF;
485
486 IF NOT Does_SComp_Have_Same_ECO
487 ( p_sub_component_tbl => p_sub_component_tbl
488 , p_change_notice => l_change_notice
489 , p_organization_code => l_organization_code
490 )
491 THEN
492 RETURN FALSE;
493 END IF;
494
495 -- L1: The following is added for ECO enhancement
496 IF NOT Does_Op_Have_Same_ECO
497 ( p_rev_operation_tbl =>p_rev_operation_tbl
498 , p_change_notice => l_change_notice
499 , p_organization_code => l_organization_code
500 )
501 THEN
502 RETURN FALSE;
503 END IF;
504
505 IF NOT Does_Res_Have_Same_ECO
506 ( p_rev_op_resource_tbl => p_rev_op_resource_tbl
507 , p_change_notice => l_change_notice
508 , p_organization_code => l_organization_code
509 )
510 THEN
511 RETURN FALSE;
512 END IF;
513
514 IF NOT Does_SubRes_Have_Same_ECO
515 ( p_rev_sub_resource_tbl => p_rev_sub_resource_tbl
516 , p_change_notice => l_change_notice
517 , p_organization_code => l_organization_code
518 )
519 THEN
520 RETURN FALSE;
521 END IF;
522 -- L1: The above is added for ECO enhancement
523
524 RETURN TRUE;
525 END IF;
526
527 record_count := p_change_line_tbl.COUNT;
528 IF record_count <> 0
529 THEN
530 l_change_notice := p_change_line_tbl(1).ECO_name;
531 l_organization_code := p_change_line_tbl(1).organization_code;
532 x_change_notice := p_change_line_tbl(1).ECO_name;
533 x_organization_code := p_change_line_tbl(1).organization_code;
534
535 IF record_count > 1
536 THEN
537 IF NOT Does_ChangeLine_Have_Same_ECO
538 ( p_change_line_tbl => p_change_line_tbl
539 , p_change_notice => l_change_notice
540 , p_organization_code => l_organization_code
541 )
542 THEN
543 RETURN FALSE;
544 END IF;
545 END IF;
546
547 IF NOT Does_Item_Have_Same_ECO
548 ( p_revised_item_tbl => p_revised_item_tbl
549 , p_change_notice => l_change_notice
550 , p_organization_code => l_organization_code
551 )
552 THEN
553 RETURN FALSE;
554 END IF;
555
556 IF NOT Does_Comp_Have_Same_ECO
557 ( p_rev_component_tbl => p_rev_component_tbl
558 , p_change_notice => l_change_notice
559 , p_organization_code => l_organization_code
560 )
561 THEN
562 RETURN FALSE;
563 END IF;
564
565 IF NOT Does_Desg_Have_Same_ECO
566 ( p_ref_designator_tbl => p_ref_designator_tbl
567 , p_change_notice => l_change_notice
568 , p_organization_code => l_organization_code
569 )
570 THEN
571 RETURN FALSE;
572 END IF;
573
574 IF NOT Does_SComp_Have_Same_ECO
575 ( p_sub_component_tbl => p_sub_component_tbl
576 , p_change_notice => l_change_notice
577 , p_organization_code => l_organization_code
578 )
579 THEN
580 RETURN FALSE;
581 END IF;
582
583 IF NOT Does_Op_Have_Same_ECO
584 ( p_rev_operation_tbl =>p_rev_operation_tbl
585 , p_change_notice => l_change_notice
586 , p_organization_code => l_organization_code
587 )
588 THEN
589 RETURN FALSE;
590 END IF;
591
592 IF NOT Does_Res_Have_Same_ECO
593 ( p_rev_op_resource_tbl => p_rev_op_resource_tbl
594 , p_change_notice => l_change_notice
595 , p_organization_code => l_organization_code
596 )
597 THEN
598 RETURN FALSE;
599 END IF;
600
601 IF NOT Does_SubRes_Have_Same_ECO
602 ( p_rev_sub_resource_tbl => p_rev_sub_resource_tbl
603 , p_change_notice => l_change_notice
604 , p_organization_code => l_organization_code
605 )
606 THEN
607 RETURN FALSE;
608 END IF;
609
610 RETURN TRUE;
611 END IF;
612
613
614 record_count := p_revised_item_tbl.COUNT;
615 IF record_count <> 0
616 THEN
617 l_change_notice := p_revised_item_tbl(1).ECO_name;
618 l_organization_code := p_revised_item_tbl(1).organization_code;
619 x_change_notice := p_revised_item_tbl(1).ECO_name;
620 x_organization_code := p_revised_item_tbl(1).organization_code;
621
622 IF record_count > 1
623 THEN
624 IF NOT Does_Item_Have_Same_ECO
625 ( p_revised_item_tbl => p_revised_item_tbl
626 , p_change_notice => l_change_notice
627 , p_organization_code => l_organization_code
628 )
629 THEN
630 RETURN FALSE;
631 END IF;
632 END IF;
633
634 IF NOT Does_Comp_Have_Same_ECO
635 ( p_rev_component_tbl => p_rev_component_tbl
636 , p_change_notice => l_change_notice
637 , p_organization_code => l_organization_code
638 )
639 THEN
640 RETURN FALSE;
641 END IF;
642
643 IF NOT Does_Desg_Have_Same_ECO
644 ( p_ref_designator_tbl => p_ref_designator_tbl
645 , p_change_notice => l_change_notice
646 , p_organization_code => l_organization_code
647 )
648 THEN
649 RETURN FALSE;
650 END IF;
651
652 IF NOT Does_SComp_Have_Same_ECO
653 ( p_sub_component_tbl => p_sub_component_tbl
654 , p_change_notice => l_change_notice
655 , p_organization_code => l_organization_code
656 )
657 THEN
658 RETURN FALSE;
659 END IF;
660
661 -- L1: The following is added for ECO enhancement
662 IF NOT Does_Op_Have_Same_ECO
663 ( p_rev_operation_tbl =>p_rev_operation_tbl
664 , p_change_notice => l_change_notice
665 , p_organization_code => l_organization_code
666 )
667 THEN
668 RETURN FALSE;
669 END IF;
670
671 IF NOT Does_Res_Have_Same_ECO
672 ( p_rev_op_resource_tbl => p_rev_op_resource_tbl
673 , p_change_notice => l_change_notice
674 , p_organization_code => l_organization_code
675 )
676 THEN
677 RETURN FALSE;
678 END IF;
679
680 IF NOT Does_SubRes_Have_Same_ECO
681 ( p_rev_sub_resource_tbl => p_rev_sub_resource_tbl
682 , p_change_notice => l_change_notice
683 , p_organization_code => l_organization_code
684 )
685 THEN
686 RETURN FALSE;
687 END IF;
688 -- L1: The above is added for ECO enhancement
689
690 RETURN TRUE;
691 END IF;
692
693 record_count := p_rev_component_tbl.COUNT;
694 IF record_count <> 0
695 THEN
696 l_change_notice := p_rev_component_tbl(1).ECO_name;
697 l_organization_code := p_rev_component_tbl(1).organization_code;
698 x_change_notice := p_rev_component_tbl(1).ECO_name;
699 x_organization_code := p_rev_component_tbl(1).organization_code;
700
701 IF record_count > 1
702 THEN
703 IF NOT Does_Comp_Have_Same_ECO
704 ( p_rev_component_tbl => p_rev_component_tbl
705 , p_change_notice => l_change_notice
706 , p_organization_code => l_organization_code
707 )
708 THEN
709 RETURN FALSE;
710 END IF;
711 END IF;
712
713 IF NOT Does_Desg_Have_Same_ECO
714 ( p_ref_designator_tbl => p_ref_designator_tbl
715 , p_change_notice => l_change_notice
716 , p_organization_code => l_organization_code
717 )
718 THEN
719 RETURN FALSE;
720 END IF;
721
722 IF NOT Does_SComp_Have_Same_ECO
723 ( p_sub_component_tbl => p_sub_component_tbl
724 , p_change_notice => l_change_notice
725 , p_organization_code => l_organization_code
726 )
727 THEN
728 RETURN FALSE;
729 END IF;
730
731 RETURN TRUE;
732 END IF;
733
734 record_count := p_ref_designator_tbl.COUNT;
735 IF record_count <> 0
736 THEN
737 l_change_notice := p_ref_designator_tbl(1).ECO_name;
738 l_organization_code := p_ref_designator_tbl(1).organization_code;
739 x_change_notice := p_ref_designator_tbl(1).ECO_name;
740 x_organization_code := p_ref_designator_tbl(1).organization_code;
741
742 IF record_count > 1
743 THEN
744 IF NOT Does_Desg_Have_Same_ECO
745 ( p_ref_designator_tbl => p_ref_designator_tbl
746 , p_change_notice => l_change_notice
747 , p_organization_code => l_organization_code
748 )
749 THEN
750 RETURN FALSE;
751 END IF;
752 END IF;
753
754 IF NOT Does_SComp_Have_Same_ECO
755 ( p_sub_component_tbl => p_sub_component_tbl
756 , p_change_notice => l_change_notice
757 , p_organization_code => l_organization_code
758 )
759 THEN
760 RETURN FALSE;
761 END IF;
762
763 RETURN TRUE;
764 END IF;
765
766 IF p_sub_component_tbl.COUNT <> 0
767 THEN
768 l_change_notice := p_sub_component_tbl(1).ECO_name;
769 l_organization_code := p_sub_component_tbl(1).organization_code;
770 x_change_notice := p_sub_component_tbl(1).ECO_name;
771 x_organization_code := p_sub_component_tbl(1).organization_code;
772
773 IF record_count > 1
774 THEN
775 IF NOT Does_SComp_Have_Same_ECO
776 ( p_sub_component_tbl => p_sub_component_tbl
777 , p_change_notice => l_change_notice
778 , p_organization_code => l_organization_code
779 )
780 THEN
781 RETURN FALSE;
782 END IF;
783 END IF;
784
785 RETURN TRUE;
786 END IF;
787
788
789 -- L1: The following is added for ECO enhancement
790 record_count := p_rev_operation_tbl.COUNT;
791 IF record_count <> 0
792 THEN
793 l_change_notice := p_rev_operation_tbl(1).ECO_name;
794 l_organization_code := p_rev_operation_tbl(1).organization_code;
795 x_change_notice := p_rev_operation_tbl(1).ECO_name;
796 x_organization_code := p_rev_operation_tbl(1).organization_code;
797
798 IF record_count > 1
799 THEN
800 IF NOT Does_Op_Have_Same_ECO
801 ( p_rev_operation_tbl =>p_rev_operation_tbl
802 , p_change_notice => l_change_notice
803 , p_organization_code => l_organization_code
804 )
805 THEN
806 RETURN FALSE;
807 END IF;
808 END IF;
809
810 IF NOT Does_Res_Have_Same_ECO
811 ( p_rev_op_resource_tbl => p_rev_op_resource_tbl
812 , p_change_notice => l_change_notice
813 , p_organization_code => l_organization_code
814 )
815 THEN
816 RETURN FALSE;
817 END IF;
818
819 IF NOT Does_SubRes_Have_Same_ECO
820 ( p_rev_sub_resource_tbl => p_rev_sub_resource_tbl
821 , p_change_notice => l_change_notice
822 , p_organization_code => l_organization_code
823 )
824 THEN
825 RETURN FALSE;
826 END IF;
827 END IF;
828
829 record_count := p_rev_op_resource_tbl.COUNT;
830 IF record_count <> 0
831 THEN
832 l_change_notice := p_rev_op_resource_tbl(1).ECO_name;
833 l_organization_code := p_rev_op_resource_tbl(1).organization_code;
834 x_change_notice := p_rev_op_resource_tbl(1).ECO_name;
835 x_organization_code := p_rev_op_resource_tbl(1).organization_code;
836
837 IF record_count > 1
838 THEN
839 IF NOT Does_Res_Have_Same_ECO
840 ( p_rev_op_resource_tbl => p_rev_op_resource_tbl
841 , p_change_notice => l_change_notice
842 , p_organization_code => l_organization_code
843 )
844 THEN
845 RETURN FALSE;
846 END IF;
847 END IF;
848 END IF;
849
850 record_count := p_rev_sub_resource_tbl.COUNT;
851 IF record_count <> 0
852 THEN
853 l_change_notice := p_rev_sub_resource_tbl(1).ECO_name;
854 l_organization_code := p_rev_sub_resource_tbl(1).organization_code;
855 x_change_notice := p_rev_sub_resource_tbl(1).ECO_name;
856 x_organization_code := p_rev_sub_resource_tbl(1).organization_code;
857
858 IF record_count > 1
859 THEN
860 IF NOT Does_SubRes_Have_Same_ECO
861 ( p_rev_sub_resource_tbl => p_rev_sub_resource_tbl
862 , p_change_notice => l_change_notice
863 , p_organization_code => l_organization_code
864 )
865 THEN
866 RETURN FALSE;
867 END IF;
868 END IF;
869 END IF;
870
871
872 -- END IF;
873
874 -- L1: The above is added for ECO enhancement
875 --
876 -- If nothing to process then return TRUE.
877 --
878 RETURN TRUE;
879
880 END Check_Records_In_Same_ECO;
881
882 --Added for bug 5862743
883 -- Whenever a change number is required, lock the row, get the values, update the row
884 -- and commit the transaction. A new transaction is started here as we need to keep the lock
885 -- for as short duration as possible...
886 FUNCTION GET_NEXT_CHANGE_NUMBER(p_type_id NUMBER) RETURN eng_engineering_changes.CHANGE_NOTICE%TYPE
887 IS
888 PRAGMA AUTONOMOUS_TRANSACTION;
889 l_change_number eng_engineering_changes.CHANGE_NOTICE%TYPE := NULL;
890 BEGIN
891 select alpha_prefix||next_available_number
892 INTO l_change_number
893 from eng_auto_number_ecn
894 where change_type_id = p_type_id FOR UPDATE OF next_available_number;
895
896 update eng_auto_number_ecn
897 set next_available_number = next_available_number+1
898 where change_type_id = p_type_id;
899
900 COMMIT;
901
902 RETURN l_change_number;
903 END;
904
905
906
907 /********************************************************************
908 * API Type : Local APIs
909 * API Name : Autogen_Change_Number
910 * Purpose : This API is used to generate the change number based
911 on the auto_numbering method.
912 a) Sequence generated b) Inherited from parent c) User Entered
913 *********************************************************************/
914
915 FUNCTION Autogen_Change_Number
916 ( P_CHANGE_MGMT_TYPE_NAME IN VARCHAR2,
917 P_CHANGE_ORDER_TYPE IN VARCHAR2)
918 RETURN VARCHAR2 IS
919
920 l_type_id NUMBER;
921 l_auto_number_method eng_change_order_types.AUTO_NUMBERING_METHOD%TYPE;
922 l_change_number eng_engineering_changes.CHANGE_NOTICE%TYPE := NULL;
923
924 -- Added for Bug 3542172
925
926 l_change_type_name eng_change_order_types_tl.type_name%TYPE := NULL;
927
928 /* Cursor to fetch the change type name for change order based seeded category */
929 CURSOR c_change_order_cat_type IS
930 SELECT ecotv_in.type_name
931 FROM eng_change_order_types_vl ecotv_in
932 WHERE ecotv_in.change_mgmt_type_code = 'CHANGE_ORDER'
933 AND ecotv_in.type_classification='CATEGORY';
934
935 -- End changes for Bug 3542172
936
937 CURSOR c_change_type_detail(
938 cp_change_type_name IN eng_change_order_types_tl.type_name%TYPE)
939 IS
940 SELECT ecotv1.change_order_type_id change_mgmt_type_id,
941 ecotv2.change_order_type_id,
942 ecotv2.auto_numbering_method,
943 ecotv1.auto_numbering_method change_mgmt_method
944 FROM eng_change_order_types_vl ecotv1, eng_change_order_types_vl ecotv2
945 WHERE ecotv1.type_name = cp_change_type_name
946 AND ecotv1.TYPE_CLASSIFICATION= 'CATEGORY'
947 AND ecotv1.change_mgmt_type_code = ecotv2.change_mgmt_type_code
948 AND ecotv2.type_name = p_CHANGE_ORDER_TYPE
949 AND ecotv2.TYPE_CLASSIFICATION = 'HEADER';
950
951 BEGIN
952 -- Added for Bug 3542172: Defaulting type_name if P_CHANGE_MGMT_TYPE_NAME is null
953
954 l_change_type_name := P_CHANGE_MGMT_TYPE_NAME;
955
956 IF l_change_type_name IS NULL
957 THEN
958 OPEN c_change_order_cat_type;
959 FETCH c_change_order_cat_type INTO l_change_type_name;
960 CLOSE c_change_order_cat_type;
961 END IF;
962
963 -- End changes for Bug 3542172
964
965 FOR CTD IN c_change_type_detail(l_change_type_name)
966 LOOP
967 IF (CTD.auto_numbering_method = 'INH_PAR')
968 THEN
969 l_type_id := CTD.change_mgmt_type_id;
970 l_auto_number_method := CTD.change_mgmt_method;
971 ELSE
972 l_type_id := CTD.change_order_type_id;
973 l_auto_number_method := CTD.auto_numbering_method;
974 END IF;
975
976 IF (l_auto_number_method = 'USR_ENT')
977 THEN
978 return null;
979 ELSIF (l_auto_number_method = 'SEQ_GEN')
980 THEN
981
982 l_change_number := GET_NEXT_CHANGE_NUMBER(l_type_id); --bug 5862743
983
984 /*
985 commented for bug 5862743, moved logic to GET_NEXT_CHANGE_NUMBER
986 select alpha_prefix||next_available_number
987 INTO l_change_number
988 from eng_auto_number_ecn
989 where change_type_id = l_type_id;
990
991 update eng_auto_number_ecn
992 set next_available_number = next_available_number+1
993 where change_type_id = l_type_id;
994 */
995 END IF;
996 END LOOP;
997 return l_change_number;
998 EXCEPTION
999 WHEN OTHERS THEN
1000 IF (c_change_order_cat_type%ISOPEN)
1001 THEN
1002 CLOSE c_change_order_cat_type;
1003 END IF;
1004 return l_change_number;
1005 END Autogen_Change_Number;
1006
1007
1008 /********************************************************************
1009 * API Type : Local APIs
1010 * API Name : Populate_Bo_Tables
1011 * Purpose : This API is used to populate the autogenerated change
1012 number for PLM records if it is null in the BO tables as it is required
1013 field.
1014 *********************************************************************/
1015
1016 PROCEDURE Populate_Bo_Tables
1017 ( p_ECO_rec IN OUT NOCOPY ENG_ECO_PUB.Eco_Rec_Type
1018 , p_eco_revision_tbl IN OUT NOCOPY ENG_ECO_PUB.Eco_Revision_Tbl_Type
1019 , p_revised_item_tbl IN OUT NOCOPY ENG_ECO_PUB.Revised_Item_Tbl_Type
1020 , p_rev_component_tbl IN OUT NOCOPY BOM_BO_PUB.Rev_Component_Tbl_Type
1021 , p_ref_designator_tbl IN OUT NOCOPY BOM_BO_PUB.Ref_Designator_Tbl_Type
1022 , p_sub_component_tbl IN OUT NOCOPY BOM_BO_PUB.Sub_Component_Tbl_Type
1023 , p_rev_operation_tbl IN OUT NOCOPY Bom_Rtg_Pub.Rev_Operation_Tbl_Type
1024 , p_rev_op_resource_tbl IN OUT NOCOPY Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type
1025 , p_rev_sub_resource_tbl IN OUT NOCOPY Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type
1026 , p_change_line_tbl IN OUT NOCOPY ENG_ECO_PUB.Change_Line_Tbl_Type )
1027 IS
1028 record_count NUMBER;
1029 BEGIN
1030 -- Populate ECO revision change number
1031 record_count := p_eco_revision_tbl.COUNT;
1032 FOR table_index IN 1..record_count
1033 LOOP
1034 IF (p_eco_revision_tbl(table_index).ECO_name IS NULL
1035 AND p_eco_revision_tbl(table_index).transaction_type = 'CREATE')
1036 THEN
1037 p_eco_revision_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1038 END IF;
1039 END LOOP;
1040 -- Populate revised item change number
1041 record_count := p_revised_item_tbl.COUNT;
1042 FOR table_index IN 1..record_count
1043 LOOP
1044 IF (p_revised_item_tbl(table_index).ECO_name IS NULL
1045 AND UPPER(p_revised_item_tbl(table_index).transaction_type) = 'CREATE')
1046 THEN
1047 p_revised_item_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1048 END IF;
1049 END LOOP;
1050 -- Populate Revised components change number
1051 record_count := p_rev_component_tbl.COUNT;
1052 FOR table_index IN 1..record_count
1053 LOOP
1054 IF (p_rev_component_tbl(table_index).ECO_name IS NULL
1055 AND UPPER(p_rev_component_tbl(table_index).transaction_type) = 'CREATE')
1056 THEN
1057 p_rev_component_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1058 END IF;
1059 END LOOP;
1060 -- Populate reference designators change number
1061 record_count := p_ref_designator_tbl.COUNT;
1062 FOR table_index IN 1..record_count
1063 LOOP
1064 IF (p_ref_designator_tbl(table_index).ECO_name IS NULL
1065 AND UPPER(p_ref_designator_tbl(table_index).transaction_type) = 'CREATE')
1066 THEN
1067 p_ref_designator_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1068 END IF;
1069 END LOOP;
1070 -- Populate substitute components change number
1071 record_count := p_sub_component_tbl.COUNT;
1072 FOR table_index IN 1..record_count
1073 LOOP
1074 IF (p_sub_component_tbl(table_index).ECO_name IS NULL
1075 AND UPPER(p_sub_component_tbl(table_index).transaction_type) = 'CREATE')
1076 THEN
1077 p_sub_component_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1078 END IF;
1079 END LOOP;
1080 -- populate revised operations change number
1081 record_count := p_rev_operation_tbl.COUNT;
1082 FOR table_index IN 1..record_count
1083 LOOP
1084 IF (p_rev_operation_tbl(table_index).ECO_name IS NULL
1085 AND UPPER(p_rev_operation_tbl(table_index).transaction_type) = 'CREATE')
1086 THEN
1087 p_rev_operation_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1088 END IF;
1089 END LOOP;
1090 -- populate revised operation resources change number
1091 record_count := p_rev_op_resource_tbl.COUNT;
1092 FOR table_index IN 1..record_count
1093 LOOP
1094 IF (p_rev_op_resource_tbl(table_index).ECO_name IS NULL
1095 AND UPPER(p_rev_op_resource_tbl(table_index).transaction_type) = 'CREATE')
1096 THEN
1097 p_rev_op_resource_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1098 END IF;
1099 END LOOP;
1100 -- populate revised resources change number
1101 record_count := p_rev_sub_resource_tbl.COUNT;
1102 FOR table_index IN 1..record_count
1103 LOOP
1104 IF (p_rev_sub_resource_tbl(table_index).ECO_name IS NULL
1105 AND UPPER(p_rev_sub_resource_tbl(table_index).transaction_type) = 'CREATE')
1106 THEN
1107 p_rev_sub_resource_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1108 END IF;
1109 END LOOP;
1110 -- populate change lines' change number
1111 record_count := p_change_line_tbl.COUNT;
1112 FOR table_index IN 1..record_count
1113 LOOP
1114 IF (p_change_line_tbl(table_index).ECO_name IS NULL
1115 AND UPPER(p_change_line_tbl(table_index).transaction_type) = 'CREATE')
1116 THEN
1117 p_change_line_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1118 END IF;
1119 END LOOP;
1120 END Populate_Bo_Tables;
1121
1122
1123 PROCEDURE Process_Eco
1124 ( p_api_version_number IN NUMBER := 1.0
1125 , p_init_msg_list IN BOOLEAN := FALSE
1126 , x_return_status OUT NOCOPY VARCHAR2
1127 , x_msg_count OUT NOCOPY NUMBER
1128 , p_bo_identifier IN VARCHAR2 := 'ECO'
1129 , p_ECO_rec IN Eco_Rec_Type :=
1130 G_MISS_ECO_REC
1131 , p_eco_revision_tbl IN Eco_Revision_Tbl_Type :=
1132 G_MISS_ECO_REVISION_TBL
1133 , p_revised_item_tbl IN Revised_Item_Tbl_Type :=
1134 G_MISS_REVISED_ITEM_TBL
1135 , p_rev_component_tbl IN Bom_Bo_Pub.Rev_Component_Tbl_Type :=
1136 G_MISS_REV_COMPONENT_TBL
1137 , p_ref_designator_tbl IN Bom_Bo_Pub.Ref_Designator_Tbl_Type :=
1138 G_MISS_REF_DESIGNATOR_TBL
1139 , p_sub_component_tbl IN Bom_Bo_Pub.Sub_Component_Tbl_Type :=
1140 G_MISS_SUB_COMPONENT_TBL
1141 , p_rev_operation_tbl IN Bom_Rtg_Pub.Rev_Operation_Tbl_Type:= --L1
1142 Bom_Rtg_Pub.G_MISS_REV_OPERATION_TBL --L1
1143 , p_rev_op_resource_tbl IN Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type:= --L1
1144 Bom_Rtg_Pub.G_MISS_REV_OP_RESOURCE_TBL --L1
1145 , p_rev_sub_resource_tbl IN Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type:= --L1
1146 Bom_Rtg_Pub.G_MISS_REV_SUB_RESOURCE_TBL --L1
1147 , x_ECO_rec IN OUT NOCOPY Eco_Rec_Type
1148 , x_eco_revision_tbl IN OUT NOCOPY Eco_Revision_Tbl_Type
1149 , x_revised_item_tbl IN OUT NOCOPY Revised_Item_Tbl_Type
1150 , x_rev_component_tbl IN OUT NOCOPY Bom_Bo_Pub.Rev_Component_Tbl_Type
1151 , x_ref_designator_tbl IN OUT NOCOPY Bom_Bo_Pub.Ref_Designator_Tbl_Type
1152 , x_sub_component_tbl IN OUT NOCOPY Bom_Bo_Pub.Sub_Component_Tbl_Type
1153 , x_rev_operation_tbl IN OUT NOCOPY Bom_Rtg_Pub.Rev_Operation_Tbl_Type --L1--
1154 , x_rev_op_resource_tbl IN OUT NOCOPY Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type --L1--
1155 , x_rev_sub_resource_tbl IN OUT NOCOPY Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type --L1--
1156 , p_debug IN VARCHAR2 := 'N'
1157 , p_output_dir IN VARCHAR2 := NULL
1158 , p_debug_filename IN VARCHAR2 := 'ECO_BO_Debug.log'
1159 )
1160 IS
1161
1162 l_change_line_tbl Change_Line_Tbl_Type;
1163
1164 BEGIN
1165
1166
1167 -- Call New Eng BO Process Eco for Eng Change Mgmt Enhancement
1168 Process_Eco
1169 ( p_api_version_number => p_api_version_number
1170 , p_init_msg_list => p_init_msg_list
1171 , x_return_status => x_return_status
1172 , x_msg_count => x_msg_count
1173 , p_bo_identifier => p_bo_identifier
1174 , p_ECO_rec => p_ECO_rec
1175 , p_eco_revision_tbl => p_eco_revision_tbl
1176 , p_change_line_tbl => l_change_line_tbl -- Eng Change
1177 , p_revised_item_tbl => p_revised_item_tbl
1178 , p_rev_component_tbl => p_rev_component_tbl
1179 , p_ref_designator_tbl => p_ref_designator_tbl
1180 , p_sub_component_tbl => p_sub_component_tbl
1181 , p_rev_operation_tbl => p_rev_operation_tbl
1182 , p_rev_op_resource_tbl => p_rev_op_resource_tbl
1183 , p_rev_sub_resource_tbl => p_rev_sub_resource_tbl
1184 , x_ECO_rec => x_ECO_rec
1185 , x_eco_revision_tbl => x_eco_revision_tbl
1186 , x_change_line_tbl => l_change_line_tbl -- Eng Change
1187 , x_revised_item_tbl => x_revised_item_tbl
1188 , x_rev_component_tbl => x_rev_component_tbl
1189 , x_ref_designator_tbl => x_ref_designator_tbl
1190 , x_sub_component_tbl => x_sub_component_tbl
1191 , x_rev_operation_tbl => x_rev_operation_tbl
1192 , x_rev_op_resource_tbl => x_rev_op_resource_tbl
1193 , x_rev_sub_resource_tbl => x_rev_sub_resource_tbl
1194 , p_debug => p_debug
1195 , p_output_dir => p_output_dir
1196 , p_debug_filename => p_debug_filename
1197 ) ;
1198
1199 END Process_Eco;
1200
1201
1202 PROCEDURE Process_Eco
1203 ( p_api_version_number IN NUMBER := 1.0
1204 , p_init_msg_list IN BOOLEAN := FALSE
1205 , x_return_status OUT NOCOPY VARCHAR2
1206 , x_msg_count OUT NOCOPY NUMBER
1207 , p_bo_identifier IN VARCHAR2 := 'ECO'
1208 , p_ECO_rec IN Eco_Rec_Type :=
1209 G_MISS_ECO_REC
1210 , p_eco_revision_tbl IN Eco_Revision_Tbl_Type :=
1211 G_MISS_ECO_REVISION_TBL
1212 , p_change_line_tbl IN Change_Line_Tbl_Type := -- Eng Change
1213 G_MISS_CHANGE_LINE_TBL
1214 , p_revised_item_tbl IN Revised_Item_Tbl_Type :=
1215 G_MISS_REVISED_ITEM_TBL
1216 , p_rev_component_tbl IN Bom_Bo_Pub.Rev_Component_Tbl_Type :=
1217 G_MISS_REV_COMPONENT_TBL
1218 , p_ref_designator_tbl IN Bom_Bo_Pub.Ref_Designator_Tbl_Type :=
1219 G_MISS_REF_DESIGNATOR_TBL
1220 , p_sub_component_tbl IN Bom_Bo_Pub.Sub_Component_Tbl_Type :=
1221 G_MISS_SUB_COMPONENT_TBL
1222 , p_rev_operation_tbl IN Bom_Rtg_Pub.Rev_Operation_Tbl_Type:= --L1
1223 Bom_Rtg_Pub.G_MISS_REV_OPERATION_TBL --L1
1224 , p_rev_op_resource_tbl IN Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type:= --L1
1225 Bom_Rtg_Pub.G_MISS_REV_OP_RESOURCE_TBL --L1
1226 , p_rev_sub_resource_tbl IN Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type:= --L1
1227 Bom_Rtg_Pub.G_MISS_REV_SUB_RESOURCE_TBL --L1
1228 , x_ECO_rec IN OUT NOCOPY Eco_Rec_Type
1229 , x_eco_revision_tbl IN OUT NOCOPY Eco_Revision_Tbl_Type
1230 , x_change_line_tbl IN OUT NOCOPY Change_Line_Tbl_Type -- Eng Change
1231 , x_revised_item_tbl IN OUT NOCOPY Revised_Item_Tbl_Type
1232 , x_rev_component_tbl IN OUT NOCOPY Bom_Bo_Pub.Rev_Component_Tbl_Type
1233 , x_ref_designator_tbl IN OUT NOCOPY Bom_Bo_Pub.Ref_Designator_Tbl_Type
1234 , x_sub_component_tbl IN OUT NOCOPY Bom_Bo_Pub.Sub_Component_Tbl_Type
1235 , x_rev_operation_tbl IN OUT NOCOPY Bom_Rtg_Pub.Rev_Operation_Tbl_Type --L1--
1236 , x_rev_op_resource_tbl IN OUT NOCOPY Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type --L1--
1237 , x_rev_sub_resource_tbl IN OUT NOCOPY Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type --L1--
1238 , p_debug IN VARCHAR2 := 'N'
1239 , p_output_dir IN VARCHAR2 := NULL
1240 , p_debug_filename IN VARCHAR2 := 'ECO_BO_Debug.log'
1241 )
1242 IS
1243 G_EXC_SEV_QUIT_OBJECT EXCEPTION;
1244 G_EXC_UNEXP_SKIP_OBJECT EXCEPTION;
1245
1246 l_Mesg_Token_Tbl Error_Handler.Mesg_Token_Tbl_Type;
1247 l_other_message VARCHAR2(50);
1248 l_Token_Tbl Error_Handler.Token_Tbl_Type;
1249 l_err_text VARCHAR2(2000);
1250 l_return_status VARCHAR2(1);
1251
1252 l_change_notice VARCHAR2(10);
1253 l_organization_code VARCHAR2(3);
1254 l_organization_id NUMBER;
1255
1256 l_ECO_rec Eco_Rec_Type;
1257 l_eco_revision_tbl Eco_Revision_Tbl_Type;
1258 l_revised_item_tbl Revised_Item_Tbl_Type;
1259 l_rev_component_tbl BOM_BO_PUB.Rev_Component_Tbl_Type;
1260 l_ref_designator_tbl BOM_BO_PUB.Ref_Designator_Tbl_Type;
1261 l_sub_component_tbl BOM_BO_PUB.Sub_Component_Tbl_Type;
1262 l_rev_operation_tbl Bom_Rtg_Pub.Rev_Operation_Tbl_Type; -- L1--
1263 l_rev_op_resource_tbl Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type; -- L1--
1264 l_rev_sub_resource_tbl Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type; -- L1--
1265
1266 -- Eng Change
1267 l_change_line_tbl Change_Line_Tbl_Type;
1268 l_disable_revision NUMBER; --BUG 3034642
1269
1270 l_p_ECO_rec Eco_Rec_Type;
1271 l_p_eco_revision_tbl Eco_Revision_Tbl_Type;
1272 l_p_revised_item_tbl Revised_Item_Tbl_Type;
1273 l_p_rev_component_tbl BOM_BO_PUB.Rev_Component_Tbl_Type;
1274 l_p_ref_designator_tbl BOM_BO_PUB.Ref_Designator_Tbl_Type;
1275 l_p_sub_component_tbl BOM_BO_PUB.Sub_Component_Tbl_Type;
1276 l_p_rev_operation_tbl Bom_Rtg_Pub.Rev_Operation_Tbl_Type; -- L1--
1277 l_p_rev_op_resource_tbl Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type; -- L1--
1278 l_p_rev_sub_resource_tbl Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type; -- L1--
1279 l_p_change_line_tbl Change_Line_Tbl_Type;
1280
1281 BEGIN
1282 x_return_status := FND_API.G_RET_STS_SUCCESS;
1283
1284 l_p_ECO_rec := p_eco_rec;
1285 l_p_eco_revision_tbl := p_eco_revision_tbl;
1286 l_p_revised_item_tbl := p_revised_item_tbl;
1287 l_p_rev_component_tbl := p_rev_component_tbl;
1288 l_p_ref_designator_tbl := p_ref_designator_tbl;
1289 l_p_sub_component_tbl := p_sub_component_tbl;
1290 l_p_rev_operation_tbl := p_rev_operation_tbl;
1291 l_p_rev_op_resource_tbl := p_rev_op_resource_tbl;
1292 l_p_rev_sub_resource_tbl := p_rev_sub_resource_tbl;
1293 l_p_change_line_tbl := p_change_line_tbl;
1294
1295
1296 --dbms_output.enable(1000000);
1297
1298 IF p_debug = 'Y'
1299 THEN
1300 BOM_Globals.Set_Debug(p_debug);
1301 BOM_Rtg_Globals.Set_Debug(p_debug) ; -- Added by MK on 11/08/00
1302
1303 Error_Handler.Open_Debug_Session
1304 ( p_debug_filename => p_debug_filename
1305 , p_output_dir => p_output_dir
1306 , x_return_status => l_return_status
1307 , p_mesg_token_tbl => l_mesg_token_tbl
1308 , x_mesg_token_tbl => l_mesg_token_tbl
1309 );
1310
1311 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
1312 THEN
1313 BOM_Globals.Set_Debug('N');
1314 BOM_Rtg_Globals.Set_Debug('N'); -- Added by MK on 11/08/00
1315 END IF;
1316 END IF;
1317 --
1318 -- Set Business Object Idenfier in the System Information record.
1319 --
1320 Eng_Globals.Set_Bo_Identifier(p_bo_identifier => p_bo_identifier);
1321
1322 IF p_init_msg_list
1323 THEN
1324 Error_Handler.Initialize;
1325 END IF;
1326
1327
1328 -- Bug 3357450
1329 -- For PLM changes , if change_notice is null then generate the number using auto_numbering_methos set for the type.
1330 IF (NVL (l_p_ECO_rec.plm_or_erp_change, 'PLM') = 'PLM'
1331 AND l_p_ECO_rec.Eco_Name IS NULL
1332 AND UPPER(l_p_ECO_rec.transaction_type) = 'CREATE')
1333 THEN
1334 --Generate the change_notice
1335 l_p_ECO_rec.Eco_Name := Autogen_Change_Number(l_p_ECO_rec.Change_Management_Type, l_p_ECO_rec.Change_Type_Code);
1336 --For PLM change_name is mandatory
1337 IF (l_p_ECO_rec.Change_Name IS NULL OR l_p_ECO_rec.change_name = FND_API.G_MISS_CHAR)
1338 THEN
1339 l_p_ECO_rec.Change_Name := l_p_ECO_rec.Eco_Name;
1340 END IF;
1341 -- Populate the other BO tables if eco_name is not null
1342 IF (l_p_ECO_rec.Eco_Name IS NOT NULL)
1343 THEN
1344 Populate_Bo_tables
1345 ( p_ECO_rec => l_p_ECO_rec
1346 , p_eco_revision_tbl => l_p_eco_revision_tbl
1347 , p_revised_item_tbl => l_p_revised_item_tbl
1348 , p_rev_component_tbl => l_p_rev_component_tbl
1349 , p_ref_designator_tbl => l_p_ref_designator_tbl
1350 , p_sub_component_tbl => l_p_sub_component_tbl
1351 , p_rev_operation_tbl => l_p_rev_operation_tbl -- L1--
1352 , p_rev_op_resource_tbl => l_p_rev_op_resource_tbl -- L1--
1353 , p_rev_sub_resource_tbl => l_p_rev_sub_resource_tbl -- L1--
1354 , p_change_line_tbl => l_p_change_line_tbl -- Eng Change
1355 );
1356 END IF;
1357 END IF;
1358 -- End Changes for bug 3357450
1359
1360
1361 IF NOT Check_Records_In_Same_ECO
1362 ( p_ECO_rec => l_p_ECO_rec
1363 , p_eco_revision_tbl => l_p_eco_revision_tbl
1364 , p_revised_item_tbl => l_p_revised_item_tbl
1365 , p_rev_component_tbl => l_p_rev_component_tbl
1366 , p_ref_designator_tbl => l_p_ref_designator_tbl
1367 , p_sub_component_tbl => l_p_sub_component_tbl
1368 , p_rev_operation_tbl => l_p_rev_operation_tbl -- L1--
1369 , p_rev_op_resource_tbl => l_p_rev_op_resource_tbl -- L1--
1370 , p_rev_sub_resource_tbl=> l_p_rev_sub_resource_tbl -- L1--
1371 , p_change_line_tbl => l_p_change_line_tbl -- Eng Change
1372 , x_change_notice => l_change_notice
1373 , x_organization_code => l_organization_code
1374 )
1375 THEN
1376 l_other_message := 'ENG_MUST_BE_IN_SAME_ECO';
1377 RAISE G_EXC_SEV_QUIT_OBJECT;
1378 END IF;
1379
1380 IF (l_change_notice IS NULL OR
1381 l_change_notice = FND_API.G_MISS_CHAR)
1382 OR
1383 (l_organization_code IS NULL OR
1384 l_organization_code = FND_API.G_MISS_CHAR)
1385 THEN
1386 l_other_message := 'ENG_CHG_NOT_ORG_MISSING';
1387 RAISE G_EXC_SEV_QUIT_OBJECT;
1388 END IF;
1389
1390 IF Bom_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('organization_code: ' || l_organization_code); END IF;
1391 l_organization_id :=
1392 ENG_Val_To_Id.Organization
1393 ( p_organization => l_organization_code
1394 , x_err_text => l_err_text
1395 );
1396
1397 IF Bom_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('organization_id: ' || to_char(l_organization_id)); END IF;
1398 IF l_organization_id IS NULL
1399 THEN
1400 l_other_message := 'ENG_ORG_INVALID';
1401 l_token_tbl(1).token_name := 'ORG_CODE';
1402 l_token_tbl(1).token_value := l_organization_code;
1403 RAISE G_EXC_SEV_QUIT_OBJECT;
1404
1405 ELSIF l_organization_id = FND_API.G_MISS_NUM
1406 THEN
1407 l_other_message := 'ENG_UNEXP_ORG_INVALID';
1408 RAISE G_EXC_UNEXP_SKIP_OBJECT;
1409 END IF;
1410
1411 -- Now using the set functions. Changed by RC 06/23/99
1412 -- ENG_GLOBALS.system_information.org_id := l_organization_id;
1413 --
1414 Eng_Globals.Set_Org_Id( p_org_id => l_organization_id);
1415
1416
1417 --------------------------------------
1418 -- Call Private API
1419 --------------------------------------
1420 ENG_ECO_PVT.Process_Eco
1421 ( p_api_version_number => p_api_version_number
1422 , x_return_status => l_return_status
1423 , x_msg_count => x_msg_count
1424 , p_ECO_rec => l_p_ECO_rec
1425 , p_eco_revision_tbl => l_p_eco_revision_tbl
1426 , p_change_line_tbl => l_p_change_line_tbl -- Eng Change
1427 , p_revised_item_tbl => l_p_revised_item_tbl
1428 , p_rev_component_tbl => l_p_rev_component_tbl
1429 , p_ref_designator_tbl => l_p_ref_designator_tbl
1430 , p_sub_component_tbl => l_p_sub_component_tbl
1431 , p_rev_operation_tbl => l_p_rev_operation_tbl --L1
1432 , p_rev_op_resource_tbl => l_p_rev_op_resource_tbl --L1
1433 , p_rev_sub_resource_tbl => l_p_rev_sub_resource_tbl --L1
1434 , x_ECO_rec => x_ECO_rec
1435 , x_eco_revision_tbl => x_eco_revision_tbl
1436 , x_change_line_tbl => x_change_line_tbl -- Eng Change
1437 , x_revised_item_tbl => x_revised_item_tbl
1438 , x_rev_component_tbl => x_rev_component_tbl
1439 , x_ref_designator_tbl => x_ref_designator_tbl
1440 , x_sub_component_tbl => x_sub_component_tbl
1441 , x_rev_operation_tbl => x_rev_operation_tbl --L1
1442 , x_rev_op_resource_tbl => x_rev_op_resource_tbl --L1
1443 , x_rev_sub_resource_tbl => x_rev_sub_resource_tbl --L1
1444 , x_disable_revision => l_disable_revision --BUG 3034642
1445 );
1446
1447 /* Now using the set function. Changed by RC 06/23/99
1448 ENG_GLOBALS.system_information.org_id := NULL;
1449 ENG_GLOBALS.system_information.ECO_Name := NULL;
1450 */
1451
1452 Eng_Globals.Set_Org_Id( p_org_id => NULL);
1453 Eng_Globals.Set_Eco_Name( p_eco_name => NULL);
1454
1455 IF l_return_status <> 'S'
1456 THEN
1457 -- Call Error Handler
1458
1459 l_token_tbl(1).token_name := 'ECO_NAME';
1460 l_token_tbl(1).token_value := l_change_notice;
1461 l_token_tbl(2).token_name := 'ORGANIZATION_CODE';
1462 l_token_tbl(2).token_value := l_organization_code;
1463
1464 Eco_Error_Handler.Log_Error
1465 ( p_error_status => l_return_status
1466 , p_error_scope => Error_Handler.G_SCOPE_ALL
1467 , p_error_level => Error_Handler.G_BO_LEVEL
1468 , p_other_message => 'ENG_ERROR_BUSINESS_OBJECT'
1469 , p_other_status => l_return_status
1470 , p_other_token_tbl => l_token_tbl
1471 , x_eco_rec => l_eco_rec
1472 , x_eco_revision_tbl => l_eco_revision_tbl
1473 , x_change_line_tbl => l_change_line_tbl -- Eng Change
1474 , x_revised_item_tbl => l_revised_item_tbl
1475 , x_rev_component_tbl => l_rev_component_tbl
1476 , x_ref_designator_tbl=> l_ref_designator_tbl
1477 , x_sub_component_tbl => l_sub_component_tbl
1478 , x_rev_operation_tbl => l_rev_operation_tbl --L1
1479 , x_rev_op_resource_tbl => l_rev_op_resource_tbl --L1
1480 , x_rev_sub_resource_tbl => l_rev_sub_resource_tbl --L1
1481 );
1482 END IF;
1483
1484 x_return_status := l_return_status;
1485 x_msg_count := Error_Handler.Get_Message_Count;
1486
1487 IF Bom_Globals.Get_Debug = 'Y'
1488 THEN
1489 Error_Handler.Close_Debug_Session;
1490 END IF;
1491
1492 EXCEPTION
1493 WHEN G_EXC_SEV_QUIT_OBJECT THEN
1494
1495 -- Call Error Handler
1496
1497 Eco_Error_Handler.Log_Error
1498 ( p_eco_rec => p_eco_rec
1499 , p_eco_revision_tbl => p_eco_revision_tbl
1500 , p_change_line_tbl => p_change_line_tbl -- Eng Change
1501 , p_revised_item_tbl => p_revised_item_tbl
1502 , p_rev_component_tbl => p_rev_component_tbl
1503 , p_ref_designator_tbl => p_ref_designator_tbl
1504 , p_sub_component_tbl => p_sub_component_tbl
1505 , p_rev_operation_tbl => p_rev_operation_tbl --L1
1506 , p_rev_op_resource_tbl => p_rev_op_resource_tbl --L1
1507 , p_rev_sub_resource_tbl => p_rev_sub_resource_tbl --L1
1508 , p_error_status => Error_Handler.G_STATUS_ERROR
1509 , p_error_scope => Error_Handler.G_SCOPE_ALL
1510 , p_error_level => Error_Handler.G_BO_LEVEL
1511 , p_other_message => l_other_message
1512 , p_other_status=> Error_Handler.G_STATUS_ERROR
1513 , p_other_token_tbl => l_token_tbl
1514 , x_eco_rec => x_eco_rec
1515 , x_eco_revision_tbl => l_eco_revision_tbl
1516 , x_change_line_tbl => l_change_line_tbl -- Eng Change
1517 , x_revised_item_tbl => l_revised_item_tbl
1518 , x_rev_component_tbl => l_rev_component_tbl
1519 , x_ref_designator_tbl => l_ref_designator_tbl
1520 , x_sub_component_tbl => l_sub_component_tbl
1521 , x_rev_operation_tbl => l_rev_operation_tbl --L1
1522 , x_rev_op_resource_tbl => l_rev_op_resource_tbl --L1
1523 , x_rev_sub_resource_tbl => l_rev_sub_resource_tbl --L1
1524 );
1525
1526 x_return_status := Error_Handler.G_STATUS_ERROR;
1527 x_msg_count := Error_Handler.Get_Message_Count;
1528
1529 IF Bom_Globals.Get_Debug = 'Y'
1530 THEN
1531 Error_Handler.Close_Debug_Session;
1532 END IF;
1533
1534 WHEN G_EXC_UNEXP_SKIP_OBJECT THEN
1535
1536 -- Call Error Handler
1537
1538 Eco_Error_Handler.Log_Error
1539 ( p_eco_rec => p_eco_rec
1540 , p_eco_revision_tbl => p_eco_revision_tbl
1541 , p_change_line_tbl => p_change_line_tbl -- Eng Change
1542 , p_revised_item_tbl => p_revised_item_tbl
1543 , p_rev_component_tbl => p_rev_component_tbl
1544 , p_sub_component_tbl => p_sub_component_tbl
1545 , p_ref_designator_tbl => p_ref_designator_tbl
1546 , p_rev_operation_tbl => p_rev_operation_tbl --L1
1547 , p_rev_op_resource_tbl => p_rev_op_resource_tbl --L1
1548 , p_rev_sub_resource_tbl => p_rev_sub_resource_tbl --L1
1549 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
1550 , p_error_status => Error_Handler.G_STATUS_UNEXPECTED
1551 , p_error_level => Error_Handler.G_BO_LEVEL
1552 , p_other_status => Error_Handler.G_STATUS_NOT_PICKED
1553 , p_other_message => l_other_message
1554 , p_other_token_tbl => l_token_tbl
1555 , x_eco_rec => l_eco_rec
1556 , x_eco_revision_tbl => l_eco_revision_tbl
1557 , x_change_line_tbl => l_change_line_tbl -- Eng Change
1558 , x_revised_item_tbl => l_revised_item_tbl
1559 , x_rev_component_tbl =>l_rev_component_tbl
1560 , x_ref_designator_tbl => l_ref_designator_tbl
1561 , x_sub_component_tbl => l_sub_component_tbl
1562 , x_rev_operation_tbl => l_rev_operation_tbl --L1
1563 , x_rev_op_resource_tbl => l_rev_op_resource_tbl --L1
1564 , x_rev_sub_resource_tbl => l_rev_sub_resource_tbl --L1
1565 );
1566
1567 x_return_status := Error_Handler.G_STATUS_UNEXPECTED;
1568 x_msg_count := Error_Handler.Get_Message_Count;
1569 IF Bom_Globals.Get_Debug = 'Y'
1570 THEN
1571 Error_Handler.Close_Debug_Session;
1572 END IF;
1573
1574
1575 END Process_Eco;
1576
1577 /*
1578 Commented out since not required in this version of the product
1579 By AS 11/11/98
1580
1581 PROCEDURE Lock_Eco
1582 ( p_api_version_number IN NUMBER
1583 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
1584 , x_return_status OUT NOCOPY VARCHAR2
1585 , x_msg_count OUT NOCOPY NUMBER
1586 , x_msg_data OUT NOCOPY VARCHAR2
1587 , p_ECO_rec IN Eco_Rec_Type :=
1588 G_MISS_ECO_REC
1589 , p_eco_revision_tbl IN Eco_Revision_Tbl_Type :=
1590 G_MISS_ECO_REVISION_TBL
1591 , p_revised_item_tbl IN Revised_Item_Tbl_Type :=
1592 G_MISS_REVISED_ITEM_TBL
1593 , p_rev_component_tbl IN Rev_Component_Tbl_Type :=
1594 G_MISS_REV_COMPONENT_TBL
1595 , p_ref_designator_tbl IN Ref_Designator_Tbl_Type :=
1596 G_MISS_REF_DESIGNATOR_TBL
1597 , p_sub_component_tbl IN Sub_Component_Tbl_Type :=
1598 G_MISS_SUB_COMPONENT_TBL
1599 , x_ECO_rec OUT NOCOPY Eco_Rec_Type
1600 , x_eco_revision_tbl OUT NOCOPY Eco_Revision_Tbl_Type
1601 , x_revised_item_tbl OUT NOCOPY Revised_Item_Tbl_Type
1602 , x_rev_component_tbl OUT NOCOPY Rev_Component_Tbl_Type
1603 , x_ref_designator_tbl OUT NOCOPY Ref_Designator_Tbl_Type
1604 , x_sub_component_tbl OUT NOCOPY Sub_Component_Tbl_Type
1605 , x_err_text OUT NOCOPY VARCHAR2
1606 )
1607 IS
1608 BEGIN
1609 NULL;
1610 END Lock_Eco;
1611 */
1612
1613 /*----------------------------------------
1614 -- Location changed to Error Handler
1615
1616 PROCEDURE Add_Error_Token(
1617 p_message_name IN VARCHAR2
1618 , p_message_text IN VARCHAR2
1619 , x_Mesg_Token_tbl OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
1620 , p_Mesg_Token_Tbl IN Error_Handler.Mesg_Token_Tbl_Type
1621 , p_token_tbl IN Error_Handler.Token_Tbl_Type
1622 )
1623 IS
1624 l_Index NUMBER;
1625 l_TableCount NUMBER;
1626 l_Mesg_Token_Tbl Error_Handler.Mesg_Token_Tbl_Type ;
1627 BEGIN
1628 ----------------------------------------------------------------------
1629 -- This procedure can be called from the individual entity validation
1630 -- procedures to fill up the err_token_tbl that will be passed to the
1631 -- Log_Error procedure to create a token substituted and translated
1632 -- list of messages.
1633 -----------------------------------------------------------------------
1634 l_Mesg_Token_Tbl := p_Mesg_Token_Tbl;
1635 l_Index := 0;
1636 l_TableCount := l_Mesg_token_tbl.COUNT;
1637
1638 IF p_token_tbl.COUNT = 0 AND
1639 p_message_name IS NOT NULL
1640 THEN
1641 l_Mesg_token_tbl(l_TableCount + 1).message_name := p_message_name;
1642 ELSIF p_token_tbl.COUNT <> 0 AND
1643 p_message_name IS NOT NULL
1644 THEN
1645 FOR l_Index IN 1..p_token_tbl.COUNT LOOP
1646 l_TableCount := l_TableCount + 1;
1647 l_Mesg_token_tbl(l_TableCount).message_name := p_message_name;
1648 l_Mesg_token_tbl(l_TableCount).token_value
1649 := p_token_tbl(l_Index).token_value;
1650 l_Mesg_token_tbl(l_TableCount).translate
1651 := p_token_tbl(l_Index).translate;
1652 END LOOP;
1653 ELSIF p_message_name IS NULL AND
1654 p_message_text IS NOT NULL THEN
1655 l_Mesg_token_tbl(l_TableCount + 1).message_text := p_message_text;
1656 END IF;
1657
1658 x_Mesg_Token_Tbl := l_Mesg_Token_Tbl;
1659 END;
1660 */
1661
1662 END ENG_Eco_PUB;