DBA Data[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;