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