[Home] [Help]
PACKAGE BODY: APPS.IGS_RU_GEN_006
Source
1 PACKAGE BODY IGS_RU_GEN_006 AS
2 /* $Header: IGSRU12B.pls 115.4 2003/10/14 11:05:25 nsinha noship $ */
3
4 FUNCTION Rulp_Val_Desc_Rgi(
5 p_description_number IN NUMBER ,
6 p_description_type IN VARCHAR2 ,
7 p_message_name OUT NOCOPY VARCHAR2 )
8 RETURN VARCHAR2 IS
9 ------------------------------------------------------------------
10 --Created by : nsinha, Oracle India
11 --Date created: 12-Mar-2002
12 --
13 --Purpose: Expand description_number to IGS_RU_DESCRIPTION or group_name
14 -- if invalid set message number and return NULL
15 --
16 --Known limitations/enhancements and/or remarks:
17 --
18 --Change History:
19 --Who When What
20 --nsinha 12-Mar-2002 Bug# 2233951: Moved the function from Igs_ru_gen_004.
21 --
22 -------------------------------------------------------------------
23 v_description igs_ru_description.rule_description%TYPE;
24 BEGIN
25 IF p_description_type = 'RUD'
26 THEN
27 BEGIN
28 SELECT rule_description
29 INTO v_description
30 FROM IGS_RU_DESCRIPTION
31 WHERE sequence_number = p_description_number;
32 EXCEPTION
33 WHEN NO_DATA_FOUND THEN
34 p_message_name := 'IGS_GE_RULE_DESCR_NOT_EXISTS';
35 RETURN NULL;
36 END;
37 ELSIF p_description_type = 'RUG'
38 THEN
39 BEGIN
40 SELECT group_name
41 INTO v_description
42 FROM IGS_RU_GROUP
43 WHERE sequence_number = p_description_number;
44 EXCEPTION
45 WHEN NO_DATA_FOUND THEN
46 p_message_name := 'IGS_GE_RULE_GROUP_NOT_EXISTS';
47 RETURN NULL;
48 END;
49 ELSE
50 /*
51 invalid type
52 */
53 p_message_name := 'IGS_GE_INVALID_VALUE';
54 RETURN NULL;
55 END IF;
56 RETURN v_description;
57 END Rulp_Val_Desc_Rgi;
58
59 PROCEDURE Rulp_Ins_Make_Rule(
60 p_description_number IN NUMBER ,
61 p_return_type VARCHAR2 ,
62 p_rule_description VARCHAR2 ,
63 p_turing_function VARCHAR2 ,
64 p_rule_text VARCHAR2 ,
65 p_message_rule_text VARCHAR2 ,
66 p_description_text VARCHAR2 ,
67 p_group IN NUMBER ,
68 p_select_group IN NUMBER )
69 IS
70 ------------------------------------------------------------------
71 --Created by : nsinha, Oracle India
72 --Date created: 12-Mar-2002
73 --
74 --Purpose: If description number exists then use the existing IGS_RU_RULE
75 -- number or message number
76 --
77 --Known limitations/enhancements and/or remarks:
78 --
79 --Change History:
80 --Who When What
81 --nsinha 12-Mar-2002 Bug# 2233951: Moved the function from Igs_ru_gen_004.
82 --
83 -------------------------------------------------------------------
84 FUNCTION make_rule (
85 p_rule_number NUMBER,
86 p_return_type VARCHAR2,
87 p_rule_description VARCHAR2,
88 p_rule_text VARCHAR2 )
89 RETURN NUMBER IS
90 v_processed VARCHAR(2000);
91 v_unprocessed VARCHAR(2000);
92 v_rule_number NUMBER;
93 v_lov_number NUMBER;
94 v_count NUMBER;
95 BEGIN
96 v_rule_number := p_rule_number;
97 v_processed := p_rule_text;
98 IF IGS_RU_GEN_002.RULP_INS_PARSER(p_select_group,
99 p_return_type,
100 p_rule_description,
101 v_processed,
102 v_unprocessed,
103 TRUE,
104 v_rule_number,
105 v_lov_number)
106 THEN
107 NULL;
108 END IF;
109 RETURN v_rule_number;
110 END make_rule;
111
112 /*
113 insert/update IGS_RU_DESCRIPTION
114 */
115 FUNCTION insert_rule_description
116 RETURN NUMBER IS
117 ------------------------------------------------------------------
118 --Created by : nsinha, Oracle India
119 --Date created: 12-Mar-2002
120 --
121 --Purpose: Calls the before_dml of igs_ru_group_item_pkg
122 --
123 --
124 --Known limitations/enhancements and/or remarks:
125 --
126 --Change History:
127 --Who When What
128 --nsinha 12-Mar-2002 Bug# 2233951: Modified the logic to
129 -- SELECT the next value of the sequence number
130 -- differently when the data is for SEED DB.
131 --
132 -- nsinha 10/9/2003 Bug#: 3193855 : Change the reference of igs_ru_set with igs_ru_description.
133 -- for CURSOR cur_max_plus_one.
134 -------------------------------------------------------------------
135 v_rud_sequence_number NUMBER;
136 v_count NUMBER DEFAULT 0;
137 v_rowid VARCHAR2(25);
138 CURSOR Cur_Desc(r_rud_sequence_number NUMBER) IS
139 SELECT rowid,IGS_RU_DESCRIPTION.*
140 FROM IGS_RU_DESCRIPTION
141 WHERE sequence_number = r_rud_sequence_number;
142
143 CURSOR Cur_Desc_Count(cp_rud_sequence_number NUMBER) IS
144 SELECT COUNT(*)
145 FROM IGS_RU_DESCRIPTION
146 WHERE sequence_number = cp_rud_sequence_number;
147
148 CURSOR cur_max_plus_one IS
149 SELECT (sequence_number + 1) sequence_number
150 FROM igs_ru_description
151 WHERE sequence_number =
152 (SELECT MAX (sequence_number)
153 FROM igs_ru_description -- Changed By: Navin.Sinha On: 10/9/2003 Fix: Change the reference of igs_ru_set with igs_ru_description.
154 WHERE sequence_number < 499999)
155 FOR UPDATE OF sequence_number NOWAIT;
156 BEGIN
157 IF p_description_number IS NULL THEN
158 --
159 -- New description number
160 -- If the User creating this record is DATAMERGE (id = 1) then
161 -- Get the sequence as the existing maximum value + 1
162 -- Else
163 -- Get the next value from the database sequence
164 --
165 IF (fnd_global.user_id = 1) THEN
166 OPEN cur_max_plus_one;
167 FETCH cur_max_plus_one INTO v_rud_sequence_number;
168 CLOSE cur_max_plus_one;
169 ELSE
170 SELECT igs_ru_description_seq_num_s.nextval
171 INTO v_rud_sequence_number
172 FROM dual;
173 END IF;
174 ELSE
175 v_rud_sequence_number := p_description_number;
176 END IF;
177
178 OPEN Cur_Desc_Count(v_rud_sequence_number);
179 FETCH Cur_Desc_Count INTO v_count;
180 CLOSE Cur_Desc_Count;
181
182 IF v_count = 0
183 THEN
184 --
185 -- insert IGS_RU_DESCRIPTION
186 --
187 IGS_RU_DESCRIPTION_PKG.Insert_Row(
188 x_rowid => v_rowid,
189 x_sequence_number => v_rud_sequence_number,
190 x_s_return_type => p_return_type,
191 x_rule_description => p_rule_description,
192 x_description => p_description_text,
193 x_s_turin_function => NULL,
194 x_parenthesis_ind => NULL,
195 x_mode => 'R'
196 );
197 ELSE
198 --
199 -- update IGS_RU_DESCRIPTION
200 --
201 for Desc_Rec in Cur_Desc(v_rud_sequence_number) loop
202 Desc_Rec.s_return_type := p_return_type;
203 Desc_Rec.rule_description := p_rule_description;
204 Desc_Rec.description := p_description_text;
205 IGS_RU_DESCRIPTION_PKG.Update_Row(
206 x_rowid => Desc_Rec.rowid,
207 x_sequence_number => Desc_Rec.sequence_number,
208 x_s_return_type => Desc_Rec.s_return_type,
209 x_rule_description => Desc_Rec.rule_description,
210 x_description => Desc_Rec.description,
211 x_s_turin_function => Desc_Rec.s_turin_function,
212 x_parenthesis_ind => Desc_Rec.parenthesis_ind,
213 x_mode => 'R'
214 );
215 end loop;
216
217 END IF;
218 RETURN v_rud_sequence_number;
219 END insert_rule_description;
220
221 BEGIN DECLARE
222 v_rowid_nr VARCHAR2(25);
223 v_rowid_tur VARCHAR2(25);
224 v_rowid_rgi VARCHAR2(25);
225 v_rule_number NUMBER;
226 v_description_number NUMBER;
227 v_count NUMBER;
228 v_rule_description IGS_RU_DESCRIPTION.rule_description%TYPE;
229
230 CURSOR Cur_Desc(r_description_number NUMBER) IS
231 SELECT rowid,IGS_RU_DESCRIPTION.*
232 FROM IGS_RU_DESCRIPTION
233 WHERE sequence_number = r_description_number;
234 CURSOR Cur_Nr(r_description_number NUMBER) IS
235 SELECT rowid,IGS_RU_NAMED_RULE.*
236 FROM IGS_RU_NAMED_RULE
237 WHERE rud_sequence_number = r_description_number;
238
239 BEGIN
240 IF p_return_type IS NOT NULL AND
241 p_rule_description IS NOT NULL
242 THEN
243 v_description_number := insert_rule_description;
244 IF p_turing_function IS NOT NULL
245 THEN
246 SELECT COUNT(*)
247 INTO v_count
248 FROM IGS_RU_TURIN_FNC
249 WHERE s_turin_function = p_turing_function;
250 IF v_count = 0
251 THEN
252 /*
253 master turing function
254 */
255
256 IGS_RU_TURIN_FNC_PKG.Insert_Row(
257 x_rowid => v_rowid_tur,
258 x_s_turin_function => p_turing_function,
259 x_rud_sequence_number => v_description_number,
260 x_parenthesis_ind => NULL,
261 x_mode => 'R'
262 );
263 END IF;
264
265 for Desc_Rec in Cur_Desc(v_description_number) loop
266 Desc_Rec.s_turin_function := p_turing_function;
267 IGS_RU_DESCRIPTION_PKG.Update_Row(
268 x_rowid => Desc_Rec.rowid,
269 x_sequence_number => Desc_Rec.sequence_number,
270 x_s_return_type => Desc_Rec.s_return_type,
271 x_rule_description => Desc_Rec.rule_description,
272 x_description => Desc_Rec.description,
273 x_s_turin_function => Desc_Rec.s_turin_function,
274 x_parenthesis_ind => Desc_Rec.parenthesis_ind,
275 x_mode => 'R'
276 );
277 end loop;
278
279 ELSE
280 IF p_rule_text IS NOT NULL
281 THEN
282 /*
283 NAMED IGS_RU_RULE
284 */
285 IF p_description_number IS NOT NULL
286 THEN
287 BEGIN
288 /*
289 find existing IGS_RU_RULE number
290 */
291 SELECT rul_sequence_number
292 INTO v_rule_number
293 FROM IGS_RU_NAMED_RULE
294 WHERE rud_sequence_number = p_description_number;
295 EXCEPTION
296 WHEN NO_DATA_FOUND THEN
297 v_rule_number := NULL;
298 END;
299 END IF;
300 v_rule_number := make_rule(v_rule_number,
301 p_return_type,
302 p_rule_description,
303 p_rule_text);
304 SELECT COUNT(*)
305 INTO v_count
306 FROM IGS_RU_NAMED_RULE
307 WHERE rud_sequence_number = v_description_number;
308 IF v_count = 0
309 THEN
310 /*
311 add named IGS_RU_RULE
312 */
313 IGS_RU_NAMED_RULE_PKG.Insert_Row(
314 x_rowid => v_rowid_nr,
315 x_rul_sequence_number => v_rule_number,
316 x_rud_sequence_number => v_description_number,
317 x_message_rule => NULL,
318 x_rug_sequence_number => 1,
319 x_rule_text => p_rule_text,
320 x_mode => 'R'
321 );
322
323 END IF;
324 ELSE
325 /*
326 TURING LOV or language directive
327 */
328 NULL;
329 END IF;
330 END IF;
331 IF p_group IS NOT NULL
332 THEN
333 /*
334 check/insert into group
335 */
336 SELECT COUNT(*)
337 INTO v_count
338 FROM IGS_RU_GROUP_ITEM
339 WHERE rug_sequence_number = p_group
340 AND description_number = v_description_number
341 AND description_type = 'RUD';
342 IF v_count = 0
343 THEN
344 IGS_RU_GROUP_ITEM_PKG.Insert_Row(
345 x_rowid => v_rowid_rgi,
346 x_rug_sequence_number => p_group,
347 x_description_number => v_description_number,
348 x_description_type => 'RUD',
349 x_mode => 'R'
350 );
351 END IF;
352 END IF;
353 ELSE
354 NULL; /*error*/
355 END IF;
356 IF p_message_rule_text IS NOT NULL
357 THEN
358 /*
359 MESSAIGS_RU_RULE
360 find existing message IGS_RU_RULE number
361 */
362 SELECT message_rule
363 INTO v_rule_number
364 FROM IGS_RU_NAMED_RULE
365 WHERE rud_sequence_number = p_description_number;
366 /*
367 get the IGS_RU_RULE description of the owner IGS_RU_RULE
368 */
369 SELECT rule_description
370 INTO v_rule_description
371 FROM IGS_RU_DESCRIPTION
372 WHERE sequence_number = p_description_number;
373 v_rule_number := make_rule(v_rule_number,
374 'STRING',
375 v_rule_description,
376 p_message_rule_text);
377 /*
378 date the message number
379 */
380 for Nr_Rec in Cur_Nr(p_description_number) loop
381 Nr_Rec.message_rule := v_rule_number;
382 IGS_RU_NAMED_RULE_PKG.Update_Row(
383 x_rowid => Nr_Rec.rowid,
384 x_rul_sequence_number => Nr_Rec.rul_sequence_number,
385 x_rud_sequence_number => Nr_Rec.rud_sequence_number,
386 x_message_rule => Nr_Rec.message_rule,
387 x_rug_sequence_number => Nr_Rec.rug_sequence_number,
388 x_rule_text => Nr_Rec.rule_text,
389 x_mode => 'R'
390 );
391 end loop;
392 END IF;
393 END;
394 END Rulp_Ins_Make_Rule;
395
396
397 FUNCTION Rulp_Get_Rule(
398 p_rule_number IN NUMBER )
399 RETURN VARCHAR2 IS
400 /*
401 return the textual form of the IGS_RU_RULE
402
403 CONSTANTS
404 */
405 cst_space CONSTANT VARCHAR2(1) := Fnd_Global.Local_Chr(31);
406 /*
407 return set string
408 */
409 FUNCTION show_set (
410 p_set_number IN IGS_RU_SET.sequence_number%TYPE )
411 RETURN VARCHAR2 IS
412 BEGIN DECLARE
413 v_more BOOLEAN;
414 v_set VARCHAR2(255);
415 BEGIN
416 v_more := FALSE;
417 v_set := '{';
418 FOR set_members IN (
419 SELECT unit_cd,
420 versions
421 FROM IGS_RU_SET_MEMBER
422 WHERE rs_sequence_number = p_set_number
423 ORDER BY unit_cd )
424 LOOP
425 IF v_more
426 THEN
427 v_set := v_set||', ';
428 END IF;
429 v_set := v_set||set_members.unit_cd;
430 IF set_members.versions IS NOT NULL
431 THEN
432 IF INSTR(set_members.versions,',') <> 0 OR
433 INSTR(set_members.versions,'-') <> 0
434 THEN
435 v_set := v_set||'.['||set_members.versions||']';
436 ELSE
437 v_set := v_set||'.'||set_members.versions;
438 END IF;
439 END IF;
440 v_more := TRUE;
441 END LOOP;
442 v_set := v_set||'}';
443 RETURN v_set;
444 END;
445 END show_set;
446
447 /*
448 convert the description string into token, action
449 and remainder of description
450 return FALSE if description is NULL
451 */
452 FUNCTION breakdown_desc (
453 p_display IN OUT NOCOPY IGS_RU_DESCRIPTION.rule_description%TYPE,
454 p_action IN OUT NOCOPY IGS_RU_DESCRIPTION.s_return_type%TYPE,
455 p_description IN OUT NOCOPY IGS_RU_DESCRIPTION.rule_description%TYPE )
456 RETURN BOOLEAN IS
457 BEGIN DECLARE
458 v_hash NUMBER;
459 BEGIN
460 /*
461 check if more to process
462 */
463 IF p_description IS NULL
464 THEN
465 RETURN FALSE;
466 END IF;
467 p_action := NULL;
468 v_hash := INSTR(p_description, '#');
469 p_display := SUBSTR(p_description,1,v_hash - 1);
470 IF v_hash = 0
471 THEN
472 p_action := '';
473 p_display := p_description;
474 ELSE
475 FOR return_types IN (
476 SELECT s_return_type
477 FROM IGS_RU_RET_TYPE
478 ORDER BY s_return_type DESC )
479 LOOP
480 IF SUBSTR(p_description,v_hash + 1,LENGTH(return_types.s_return_type))
481 = return_types.s_return_type
482 THEN
483 p_action := return_types.s_return_type;
484 exit;
485 END IF;
486 END LOOP;
487
488 END IF;
489 p_description := SUBSTR(p_description,v_hash + 1 + LENGTH(p_action));
490 RETURN TRUE;
491 END;
492 END breakdown_desc;
493 /*
494 Convert the stored IGS_RU_RULE into a readable form
495 */
496 FUNCTION display_rule (
497 p_rule_number IN IGS_RU_ITEM.rul_sequence_number%TYPE,
498 p_rule_item IN OUT NOCOPY IGS_RU_ITEM.item%TYPE )
499 RETURN VARCHAR2 IS
500 BEGIN DECLARE
501 v_rule VARCHAR2(2000);
502 v_rule_item IGS_RU_ITEM.item%TYPE;
503 v_rule_description IGS_RU_DESCRIPTION.rule_description%TYPE;
504 v_parenthesis_ind IGS_RU_DESCRIPTION.parenthesis_ind%TYPE;
505 v_action IGS_RU_DESCRIPTION.s_return_type%TYPE;
506 v_display IGS_RU_DESCRIPTION.rule_description%TYPE;
507 BEGIN
508 FOR rule_items IN (
509 SELECT rul_sequence_number,
510 item,
511 turin_function,
512 named_rule,
513 rule_number,
514 derived_rule,
515 set_number,
516 value
517 FROM IGS_RU_ITEM
518 WHERE rul_sequence_number = p_rule_number
519 AND item > p_rule_item
520 ORDER BY item ASC )
521 LOOP
522 p_rule_item := rule_items.item;
523 IF rule_items.turin_function IS NOT NULL
524 THEN
525 SELECT rud.rule_description,
526 rud.parenthesis_ind
527 INTO v_rule_description,
528 v_parenthesis_ind
529 FROM IGS_RU_TURIN_FNC stf,
530 IGS_RU_DESCRIPTION rud
531 WHERE stf.s_turin_function = rule_items.turin_function
532 AND rud.sequence_number = stf.rud_sequence_number;
533 IF v_parenthesis_ind = 'Y'
534 THEN
535 v_rule := v_rule||'(';
536 END IF;
537 WHILE breakdown_desc(v_display,
538 v_action,
539 v_rule_description)
540 LOOP
541 v_rule := v_rule||v_display;
542 IF LENGTH(v_action) > 0
543 THEN
544 v_rule := v_rule||display_rule(p_rule_number,p_rule_item);
545 END IF;
546 END LOOP;
547 IF v_parenthesis_ind = 'Y'
548 THEN
549 v_rule := v_rule||')';
550 END IF;
551 ELSIF rule_items.named_rule IS NOT NULL
552 THEN
553 SELECT rud.rule_description,
554 rud.parenthesis_ind
555 INTO v_rule_description,
556 v_parenthesis_ind
557 FROM IGS_RU_NAMED_RULE nr,
558 IGS_RU_DESCRIPTION rud
559 WHERE nr.rul_sequence_number = rule_items.named_rule
560 AND rud.sequence_number = nr.rud_sequence_number;
561 IF v_parenthesis_ind = 'Y'
562 THEN
563 v_rule := v_rule||'(';
564 END IF;
565 WHILE breakdown_desc(v_display,
566 v_action,
567 v_rule_description)
568 LOOP
569 v_rule := v_rule||v_display;
570 IF LENGTH(v_action) > 0
571 THEN
572 v_rule := v_rule||display_rule(p_rule_number,p_rule_item);
573 END IF;
577 v_rule := v_rule||')';
574 END LOOP;
575 IF v_parenthesis_ind = 'Y'
576 THEN
578 END IF;
579 ELSIF rule_items.rule_number IS NOT NULL
580 THEN
581 v_rule_item := 0;
582 v_rule := v_rule||display_rule(rule_items.rule_number,v_rule_item);
583 ELSIF rule_items.derived_rule IS NOT NULL
584 THEN
585 SELECT rule_description
586 INTO v_rule_description
587 FROM IGS_RU_DESCRIPTION
588 WHERE sequence_number = rule_items.derived_rule;
589 WHILE breakdown_desc(v_display,
590 v_action,
591 v_rule_description)
592 LOOP
593 v_rule := v_rule||v_display;
594 IF LENGTH(v_action) > 0
595 THEN
596 v_rule := v_rule||display_rule(p_rule_number,p_rule_item);
597 END IF;
598 END LOOP;
599 ELSIF rule_items.set_number IS NOT NULL
600 THEN
601 v_rule := v_rule||show_set(rule_items.set_number);
602 ELSIF rule_items.value IS NOT NULL
603 THEN
604 v_rule := v_rule||rule_items.value;
605 END IF;
606 exit;
607 END LOOP;
608 RETURN v_rule;
609 END;
610 END display_rule;
611 /*
612 Rulp_Get_Rule
613 */
614 BEGIN
615 DECLARE
616 v_rule_item IGS_RU_ITEM.item%TYPE := -1;
617 BEGIN
618 /*
619 return IGS_RU_RULE, replace internal spaces for real spaces
620 */
621 RETURN REPLACE(display_rule(p_rule_number,v_rule_item),cst_space,' ');
622 END;
623 END Rulp_Get_Rule;
624
625 PROCEDURE Set_Token(Token Varchar2) IS
626 BEGIN
627 FND_MESSAGE.SET_TOKEN('ADM',Token);
628 END Set_Token;
629
630 FUNCTION Jbsp_Get_Dt_Picture(
631 p_char_dt IN VARCHAR2 ,
632 p_dt_picture OUT NOCOPY VARCHAR2 )
633 RETURN BOOLEAN AS
634 BEGIN
635 DECLARE
636 v_return_dt DATE := NULL;
637 v_char_dt VARCHAR2(40);
638 BEGIN
639 -- This function accepts a date string, determines what format
640 -- should be used to convert the string to a date and returns
641 -- the date picture and true if a valid date picture found.
642 v_char_dt := SUBSTR(REPLACE(p_char_dt, '''', ''), 1, 40);
643 IF v_char_dt IS NULL THEN
644 p_dt_picture := ' ';
645 RETURN FALSE;
646 END IF;
647 v_return_dt := TO_DATE(v_char_dt, 'DD/MM/YY');
648 p_dt_picture := 'DD/MM/YY';
649 RETURN TRUE;
650 EXCEPTION WHEN OTHERS THEN
651 BEGIN
652 v_return_dt := TO_DATE(v_char_dt, 'DD/MM/YYYY');
653 p_dt_picture := 'DD/MM/YYYY';
654 RETURN TRUE;
655 EXCEPTION WHEN OTHERS THEN
656 BEGIN
657 v_return_dt := TO_DATE(v_char_dt, 'DD-MM-YY');
658 p_dt_picture := 'DD-MM-YY';
659 RETURN TRUE;
660 EXCEPTION WHEN OTHERS THEN
661 BEGIN
662 v_return_dt := TO_DATE(v_char_dt, 'DD-MM-YYYY');
663 p_dt_picture := 'DD-MM-YYYY';
664 RETURN TRUE;
665 EXCEPTION WHEN OTHERS THEN
666 BEGIN
667 v_return_dt := TO_DATE(v_char_dt, 'DD-MM-YY HH24:MI:SS');
668 p_dt_picture := 'DD-MM-YY HH24:MI:SS';
669 RETURN TRUE;
670 EXCEPTION WHEN OTHERS THEN
671 BEGIN
672 v_return_dt := TO_DATE(v_char_dt, 'DD-MM-YYYY HH24:MI:SS');
673 p_dt_picture := 'DD-MM-YYYY HH24:MI:SS';
674 RETURN TRUE;
675 EXCEPTION WHEN OTHERS THEN
676 BEGIN
677 v_return_dt := TO_DATE(v_char_dt, 'DD/MM/YY HH24:MI:SS');
678 p_dt_picture := 'DD/MM/YY HH24:MI:SS';
679 RETURN TRUE;
680 EXCEPTION WHEN OTHERS THEN
681 BEGIN
682 v_return_dt := TO_DATE(v_char_dt, 'DD/MM/YYYY HH24:MI:SS');
683 p_dt_picture := 'DD/MM/YYYY HH24:MI:SS';
684 RETURN TRUE;
685 EXCEPTION WHEN OTHERS THEN
686 p_dt_picture := ' ';
687 RETURN FALSE;
688 END;
689 END;
690 END;
691 END;
692 END;
693 END;
694 END;
695 END;
696 END Jbsp_Get_Dt_Picture;
697
698 END IGS_RU_GEN_006;