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