[Home] [Help]
PACKAGE BODY: APPS.JTF_JFLEX_PUB
Source
1 PACKAGE BODY JTF_JFLEX_PUB AS
2 /* $Header: jtfflexb.pls 120.3 2005/10/26 03:01:01 psanyal ship $ */
3 procedure Get_Flexfield(p_application IN varchar2,
4 p_flexfield_name IN varchar2,
5 name OUT NOCOPY /* file.sql.39 change */ varchar2,
6 apps_name OUT NOCOPY /* file.sql.39 change */ varchar2,
7 nr_segs OUT NOCOPY /* file.sql.39 change */ number,
8 dfs_name OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300,
9 dfs_dbcolumn_name OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300,
10 dfs_default_value OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300,
11 dfs_prompt OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300,
12 dfs_max_size OUT NOCOPY /* file.sql.39 change */ jtf_number_table,
13 dfs_min_value OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300,
14 dfs_max_value OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300,
15 dfs_mandatory OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_100,
16 dfs_default_type OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_100,
17 dfs_valtype OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_100,
18 dfs_lov_id OUT NOCOPY /* file.sql.39 change */ jtf_number_table,
19 dfs_format_type OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_100,
20 dfs_display_size OUT NOCOPY /* file.sql.39 change */ jtf_number_table) IS
21 l_flexfield FND_DFLEX.dflex_r;
22 l_flexinfo FND_DFLEX.dflex_dr;
23 l_contexts FND_DFLEX.contexts_dr;
24 l_context FND_DFLEX.context_r;
25 l_segments FND_DFLEX.segments_dr;
26 l_index BINARY_INTEGER;
27 l_segment_index BINARY_INTEGER;
28 l_count BINARY_INTEGER;
29 l_valueset_info FND_VSET.valueset_r;
30 l_valueset_format FND_VSET.valueset_dr;
31 l_valueset_found BOOLEAN;
32 l_setvalue FND_VSET.value_dr;
33 l_rowcount NUMBER;
34 l_found BOOLEAN;
35
36 --l_valueset AS_OFL_FLEXSUPPORT_PKG.valueset_rec;
37 --l_flex AS_OFL_FLEXSUPPORT_PKG.dflexfield_rec;
38 BEGIN
39 -- get flexfield info
40 FND_DFLEX.Get_Flexfield(p_application, p_flexfield_name, l_flexfield, l_flexinfo);
41 -- no exception -> flexfield found
42
43 name := p_flexfield_name;
44 apps_name := p_application;
45
46 -- initialize those arrays.
47 dfs_name := jtf_varchar2_table_300();
48 dfs_dbcolumn_name := jtf_varchar2_table_300();
49 dfs_default_value := jtf_varchar2_table_300();
50 dfs_prompt := jtf_varchar2_table_300();
51 dfs_max_size := jtf_number_table();
52 dfs_min_value := jtf_varchar2_table_300();
53 dfs_max_value := jtf_varchar2_table_300();
54 dfs_mandatory := jtf_varchar2_table_100();
55 dfs_default_type := jtf_varchar2_table_100();
56 dfs_valtype := jtf_varchar2_table_100();
57 dfs_lov_id := jtf_number_table();
58 dfs_format_type := jtf_varchar2_table_100();
59 dfs_display_size := jtf_number_table();
60
61
62 -- get global context, check if at least one
63 FND_DFLEX.Get_Contexts(l_flexfield, l_contexts);
64 IF l_contexts.ncontexts < 1 OR
65 l_contexts.global_context IS NULL OR
66 l_contexts.global_context < 1
67 THEN
68 RETURN;
69 END IF;
70
71 -- get array of global segments
72 l_context.flexfield := l_flexfield;
73 l_context.context_code := l_contexts.context_code(l_contexts.global_context);
74
75 FND_DFLEX.get_segments(l_context, l_segments, TRUE);
76
77
78 -- copy segment information to flexfield object
79
80 l_index := 1;
81
82 FOR l_segment_index IN 1 .. l_segments.nsegments LOOP
83
84 dfs_name.extend;
85 dfs_dbcolumn_name.extend;
86 dfs_default_value.extend;
87 dfs_prompt.extend;
88 dfs_max_size.extend;
89 dfs_min_value.extend;
90 dfs_max_value.extend;
91 dfs_mandatory.extend;
92 dfs_default_type.extend;
93 dfs_valtype.extend;
94 dfs_lov_id.extend;
95 dfs_format_type.extend;
96 dfs_display_size.extend;
97
98
99 dfs_dbcolumn_name(l_index) := l_segments.application_column_name(l_segment_index);
100 dfs_name(l_index) := l_segments.segment_name(l_segment_index);
101 dfs_prompt(l_index) := l_segments.row_prompt(l_segment_index);
102
103 -- we only deal with valuesets of validation type independent or none
104 -- default for segment is validation type none
105 BEGIN
106 FND_VSET.Get_valueset(l_segments.value_set(l_segment_index), l_valueset_info, l_valueset_format);
107 l_valueset_found := true;
108
109 If (l_valueset_info.validation_type = 'I') Then
110 FND_VSET.get_value_init(l_valueset_info, TRUE);
111 l_count := 0;
112 LOOP
113 FND_VSET.get_value(l_valueset_info, l_rowcount, l_found, l_setvalue);
114 EXIT WHEN l_found <> TRUE;
115 l_count := l_count +1;
116 END LOOP;
117 FND_VSET.get_value_end(l_valueset_info);
118 End If;
119
120 EXCEPTION
121 WHEN no_data_found THEN
122 l_valueset_found := false;
123 END;
124
125 IF l_valueset_found
126 AND l_valueset_info.validation_type = c_valueset_valtype_independent
127 AND l_count > 0
128 THEN
129 dfs_lov_id(l_index) := l_segments.value_set(l_segment_index);
130 dfs_valtype(l_index) := c_valueset_valtype_independent;
131 ELSE
132 dfs_lov_id(l_index) := NULL;
133 dfs_valtype(l_index) := c_valueset_valtype_none;
134 END IF;
135
136 IF (l_valueset_found)
137 THEN
138 dfs_max_size(l_index) := nvl(l_valueset_format.max_size, 0);
139 dfs_min_value(l_index) := l_valueset_format.min_value;
140 dfs_max_value(l_index) := l_valueset_format.max_value;
141 dfs_format_type(l_index) := l_valueset_format.format_type;
142 ELSE
143 dfs_max_size(l_index) := 200;
144 dfs_min_value(l_index) := NULL;
145 dfs_max_value(l_index) := NULL;
146 dfs_format_type(l_index) := NULL;
147 END IF;
148
149 if l_segments.is_required(l_segment_index) then
150 dfs_mandatory(l_index) := 'Y';
151 else
152 dfs_mandatory(l_index) := 'N';
153 end if;
154 dfs_default_value(l_index) := NULL;
155 dfs_default_type(l_index) := l_segments.default_type(l_segment_index);
156 dfs_display_size(l_index) := l_segments.display_size(l_segment_index);
157
158 l_index := l_index + 1;
159
160 END LOOP;
161
162 nr_segs := l_index - 1;
163
164
165 EXCEPTION
166 WHEN OTHERS THEN
167 --dbms_output.put_line('Exception caught');
168 RETURN;
169 END Get_Flexfield;
170
171 procedure Get_ValueSet(p_valueset_id IN number,
172 x_value OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300 ,
173 x_meaning OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300) IS
174 l_valueset_info FND_VSET.valueset_r;
175 l_valueset_format FND_VSET.valueset_dr;
176 l_setvalue FND_VSET.value_dr;
177 l_rowcount NUMBER;
178 l_count NUMBER;
179 l_found BOOLEAN;
180 BEGIN
181 FND_VSET.Get_ValueSet(p_valueset_id, l_valueset_info, l_valueset_format);
182 -- no exception, valueset information retrieved.
183 FND_VSET.get_value_init(l_valueset_info, TRUE);
184 x_value := jtf_varchar2_table_300();
185 x_meaning := jtf_varchar2_table_300();
186 l_count := 1;
187 LOOP
188 FND_VSET.get_value(l_valueset_info, l_rowcount, l_found, l_setvalue);
189 EXIT WHEN l_found <> TRUE;
190 x_value.extend;
191 x_meaning.extend;
192 x_value(l_count) := l_setvalue.value;
193 x_meaning(l_count) := l_setvalue.meaning;
194 l_count := l_count +1;
195 END LOOP;
196 FND_VSET.get_value_end(l_valueset_info);
197 EXCEPTION
198 WHEN OTHERS THEN
199 --dbms_output.put_line('Exception caught');
200 RETURN;
201 END Get_ValueSet;
202
203 END JTF_JFLEX_PUB;