[Home] [Help]
PACKAGE BODY: APPS.HR_DESCR_FLEX_CONTEXT_INFO
Source
1 PACKAGE BODY hr_descr_flex_context_info
2 /* $Header: hrdfcinf.pkb 115.2 2002/12/10 08:56:25 hjonnala ship $ */
3 AS
4 --
5 TYPE t_segment_header IS RECORD
6 (application_id fnd_descr_flex_contexts.application_id%TYPE
7 ,descriptive_flexfield_name fnd_descr_flex_contexts.descriptive_flexfield_name%TYPE
8 ,descr_flex_context_code fnd_descr_flex_contexts.descriptive_flex_context_code%TYPE
9 ,effective_date DATE
10 ,first_index_number NUMBER
11 ,last_index_number NUMBER
12 );
13 TYPE t_segment_headers IS TABLE OF t_segment_header;
14 --
15 g_application_id1 fnd_descr_flex_contexts.application_id%TYPE;
16 g_descriptive_flexfield_name1 fnd_descr_flex_contexts.descriptive_flexfield_name%TYPE;
17 g_descr_flex_context_code1 fnd_descr_flex_contexts.descriptive_flex_context_code%TYPE;
18 g_effective_date1 DATE;
19 g_segments1 t_segments := t_segments();
20 g_application_id2 fnd_descr_flex_contexts.application_id%TYPE;
21 g_descriptive_flexfield_name2 fnd_descr_flex_contexts.descriptive_flexfield_name%TYPE;
22 g_descr_flex_context_code2 fnd_descr_flex_contexts.descriptive_flex_context_code%TYPE;
23 g_effective_date2 DATE;
24 g_segments2 t_segments := t_segments();
25 g_application_short_name3 fnd_application.application_short_name%TYPE;
26 g_application_id3 fnd_application.application_id%TYPE;
27 --
28 g_segment_headers t_segment_headers := t_segment_headers();
29 g_segments t_segments := t_segments();
30 --
31 -- -----------------------------------------------------------------------------
32 -- |------------------------------< add_segments >-----------------------------|
33 -- -----------------------------------------------------------------------------
34 PROCEDURE add_segments
35 (p_application_id IN fnd_descr_flex_contexts.application_id%TYPE
36 ,p_descriptive_flexfield_name IN fnd_descr_flex_contexts.descriptive_flexfield_name%TYPE
37 ,p_descr_flex_context_code IN fnd_descr_flex_contexts.descriptive_flex_context_code%TYPE
38 ,p_effective_date IN DATE
39 ,p_segments IN t_segments
40 )
41 IS
42 --
43 l_index_number NUMBER;
44 --
45 BEGIN
46 --
47 g_segment_headers.EXTEND;
48 g_segment_headers(g_segment_headers.LAST).application_id := p_application_id;
49 g_segment_headers(g_segment_headers.LAST).descriptive_flexfield_name := p_descriptive_flexfield_name;
50 g_segment_headers(g_segment_headers.LAST).descr_flex_context_code := p_descr_flex_context_code;
51 g_segment_headers(g_segment_headers.LAST).effective_date := p_effective_date;
52 l_index_number := p_segments.FIRST;
53 WHILE (l_index_number IS NOT NULL)
54 LOOP
55 g_segments.EXTEND;
56 IF (g_segment_headers(g_segment_headers.LAST).first_index_number IS NULL)
57 THEN
58 g_segment_headers(g_segment_headers.LAST).first_index_number := g_segments.LAST;
59 END IF;
63 g_segment_headers(g_segment_headers.LAST).last_index_number := g_segments.LAST;
60 g_segments(g_segments.LAST) := p_segments(l_index_number);
61 l_index_number := p_segments.NEXT(l_index_number);
62 END LOOP;
64 --
65 END add_segments;
66 --
67 -- -----------------------------------------------------------------------------
68 -- |------------------------------< get_segments >-----------------------------|
69 -- -----------------------------------------------------------------------------
70 PROCEDURE get_segments
71 (p_application_id IN fnd_descr_flex_contexts.application_id%TYPE
72 ,p_descriptive_flexfield_name IN fnd_descr_flex_contexts.descriptive_flexfield_name%TYPE
73 ,p_descr_flex_context_code IN fnd_descr_flex_contexts.descriptive_flex_context_code%TYPE
74 ,p_effective_date IN DATE
75 ,p_segments OUT NOCOPY t_segments
76 ,p_segments_exist OUT NOCOPY BOOLEAN
77 )
78 IS
79 --
80 l_segments t_segments := t_segments();
81 l_segments_exist BOOLEAN := FALSE;
82 l_index_number NUMBER;
83 l_first_index_number NUMBER;
84 l_last_index_number NUMBER;
85 --
86 BEGIN
87 --
88 l_index_number := g_segment_headers.FIRST;
89 WHILE (l_index_number IS NOT NULL)
90 AND (NOT l_segments_exist)
91 LOOP
92 IF (g_segment_headers(l_index_number).application_id = p_application_id)
93 AND (g_segment_headers(l_index_number).descriptive_flexfield_name = p_descriptive_flexfield_name)
94 AND (NVL(g_segment_headers(l_index_number).descr_flex_context_code,hr_api.g_varchar2) = NVL(p_descr_flex_context_code,hr_api.g_varchar2))
95 AND (g_segment_headers(l_index_number).effective_date = p_effective_date)
96 THEN
97 l_first_index_number := g_segment_headers(l_index_number).first_index_number;
98 l_last_index_number := g_segment_headers(l_index_number).last_index_number;
99 l_segments_exist := TRUE;
100 END IF;
101 l_index_number := g_segment_headers.NEXT(l_index_number);
102 END LOOP;
103 --
104 IF (l_segments_exist)
105 THEN
106 l_index_number := l_first_index_number;
107 WHILE (l_index_number IS NOT NULL)
108 AND (l_index_number <= l_last_index_number)
109 LOOP
110 l_segments.EXTEND;
111 l_segments(l_segments.LAST) := g_segments(l_index_number);
112 l_index_number := g_segments.NEXT(l_index_number);
113 END LOOP;
114 END IF;
115 --
116 p_segments := l_segments;
117 p_segments_exist := l_segments_exist;
118 --
119 END get_segments;
120 --
121 -- -----------------------------------------------------------------------------
122 -- |-----------------------------< used_segments >-----------------------------|
123 -- -----------------------------------------------------------------------------
124 -- {Start of Comments}
125 --
126 -- Description
127 -- This function returns a table containing the details of columns used by a
128 -- descriptive flexfield context.
129 --
130 -- Prerequisites
131 -- None.
132 --
133 -- In Parameters
134 -- Name Reqd Type Description
135 -- p_application_id Y number Application identifier
136 -- p_descriptive_flexfield_name Y varchar2 Descriptive flexfield name
137 -- p_descr_flex_context_code Y varchar2 Descriptive flexfield context
138 -- p_effective_date Y date Effective date
139 --
140 -- Post Success
141 -- A table containg the details of columns used by a descriptive flexfield
142 -- context is returned.
143 --
144 -- Post Failure
145 -- An error is raised.
146 --
147 -- Access Status
148 -- Internal Development Use Only
149 --
150 -- {End of Comments}
151 -- -----------------------------------------------------------------------------
152 FUNCTION used_segments
153 (p_application_id IN fnd_descr_flex_contexts.application_id%TYPE
154 ,p_descriptive_flexfield_name IN fnd_descr_flex_contexts.descriptive_flexfield_name%TYPE
155 ,p_descr_flex_context_code IN fnd_descr_flex_contexts.descriptive_flex_context_code%TYPE
156 ,p_effective_date IN DATE
157 )
158 RETURN t_segments
159 IS
160 --
161 -- Local cursors
162 --
163 CURSOR csr_column_usages
164 (p_application_id IN fnd_descr_flex_contexts.application_id%TYPE
165 ,p_descriptive_flexfield_name IN fnd_descr_flex_contexts.descriptive_flexfield_name%TYPE
166 ,p_descr_flex_context_code IN fnd_descr_flex_contexts.descriptive_flex_context_code%TYPE
167 )
168 IS
169 SELECT fcu.application_column_name
170 ,fcu.column_seq_num
171 ,fcu.concatenation_description_len
172 ,fcu.default_type
173 ,fcu.default_value
174 ,fcu.display_flag
175 ,fcu.display_size
176 ,fcu.enabled_flag
177 ,fcu.end_user_column_name
178 ,fcu.flex_value_set_id
179 ,fcu.form_above_prompt
180 ,fcu.form_left_prompt
181 ,fcu.maximum_description_len
182 ,fcu.required_flag
183 FROM fnd_descr_flex_col_usage_vl fcu
184 ,fnd_descr_flex_contexts_vl ctx
185 WHERE fcu.application_id = ctx.application_id
186 AND fcu.descriptive_flexfield_name = ctx.descriptive_flexfield_name
187 AND fcu.descriptive_flex_context_code = ctx.descriptive_flex_context_code
188 AND ctx.application_id = p_application_id
189 AND ctx.descriptive_flexfield_name = p_descriptive_flexfield_name
193 SELECT fcu.application_column_name
190 AND ctx.descriptive_flex_context_code = p_descr_flex_context_code
191 AND ctx.enabled_flag = 'Y'
192 UNION
194 ,fcu.column_seq_num
195 ,fcu.concatenation_description_len
196 ,fcu.default_type
197 ,fcu.default_value
198 ,fcu.display_flag
199 ,fcu.display_size
200 ,fcu.enabled_flag
201 ,fcu.end_user_column_name
202 ,fcu.flex_value_set_id
203 ,fcu.form_above_prompt
204 ,fcu.form_left_prompt
205 ,fcu.maximum_description_len
206 ,fcu.required_flag
207 FROM fnd_descr_flex_col_usage_vl fcu
208 ,fnd_descr_flex_contexts_vl ctx
209 WHERE fcu.application_id = ctx.application_id
210 AND fcu.descriptive_flexfield_name = ctx.descriptive_flexfield_name
211 AND fcu.descriptive_flex_context_code = ctx.descriptive_flex_context_code
212 AND ctx.application_id = p_application_id
213 AND ctx.descriptive_flexfield_name = p_descriptive_flexfield_name
214 AND ctx.global_flag = 'Y'
215 AND ctx.enabled_flag = 'Y'
216 AND NOT EXISTS (SELECT NULL
217 FROM fnd_descr_flex_col_usage_vl cu1
218 ,fnd_descr_flex_contexts_vl cx1
219 WHERE cu1.application_id = cx1.application_id
220 AND cu1.descriptive_flexfield_name = cx1.descriptive_flexfield_name
221 AND cu1.descriptive_flex_context_code = cx1.descriptive_flex_context_code
222 AND cu1.application_column_name = fcu.application_column_name
223 AND cx1.application_id = ctx.application_id
224 AND cx1.descriptive_flexfield_name = ctx.descriptive_flexfield_name
225 AND cx1.descriptive_flex_context_code = p_descr_flex_context_code
226 AND NVL(cx1.global_flag,'N') <> 'Y'
227 AND cx1.enabled_flag = 'Y');
228 --
229 -- Local variables
230 --
231 l_used_segments t_segments := t_segments();
232 l_value_set hr_flex_value_set_info.t_value_set;
233 --
234 BEGIN
235 --
236 FOR l_column_usage IN csr_column_usages
237 (p_application_id => p_application_id
238 ,p_descriptive_flexfield_name => p_descriptive_flexfield_name
239 ,p_descr_flex_context_code => p_descr_flex_context_code
240 )
241 LOOP
242 --
243 -- Retrieve value set details for segment
244 --
245 l_value_set := hr_flex_value_set_info.value_set
246 (p_flex_value_set_id => l_column_usage.flex_value_set_id
247 ,p_effective_date => p_effective_date
248 );
249 --
250 -- Add segment to table
251 --
252 l_used_segments.EXTEND;
253 l_used_segments(l_used_segments.LAST).column_name := l_column_usage.application_column_name;
254 l_used_segments(l_used_segments.LAST).sequence := l_column_usage.column_seq_num;
255 l_used_segments(l_used_segments.LAST).concatenation_description_len := l_column_usage.concatenation_description_len;
256 l_used_segments(l_used_segments.LAST).default_type := l_column_usage.default_type;
257 l_used_segments(l_used_segments.LAST).default_value := l_column_usage.default_value;
258 l_used_segments(l_used_segments.LAST).display_flag := l_column_usage.display_flag;
259 l_used_segments(l_used_segments.LAST).display_size := l_column_usage.display_size;
260 l_used_segments(l_used_segments.LAST).enabled_flag := l_column_usage.enabled_flag;
261 l_used_segments(l_used_segments.LAST).end_user_column_name := l_column_usage.end_user_column_name;
262 l_used_segments(l_used_segments.LAST).flex_value_set_id := l_column_usage.flex_value_set_id;
263 l_used_segments(l_used_segments.LAST).form_above_prompt := l_column_usage.form_above_prompt;
264 l_used_segments(l_used_segments.LAST).form_left_prompt := l_column_usage.form_left_prompt;
265 l_used_segments(l_used_segments.LAST).maximum_description_len := l_column_usage.maximum_description_len;
266 l_used_segments(l_used_segments.LAST).required_flag := l_column_usage.required_flag;
267 l_used_segments(l_used_segments.LAST).additional_column1_title := l_value_set.additional_column1_title;
268 l_used_segments(l_used_segments.LAST).additional_column1_width := l_value_set.additional_column1_width;
269 l_used_segments(l_used_segments.LAST).additional_column2_title := l_value_set.additional_column2_title;
270 l_used_segments(l_used_segments.LAST).additional_column2_width := l_value_set.additional_column2_width;
271 l_used_segments(l_used_segments.LAST).additional_column3_title := l_value_set.additional_column3_title;
272 l_used_segments(l_used_segments.LAST).additional_column3_width := l_value_set.additional_column3_width;
273 l_used_segments(l_used_segments.LAST).alphanumeric_allowed_flag := l_value_set.alphanumeric_allowed_flag;
274 l_used_segments(l_used_segments.LAST).flex_value_set_name := l_value_set.flex_value_set_name;
275 l_used_segments(l_used_segments.LAST).format_type := l_value_set.format_type;
276 l_used_segments(l_used_segments.LAST).identification_sql := l_value_set.identification_sql;
277 l_used_segments(l_used_segments.LAST).id_column_type := l_value_set.id_column_type;
278 l_used_segments(l_used_segments.LAST).has_meaning := l_value_set.has_meaning;
279 l_used_segments(l_used_segments.LAST).longlist_flag := l_value_set.longlist_flag;
280 l_used_segments(l_used_segments.LAST).maximum_size := l_value_set.maximum_size;
284 l_used_segments(l_used_segments.LAST).numeric_mode_enabled_flag := l_value_set.numeric_mode_enabled_flag;
281 l_used_segments(l_used_segments.LAST).maximum_value := l_value_set.maximum_value;
282 l_used_segments(l_used_segments.LAST).minimum_value := l_value_set.minimum_value;
283 l_used_segments(l_used_segments.LAST).number_precision := l_value_set.number_precision;
285 l_used_segments(l_used_segments.LAST).uppercase_only_flag := l_value_set.uppercase_only_flag;
286 l_used_segments(l_used_segments.LAST).validation_sql := l_value_set.validation_sql;
287 l_used_segments(l_used_segments.LAST).validation_type := l_value_set.validation_type;
288 --
289 END LOOP;
290 --
291 RETURN(l_used_segments);
292 --
293 END used_segments;
294 --
295 -- -----------------------------------------------------------------------------
296 -- |--------------------------------< segments >-------------------------------|
297 -- -----------------------------------------------------------------------------
298 FUNCTION segments
299 (p_application_id IN fnd_descr_flex_contexts.application_id%TYPE
300 ,p_descriptive_flexfield_name IN fnd_descr_flex_contexts.descriptive_flexfield_name%TYPE
301 ,p_descr_flex_context_code IN fnd_descr_flex_contexts.descriptive_flex_context_code%TYPE
302 ,p_effective_date IN DATE
303 )
304 RETURN t_segments
305 IS
306 --
307 -- Local variables
308 --
309 l_segments t_segments := t_segments();
310 l_segments_exist BOOLEAN := FALSE;
311 l_all_segments hr_descr_flex_info.t_segments := hr_descr_flex_info.t_segments();
312 l_used_segments t_segments := t_segments();
313 l_all_index_number NUMBER;
314 l_used_index_number NUMBER;
315 l_used_segment_found BOOLEAN;
316 --
317 BEGIN
318 --
319 get_segments
320 (p_application_id => p_application_id
321 ,p_descriptive_flexfield_name => p_descriptive_flexfield_name
322 ,p_descr_flex_context_code => p_descr_flex_context_code
323 ,p_effective_date => p_effective_date
324 ,p_segments => l_segments
325 ,p_segments_exist => l_segments_exist
326 );
327 --
328 IF (l_segments_exist)
329 THEN
330 --
331 NULL;
332 --
333 ELSE
334 --
335 -- Retrieve all segments available for this descriptive flexfield
336 --
337 l_all_segments := hr_descr_flex_info.segments
338 (p_application_id => p_application_id
339 ,p_descriptive_flexfield_name => p_descriptive_flexfield_name
340 );
341 --
342 -- Retrieve segments used by the descriptive flexfield structure
343 --
344 l_used_segments := used_segments
345 (p_application_id => p_application_id
346 ,p_descriptive_flexfield_name => p_descriptive_flexfield_name
347 ,p_descr_flex_context_code => p_descr_flex_context_code
348 ,p_effective_date => p_effective_date
349 );
350 --
351 -- For all segments available for this descriptive flexfield
352 --
353 l_all_index_number := l_all_segments.FIRST;
354 WHILE (l_all_index_number IS NOT NULL)
355 LOOP
356 --
357 -- Determine if the avaiable segment is actually used by the descriptive
358 -- flexfield context
359 --
360 l_used_segment_found := FALSE;
361 l_used_index_number := l_used_segments.FIRST;
362 WHILE (l_used_index_number IS NOT NULL)
363 AND (NOT l_used_segment_found)
364 LOOP
365 IF (l_all_segments(l_all_index_number).column_name = l_used_segments(l_used_index_number).column_name)
366 THEN
367 l_used_segment_found := TRUE;
368 ELSE
369 l_used_index_number := l_used_segments.NEXT(l_used_index_number);
370 END IF;
371 END LOOP;
372 --
373 -- Add used segment details, if segment is used by the descriptive
374 -- flexfield context; otherwise just add the segments basic details to table
375 --
376 l_segments.EXTEND;
377 IF (l_used_segment_found)
378 THEN
379 l_segments(l_segments.LAST).column_name := l_used_segments(l_used_index_number).column_name;
380 l_segments(l_segments.LAST).sequence := l_used_segments(l_used_index_number).sequence;
381 l_segments(l_segments.LAST).additional_column1_title := l_used_segments(l_used_index_number).additional_column1_title;
382 l_segments(l_segments.LAST).additional_column1_width := l_used_segments(l_used_index_number).additional_column1_width;
383 l_segments(l_segments.LAST).additional_column2_title := l_used_segments(l_used_index_number).additional_column2_title;
384 l_segments(l_segments.LAST).additional_column2_width := l_used_segments(l_used_index_number).additional_column2_width;
385 l_segments(l_segments.LAST).additional_column3_title := l_used_segments(l_used_index_number).additional_column3_title;
386 l_segments(l_segments.LAST).additional_column3_width := l_used_segments(l_used_index_number).additional_column3_width;
387 l_segments(l_segments.LAST).alphanumeric_allowed_flag := l_used_segments(l_used_index_number).alphanumeric_allowed_flag;
388 l_segments(l_segments.LAST).concatenation_description_len := l_used_segments(l_used_index_number).concatenation_description_len;
392 l_segments(l_segments.LAST).display_size := l_used_segments(l_used_index_number).display_size;
389 l_segments(l_segments.LAST).default_type := l_used_segments(l_used_index_number).default_type;
390 l_segments(l_segments.LAST).default_value := l_used_segments(l_used_index_number).default_value;
391 l_segments(l_segments.LAST).display_flag := l_used_segments(l_used_index_number).display_flag;
393 l_segments(l_segments.LAST).enabled_flag := l_used_segments(l_used_index_number).enabled_flag;
394 l_segments(l_segments.LAST).end_user_column_name := l_used_segments(l_used_index_number).end_user_column_name;
395 l_segments(l_segments.LAST).flex_value_set_id := l_used_segments(l_used_index_number).flex_value_set_id;
396 l_segments(l_segments.LAST).flex_value_set_name := l_used_segments(l_used_index_number).flex_value_set_name;
397 l_segments(l_segments.LAST).format_type := l_used_segments(l_used_index_number).format_type;
398 l_segments(l_segments.LAST).form_above_prompt := l_used_segments(l_used_index_number).form_above_prompt;
399 l_segments(l_segments.LAST).form_left_prompt := l_used_segments(l_used_index_number).form_left_prompt;
400 l_segments(l_segments.LAST).identification_sql := l_used_segments(l_used_index_number).identification_sql;
401 l_segments(l_segments.LAST).id_column_type := l_used_segments(l_used_index_number).id_column_type;
402 l_segments(l_segments.LAST).has_meaning := l_used_segments(l_used_index_number).has_meaning;
403 l_segments(l_segments.LAST).longlist_flag := l_used_segments(l_used_index_number).longlist_flag;
404 l_segments(l_segments.LAST).maximum_description_len := l_used_segments(l_used_index_number).concatenation_description_len;
405 l_segments(l_segments.LAST).maximum_size := l_used_segments(l_used_index_number).maximum_size;
406 l_segments(l_segments.LAST).maximum_value := l_used_segments(l_used_index_number).maximum_value;
407 l_segments(l_segments.LAST).minimum_value := l_used_segments(l_used_index_number).minimum_value;
408 l_segments(l_segments.LAST).numeric_mode_enabled_flag := l_used_segments(l_used_index_number).numeric_mode_enabled_flag;
409 l_segments(l_segments.LAST).required_flag := l_used_segments(l_used_index_number).required_flag;
410 l_segments(l_segments.LAST).uppercase_only_flag := l_used_segments(l_used_index_number).uppercase_only_flag;
411 l_segments(l_segments.LAST).validation_sql := l_used_segments(l_used_index_number).validation_sql;
412 l_segments(l_segments.LAST).validation_type := l_used_segments(l_used_index_number).validation_type;
413 ELSE
414 l_segments(l_segments.LAST).column_name := l_all_segments(l_all_index_number).column_name;
415 END IF;
416 --
417 l_all_index_number := l_all_segments.NEXT(l_all_index_number);
418 --
419 END LOOP;
420 --
421 add_segments
422 (p_application_id => p_application_id
423 ,p_descriptive_flexfield_name => p_descriptive_flexfield_name
424 ,p_descr_flex_context_code => p_descr_flex_context_code
425 ,p_effective_date => p_effective_date
426 ,p_segments => l_segments
427 );
428 --
429 END IF;
430 --
431 RETURN(l_segments);
432 --
433 END segments;
434 --
435 -- -----------------------------------------------------------------------------
436 -- |------------------------------< segments_pst >-----------------------------|
437 -- -----------------------------------------------------------------------------
438 FUNCTION segments_pst
439 (p_application_short_name IN fnd_application.application_short_name%TYPE
440 ,p_descriptive_flexfield_name IN fnd_descr_flex_contexts.descriptive_flexfield_name%TYPE
441 ,p_descr_flex_context_code IN fnd_descr_flex_contexts.descriptive_flex_context_code%TYPE
442 ,p_effective_date IN DATE
443 )
444 RETURN t_segments_pst
445 IS
446 --
447 --
448 --
449 CURSOR csr_applications
450 (p_application_short_name IN fnd_application.application_short_name%TYPE
451 )
452 IS
453 SELECT app.application_id
454 FROM fnd_application app
455 WHERE app.application_short_name = p_application_short_name;
456 --
457 -- Local variables
458 --
459 l_segments_pst t_segments_pst;
460 l_application_id fnd_application.application_id%TYPE;
461 l_segments t_segments := t_segments();
462 l_index_number NUMBER;
463 --
464 BEGIN
465 --
466 IF (p_application_short_name = g_application_short_name3)
467 THEN
468 --
469 l_application_id := g_application_id3;
470 --
471 ELSE
472 --
473 OPEN csr_applications
474 (p_application_short_name => p_application_short_name
475 );
476 FETCH csr_applications INTO l_application_id;
477 CLOSE csr_applications;
478 --
479 g_application_short_name3 := p_application_short_name;
480 g_application_id3 := l_application_id;
481 --
482 END IF;
483 --
484 l_segments := segments
485 (p_application_id => l_application_id
486 ,p_descriptive_flexfield_name => p_descriptive_flexfield_name
487 ,p_descr_flex_context_code => p_descr_flex_context_code
488 ,p_effective_date => p_effective_date
489 );
490 --
491 l_index_number := l_segments.FIRST;
492 WHILE (l_index_number IS NOT NULL)
493 LOOP
494 l_segments_pst(l_index_number) := l_segments(l_index_number);
495 l_index_number := l_segments.NEXT(l_index_number);
496 END LOOP;
497 --
498 RETURN(l_segments_pst);
499 --
500 END segments_pst;
501 --
502 END hr_descr_flex_context_info;