DBA Data[Home] [Help]

PACKAGE BODY: APPS.ENG_ECO_PUB

Source


1 PACKAGE BODY ENG_Eco_PUB AS
2 /* $Header: ENGBECOB.pls 120.1.12020000.3 2012/07/13 07:33:46 qyou 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 		-- 14148324, add the two column value
899 		, last_updated_by  = FND_GLOBAL.user_id
900 		, last_update_date = sysdate
901 		where change_type_id = p_type_id;
902 
903     COMMIT;
904 
905      RETURN l_change_number;
906 END;
907 
908 
909 
910   /********************************************************************
911   * API Type      : Local APIs
912   * API Name	  : Autogen_Change_Number
913   * Purpose       : This API is used to generate the change number based
914   on the auto_numbering method.
915   a) Sequence generated   b) Inherited from parent  c) User Entered
916   *********************************************************************/
917 
918 FUNCTION Autogen_Change_Number
919 ( P_CHANGE_MGMT_TYPE_NAME	IN VARCHAR2,
920   P_CHANGE_ORDER_TYPE		IN VARCHAR2)
921 RETURN VARCHAR2 IS
922 
923   l_type_id			NUMBER;
924   l_auto_number_method		eng_change_order_types.AUTO_NUMBERING_METHOD%TYPE;
925   l_change_number		eng_engineering_changes.CHANGE_NOTICE%TYPE := NULL;
926 
927   -- Added for Bug 3542172
928 
929   l_change_type_name		eng_change_order_types_tl.type_name%TYPE := NULL;
930 
931   /* Cursor to fetch the change type name for change order based seeded category */
932   CURSOR c_change_order_cat_type IS
933   SELECT ecotv_in.type_name
934   FROM eng_change_order_types_vl ecotv_in
935   WHERE ecotv_in.change_mgmt_type_code = 'CHANGE_ORDER'
936   AND ecotv_in.type_classification='CATEGORY';
937 
938   -- End changes for Bug 3542172
939 
940   CURSOR c_change_type_detail(
941 	cp_change_type_name IN eng_change_order_types_tl.type_name%TYPE)
942   IS
943   SELECT ecotv1.change_order_type_id change_mgmt_type_id,
944 	ecotv2.change_order_type_id,
945 	ecotv2.auto_numbering_method,
946 	ecotv1.auto_numbering_method change_mgmt_method
947   FROM eng_change_order_types_vl  ecotv1, eng_change_order_types_vl ecotv2
948   WHERE ecotv1.type_name  = cp_change_type_name
949   AND ecotv1.TYPE_CLASSIFICATION= 'CATEGORY'
950   AND ecotv1.change_mgmt_type_code = ecotv2.change_mgmt_type_code
951   AND ecotv2.type_name = p_CHANGE_ORDER_TYPE
952   AND ecotv2.TYPE_CLASSIFICATION = 'HEADER';
953 
954 BEGIN
955 	-- Added for Bug 3542172: Defaulting type_name if P_CHANGE_MGMT_TYPE_NAME is null
956 
957 	l_change_type_name := P_CHANGE_MGMT_TYPE_NAME;
958 
959 	IF l_change_type_name IS NULL
960 	THEN
961 		OPEN c_change_order_cat_type;
962 		FETCH c_change_order_cat_type INTO l_change_type_name;
963 		CLOSE c_change_order_cat_type;
964 	END IF;
965 
966 	-- End changes for Bug 3542172
967 
968 	FOR CTD IN c_change_type_detail(l_change_type_name)
969 	LOOP
970 		IF (CTD.auto_numbering_method = 'INH_PAR')
971 		THEN
972 			l_type_id := CTD.change_mgmt_type_id;
973 			l_auto_number_method := CTD.change_mgmt_method;
974 		ELSE
975 			l_type_id := CTD.change_order_type_id;
976 			l_auto_number_method := CTD.auto_numbering_method;
977 		END IF;
978 
979 		IF (l_auto_number_method = 'USR_ENT')
980 		THEN
981 			return null;
982 		ELSIF (l_auto_number_method = 'SEQ_GEN')
983 		THEN
984 
985 			l_change_number := GET_NEXT_CHANGE_NUMBER(l_type_id); --bug 5862743
986 
987 			/*
988 			commented for bug 5862743, moved logic to GET_NEXT_CHANGE_NUMBER
989 			select alpha_prefix||next_available_number
990 			INTO l_change_number
991 			from eng_auto_number_ecn
992 			where change_type_id = l_type_id;
993 
994 			update eng_auto_number_ecn
995 			set next_available_number = next_available_number+1
996 			where change_type_id = l_type_id;
997 			*/
998 		END IF;
999 	END LOOP;
1000 	return l_change_number;
1001 EXCEPTION
1002 WHEN OTHERS THEN
1003 	IF (c_change_order_cat_type%ISOPEN)
1004 	THEN
1005 		CLOSE c_change_order_cat_type;
1006 	END IF;
1007 	return l_change_number;
1008 END Autogen_Change_Number;
1009 
1010 
1011   /********************************************************************
1012   * API Type      : Local APIs
1013   * API Name	  : Populate_Bo_Tables
1014   * Purpose       : This API is used to populate the autogenerated change
1015   number for PLM records if it is null in the BO tables as it is required
1016   field.
1017   *********************************************************************/
1018 
1019 PROCEDURE Populate_Bo_Tables
1020 ( p_ECO_rec                 IN OUT NOCOPY ENG_ECO_PUB.Eco_Rec_Type
1021 , p_eco_revision_tbl        IN OUT NOCOPY ENG_ECO_PUB.Eco_Revision_Tbl_Type
1022 , p_revised_item_tbl        IN OUT NOCOPY ENG_ECO_PUB.Revised_Item_Tbl_Type
1023 , p_rev_component_tbl       IN OUT NOCOPY BOM_BO_PUB.Rev_Component_Tbl_Type
1024 , p_ref_designator_tbl      IN OUT NOCOPY BOM_BO_PUB.Ref_Designator_Tbl_Type
1025 , p_sub_component_tbl       IN OUT NOCOPY BOM_BO_PUB.Sub_Component_Tbl_Type
1026 , p_rev_operation_tbl       IN OUT NOCOPY Bom_Rtg_Pub.Rev_Operation_Tbl_Type
1027 , p_rev_op_resource_tbl     IN OUT NOCOPY Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type
1028 , p_rev_sub_resource_tbl    IN OUT NOCOPY Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type
1029 , p_change_line_tbl         IN OUT NOCOPY ENG_ECO_PUB.Change_Line_Tbl_Type )
1030 IS
1031 record_count	NUMBER;
1032 BEGIN
1033 	-- Populate ECO revision change number
1034 	record_count := p_eco_revision_tbl.COUNT;
1035 	FOR table_index IN 1..record_count
1036 	LOOP
1037 		IF (p_eco_revision_tbl(table_index).ECO_name IS NULL
1038 		    AND p_eco_revision_tbl(table_index).transaction_type = 'CREATE')
1039 		THEN
1040 			p_eco_revision_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1041 		END IF;
1042 	END LOOP;
1043 	-- Populate revised item change number
1044 	record_count := p_revised_item_tbl.COUNT;
1045 	FOR table_index IN 1..record_count
1046 	LOOP
1047 		IF (p_revised_item_tbl(table_index).ECO_name IS NULL
1048 		    AND UPPER(p_revised_item_tbl(table_index).transaction_type) = 'CREATE')
1049 		THEN
1050 			p_revised_item_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1051 		END IF;
1052 	END LOOP;
1053 	-- Populate Revised components change number
1054 	record_count := p_rev_component_tbl.COUNT;
1055 	FOR table_index IN 1..record_count
1056 	LOOP
1057 		IF (p_rev_component_tbl(table_index).ECO_name IS NULL
1058 		    AND UPPER(p_rev_component_tbl(table_index).transaction_type) = 'CREATE')
1059 		THEN
1060 			p_rev_component_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1061 		END IF;
1062 	END LOOP;
1063 	-- Populate reference designators change number
1064 	record_count := p_ref_designator_tbl.COUNT;
1065 	FOR table_index IN 1..record_count
1066 	LOOP
1067 		IF (p_ref_designator_tbl(table_index).ECO_name IS NULL
1068 		    AND UPPER(p_ref_designator_tbl(table_index).transaction_type) = 'CREATE')
1069 		THEN
1070 			p_ref_designator_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1071 		END IF;
1072 	END LOOP;
1073 	-- Populate substitute components change number
1074 	record_count := p_sub_component_tbl.COUNT;
1075 	FOR table_index IN 1..record_count
1076 	LOOP
1077 		IF (p_sub_component_tbl(table_index).ECO_name IS NULL
1078 		    AND UPPER(p_sub_component_tbl(table_index).transaction_type) = 'CREATE')
1079 		THEN
1080 			p_sub_component_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1081 		END IF;
1082 	END LOOP;
1083 	-- populate revised operations change number
1084 	record_count := p_rev_operation_tbl.COUNT;
1085 	FOR table_index IN 1..record_count
1086 	LOOP
1087 		IF (p_rev_operation_tbl(table_index).ECO_name IS NULL
1088 		    AND UPPER(p_rev_operation_tbl(table_index).transaction_type) = 'CREATE')
1089 		THEN
1090 			p_rev_operation_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1091 		END IF;
1092 	END LOOP;
1093 	-- populate revised operation resources change number
1094 	record_count := p_rev_op_resource_tbl.COUNT;
1095 	FOR table_index IN 1..record_count
1096 	LOOP
1097 		IF (p_rev_op_resource_tbl(table_index).ECO_name IS NULL
1098 		    AND UPPER(p_rev_op_resource_tbl(table_index).transaction_type) = 'CREATE')
1099 		THEN
1100 			p_rev_op_resource_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1101 		END IF;
1102 	END LOOP;
1103 	-- populate revised resources change number
1104 	record_count := p_rev_sub_resource_tbl.COUNT;
1105 	FOR table_index IN 1..record_count
1106 	LOOP
1107 		IF (p_rev_sub_resource_tbl(table_index).ECO_name IS NULL
1108 		    AND UPPER(p_rev_sub_resource_tbl(table_index).transaction_type) = 'CREATE')
1109 		THEN
1110 			p_rev_sub_resource_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1111 		END IF;
1112 	END LOOP;
1113 	-- populate change lines' change number
1114 	record_count := p_change_line_tbl.COUNT;
1115 	FOR table_index IN 1..record_count
1116 	LOOP
1117 		IF (p_change_line_tbl(table_index).ECO_name IS NULL
1118 		    AND UPPER(p_change_line_tbl(table_index).transaction_type) = 'CREATE')
1119 		THEN
1120 			p_change_line_tbl(table_index).ECO_name := p_eco_rec.eco_name;
1121 		END IF;
1122 	END LOOP;
1123 END Populate_Bo_Tables;
1124 
1125 
1126 PROCEDURE Process_Eco
1127 (   p_api_version_number        IN  NUMBER  := 1.0
1128 ,   p_init_msg_list             IN  BOOLEAN := FALSE
1129 ,   x_return_status             OUT NOCOPY VARCHAR2
1130 ,   x_msg_count                 OUT NOCOPY NUMBER
1131 ,   p_bo_identifier             IN  VARCHAR2 := 'ECO'
1132 ,   p_ECO_rec                   IN  Eco_Rec_Type :=
1133                                     G_MISS_ECO_REC
1134 ,   p_eco_revision_tbl          IN  Eco_Revision_Tbl_Type :=
1135                                     G_MISS_ECO_REVISION_TBL
1136 ,   p_revised_item_tbl          IN  Revised_Item_Tbl_Type :=
1137                                     G_MISS_REVISED_ITEM_TBL
1138 ,   p_rev_component_tbl         IN  Bom_Bo_Pub.Rev_Component_Tbl_Type :=
1139                                     G_MISS_REV_COMPONENT_TBL
1140 ,   p_ref_designator_tbl        IN  Bom_Bo_Pub.Ref_Designator_Tbl_Type :=
1141                                     G_MISS_REF_DESIGNATOR_TBL
1142 ,   p_sub_component_tbl         IN  Bom_Bo_Pub.Sub_Component_Tbl_Type :=
1143                                     G_MISS_SUB_COMPONENT_TBL
1144 ,   p_rev_operation_tbl         IN  Bom_Rtg_Pub.Rev_Operation_Tbl_Type:=    --L1
1145                                     Bom_Rtg_Pub.G_MISS_REV_OPERATION_TBL    --L1
1146 ,   p_rev_op_resource_tbl       IN  Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type:=  --L1
1147                                     Bom_Rtg_Pub.G_MISS_REV_OP_RESOURCE_TBL  --L1
1148 ,   p_rev_sub_resource_tbl      IN  Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type:= --L1
1149                                     Bom_Rtg_Pub.G_MISS_REV_SUB_RESOURCE_TBL --L1
1150 ,   x_ECO_rec                   IN OUT NOCOPY Eco_Rec_Type
1151 ,   x_eco_revision_tbl          IN OUT NOCOPY Eco_Revision_Tbl_Type
1152 ,   x_revised_item_tbl          IN OUT NOCOPY Revised_Item_Tbl_Type
1153 ,   x_rev_component_tbl         IN OUT NOCOPY Bom_Bo_Pub.Rev_Component_Tbl_Type
1154 ,   x_ref_designator_tbl        IN OUT NOCOPY Bom_Bo_Pub.Ref_Designator_Tbl_Type
1155 ,   x_sub_component_tbl         IN OUT NOCOPY Bom_Bo_Pub.Sub_Component_Tbl_Type
1156 ,   x_rev_operation_tbl         IN OUT NOCOPY Bom_Rtg_Pub.Rev_Operation_Tbl_Type    --L1--
1157 ,   x_rev_op_resource_tbl       IN OUT NOCOPY Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type  --L1--
1158 ,   x_rev_sub_resource_tbl      IN OUT NOCOPY Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type --L1--
1159 ,   p_debug                     IN  VARCHAR2 := 'N'
1160 ,   p_output_dir                IN  VARCHAR2 := NULL
1161 ,   p_debug_filename            IN  VARCHAR2 := 'ECO_BO_Debug.log'
1162 )
1163 IS
1164 
1165 l_change_line_tbl       Change_Line_Tbl_Type;
1166 
1167 BEGIN
1168 
1169 
1170     -- Call New Eng BO Process Eco for Eng Change Mgmt Enhancement
1171     Process_Eco
1172     (   p_api_version_number        => p_api_version_number
1173     ,   p_init_msg_list             => p_init_msg_list
1174     ,   x_return_status             => x_return_status
1175     ,   x_msg_count                 => x_msg_count
1176     ,   p_bo_identifier             => p_bo_identifier
1177     ,   p_ECO_rec                   => p_ECO_rec
1178     ,   p_eco_revision_tbl          => p_eco_revision_tbl
1179     ,   p_change_line_tbl           => l_change_line_tbl -- Eng Change
1180     ,   p_revised_item_tbl          => p_revised_item_tbl
1181     ,   p_rev_component_tbl         => p_rev_component_tbl
1182     ,   p_ref_designator_tbl        => p_ref_designator_tbl
1183     ,   p_sub_component_tbl         => p_sub_component_tbl
1184     ,   p_rev_operation_tbl         => p_rev_operation_tbl
1185     ,   p_rev_op_resource_tbl       => p_rev_op_resource_tbl
1186     ,   p_rev_sub_resource_tbl      => p_rev_sub_resource_tbl
1187     ,   x_ECO_rec                   => x_ECO_rec
1188     ,   x_eco_revision_tbl          => x_eco_revision_tbl
1189     ,   x_change_line_tbl           => l_change_line_tbl  -- Eng Change
1190     ,   x_revised_item_tbl          => x_revised_item_tbl
1191     ,   x_rev_component_tbl         => x_rev_component_tbl
1192     ,   x_ref_designator_tbl        => x_ref_designator_tbl
1193     ,   x_sub_component_tbl         => x_sub_component_tbl
1194     ,   x_rev_operation_tbl         => x_rev_operation_tbl
1195     ,   x_rev_op_resource_tbl       => x_rev_op_resource_tbl
1196     ,   x_rev_sub_resource_tbl      => x_rev_sub_resource_tbl
1197     ,   p_debug                     => p_debug
1198     ,   p_output_dir                => p_output_dir
1199     ,   p_debug_filename            => p_debug_filename
1200     ) ;
1201 
1202 END Process_Eco;
1203 
1204 
1205 PROCEDURE Process_Eco
1206 (   p_api_version_number        IN  NUMBER  := 1.0
1207 ,   p_init_msg_list             IN  BOOLEAN := FALSE
1208 ,   x_return_status             OUT NOCOPY VARCHAR2
1209 ,   x_msg_count                 OUT NOCOPY NUMBER
1210 ,   p_bo_identifier             IN  VARCHAR2 := 'ECO'
1211 ,   p_ECO_rec                   IN  Eco_Rec_Type :=
1212                                     G_MISS_ECO_REC
1213 ,   p_eco_revision_tbl          IN  Eco_Revision_Tbl_Type :=
1214                                     G_MISS_ECO_REVISION_TBL
1215 ,   p_change_line_tbl           IN  Change_Line_Tbl_Type :=   -- Eng Change
1216                                     G_MISS_CHANGE_LINE_TBL
1217 ,   p_revised_item_tbl          IN  Revised_Item_Tbl_Type :=
1218                                     G_MISS_REVISED_ITEM_TBL
1219 ,   p_rev_component_tbl         IN  Bom_Bo_Pub.Rev_Component_Tbl_Type :=
1220                                     G_MISS_REV_COMPONENT_TBL
1221 ,   p_ref_designator_tbl        IN  Bom_Bo_Pub.Ref_Designator_Tbl_Type :=
1222                                     G_MISS_REF_DESIGNATOR_TBL
1223 ,   p_sub_component_tbl         IN  Bom_Bo_Pub.Sub_Component_Tbl_Type :=
1224                                     G_MISS_SUB_COMPONENT_TBL
1225 ,   p_rev_operation_tbl         IN  Bom_Rtg_Pub.Rev_Operation_Tbl_Type:=    --L1
1226                                     Bom_Rtg_Pub.G_MISS_REV_OPERATION_TBL    --L1
1227 ,   p_rev_op_resource_tbl       IN  Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type:=  --L1
1228                                     Bom_Rtg_Pub.G_MISS_REV_OP_RESOURCE_TBL  --L1
1229 ,   p_rev_sub_resource_tbl      IN  Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type:= --L1
1230                                     Bom_Rtg_Pub.G_MISS_REV_SUB_RESOURCE_TBL --L1
1231 ,   x_ECO_rec                   IN OUT NOCOPY Eco_Rec_Type
1232 ,   x_eco_revision_tbl          IN OUT NOCOPY Eco_Revision_Tbl_Type
1233 ,   x_change_line_tbl           IN OUT NOCOPY Change_Line_Tbl_Type           -- Eng Change
1234 ,   x_revised_item_tbl          IN OUT NOCOPY Revised_Item_Tbl_Type
1235 ,   x_rev_component_tbl         IN OUT NOCOPY Bom_Bo_Pub.Rev_Component_Tbl_Type
1236 ,   x_ref_designator_tbl        IN OUT NOCOPY Bom_Bo_Pub.Ref_Designator_Tbl_Type
1237 ,   x_sub_component_tbl         IN OUT NOCOPY Bom_Bo_Pub.Sub_Component_Tbl_Type
1238 ,   x_rev_operation_tbl         IN OUT NOCOPY Bom_Rtg_Pub.Rev_Operation_Tbl_Type    --L1--
1239 ,   x_rev_op_resource_tbl       IN OUT NOCOPY Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type  --L1--
1240 ,   x_rev_sub_resource_tbl      IN OUT NOCOPY Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type --L1--
1241 ,   p_debug                     IN  VARCHAR2 := 'N'
1242 ,   p_output_dir                IN  VARCHAR2 := NULL
1243 ,   p_debug_filename            IN  VARCHAR2 := 'ECO_BO_Debug.log'
1244 )
1245 IS
1246 G_EXC_SEV_QUIT_OBJECT       EXCEPTION;
1247 G_EXC_UNEXP_SKIP_OBJECT     EXCEPTION;
1248 
1249 l_Mesg_Token_Tbl        Error_Handler.Mesg_Token_Tbl_Type;
1250 l_other_message         VARCHAR2(50);
1251 l_Token_Tbl             Error_Handler.Token_Tbl_Type;
1252 l_err_text              VARCHAR2(2000);
1253 l_return_status         VARCHAR2(1);
1254 
1255 l_change_notice         VARCHAR2(10);
1256 l_organization_code     VARCHAR2(3);
1257 l_organization_id       NUMBER;
1258 
1259 l_ECO_rec               Eco_Rec_Type;
1260 l_eco_revision_tbl      Eco_Revision_Tbl_Type;
1261 l_revised_item_tbl      Revised_Item_Tbl_Type;
1262 l_rev_component_tbl     BOM_BO_PUB.Rev_Component_Tbl_Type;
1263 l_ref_designator_tbl    BOM_BO_PUB.Ref_Designator_Tbl_Type;
1264 l_sub_component_tbl     BOM_BO_PUB.Sub_Component_Tbl_Type;
1265 l_rev_operation_tbl     Bom_Rtg_Pub.Rev_Operation_Tbl_Type;     -- L1--
1266 l_rev_op_resource_tbl   Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type;   -- L1--
1267 l_rev_sub_resource_tbl  Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type;  -- L1--
1268 
1269 -- Eng Change
1270 l_change_line_tbl       Change_Line_Tbl_Type;
1271 l_disable_revision       NUMBER; --BUG 3034642
1272 
1273 l_p_ECO_rec               Eco_Rec_Type;
1274 l_p_eco_revision_tbl      Eco_Revision_Tbl_Type;
1275 l_p_revised_item_tbl      Revised_Item_Tbl_Type;
1276 l_p_rev_component_tbl     BOM_BO_PUB.Rev_Component_Tbl_Type;
1277 l_p_ref_designator_tbl    BOM_BO_PUB.Ref_Designator_Tbl_Type;
1278 l_p_sub_component_tbl     BOM_BO_PUB.Sub_Component_Tbl_Type;
1279 l_p_rev_operation_tbl     Bom_Rtg_Pub.Rev_Operation_Tbl_Type;     -- L1--
1280 l_p_rev_op_resource_tbl   Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type;   -- L1--
1281 l_p_rev_sub_resource_tbl  Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type;  -- L1--
1282 l_p_change_line_tbl       Change_Line_Tbl_Type;
1283 
1284 BEGIN
1285     x_return_status := FND_API.G_RET_STS_SUCCESS;
1286 
1287     l_p_ECO_rec		     :=  p_eco_rec;
1288     l_p_eco_revision_tbl     :=  p_eco_revision_tbl;
1289     l_p_revised_item_tbl     :=  p_revised_item_tbl;
1290     l_p_rev_component_tbl    :=  p_rev_component_tbl;
1291     l_p_ref_designator_tbl   :=  p_ref_designator_tbl;
1292     l_p_sub_component_tbl    :=  p_sub_component_tbl;
1293     l_p_rev_operation_tbl    :=  p_rev_operation_tbl;
1294     l_p_rev_op_resource_tbl  :=  p_rev_op_resource_tbl;
1295     l_p_rev_sub_resource_tbl :=  p_rev_sub_resource_tbl;
1296     l_p_change_line_tbl      :=  p_change_line_tbl;
1297 
1298 
1299     --dbms_output.enable(1000000);
1300 
1301     IF p_debug = 'Y'
1302     THEN
1303         BOM_Globals.Set_Debug(p_debug);
1304         BOM_Rtg_Globals.Set_Debug(p_debug) ; -- Added by MK on 11/08/00
1305 
1306         Error_Handler.Open_Debug_Session
1307         (  p_debug_filename     => p_debug_filename
1308          , p_output_dir         => p_output_dir
1309          , x_return_status      => l_return_status
1310          , p_mesg_token_tbl     => l_mesg_token_tbl
1311          , x_mesg_token_tbl     => l_mesg_token_tbl
1312          );
1313 
1314         IF l_return_status <> FND_API.G_RET_STS_SUCCESS
1315         THEN
1316                 BOM_Globals.Set_Debug('N');
1317                 BOM_Rtg_Globals.Set_Debug('N'); -- Added by MK on 11/08/00
1318         END IF;
1319     END IF;
1320     --
1321     -- Set Business Object Idenfier in the System Information record.
1322     --
1323     Eng_Globals.Set_Bo_Identifier(p_bo_identifier       => p_bo_identifier);
1324     Bom_Globals.Set_Bo_Identifier(p_bo_identifier => p_bo_identifier); --bug 13619324
1325 
1326     IF p_init_msg_list
1327     THEN
1328         Error_Handler.Initialize;
1329     END IF;
1330 
1331 
1332     -- Bug 3357450
1333     -- For PLM changes , if change_notice is null then generate the number using auto_numbering_methos set for the type.
1334     IF (NVL (l_p_ECO_rec.plm_or_erp_change, 'PLM') = 'PLM'
1335         AND l_p_ECO_rec.Eco_Name IS NULL
1336 	AND UPPER(l_p_ECO_rec.transaction_type) = 'CREATE')
1337     THEN
1338 	--Generate the change_notice
1339 	l_p_ECO_rec.Eco_Name := Autogen_Change_Number(l_p_ECO_rec.Change_Management_Type, l_p_ECO_rec.Change_Type_Code);
1340 	--For PLM change_name is mandatory
1341 	IF (l_p_ECO_rec.Change_Name IS NULL OR l_p_ECO_rec.change_name = FND_API.G_MISS_CHAR)
1342 	THEN
1343 		l_p_ECO_rec.Change_Name := l_p_ECO_rec.Eco_Name;
1344 	END IF;
1345 	-- Populate the other BO tables if eco_name is not null
1346 	IF (l_p_ECO_rec.Eco_Name IS NOT NULL)
1347 	THEN
1348 	    Populate_Bo_tables
1349             ( p_ECO_rec			=> l_p_ECO_rec
1350             , p_eco_revision_tbl	=> l_p_eco_revision_tbl
1351             , p_revised_item_tbl	=> l_p_revised_item_tbl
1352             , p_rev_component_tbl	=> l_p_rev_component_tbl
1353             , p_ref_designator_tbl	=> l_p_ref_designator_tbl
1354             , p_sub_component_tbl	=> l_p_sub_component_tbl
1355             , p_rev_operation_tbl	=> l_p_rev_operation_tbl      -- L1--
1356             , p_rev_op_resource_tbl	=> l_p_rev_op_resource_tbl    -- L1--
1357             , p_rev_sub_resource_tbl	=> l_p_rev_sub_resource_tbl   -- L1--
1358             , p_change_line_tbl		=> l_p_change_line_tbl        -- Eng Change
1359 	    );
1360 	END IF;
1361     END IF;
1362     -- End Changes for bug 3357450
1363 
1364 
1365     IF NOT Check_Records_In_Same_ECO
1366             ( p_ECO_rec => l_p_ECO_rec
1367             , p_eco_revision_tbl => l_p_eco_revision_tbl
1368             , p_revised_item_tbl => l_p_revised_item_tbl
1369             , p_rev_component_tbl => l_p_rev_component_tbl
1370             , p_ref_designator_tbl => l_p_ref_designator_tbl
1371             , p_sub_component_tbl => l_p_sub_component_tbl
1372             , p_rev_operation_tbl => l_p_rev_operation_tbl        -- L1--
1373             , p_rev_op_resource_tbl => l_p_rev_op_resource_tbl    -- L1--
1374             , p_rev_sub_resource_tbl=> l_p_rev_sub_resource_tbl   -- L1--
1375             , p_change_line_tbl => l_p_change_line_tbl            -- Eng Change
1376             , x_change_notice => l_change_notice
1377             , x_organization_code => l_organization_code
1378             )
1379     THEN
1380         l_other_message := 'ENG_MUST_BE_IN_SAME_ECO';
1381         RAISE G_EXC_SEV_QUIT_OBJECT;
1382     END IF;
1383 
1384     IF (l_change_notice IS NULL OR
1385         l_change_notice = FND_API.G_MISS_CHAR)
1386        OR
1387        (l_organization_code IS NULL OR
1388         l_organization_code = FND_API.G_MISS_CHAR)
1389     THEN
1390         l_other_message := 'ENG_CHG_NOT_ORG_MISSING';
1391         RAISE G_EXC_SEV_QUIT_OBJECT;
1392     END IF;
1393 
1394     IF Bom_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('organization_code: ' || l_organization_code); END IF;
1395         l_organization_id :=
1396         ENG_Val_To_Id.Organization
1397         ( p_organization => l_organization_code
1398         , x_err_text => l_err_text
1399         );
1400 
1401     IF Bom_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('organization_id: ' || to_char(l_organization_id)); END IF;
1402     IF l_organization_id IS NULL
1403     THEN
1404         l_other_message := 'ENG_ORG_INVALID';
1405         l_token_tbl(1).token_name := 'ORG_CODE';
1406         l_token_tbl(1).token_value := l_organization_code;
1407         RAISE G_EXC_SEV_QUIT_OBJECT;
1408 
1409     ELSIF l_organization_id = FND_API.G_MISS_NUM
1410     THEN
1411         l_other_message := 'ENG_UNEXP_ORG_INVALID';
1412         RAISE G_EXC_UNEXP_SKIP_OBJECT;
1413     END IF;
1414 
1415     -- Now using the set functions. Changed by RC 06/23/99
1416     --    ENG_GLOBALS.system_information.org_id := l_organization_id;
1417     --
1418     Eng_Globals.Set_Org_Id( p_org_id    => l_organization_id);
1419 
1420 
1421         --------------------------------------
1422         -- Call Private API
1423         --------------------------------------
1424         ENG_ECO_PVT.Process_Eco
1425         (   p_api_version_number     => p_api_version_number
1426         ,   x_return_status          => l_return_status
1427         ,   x_msg_count              => x_msg_count
1428         ,   p_ECO_rec                => l_p_ECO_rec
1429         ,   p_eco_revision_tbl       => l_p_eco_revision_tbl
1430         ,   p_change_line_tbl        => l_p_change_line_tbl -- Eng Change
1431         ,   p_revised_item_tbl       => l_p_revised_item_tbl
1432         ,   p_rev_component_tbl      => l_p_rev_component_tbl
1433         ,   p_ref_designator_tbl     => l_p_ref_designator_tbl
1434         ,   p_sub_component_tbl      => l_p_sub_component_tbl
1435         ,   p_rev_operation_tbl      => l_p_rev_operation_tbl    --L1
1436         ,   p_rev_op_resource_tbl    => l_p_rev_op_resource_tbl  --L1
1437         ,   p_rev_sub_resource_tbl   => l_p_rev_sub_resource_tbl --L1
1438         ,   x_ECO_rec                => x_ECO_rec
1439         ,   x_eco_revision_tbl       => x_eco_revision_tbl
1440         ,   x_change_line_tbl        => x_change_line_tbl  -- Eng Change
1441         ,   x_revised_item_tbl       => x_revised_item_tbl
1442         ,   x_rev_component_tbl      => x_rev_component_tbl
1443         ,   x_ref_designator_tbl     => x_ref_designator_tbl
1444         ,   x_sub_component_tbl      => x_sub_component_tbl
1445         ,   x_rev_operation_tbl      => x_rev_operation_tbl    --L1
1446         ,   x_rev_op_resource_tbl    => x_rev_op_resource_tbl  --L1
1447         ,   x_rev_sub_resource_tbl   => x_rev_sub_resource_tbl --L1
1448 	,   x_disable_revision       => l_disable_revision  --BUG 3034642
1449         );
1450 
1451         /* Now using the set function. Changed by RC 06/23/99
1452         ENG_GLOBALS.system_information.org_id := NULL;
1453         ENG_GLOBALS.system_information.ECO_Name := NULL;
1454         */
1455 
1456         Eng_Globals.Set_Org_Id( p_org_id        => NULL);
1457         Eng_Globals.Set_Eco_Name( p_eco_name    => NULL);
1458 
1459         IF l_return_status <> 'S'
1460         THEN
1461                 -- Call Error Handler
1462 
1463                 l_token_tbl(1).token_name := 'ECO_NAME';
1464                 l_token_tbl(1).token_value := l_change_notice;
1465                 l_token_tbl(2).token_name := 'ORGANIZATION_CODE';
1466                 l_token_tbl(2).token_value := l_organization_code;
1467 
1468                 Eco_Error_Handler.Log_Error
1469                 ( p_error_status => l_return_status
1470                 , p_error_scope => Error_Handler.G_SCOPE_ALL
1471                 , p_error_level => Error_Handler.G_BO_LEVEL
1472                 , p_other_message => 'ENG_ERROR_BUSINESS_OBJECT'
1473                 , p_other_status => l_return_status
1474                 , p_other_token_tbl => l_token_tbl
1475                 , x_eco_rec => l_eco_rec
1476                 , x_eco_revision_tbl  => l_eco_revision_tbl
1477                 , x_change_line_tbl   => l_change_line_tbl -- Eng Change
1478                 , x_revised_item_tbl  => l_revised_item_tbl
1479                 , x_rev_component_tbl => l_rev_component_tbl
1480                 , x_ref_designator_tbl=> l_ref_designator_tbl
1481                 , x_sub_component_tbl => l_sub_component_tbl
1482                 , x_rev_operation_tbl => l_rev_operation_tbl         --L1
1483                 , x_rev_op_resource_tbl    => l_rev_op_resource_tbl  --L1
1484                 , x_rev_sub_resource_tbl   => l_rev_sub_resource_tbl --L1
1485                 );
1486         END IF;
1487 
1488         x_return_status := l_return_status;
1489         x_msg_count := Error_Handler.Get_Message_Count;
1490 
1491         IF Bom_Globals.Get_Debug = 'Y'
1492         THEN
1493                 Error_Handler.Close_Debug_Session;
1494         END IF;
1495 
1496     EXCEPTION
1497         WHEN G_EXC_SEV_QUIT_OBJECT THEN
1498 
1499         -- Call Error Handler
1500 
1501         Eco_Error_Handler.Log_Error
1502                         ( p_eco_rec => p_eco_rec
1503                         , p_eco_revision_tbl   => p_eco_revision_tbl
1504                         , p_change_line_tbl    => p_change_line_tbl -- Eng Change
1505                         , p_revised_item_tbl   => p_revised_item_tbl
1506                         , p_rev_component_tbl  => p_rev_component_tbl
1507                         , p_ref_designator_tbl => p_ref_designator_tbl
1508                         , p_sub_component_tbl  => p_sub_component_tbl
1509                         , p_rev_operation_tbl  => p_rev_operation_tbl      --L1
1510                         , p_rev_op_resource_tbl  => p_rev_op_resource_tbl  --L1
1511                         , p_rev_sub_resource_tbl => p_rev_sub_resource_tbl --L1
1512                         , p_error_status => Error_Handler.G_STATUS_ERROR
1513                         , p_error_scope  => Error_Handler.G_SCOPE_ALL
1514                         , p_error_level  => Error_Handler.G_BO_LEVEL
1515                         , p_other_message => l_other_message
1516                         , p_other_status=> Error_Handler.G_STATUS_ERROR
1517                         , p_other_token_tbl => l_token_tbl
1518                         , x_eco_rec => x_eco_rec
1519                         , x_eco_revision_tbl   => l_eco_revision_tbl
1520                         , x_change_line_tbl   => l_change_line_tbl -- Eng Change
1521                         , x_revised_item_tbl   => l_revised_item_tbl
1522                         , x_rev_component_tbl  => l_rev_component_tbl
1523                         , x_ref_designator_tbl => l_ref_designator_tbl
1524                         , x_sub_component_tbl  => l_sub_component_tbl
1525                         , x_rev_operation_tbl  => l_rev_operation_tbl      --L1
1526                         , x_rev_op_resource_tbl  => l_rev_op_resource_tbl  --L1
1527                         , x_rev_sub_resource_tbl => l_rev_sub_resource_tbl --L1
1528                 );
1529 
1530         x_return_status := Error_Handler.G_STATUS_ERROR;
1531         x_msg_count := Error_Handler.Get_Message_Count;
1532 
1533         IF Bom_Globals.Get_Debug = 'Y'
1534         THEN
1535                 Error_Handler.Close_Debug_Session;
1536         END IF;
1537 
1538         WHEN G_EXC_UNEXP_SKIP_OBJECT THEN
1539 
1540         -- Call Error Handler
1541 
1542         Eco_Error_Handler.Log_Error
1543                         ( p_eco_rec => p_eco_rec
1544                         , p_eco_revision_tbl => p_eco_revision_tbl
1545                         , p_change_line_tbl    => p_change_line_tbl -- Eng Change
1546                         , p_revised_item_tbl => p_revised_item_tbl
1547                         , p_rev_component_tbl => p_rev_component_tbl
1548                         , p_sub_component_tbl  => p_sub_component_tbl
1549                         , p_ref_designator_tbl => p_ref_designator_tbl
1550                         , p_rev_operation_tbl  => p_rev_operation_tbl      --L1
1551                         , p_rev_op_resource_tbl  => p_rev_op_resource_tbl  --L1
1552                         , p_rev_sub_resource_tbl => p_rev_sub_resource_tbl --L1
1553                         , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
1554                         , p_error_status => Error_Handler.G_STATUS_UNEXPECTED
1555                         , p_error_level => Error_Handler.G_BO_LEVEL
1556                         , p_other_status => Error_Handler.G_STATUS_NOT_PICKED
1557                         , p_other_message => l_other_message
1558                         , p_other_token_tbl => l_token_tbl
1559                         , x_eco_rec => l_eco_rec
1560                         , x_eco_revision_tbl => l_eco_revision_tbl
1561                         , x_change_line_tbl   => l_change_line_tbl -- Eng Change
1562                         , x_revised_item_tbl => l_revised_item_tbl
1563                         , x_rev_component_tbl =>l_rev_component_tbl
1564                         , x_ref_designator_tbl => l_ref_designator_tbl
1565                         , x_sub_component_tbl  => l_sub_component_tbl
1566                         , x_rev_operation_tbl  => l_rev_operation_tbl      --L1
1567                         , x_rev_op_resource_tbl  => l_rev_op_resource_tbl  --L1
1568                         , x_rev_sub_resource_tbl => l_rev_sub_resource_tbl --L1
1569                         );
1570 
1571        x_return_status := Error_Handler.G_STATUS_UNEXPECTED;
1572        x_msg_count := Error_Handler.Get_Message_Count;
1573         IF Bom_Globals.Get_Debug = 'Y'
1574         THEN
1575                 Error_Handler.Close_Debug_Session;
1576         END IF;
1577 
1578 
1579 END Process_Eco;
1580 
1581 /*
1582  Commented out since not required in this version of the product
1583  By AS 11/11/98
1584 
1585 PROCEDURE Lock_Eco
1586 (   p_api_version_number            IN  NUMBER
1587 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
1588 ,   x_return_status                 OUT NOCOPY VARCHAR2
1589 ,   x_msg_count                     OUT NOCOPY NUMBER
1590 ,   x_msg_data                      OUT NOCOPY VARCHAR2
1591 ,   p_ECO_rec                       IN  Eco_Rec_Type :=
1592                                         G_MISS_ECO_REC
1593 ,   p_eco_revision_tbl              IN  Eco_Revision_Tbl_Type :=
1594                                         G_MISS_ECO_REVISION_TBL
1595 ,   p_revised_item_tbl              IN  Revised_Item_Tbl_Type :=
1596                                         G_MISS_REVISED_ITEM_TBL
1597 ,   p_rev_component_tbl             IN  Rev_Component_Tbl_Type :=
1598                                         G_MISS_REV_COMPONENT_TBL
1599 ,   p_ref_designator_tbl            IN  Ref_Designator_Tbl_Type :=
1600                                         G_MISS_REF_DESIGNATOR_TBL
1601 ,   p_sub_component_tbl             IN  Sub_Component_Tbl_Type :=
1602                                         G_MISS_SUB_COMPONENT_TBL
1603 ,   x_ECO_rec                       OUT NOCOPY Eco_Rec_Type
1604 ,   x_eco_revision_tbl              OUT NOCOPY Eco_Revision_Tbl_Type
1605 ,   x_revised_item_tbl              OUT NOCOPY Revised_Item_Tbl_Type
1606 ,   x_rev_component_tbl             OUT NOCOPY Rev_Component_Tbl_Type
1607 ,   x_ref_designator_tbl            OUT NOCOPY Ref_Designator_Tbl_Type
1608 ,   x_sub_component_tbl             OUT NOCOPY Sub_Component_Tbl_Type
1609 ,   x_err_text                      OUT NOCOPY VARCHAR2
1610 )
1611 IS
1612 BEGIN
1613     NULL;
1614 END Lock_Eco;
1615 */
1616 
1617 /*----------------------------------------
1618   -- Location changed to Error Handler
1619 
1620 PROCEDURE Add_Error_Token(
1621                                 p_message_name      IN  VARCHAR2
1622               , p_message_text      IN  VARCHAR2
1623               , x_Mesg_Token_tbl    OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
1624               , p_Mesg_Token_Tbl    IN  Error_Handler.Mesg_Token_Tbl_Type
1625               , p_token_tbl         IN  Error_Handler.Token_Tbl_Type
1626                           )
1627 IS
1628         l_Index         NUMBER;
1629         l_TableCount    NUMBER;
1630         l_Mesg_Token_Tbl Error_Handler.Mesg_Token_Tbl_Type ;
1631 BEGIN
1632         ----------------------------------------------------------------------
1633     -- This procedure can be called from the individual entity validation
1634         -- procedures to fill up the err_token_tbl that will be passed to the
1635         -- Log_Error procedure to create a token substituted and translated
1636         -- list of messages.
1637         -----------------------------------------------------------------------
1638         l_Mesg_Token_Tbl := p_Mesg_Token_Tbl;
1639         l_Index := 0;
1640         l_TableCount := l_Mesg_token_tbl.COUNT;
1641 
1642         IF p_token_tbl.COUNT = 0 AND
1643            p_message_name IS NOT NULL
1644         THEN
1645                 l_Mesg_token_tbl(l_TableCount + 1).message_name := p_message_name;
1646         ELSIF p_token_tbl.COUNT <> 0 AND
1647               p_message_name IS NOT NULL
1648         THEN
1649                 FOR l_Index IN 1..p_token_tbl.COUNT LOOP
1650                         l_TableCount := l_TableCount + 1;
1651                         l_Mesg_token_tbl(l_TableCount).message_name := p_message_name;
1652                         l_Mesg_token_tbl(l_TableCount).token_value
1653                                 := p_token_tbl(l_Index).token_value;
1654                         l_Mesg_token_tbl(l_TableCount).translate
1655                                 := p_token_tbl(l_Index).translate;
1656                 END LOOP;
1657         ELSIF p_message_name IS NULL AND
1658                   p_message_text IS NOT NULL THEN
1659                   l_Mesg_token_tbl(l_TableCount + 1).message_text := p_message_text;
1660         END IF;
1661 
1662         x_Mesg_Token_Tbl := l_Mesg_Token_Tbl;
1663 END;
1664 */
1665 
1666 END ENG_Eco_PUB;