DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_RI_CONFIG_FND_HR_ENTITY

Source


1 PACKAGE BODY PER_RI_CONFIG_FND_HR_ENTITY AS
2 /* $Header: perrichd.pkb 120.4.12010000.3 2009/09/01 05:56:45 psengupt ship $ */
3 
4   g_config_effective_date       date          := TRUNC(TO_DATE('1951/01/01', 'YYYY/MM/DD'));
5   g_config_effective_end_date   date          := TRUNC(TO_DATE('4712/12/31', 'YYYY/MM/DD'));
6   g_package                     varchar2(30)  := 'per_ri_config_fnd_hr_entity.';
7 
8 
9   /* --------------------------------------------------------------------------
10   -- Name      : create_jobs_no_rv_keyflex
11   -- Purpose   : This procedure creates jobs keyflex structures, segments and
12   --             valuesets if no regional variance are not defined.
13   --             and profiles options assigned to it.
14   -- Arguments : p_configuration_code
15   --
16   -------------------------------------------------------------------------- */
17   PROCEDURE create_jobs_no_rv_keyflex (p_configuration_code in varchar2
18                                       ,p_technical_summary_mode in boolean default FALSE
19                                       ,p_kf_job_no_rv_tab in out nocopy
20                                                per_ri_config_tech_summary.kf_job_no_rv_tab
21                                       ,p_kf_job_no_rv_seg_tab in out nocopy
22                                                per_ri_config_tech_summary.kf_job_no_rv_seg_tab) IS
23 
24   cursor csr_config_job_no_rv (cp_configuration_code in varchar2) IS
25     select job_segment_name,
26            job_segment_type,
27            industry_attribute,
28            CONFIG_SEQUENCE
29       from per_ri_config_job_kf_seg_v
30      where configuration_code = cp_configuration_code
31        and industry_attribute = per_ri_config_main.g_global_fed_job_non_fed_att
32        order by CONFIG_SEQUENCE;
33 
34   l_proc                         varchar2(72) := g_package || 'create_jobs_no_rv_keyflex';
35   l_log_message                  varchar2(360);
36   l_error_message                varchar2(360);
37   l_kf_job_no_rv_count           number(8) := 0;
38   l_kf_job_no_rv_tab             per_ri_config_tech_summary.kf_job_no_rv_tab;
39   l_kf_job_no_rv_seg_count       number(8) := 0;
40   l_kf_job_no_rv_seg_tab         per_ri_config_tech_summary.kf_job_no_rv_seg_tab;
41 
42   l_kf_job_no_rv_valueset_tab    per_ri_config_tech_summary.valueset_tab;
43   l_value_set_tab_count          number(9) := 1;
44 
45   l_job_segment_name             per_ri_config_information.config_information1%type;
46   l_job_segment_type             per_ri_config_information.config_information1%type;
47   l_industry_attribute           per_ri_config_information.config_information1%type;
48   l_jobs_keyflex_number          number(9);
49   l_job_structures_code          fnd_id_flex_structures.id_flex_structure_code%type;
50 
51   l_valueset_name                fnd_flex_value_sets.flex_value_set_name%type;
52   l_jobs_segment_count           number(9);
53   l_jobs_segment_no              number(9);
54   l_jobs_segment_count_fixed     number(9) := 0;
55   l_enterprise_primary_industry  per_ri_config_information.config_information1%type;
56 
57   l_global_job_structure_name   fnd_id_flex_structures.id_flex_structure_code%type;
58 
59   BEGIN
60     hr_utility.set_location('Entering:'|| l_proc, 10);
61 
62     l_global_job_structure_name   :=  per_ri_config_utilities.return_config_entity_name
63                                                       (per_ri_config_main.g_global_job_structure_name);
64     l_enterprise_primary_industry := per_ri_config_utilities.get_ent_primary_industry
65                                                   (p_configuration_code => p_configuration_code);
66 
67     hr_utility.trace('l_enterprise_primary_industry = ' || l_enterprise_primary_industry);
68 
69     -- Create Global Jobs Key flex
70     if NOT (p_technical_summary_mode) then
71       l_jobs_keyflex_number  := per_ri_config_utilities.create_key_flexfield
72                               (p_appl_short_name => 'PER'
73                               ,p_flex_code       => 'JOB'
74                               ,p_structure_code  => l_global_job_structure_name
75                               ,p_structure_title => l_global_job_structure_name
76                               ,p_description     => l_global_job_structure_name
77                                                       || per_ri_config_main.g_description_suffix_string);
78 
79     else
80       p_kf_job_no_rv_tab(l_kf_job_no_rv_count).appl_short_name    := 'PER';
81       p_kf_job_no_rv_tab(l_kf_job_no_rv_count).flex_code          := 'JOB';
82       p_kf_job_no_rv_tab(l_kf_job_no_rv_count).structure_code     := l_global_job_structure_name;
83       p_kf_job_no_rv_tab(l_kf_job_no_rv_count).structure_title    := l_global_job_structure_name;
84       p_kf_job_no_rv_tab(l_kf_job_no_rv_count).description        := l_global_job_structure_name
85                                                              || per_ri_config_main.g_description_suffix_string;
86       l_kf_job_no_rv_count := l_kf_job_no_rv_count + 1 ;
87     end if;
88 
89     hr_utility.set_location(l_proc, 30);
90     l_log_message := 'Created KEYFLEX PER JOB ' || l_global_job_structure_name;
91     per_ri_config_utilities.write_log(p_message => l_log_message);
92 
93     if l_enterprise_primary_industry <> 'US_GOVERNMENT' then
94       hr_utility.set_location(l_proc, 20);
95       -- create segments
96       open csr_config_job_no_rv(p_configuration_code);
97       l_jobs_segment_count := 0;
98       LOOP
99         fetch csr_config_job_no_rv into l_job_segment_name
100                                        ,l_job_segment_type
101                                        ,l_industry_attribute
102                                        ,l_jobs_segment_no;
103 
104         exit when csr_config_job_no_rv%NOTFOUND;
105 
106         --
107         -- create job flex segment
108         --
109         l_jobs_segment_count := csr_config_job_no_rv%ROWCOUNT;
110         if NOT (p_technical_summary_mode) then
111           per_ri_config_utilities.create_flex_segments
112                         (p_appl_short_Name           => 'PER'
113                         ,p_flex_code                 => 'JOB'
114                         ,p_structure_code            => l_global_job_structure_name
115                         ,p_segment_name              => l_job_segment_name
116                         ,p_column_name               => 'SEGMENT' || l_jobs_segment_count
117                         ,p_segment_number            => l_jobs_segment_no --l_jobs_segment_count
118                         ,p_value_set                 => null
119                         ,p_lov_prompt                => l_job_segment_name
120                         ,p_segment_type              => l_job_segment_type
121                         ,p_window_prompt             => l_job_segment_name);
122 
123         else
124           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).appl_short_name  := 'PER';
125           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).flex_code        := 'JOB';
126           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).structure_code   :=  l_global_job_structure_name;
127           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).segment_name     :=  l_job_segment_name;
128           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).column_name      := 'SEGMENT' || l_jobs_segment_count;
129           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).segment_number   :=  l_jobs_segment_no;
130           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).value_set        := null;
131           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).lov_prompt       := l_job_segment_name;
132           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).segment_type     := l_job_segment_name;
133           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).window_prompt    := l_job_segment_name;
134 
135 
136           --create technical summary data for valueset
137           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
138                                  ,p_valueset_type   => l_job_segment_type
139                                  ,p_structure_code  => l_global_job_structure_name
140                                  ,p_segment_name    => l_job_segment_name
141                                  ,p_segment_number  => l_jobs_segment_no --l_jobs_segment_count
142                                  ,p_valueset_tab    => l_kf_job_no_rv_valueset_tab);
143 
144           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_value_set_name
145                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).value_set_name;
146           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_description
147                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).description;
148           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_security_available
149                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).security_available;
150           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_enable_longlist
151                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
152           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_format_type
153                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).format_type;
154           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_maximum_size
155                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).maximum_size;
156           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_precision
157                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).precision;
158           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_numbers_only
159                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).numbers_only;
160           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_uppercase_only
161                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
162           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_right_justify_zero_fill
163                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
164           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_min_value
165                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).min_value;
166           p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_max_value
167                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).max_value;
168 
169           l_kf_job_no_rv_seg_count := l_kf_job_no_rv_seg_count + 1 ;
170 
171         end if;
172           l_log_message := 'Created KEYFLEX SEGMENT : PER JOB ' || l_job_segment_name;
173           per_ri_config_utilities.write_log(p_message => l_log_message);
174       END LOOP;
175       close csr_config_job_no_rv;
176     else
177       hr_utility.set_location(l_proc, 100);
178       hr_utility.trace('Jobs: Industry is US_GOVERNMENT');
179 
180       -- create only federal job segments with specified value segment name valuesets.
181       -- First Segment 'Name' valueset '60 Characters'
182       if NOT (p_technical_summary_mode) then
183       per_ri_config_utilities.create_flex_segments
184                         (p_appl_short_Name           => 'PER'
185                         ,p_flex_code                 => 'JOB'
186                         ,p_structure_code            => l_global_job_structure_name
187                         ,p_segment_name              => 'Name'
188                         ,p_column_name               => 'SEGMENT1'
189                         ,p_segment_number            => 1
190                         ,p_value_set                 => '60 Characters'
191                         ,p_lov_prompt                => 'Name'
192                         ,p_segment_type              => 'Char'
193                         ,p_window_prompt             => 'Name'
194                         ,p_fed_seg_attribute         => 'Y');
195       else
196         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).appl_short_name  := 'PER';
197         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).flex_code        := 'JOB';
198         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).structure_code   :=  l_global_job_structure_name;
199         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).segment_name     :=  'Name';
200         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).column_name      := 'SEGMENT1';
201         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).segment_number   :=  1;
202         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).value_set        := '60 Characters';
203         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).lov_prompt       := 'Name';
204         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).segment_type     := 'Char';
205         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).window_prompt    := 'Name';
206 
207 
208         --create technical summary data for valueset
209         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => '60 Characters'
210                                  ,p_valueset_type => 'Char'
211                                  ,p_structure_code  => l_global_job_structure_name
212                                  ,p_segment_name    => 'Name'
213                                  ,p_segment_number  => 1
214                                  ,p_valueset_tab  => l_kf_job_no_rv_valueset_tab);
215 
216         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_value_set_name
217                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).value_set_name;
218         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_description
219                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).description;
220         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_security_available
221                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).security_available;
222         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_enable_longlist
223                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
224         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_format_type
225                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).format_type;
226         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_maximum_size
227                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).maximum_size;
228         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_precision
229                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).precision;
230         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_numbers_only
231                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).numbers_only;
232         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_uppercase_only
233                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
234         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_right_justify_zero_fill
235                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
236         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_min_value
237                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).min_value;
238         p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_max_value
239                          := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).max_value;
240         l_kf_job_no_rv_seg_count := l_kf_job_no_rv_seg_count + 1 ;
241     end if;
242 
243       open csr_config_job_no_rv(p_configuration_code);
244 
245       --
246       -- one segment is always defined for fedral
247       --
248       l_jobs_segment_count_fixed := per_ri_config_main.g_global_fed_job_seg_count;
249       l_jobs_segment_count       := 0;
250       LOOP
251         fetch csr_config_job_no_rv into l_job_segment_name
252                                        ,l_job_segment_type
253                                        ,l_industry_attribute
254                                        ,l_jobs_segment_no;
255         exit when csr_config_job_no_rv%NOTFOUND;
256         hr_utility.trace('l_jobs_segment_count = ' || to_char(l_jobs_segment_count));
257 
258         if l_industry_attribute = per_ri_config_main.g_global_fed_job_non_fed_att then
259 
260           l_jobs_segment_count := l_jobs_segment_count_fixed + csr_config_job_no_rv%ROWCOUNT;
261 
262 
263           hr_utility.trace('l_jobs_segment_count = ' || to_char(l_jobs_segment_count));
264           if NOT (p_technical_summary_mode) then
265             per_ri_config_utilities.create_flex_segments
266                           (p_appl_short_Name           => 'PER'
267                           ,p_flex_code                 => 'JOB'
268                           ,p_structure_code            => l_global_job_structure_name
269                           ,p_segment_name              => l_job_segment_name
270                           ,p_column_name               => 'SEGMENT' || l_jobs_segment_count
271                           ,p_segment_number            => l_jobs_segment_no --l_jobs_segment_count
272                           ,p_value_set                 => null
273                           ,p_lov_prompt                => l_job_segment_name
274                           ,p_segment_type              => l_job_segment_type
275                           ,p_window_prompt             => l_job_segment_name);
276 
277           else
278             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).appl_short_name  := 'PER';
279             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).flex_code        := 'JOB';
280             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).structure_code   :=  l_global_job_structure_name;
281             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).segment_name     :=  l_job_segment_name;
282             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).column_name      := 'SEGMENT' || l_jobs_segment_count;
283             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).segment_number   :=  l_jobs_segment_no;
284             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).value_set        := null;
285             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).lov_prompt       := l_job_segment_name;
286             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).segment_type     := l_job_segment_type;
287             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).window_prompt    := l_job_segment_name;
288 
289             --create technical summary data for valueset
290             per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
291                                    ,p_valueset_type   => l_job_segment_type
292                                    ,p_structure_code  => l_global_job_structure_name
293                                    ,p_segment_name    => l_job_segment_name
294                                    ,p_segment_number  => l_jobs_segment_no --l_jobs_segment_count
295                                    ,p_valueset_tab    => l_kf_job_no_rv_valueset_tab);
296 
297             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_value_set_name
298                            := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).value_set_name;
299             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_description
300                            := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).description;
301             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_security_available
302                            := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).security_available;
303             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_enable_longlist
304                            := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
305             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_format_type
306                            := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).format_type;
307             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_maximum_size
308                            := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).maximum_size;
309             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_precision
310                            := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).precision;
311             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_numbers_only
312                            := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).numbers_only;
313             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_uppercase_only
314                            := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
315             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_right_justify_zero_fill
316                            := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
317             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_min_value
318                            := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).min_value;
319             p_kf_job_no_rv_seg_tab(l_kf_job_no_rv_seg_count).vs_max_value
320                            := l_kf_job_no_rv_valueset_tab(l_value_set_tab_count).max_value;
321             l_kf_job_no_rv_seg_count := l_kf_job_no_rv_seg_count + 1 ;
322           end if;
323 
324           l_log_message := 'Created KEYFLEX SEGMENT : PER JOB ' || l_job_segment_name;
325           per_ri_config_utilities.write_log(p_message => l_log_message);
326         end if;
327       END LOOP;
328       close csr_config_job_no_rv;
329 
330     end if;
331     --
332     -- freeze and compile this flexfield
333     --
334     if NOT (p_technical_summary_mode) then
335       per_ri_config_utilities.freeze_and_compile_flexfield
336                        (p_appl_short_Name           => 'PER'
337                        ,p_flex_code                 => 'JOB'
338                        ,p_structure_code            => l_global_job_structure_name);
339     end if;
340 
341     hr_utility.set_location(' Leaving:'|| l_proc, 100);
342 
343   EXCEPTION
344     when others then
345       l_error_message := 'Error in ' || l_proc;
346       hr_utility.trace(l_error_message || '-' || sqlerrm);
347       hr_utility.set_location(' Leaving:'|| l_proc, 500);
348       hr_utility.raise_error;
349 
350   END create_jobs_no_rv_keyflex;
351 
352   /* --------------------------------------------------------------------------
353   -- Name      : create_positions_no_rv_keyflex
354   -- Purpose   : This procedure creates positions keyflex structures, segments and
355   --             valuesets if no regional variance are not defined.
356   --             and profiles options assigned to it.
357   -- Arguments : p_configuration_code
358   --
359   -------------------------------------------------------------------------- */
360   PROCEDURE create_positions_no_rv_keyflex (p_configuration_code in varchar2
361                                            ,p_technical_summary_mode in boolean default FALSE
362                                            ,p_kf_pos_no_rv_tab in out nocopy
363                                                per_ri_config_tech_summary.kf_pos_no_rv_tab
364                                       ,p_kf_pos_no_rv_seg_tab in out nocopy
365                                                per_ri_config_tech_summary.kf_pos_no_rv_seg_tab) IS
366 
367   cursor csr_config_position_no_rv (cp_configuration_code in varchar2) IS
368    select position_segment_name,
369           position_segment_type,
370           industry_attribute,
371           CONFIG_SEQUENCE
372       from per_ri_config_pos_kf_seg_v
373      where configuration_code = cp_configuration_code
374        and industry_attribute = per_ri_config_main.g_global_fed_pos_non_fed_att
375        order by CONFIG_SEQUENCE;
376 
377   cursor csr_config_position_no_rv_cnt (cp_configuration_code in varchar2) IS
378    select count(*)
379       from per_ri_config_pos_kf_seg_v
380      where configuration_code = cp_configuration_code
381        and industry_attribute = per_ri_config_main.g_global_fed_pos_non_fed_att;
382 
383   l_proc                         varchar2(72) := g_package || 'create_positions_no_rv_keyflex';
384   l_log_message                  varchar2(360);
385   l_error_message                 varchar2(360);
386 
387   l_kf_pos_no_rv_count           number(8) := 0;
388   l_kf_pos_no_rv_tab             per_ri_config_tech_summary.kf_pos_no_rv_tab;
389   l_kf_pos_no_rv_seg_count       number(8) := 0;
390   l_kf_pos_no_rv_seg_tab         per_ri_config_tech_summary.kf_pos_no_rv_seg_tab;
391 
392   l_kf_pos_no_rv_valueset_tab    per_ri_config_tech_summary.valueset_tab;
393   l_value_set_tab_count          number(9) := 1;
394 
395   l_pos_segment_name             per_ri_config_information.config_information1%type;
396   l_pos_segment_type             per_ri_config_information.config_information1%type;
397   l_industry_attribute           per_ri_config_information.config_information1%type;
398   l_pos_keyflex_number           number(9);
399   l_pos_structures_code          fnd_id_flex_structures.id_flex_structure_code%type;
400 
401   l_valueset_name                fnd_flex_value_sets.flex_value_set_name%type;
402   l_pos_segment_count            number(9);
403   l_pos_segment_no               number(9);
404   l_pos_segment_count_fixed      number(9);
405   l_position_no_rv_no_seg_count  number(9);
406   l_enterprise_primary_industry  per_ri_config_information.config_information1%type;
407   l_global_pos_structure_name    fnd_id_flex_structures.id_flex_structure_code%type;
408 
409   BEGIN
410     hr_utility.set_location('Entering:'|| l_proc, 10);
411 
412     l_global_pos_structure_name := per_ri_config_utilities.return_config_entity_name
413                                      (per_ri_config_main.g_global_pos_structure_name);
414 
415     l_enterprise_primary_industry := per_ri_config_utilities.get_ent_primary_industry
416                                                   (p_configuration_code => p_configuration_code);
417 
418     hr_utility.trace('l_enterprise_primary_industry = ' || l_enterprise_primary_industry);
419 
420     -- Create Global Position Key flex
421     if NOT (p_technical_summary_mode) then
422       l_pos_keyflex_number  := per_ri_config_utilities.create_key_flexfield
423                               (p_appl_short_Name => 'PER'
424                               ,p_flex_code       => 'POS'
425                               ,p_structure_code  => l_global_pos_structure_name
426                               ,p_structure_title => l_global_pos_structure_name
427                               ,p_description     => l_global_pos_structure_name
428                                                            || per_ri_config_main.g_description_suffix_string);
429     else
430       p_kf_pos_no_rv_tab(l_kf_pos_no_rv_count).appl_short_name    := 'PER';
431       p_kf_pos_no_rv_tab(l_kf_pos_no_rv_count).flex_code          := 'POS';
432       p_kf_pos_no_rv_tab(l_kf_pos_no_rv_count).structure_code     := l_global_pos_structure_name;
433       p_kf_pos_no_rv_tab(l_kf_pos_no_rv_count).structure_title    := l_global_pos_structure_name;
434       p_kf_pos_no_rv_tab(l_kf_pos_no_rv_count).description        := l_global_pos_structure_name
435                                                               || per_ri_config_main.g_description_suffix_string;
436       l_kf_pos_no_rv_count := l_kf_pos_no_rv_count + 1 ;
437     end if;
438 
439 
440     hr_utility.set_location(l_proc, 30);
441     l_log_message := 'Created KEYFLEX PER POS ' || l_global_pos_structure_name;
442     per_ri_config_utilities.write_log(p_message => l_log_message);
443 
444     if l_enterprise_primary_industry <> 'US_GOVERNMENT' then
445       hr_utility.set_location(l_proc, 20);
446 
447       -- create segments
448       open csr_config_position_no_rv(p_configuration_code);
449       l_pos_segment_count := 0;
450       LOOP
451         fetch csr_config_position_no_rv into l_pos_segment_name
452                                             ,l_pos_segment_type
453                                             ,l_industry_attribute
454                                             ,l_pos_segment_no;
455 
456         exit when csr_config_position_no_rv%NOTFOUND;
457 
458         -- Create Jobs Key Flex Segments
459         l_pos_segment_count := csr_config_position_no_rv%ROWCOUNT;
460         if NOT (p_technical_summary_mode) then
461           per_ri_config_utilities.create_flex_segments
462                         (p_appl_short_Name           => 'PER'
463                         ,p_flex_code                 => 'POS'
464                         ,p_structure_code            => l_global_pos_structure_name
465                         ,p_segment_name              => l_pos_segment_name
466                         ,p_column_name               => 'SEGMENT' || l_pos_segment_count
467                         ,p_segment_number            => l_pos_segment_no
468                         ,p_value_set                 => null
469                         ,p_lov_prompt                => l_pos_segment_name
470                         ,p_segment_type              => l_pos_segment_type
471                         ,p_window_prompt             => l_pos_segment_name);
472         else
473           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).appl_short_name  := 'PER';
474           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).flex_code        := 'POS';
475           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).structure_code   :=  l_global_pos_structure_name;
476           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_name     :=  l_pos_segment_name;
477           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).column_name      := 'SEGMENT' || l_pos_segment_count;
478           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_number   :=  l_pos_segment_no;
479           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).value_set        := null;
480           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).lov_prompt       := l_pos_segment_name;
481           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_type     := l_pos_segment_type;
482           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).window_prompt    := l_pos_segment_name;
483 
484           --create technical summary data for valueset
485           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
486                                  ,p_valueset_type   => l_pos_segment_type
487                                  ,p_structure_code  => l_global_pos_structure_name
488                                  ,p_segment_name    => l_pos_segment_name
489                                  ,p_segment_number  => l_pos_segment_no
490                                  ,p_valueset_tab    => l_kf_pos_no_rv_valueset_tab);
491 
492           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_value_set_name
493                          := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).value_set_name;
494           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_description
495                          := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).description;
496           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_security_available
497                          := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).security_available;
498           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_enable_longlist
499                          := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
500           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_format_type
501                          := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).format_type;
502           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_maximum_size
503                          := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).maximum_size;
504           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_precision
505                          := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).precision;
506           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_numbers_only
507                          := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).numbers_only;
508           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_uppercase_only
509                          := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
510           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_right_justify_zero_fill
511                          := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
512           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_min_value
513                          := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).min_value;
514           p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_max_value
515                          := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).max_value;
516           l_kf_pos_no_rv_seg_count := l_kf_pos_no_rv_seg_count + 1 ;
517         end if;
518 
519         per_ri_config_utilities.write_log(p_message => 'Created Global Position Key Flex Segment' || l_pos_segment_name);
520         hr_utility.trace('Created Position Key Flex NO RV Segment: ' ||  l_pos_segment_name);
521       END LOOP;
522       --
523       -- freeze and compile this flexfield
524       --
525       if NOT (p_technical_summary_mode) then
526         per_ri_config_utilities.freeze_and_compile_flexfield
527                        (p_appl_short_Name           => 'PER'
528                        ,p_flex_code                 => 'POS'
529                        ,p_structure_code            => l_global_pos_structure_name);
530       end if;
531     else
532       hr_utility.set_location(l_proc, 100);
533       hr_utility.trace('Positions: Industry is US_GOVERNMENT');
534 
535       -- create only federal job segments with specified value segment name valuesets.
536       -- First Segment
537       if NOT (p_technical_summary_mode) then
538       per_ri_config_utilities.create_flex_segments
539                         (p_appl_short_Name           => 'PER'
540                         ,p_flex_code                 => 'POS'
541                         ,p_structure_code            => l_global_pos_structure_name
542                         ,p_segment_name              => 'Position Title'
543                         ,p_column_name               => 'SEGMENT1'
544                         ,p_segment_number            => 1
545                         ,p_value_set                 => 'GHR_US_POSITION_TITLE'
546                         ,p_lov_prompt                => 'Position Title'
547                         ,p_segment_type              => 'Char'
548                         ,p_window_prompt             => 'Position Title'
549                         ,p_fed_seg_attribute         => 'Y');
550 
551       else
552         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).appl_short_name  := 'PER';
553         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).flex_code        := 'POS';
554         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).structure_code   :=  l_global_pos_structure_name;
555         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_name     :=  'Position Title';
556         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).column_name      :=  'SEGMENT1';
557         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_number   :=  1;
558         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).value_set        := 'GHR_US_POSITION_TITLE';
559         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).lov_prompt       := 'Position Title';
560         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_type     := 'Char';
561         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).window_prompt    := 'Position Title';
562 
563         --create technical summary data for valueset
564         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_POSITION_TITLE'
565                                ,p_valueset_type   => 'Char'
566                                ,p_structure_code  => l_global_pos_structure_name
567                                ,p_segment_name    => 'Position Title'
568                                ,p_segment_number  => 1
569                                ,p_valueset_tab    => l_kf_pos_no_rv_valueset_tab);
570 
571         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_value_set_name
572                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).value_set_name;
573         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_description
574                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).description;
575         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_security_available
576                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).security_available;
577         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_enable_longlist
578                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
579         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_format_type
580                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).format_type;
581         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_maximum_size
582                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).maximum_size;
583         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_precision
584                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).precision;
585         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_numbers_only
586                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).numbers_only;
587         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_uppercase_only
588                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
589         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_right_justify_zero_fill
590                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
591         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_min_value
592                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).min_value;
593         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_max_value
594                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).max_value;
595         l_kf_pos_no_rv_seg_count := l_kf_pos_no_rv_seg_count + 1 ;
596       end if;
597 
598 
599       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Position Title';
600       per_ri_config_utilities.write_log(p_message => l_log_message);
601 
602       -- Second Segment
603       if NOT (p_technical_summary_mode) then
604       per_ri_config_utilities.create_flex_segments
605                         (p_appl_short_Name           => 'PER'
606                         ,p_flex_code                 => 'POS'
607                         ,p_structure_code            => l_global_pos_structure_name
608                         ,p_segment_name              => 'Description'
609                         ,p_column_name               => 'SEGMENT2'
610                         ,p_segment_number            => 2
611                         ,p_value_set                 => 'GHR_US_POS_DESC_NUM'
612                         ,p_lov_prompt                => 'Description'
613                         ,p_segment_type              => 'Char'
614                         ,p_window_prompt             => 'Description'
615                         ,p_fed_seg_attribute         => 'Y');
616       else
617         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).appl_short_name  := 'PER';
618         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).flex_code        := 'POS';
619         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).structure_code   :=  l_global_pos_structure_name;
620         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_name     :=  'Description';
621         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).column_name      :=  'SEGMENT2';
622         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_number   :=  2;
623         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).value_set        := 'GHR_US_POS_DESC_NUM';
624         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).lov_prompt       := 'Description';
625         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_type     := 'Char';
626         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).window_prompt    := 'Description';
627 
628         --create technical summary data for valueset
629         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_POS_DESC_NUM'
630                                ,p_valueset_type   => 'Char'
631                                ,p_structure_code  => l_global_pos_structure_name
632                                ,p_segment_name    => 'Description'
633                                ,p_segment_number  => 2
634                                ,p_valueset_tab    => l_kf_pos_no_rv_valueset_tab);
635 
636         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_value_set_name
637                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).value_set_name;
638         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_description
639                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).description;
640         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_security_available
641                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).security_available;
642         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_enable_longlist
643                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
644         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_format_type
645                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).format_type;
646         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_maximum_size
647                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).maximum_size;
648         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_precision
649                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).precision;
650         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_numbers_only
651                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).numbers_only;
652         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_uppercase_only
653                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
654         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_right_justify_zero_fill
655                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
656         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_min_value
657                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).min_value;
658         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_max_value
659                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).max_value;
660         l_kf_pos_no_rv_seg_count := l_kf_pos_no_rv_seg_count + 1 ;
661       end if;
662 
663       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Description';
664       per_ri_config_utilities.write_log(p_message => l_log_message);
665 
666       -- Third Segment
667       if NOT (p_technical_summary_mode) then
668       per_ri_config_utilities.create_flex_segments
669                         (p_appl_short_Name           => 'PER'
670                         ,p_flex_code                 => 'POS'
671                         ,p_structure_code            => l_global_pos_structure_name
672                         ,p_segment_name              => 'Sequence'
673                         ,p_column_name               => 'SEGMENT3'
674                         ,p_segment_number            => 3
675                         ,p_value_set                 => 'GHR_US_SEQUENCE_NUM'
676                         ,p_lov_prompt                => 'Sequence'
677                         ,p_segment_type              => 'Char'
678                         ,p_window_prompt             => 'Sequence'
679                         ,p_fed_seg_attribute         => 'Y');
680 
681       else
682         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).appl_short_name  := 'PER';
683         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).flex_code        := 'POS';
684         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).structure_code   :=  l_global_pos_structure_name;
685         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_name     :=  'Sequence';
686         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).column_name      :=  'SEGMENT3';
687         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_number   :=  3;
688         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).value_set        := 'GHR_US_POSITION_TITLE';
689         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).lov_prompt       := 'Sequence';
690         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_type     := 'Char';
691         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).window_prompt    := 'Sequence';
692 
693         --create technical summary data for valueset
694         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_POSITION_TITLE'
695                                ,p_valueset_type   => 'Char'
696                                ,p_structure_code  => l_global_pos_structure_name
697                                ,p_segment_name    => 'Sequence'
698                                ,p_segment_number  => 3
699                                ,p_valueset_tab    => l_kf_pos_no_rv_valueset_tab);
700 
701         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_value_set_name
702                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).value_set_name;
703         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_description
704                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).description;
705         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_security_available
706                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).security_available;
707         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_enable_longlist
708                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
709         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_format_type
710                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).format_type;
711         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_maximum_size
712                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).maximum_size;
713         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_precision
714                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).precision;
715         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_numbers_only
716                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).numbers_only;
717         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_uppercase_only
718                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
719         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_right_justify_zero_fill
720                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
721         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_min_value
722                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).min_value;
723         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_max_value
724                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).max_value;
725         l_kf_pos_no_rv_seg_count := l_kf_pos_no_rv_seg_count + 1 ;
726       end if;
727 
728       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Sequence';
729       per_ri_config_utilities.write_log(p_message => l_log_message);
730       -- Fourth Segment
731       if NOT (p_technical_summary_mode) then
732       per_ri_config_utilities.create_flex_segments
733                         (p_appl_short_Name           => 'PER'
734                         ,p_flex_code                 => 'POS'
735                         ,p_structure_code            => l_global_pos_structure_name
736                         ,p_segment_name              => 'Agency Code'
737                         ,p_column_name               => 'SEGMENT4'
738                         ,p_segment_number            => 4
739                         ,p_value_set                 => 'GHR_US_AGENCY_CODE'
740                         ,p_lov_prompt                => 'Agency Code'
741                         ,p_segment_type              => 'Char'
742                         ,p_window_prompt             => 'Agency Code'
743                         ,p_fed_seg_attribute         => 'Y');
744       else
745         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).appl_short_name  := 'PER';
746         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).flex_code        := 'POS';
747         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).structure_code   :=  l_global_pos_structure_name;
748         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_name     :=  'Agency Code';
749         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).column_name      :=  'SEGMENT4';
750         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_number   :=  4;
751         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).value_set        := 'GHR_US_AGENCY_CODE';
752         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).lov_prompt       := 'Agency Code';
753         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_type     := 'Char';
754         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).window_prompt    := 'Agency Code';
755 
756         --create technical summary data for valueset
757         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_AGENCY_CODE'
758                                ,p_valueset_type   => 'Char'
759                                ,p_structure_code  => l_global_pos_structure_name
760                                ,p_segment_name    => 'Agency Code'
761                                ,p_segment_number  => 4
762                                ,p_valueset_tab    => l_kf_pos_no_rv_valueset_tab);
763 
764         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_value_set_name
765                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).value_set_name;
766         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_description
767                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).description;
768         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_security_available
769                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).security_available;
770         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_enable_longlist
771                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
772         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_format_type
773                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).format_type;
774         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_maximum_size
775                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).maximum_size;
776         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_precision
777                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).precision;
778         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_numbers_only
779                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).numbers_only;
780         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_uppercase_only
781                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
782         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_right_justify_zero_fill
783                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
784         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_min_value
785                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).min_value;
786         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_max_value
787                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).max_value;
788         l_kf_pos_no_rv_seg_count := l_kf_pos_no_rv_seg_count + 1 ;
789       end if;
790 
791 
792       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Agency Code';
793       per_ri_config_utilities.write_log(p_message => l_log_message);
794 
795       open csr_config_position_no_rv(p_configuration_code);
796 
797       --
798       -- four segment is always defined for fedral
799       --
800 
801       l_pos_segment_count_fixed := per_ri_config_main.g_global_fed_pos_seg_count;
802       l_pos_segment_count       := 0;
803       LOOP
804         fetch csr_config_position_no_rv into l_pos_segment_name
805                                        ,l_pos_segment_type
806                                        ,l_industry_attribute
807                                        ,l_pos_segment_no;
808         exit when csr_config_position_no_rv%NOTFOUND;
809         hr_utility.trace('l_pos_segment_count = ' || to_char(l_pos_segment_count));
810 
811         if l_industry_attribute = per_ri_config_main.g_global_fed_pos_non_fed_att then
812 
813           l_pos_segment_count := l_pos_segment_count_fixed + csr_config_position_no_rv%ROWCOUNT;
814 
815 
816           hr_utility.trace('l_pos_segment_count = ' || to_char(l_pos_segment_count));
817 
818           if NOT (p_technical_summary_mode) then
819           per_ri_config_utilities.create_flex_segments
820                                    (p_appl_short_Name           => 'PER'
821                                    ,p_flex_code                 => 'POS'
822                                    ,p_structure_code            => l_global_pos_structure_name
823                                    ,p_segment_name              => l_pos_segment_name
824                                    ,p_column_name               => 'SEGMENT' || l_pos_segment_count
825                                    ,p_segment_number            => l_pos_segment_no
826                                    ,p_value_set                 => null
827                                    ,p_lov_prompt                => l_pos_segment_name
828                                    ,p_segment_type              => l_pos_segment_type
829                                    ,p_window_prompt             => l_pos_segment_name);
830       else
831         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).appl_short_name  := 'PER';
832         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).flex_code        := 'POS';
833         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).structure_code   :=  l_global_pos_structure_name;
834         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_name     :=  l_pos_segment_name;
835         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).column_name      :=  'SEGMENT' || l_pos_segment_count;
836         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_number   :=  l_pos_segment_no;
837         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).value_set        :=  null;
838         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).lov_prompt       :=  l_pos_segment_name;
839         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_type     :=  l_pos_segment_name;
840         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).window_prompt    :=  l_pos_segment_name;
841 
842         --create technical summary data for valueset
843         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
844                                ,p_valueset_type   => l_pos_segment_type
845                                ,p_structure_code  => l_global_pos_structure_name
846                                ,p_segment_name    => l_pos_segment_name
847                                ,p_segment_number  => l_pos_segment_no
848                                ,p_valueset_tab    => l_kf_pos_no_rv_valueset_tab);
849 
850         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_value_set_name
851                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).value_set_name;
852         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_description
853                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).description;
854         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_security_available
855                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).security_available;
856         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_enable_longlist
857                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
858         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_format_type
859                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).format_type;
860         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_maximum_size
861                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).maximum_size;
862         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_precision
863                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).precision;
864         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_numbers_only
865                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).numbers_only;
866         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_uppercase_only
867                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
868         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_right_justify_zero_fill
869                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
870         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_min_value
871                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).min_value;
872         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_max_value
873                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).max_value;
874         l_kf_pos_no_rv_seg_count := l_kf_pos_no_rv_seg_count + 1 ;
875       end if;
876 
877           l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || l_pos_segment_name;
878           per_ri_config_utilities.write_log(p_message => l_log_message);
879         end if;
880       END LOOP;
881       close csr_config_position_no_rv;
882 
883       --
884       -- freeze and compile this flexfield
885       --
886       if NOT (p_technical_summary_mode) then
887       per_ri_config_utilities.freeze_and_compile_flexfield
888                        (p_appl_short_Name           => 'PER'
889                        ,p_flex_code                 => 'POS'
890                        ,p_structure_code            => l_global_pos_structure_name);
891       end if;
892     end if;
893 
894     --
895     -- when no positions are defined, attach default segments to it.
896     --
897     open csr_config_position_no_rv_cnt(p_configuration_code);
898     fetch csr_config_position_no_rv_cnt into l_position_no_rv_no_seg_count;
899 
900     hr_utility.trace('l_position_no_rv_no_seg_count = ' || l_position_no_rv_no_seg_count);
901     if l_position_no_rv_no_seg_count = 0 then
902       hr_utility.trace('Only Jobs are defined');
903       -- In case when no positions are defined
904       -- Attach default segments to it.
905       -- FED case always Jobs and Positions defined.
906       hr_utility.set_location(l_proc, 110);
907 
908        -- Create Position Key Flex Segments
909        if NOT (p_technical_summary_mode) then
910        per_ri_config_utilities.create_flex_segments
911                        (p_appl_short_Name           => 'PER'
912                        ,p_flex_code                 => 'POS'
913                        ,p_structure_code            => l_global_pos_structure_name
914                        ,p_segment_name              => 'Position Name'
915                        ,p_column_name               => 'SEGMENT1'
916                        ,p_segment_number            => 1
917                        ,p_value_set                 => null
918                        ,p_lov_prompt                => 'Position Name'
919                       ,p_window_prompt             => 'Position Name');
920       else
921         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).appl_short_name  := 'PER';
922         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).flex_code        := 'POS';
923         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).structure_code   :=  l_global_pos_structure_name;
924         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_name     :=  'Position Name';
925         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).column_name      :=  'SEGMENT1';
926         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_number   :=  1;
927         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).value_set        := 'GHR_US_POSITION_TITLE';
928         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).lov_prompt       := 'Position Name';
929         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).segment_type     :=  null;
930         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).window_prompt    := 'Position Name';
931 
932         --create technical summary data for valueset
933         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_POSITION_TITLE'
934                                ,p_valueset_type   => null
935                                ,p_structure_code  => l_global_pos_structure_name
936                                ,p_segment_name    => 'Position Name'
937                                ,p_segment_number  => 1
938                                ,p_valueset_tab    => l_kf_pos_no_rv_valueset_tab);
939 
940         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_value_set_name
941                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).value_set_name;
942         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_description
943                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).description;
944         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_security_available
945                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).security_available;
946         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_enable_longlist
947                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
948         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_format_type
949                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).format_type;
950         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_maximum_size
951                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).maximum_size;
952         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_precision
953                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).precision;
954         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_numbers_only
955                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).numbers_only;
956         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_uppercase_only
957                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
958         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_right_justify_zero_fill
959                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
960         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_min_value
961                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).min_value;
962         p_kf_pos_no_rv_seg_tab(l_kf_pos_no_rv_seg_count).vs_max_value
963                        := l_kf_pos_no_rv_valueset_tab(l_value_set_tab_count).max_value;
964         l_kf_pos_no_rv_seg_count := l_kf_pos_no_rv_seg_count + 1 ;
965       end if;
966 
967       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || per_ri_config_main.g_global_pos_structure_name;
968       per_ri_config_utilities.write_log(p_message => l_log_message);
969       --
970       -- freeze and compile this flexfield
971       --
972       if NOT (p_technical_summary_mode) then
973         per_ri_config_utilities.freeze_and_compile_flexfield
974                        (p_appl_short_Name           => 'PER'
975                        ,p_flex_code                 => 'POS'
976                        ,p_structure_code            => l_global_pos_structure_name);
977       end if;
978     end if;
979 
980     hr_utility.set_location(' Leaving:'|| l_proc, 40);
981 
982   EXCEPTION
983     when others then
984       l_error_message := 'Error in ' || l_proc;
985       hr_utility.trace(l_error_message || '-' || sqlerrm);
986       hr_utility.set_location(' Leaving:'|| l_proc, 500);
987       hr_utility.raise_error;
988 
989 
990   END create_positions_no_rv_keyflex;
991 
992   /* --------------------------------------------------------------------------
993   -- Name      : create_grades_no_rv_keyflex
994   -- Purpose   : This procedure creates jobs keyflex structures, segments and
995   --             valuesets if no regional variance are not defined.
996   --             and profiles options assigned to it.
997   -- Arguments : p_configuration_code
998   --
999   -------------------------------------------------------------------------- */
1000   PROCEDURE create_grades_no_rv_keyflex (p_configuration_code in varchar2
1001                                         ,p_technical_summary_mode in boolean default FALSE
1002                                         ,p_kf_grd_no_rv_tab in out nocopy
1003                                                per_ri_config_tech_summary.kf_grd_no_rv_tab
1004                                         ,p_kf_grd_no_rv_seg_tab in out nocopy
1005                                                per_ri_config_tech_summary.kf_grd_no_rv_seg_tab) IS
1006 
1007   cursor csr_config_grade_no_rv (cp_configuration_code in varchar2) IS
1008     select grade_segment_name,
1009            grade_segment_type,
1010            industry_attribute,
1011            CONFIG_SEQUENCE
1012       from per_ri_config_grade_kf_seg_v
1013      where configuration_code = cp_configuration_code
1014        and industry_attribute = per_ri_config_main.g_global_fed_grd_non_fed_att
1015        order by CONFIG_SEQUENCE;
1016 
1017   l_proc                         varchar2(72) := g_package || 'create_grades_no_rv_keyflex';
1018   l_log_message                  varchar2(360);
1019   l_error_message                varchar2(360);
1020   l_kf_grd_no_rv_count           number(8) := 0;
1021   l_kf_grd_no_rv_tab             per_ri_config_tech_summary.kf_grd_no_rv_tab;
1022 
1023   l_kf_grd_no_rv_seg_count       number(8) := 0;
1024   l_kf_grd_no_rv_seg_tab         per_ri_config_tech_summary.kf_grd_no_rv_seg_tab;
1025 
1026   l_kf_grd_no_rv_valueset_tab    per_ri_config_tech_summary.valueset_tab;
1027   l_value_set_tab_count          number(9) := 1;
1028 
1029   l_grade_segment_name           per_ri_config_information.config_information1%type;
1030   l_grade_segment_type           per_ri_config_information.config_information1%type;
1031   l_industry_attribute           per_ri_config_information.config_information1%type;
1032   l_grade_keyflex_number         number(9);
1033   l_grade_structures_code        fnd_id_flex_structures.id_flex_structure_code%type;
1034 
1035   l_grade_segment_count          number(9) := 0;
1036   l_grade_segment_no             number(9) := 0;
1037   l_grade_segment_count_fixed    number(9) := 0;
1038 
1039   l_enterprise_primary_industry  per_ri_config_information.config_information1%type;
1040 
1041   l_global_grd_structure_name    fnd_id_flex_structures.id_flex_structure_code%type;
1042 
1043   BEGIN
1044 
1045     hr_utility.set_location('Entering:'|| l_proc, 10);
1046 
1047     l_enterprise_primary_industry := per_ri_config_utilities.get_ent_primary_industry
1048                                                   (p_configuration_code => p_configuration_code);
1049     hr_utility.trace('l_enterprise_primary_industry = ' || l_enterprise_primary_industry);
1050 
1051     l_global_grd_structure_name   :=  per_ri_config_utilities.return_config_entity_name
1052                                                       (per_ri_config_main.g_global_grd_structure_name);
1053     if l_enterprise_primary_industry <> 'US_GOVERNMENT' then
1054       hr_utility.set_location(l_proc, 20);
1055       -- Create Global Grades Key flex
1056       if NOT (p_technical_summary_mode) then
1057         l_grade_keyflex_number  := per_ri_config_utilities.create_key_flexfield
1058                                 (p_appl_short_Name => 'PER'
1059                                 ,p_flex_code       => 'GRD'
1060                                 ,p_structure_code  => l_global_grd_structure_name
1061                                 ,p_structure_title => l_global_grd_structure_name
1062                                 ,p_description     => l_global_grd_structure_name
1063                                                              || per_ri_config_main.g_description_suffix_string);
1064       else
1065         p_kf_grd_no_rv_tab(l_kf_grd_no_rv_count).appl_short_name    := 'PER';
1066         p_kf_grd_no_rv_tab(l_kf_grd_no_rv_count).flex_code          := 'GRD';
1067         p_kf_grd_no_rv_tab(l_kf_grd_no_rv_count).structure_code     := l_global_grd_structure_name;
1068         p_kf_grd_no_rv_tab(l_kf_grd_no_rv_count).structure_title    := l_global_grd_structure_name;
1069         p_kf_grd_no_rv_tab(l_kf_grd_no_rv_count).description        := l_global_grd_structure_name
1070                                                              || per_ri_config_main.g_description_suffix_string;
1071         l_kf_grd_no_rv_count := l_kf_grd_no_rv_count + 1 ;
1072       end if;
1073 
1074 
1075       hr_utility.set_location(l_proc, 30);
1076       l_log_message := 'Created KEYFLEX PER GRD ' || l_global_grd_structure_name;
1077       per_ri_config_utilities.write_log(p_message => l_log_message);
1078 
1079       -- create segments
1080       open csr_config_grade_no_rv(p_configuration_code);
1081       l_grade_segment_count := 0;
1082       hr_utility.set_location(l_proc, 40);
1083       LOOP
1084         fetch csr_config_grade_no_rv into l_grade_segment_name
1085                                          ,l_grade_segment_type
1086                                          ,l_industry_attribute
1087                                          ,l_grade_segment_no;
1088         exit when csr_config_grade_no_rv%NOTFOUND;
1089 
1090         -- Create Jobs Key Flex Segments
1091         l_grade_segment_count := csr_config_grade_no_rv%ROWCOUNT;
1092        if NOT (p_technical_summary_mode) then
1093         per_ri_config_utilities.create_flex_segments
1094                         (p_appl_short_Name           => 'PER'
1095                         ,p_flex_code                 => 'GRD'
1096                         ,p_structure_code            => l_global_grd_structure_name
1097                         ,p_segment_name              => l_grade_segment_name
1098                         ,p_column_name               => 'SEGMENT' || l_grade_segment_count
1099                         ,p_segment_number            => l_grade_segment_no
1100                         ,p_value_set                 => null
1101                         ,p_lov_prompt                => l_grade_segment_name
1102                         ,p_segment_type              => l_grade_segment_type
1103                         ,p_window_prompt             => l_grade_segment_name);
1104 
1105         else
1106           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).appl_short_name  := 'PER';
1107           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).flex_code        := 'GRD';
1108           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).structure_code   :=  l_global_grd_structure_name;
1109           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).segment_name     :=  l_grade_segment_name;
1110           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).column_name      := 'SEGMENT' || l_grade_segment_count;
1111           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).segment_number   :=  l_grade_segment_no;
1112           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).value_set        :=  null;
1113           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).lov_prompt       := l_grade_segment_name;
1114           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).segment_type     := l_grade_segment_type;
1115           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).window_prompt    := l_grade_segment_name;
1116 
1117           --create technical summary data for valueset
1118           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
1119                                  ,p_valueset_type   => l_grade_segment_type
1120                                  ,p_structure_code  => l_global_grd_structure_name
1121                                  ,p_segment_name    => l_grade_segment_name
1122                                  ,p_segment_number  => l_grade_segment_no
1123                                  ,p_valueset_tab    => l_kf_grd_no_rv_valueset_tab);
1124 
1125           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_value_set_name
1126                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).value_set_name;
1127       hr_utility.trace('VALUESETSET_NAME = ' ||  l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).value_set_name);
1128           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_description
1129                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).description;
1130           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_security_available
1131                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).security_available;
1132           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_enable_longlist
1133                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
1134           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_format_type
1135                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).format_type;
1136           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_maximum_size
1137                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).maximum_size;
1138           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_precision
1139                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).precision;
1140           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_numbers_only
1141                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).numbers_only;
1142           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_uppercase_only
1143                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
1144           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_right_justify_zero_fill
1145                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
1146           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_min_value
1147                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).min_value;
1148           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_max_value
1149                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).max_value;
1150           l_kf_grd_no_rv_seg_count := l_kf_grd_no_rv_seg_count + 1 ;
1151     end if;
1152 
1153         l_log_message := 'Created KEYFLEX SEGMENT : PER GRD ' || l_grade_segment_name;
1154         per_ri_config_utilities.write_log(p_message => l_log_message);
1155       END LOOP;
1156       hr_utility.set_location(l_proc, 50);
1157       --
1158       -- freeze and compile this flexfield
1159       --
1160       if NOT (p_technical_summary_mode) then
1161         per_ri_config_utilities.freeze_and_compile_flexfield
1162                        (p_appl_short_Name           => 'PER'
1163                        ,p_flex_code                 => 'GRD'
1164                        ,p_structure_code            => l_global_grd_structure_name);
1165       end if;
1166       close csr_config_grade_no_rv;
1167     else
1168       hr_utility.set_location(l_proc, 100);
1169       hr_utility.trace('Grades: Industry is US_GOVERNMENT');
1170 
1171       -- create Global Jobs Key flex
1172       -- do not create grade flex field use US_FEDERAL_GRADE
1173       -- create only non federal segments
1174 
1175       open csr_config_grade_no_rv(p_configuration_code);
1176 
1177       -- some segments (2 for now) are always defined for fedral
1178       l_grade_segment_count_fixed := per_ri_config_main.g_global_fed_grd_seg_count;
1179       l_grade_segment_count       := 0;
1180       LOOP
1181         fetch csr_config_grade_no_rv into l_grade_segment_name
1182                                          ,l_grade_segment_type
1183                                          ,l_industry_attribute
1184                                          ,l_grade_segment_no;
1185 
1186         exit when csr_config_grade_no_rv%NOTFOUND;
1187         hr_utility.trace('l_grade_segment_count = ' || to_char(l_grade_segment_count));
1188         hr_utility.trace('p_structure_code = ' || per_ri_config_main.g_global_fed_grd_struct_name);
1189 
1190         if l_industry_attribute = per_ri_config_main.g_global_fed_grd_non_fed_att then
1191 
1192           l_grade_segment_count := l_grade_segment_count_fixed + csr_config_grade_no_rv%ROWCOUNT;
1193 
1194 
1195           hr_utility.trace('l_grade_segment_count = ' || to_char(l_grade_segment_count));
1196 
1197 
1198           if NOT (p_technical_summary_mode) then
1199           per_ri_config_utilities.create_flex_segments
1200                           (p_appl_short_Name           => 'PER'
1201                           ,p_flex_code                 => 'GRD'
1202                           ,p_structure_code            => per_ri_config_main.g_global_fed_grd_struct_name
1203                           ,p_segment_name              => l_grade_segment_name
1204                           ,p_column_name               => 'SEGMENT' || l_grade_segment_count
1205                           ,p_segment_number            => l_grade_segment_no
1206                           ,p_value_set                 => null
1207                           ,p_lov_prompt                => l_grade_segment_name
1208                           ,p_segment_type              => l_grade_segment_type
1209                           ,p_window_prompt             => l_grade_segment_name);
1210         else
1211           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).appl_short_name  := 'PER';
1212           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).flex_code        := 'GRD';
1213           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).structure_code   :=  per_ri_config_main.g_global_fed_grd_struct_name;
1214           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).segment_name     :=  l_grade_segment_name;
1215           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).column_name      :=  'SEGMENT' || l_grade_segment_count;
1216           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).segment_number   :=  l_grade_segment_no;
1217           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).value_set        :=  null;
1218           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).lov_prompt       := l_grade_segment_name;
1219           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).segment_type     := l_grade_segment_type;
1220           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).window_prompt    := l_grade_segment_name;
1221 
1222           --create technical summary data for valueset
1223           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
1224                                  ,p_valueset_type   => l_grade_segment_type
1225                                  ,p_structure_code  => per_ri_config_main.g_global_fed_grd_struct_name
1226                                  ,p_segment_name    => l_grade_segment_name
1227                                  ,p_segment_number  => l_grade_segment_no
1228                                  ,p_valueset_tab    => l_kf_grd_no_rv_valueset_tab);
1229 
1230           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_value_set_name
1231                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).value_set_name;
1232           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_description
1233                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).description;
1234           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_security_available
1235                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).security_available;
1236           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_enable_longlist
1237                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
1238           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_format_type
1239                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).format_type;
1240           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_maximum_size
1241                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).maximum_size;
1242           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_precision
1243                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).precision;
1244           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_numbers_only
1245                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).numbers_only;
1246           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_uppercase_only
1247                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
1248           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_right_justify_zero_fill
1249                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
1250           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_min_value
1251                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).min_value;
1252           p_kf_grd_no_rv_seg_tab(l_kf_grd_no_rv_seg_count).vs_max_value
1253                          := l_kf_grd_no_rv_valueset_tab(l_value_set_tab_count).max_value;
1254           l_kf_grd_no_rv_seg_count := l_kf_grd_no_rv_seg_count + 1 ;
1255         end if;
1256 
1257 
1258           l_log_message := 'Created KEYFLEX SEGMENT : PER GRD ' || l_grade_segment_name;
1259           per_ri_config_utilities.write_log(p_message => l_log_message);
1260         end if;
1261       END LOOP;
1262       --
1263       -- freeze and compile this flexfield
1264       --
1265       if NOT (p_technical_summary_mode) then
1266         per_ri_config_utilities.freeze_and_compile_flexfield
1267                        (p_appl_short_Name           => 'PER'
1268                        ,p_flex_code                 => 'GRD'
1269                        ,p_structure_code            => per_ri_config_main.g_global_fed_grd_struct_name);
1270       end if;
1271       close csr_config_grade_no_rv;
1272     end if;
1273 
1274   EXCEPTION
1275     when others then
1276       l_error_message := 'Error in ' || l_proc;
1277       hr_utility.trace(l_error_message || '-' || sqlerrm);
1278       hr_utility.set_location(' Leaving:'|| l_proc, 500);
1279       hr_utility.raise_error;
1280 
1281   END create_grades_no_rv_keyflex;
1282 
1283   /* --------------------------------------------------------------------------
1284   -- Name      : create_jobs_rv_keyflex
1285   -- Purpose   : This procedure creates jobs keyflex structures, segments and
1286   --             valuesets when regional variance are defined.
1287   --             and profiles options assigned to it.
1288   -- Arguments : p_configuration_code
1289   --
1290   -------------------------------------------------------------------------- */
1291   PROCEDURE create_jobs_rv_keyflex (p_configuration_code in varchar2
1292                                    ,p_technical_summary_mode in boolean default FALSE
1293                                    ,p_kf_job_rv_tab in out nocopy
1294                                                per_ri_config_tech_summary.kf_job_rv_tab
1295                                    ,p_kf_job_rv_seg_tab in out nocopy
1296                                                per_ri_config_tech_summary.kf_job_rv_seg_tab) IS
1297 
1298     cursor csr_config_jobs_rv (cp_configuration_code in varchar2) IS
1299     select distinct per_ri_config_utilities.return_config_entity_name(rv.regional_variance_name),
1300            rv.regional_variance_name,  rv.REG_VARIANCE_COUNTRY_CODE
1301       from per_ri_config_jp_rv_v rv,
1302            per_ri_config_job_rv_seg_v seg
1303      where rv.configuration_code = cp_configuration_code
1304        and rv.configuration_code = seg.configuration_code
1305        and rv.regional_variance_name = seg.regional_variance_name
1306        and seg.global_structure_indicator = 'N';
1307 
1308     cursor csr_config_jobs_rv_seg (cp_configuration_code in varchar2
1309                                   ,cp_jobs_rv_name         in varchar2) IS
1310     select distinct segment_type
1311                    ,segment_name
1312                    ,CONFIG_SEQUENCE
1313       from per_ri_config_job_rv_seg_v
1314      where configuration_code        = cp_configuration_code
1315        and regional_variance_name    = cp_jobs_rv_name
1316        order by CONFIG_SEQUENCE;
1317 
1318   l_proc                        varchar2(72) := g_package || 'create_jobs_rv_keyflex';
1319   l_error_message               varchar2(360);
1320   l_kf_job_rv_count             number(8) := 0;
1321   l_kf_job_rv_tab               per_ri_config_tech_summary.kf_job_rv_tab;
1322 
1323   l_kf_job_rv_seg_count         number(8) := 0;
1324   l_kf_job_rv_seg_tab           per_ri_config_tech_summary.kf_job_rv_tab;
1325 
1326   l_jobs_rv_name                per_ri_config_information.config_information1%type;
1327   l_jobs_rv_name_orig           per_ri_config_information.config_information1%type;
1328 
1329   l_kf_job_rv_valueset_tab      per_ri_config_tech_summary.valueset_tab;
1330   l_value_set_tab_count          number(9) := 1;
1331 
1332   l_rv_jobs_segment_type        per_ri_config_information.config_information1%type;
1333   l_rv_jobs_segment_name        per_ri_config_information.config_information1%type;
1334   l_jobs_keyflex_number         number(9);
1335   l_jobs_structures_code        fnd_id_flex_structures.id_flex_structure_code%type;
1336 
1337   l_jobs_segment_count        number(9);
1338   l_jobs_segment_no           number(9);
1339 
1340   l_country_selected          varchar2(10);
1341   l_rv_country_code           varchar2(10);
1342   l_multi_tenancy                 boolean default false;
1343   l_system_model                  varchar2(10) := 'N';
1344   l_sec_group_id                  varchar2(10);
1345 
1346   BEGIN
1347     hr_utility.set_location('Entering:'|| l_proc, 10);
1348 
1349     select legislation_code into l_country_selected from per_business_groups
1350       where business_group_id = fnd_profile.value('PER_BUSINESS_GROUP_ID');
1351 
1352     l_multi_tenancy := hr_multi_tenancy_pkg.is_multi_tenant_system;
1353     l_sec_group_id := fnd_global.security_group_id;
1354     if l_multi_tenancy then
1355         l_system_model := hr_multi_tenancy_pkg.get_system_model;
1356     end if;
1357 
1358     open csr_config_jobs_rv(p_configuration_code);
1359     LOOP
1360       fetch csr_config_jobs_rv into l_jobs_rv_name,l_jobs_rv_name_orig,l_rv_country_code;
1361 
1362       exit when csr_config_jobs_rv%NOTFOUND;
1363 
1364       hr_utility.set_location(l_proc, 20);
1365     IF l_multi_tenancy AND l_system_model = 'B' AND l_sec_group_id <> '0'
1366         AND l_rv_country_code = l_country_selected THEN
1367          hr_utility.set_location('skip the creation of the flexfield structure', 90);
1368     ELSE
1369       -- Create Jobs RV Key flex
1370       if NOT (p_technical_summary_mode) then
1371         l_jobs_keyflex_number  := per_ri_config_utilities.create_key_flexfield
1372                            (p_appl_short_Name => 'PER'
1373                            ,p_flex_code       => 'JOB'
1374                            ,p_structure_code  => l_jobs_rv_name || per_ri_config_main.g_job_rv_struct_def_string
1375                            ,p_structure_title => l_jobs_rv_name || per_ri_config_main.g_job_rv_struct_def_string
1376                            ,p_description     => l_jobs_rv_name || per_ri_config_main.g_job_rv_struct_def_string
1377                                                                || per_ri_config_main.g_description_suffix_string);
1378       else
1379         p_kf_job_rv_tab(l_kf_job_rv_count).appl_short_name    := 'PER';
1380         p_kf_job_rv_tab(l_kf_job_rv_count).flex_code          := 'JOB';
1381         p_kf_job_rv_tab(l_kf_job_rv_count).structure_code     := l_jobs_rv_name || per_ri_config_main.g_job_rv_struct_def_string;
1382         p_kf_job_rv_tab(l_kf_job_rv_count).structure_title    := l_jobs_rv_name || per_ri_config_main.g_job_rv_struct_def_string;
1383         p_kf_job_rv_tab(l_kf_job_rv_count).description        := l_jobs_rv_name || per_ri_config_main.g_job_rv_struct_def_string
1384                                                                     ||  per_ri_config_main.g_description_suffix_string;
1385         l_kf_job_rv_count := l_kf_job_rv_count + 1 ;
1386     end if;
1387 
1388       per_ri_config_utilities.write_log(p_message => 'Created Jobs RV Keyflex ' || l_jobs_rv_name
1389                                                      || per_ri_config_main.g_job_rv_struct_def_string );
1390       hr_utility.trace('Created Jobs RV Keyflex ' || l_jobs_rv_name
1391                                                   || per_ri_config_main.g_job_rv_struct_def_string);
1392 
1393       open csr_config_jobs_rv_seg(p_configuration_code
1394                                  ,l_jobs_rv_name_orig);
1395       l_jobs_segment_count := 0;
1396       LOOP
1397         fetch csr_config_jobs_rv_seg into l_rv_jobs_segment_type
1398                                          ,l_rv_jobs_segment_name
1399                                          ,l_jobs_segment_no;
1400         exit when csr_config_jobs_rv_seg%NOTFOUND;
1401 
1402         -- Create Jobs Key Flex Segments
1403         l_jobs_segment_count := csr_config_jobs_rv_seg%ROWCOUNT;
1404         if NOT (p_technical_summary_mode) then
1405         per_ri_config_utilities.create_flex_segments
1406                         (p_appl_short_Name           => 'PER'
1407                         ,p_flex_code                 => 'JOB'
1408                         ,p_structure_code            => l_jobs_rv_name
1409                                                         || per_ri_config_main.g_job_rv_struct_def_string
1410                         ,p_segment_name              => l_rv_jobs_segment_name
1411                         ,p_column_name               => 'SEGMENT' || l_jobs_segment_count
1412                         ,p_segment_number            => l_jobs_segment_no --l_jobs_segment_count
1413                         ,p_value_set                 => null
1414                         ,p_lov_prompt                => l_rv_jobs_segment_name
1415                         ,p_segment_type              => l_rv_jobs_segment_type
1416                         ,p_window_prompt             => l_rv_jobs_segment_name);
1417         else
1418           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).appl_short_name  := 'PER';
1419           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).flex_code        := 'JOB';
1420           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).structure_code   :=  l_jobs_rv_name
1421                                                                           || per_ri_config_main.g_job_rv_struct_def_string;
1422           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).segment_name     :=  l_rv_jobs_segment_name;
1423           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).column_name      :=  'SEGMENT' || l_jobs_segment_count;
1424           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).segment_number   :=  l_jobs_segment_no;
1425           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).value_set        :=  null;
1426           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).lov_prompt       := l_rv_jobs_segment_name;
1427           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).segment_type     := l_rv_jobs_segment_type;
1428           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).window_prompt    := l_rv_jobs_segment_name;
1429 
1430           --create technical summary data for valueset
1431           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
1432                                  ,p_valueset_type   => l_rv_jobs_segment_type
1433                                  ,p_structure_code  => l_jobs_rv_name
1434                                                        || per_ri_config_main.g_job_rv_struct_def_string
1435                                  ,p_segment_name    => l_jobs_rv_name
1436                                  ,p_segment_number  => l_jobs_segment_no
1437                                  ,p_valueset_tab    => l_kf_job_rv_valueset_tab);
1438 
1439           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_value_set_name
1440                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).value_set_name;
1441           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_description
1442                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).description;
1443           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_security_available
1444                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).security_available;
1445           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_enable_longlist
1446                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
1447           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_format_type
1448                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).format_type;
1449           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_maximum_size
1450                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).maximum_size;
1451           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_precision
1452                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).precision;
1453           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_numbers_only
1454                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).numbers_only;
1455           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_uppercase_only
1456                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
1457           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_right_justify_zero_fill
1458                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
1459           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_min_value
1460                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).min_value;
1461           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_max_value
1462                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).max_value;
1463           l_kf_job_rv_seg_count := l_kf_job_rv_seg_count + 1 ;
1464         end if;
1465 
1466         per_ri_config_utilities.write_log(p_message => 'Created Grade Key Flex RV Segment' || l_rv_jobs_segment_name);
1467         hr_utility.trace('Created Job Key Flex RV Segment: ' ||  l_rv_jobs_segment_name);
1468       END LOOP;
1469       --
1470       -- freeze and compile this flexfield
1471       --
1472       if NOT (p_technical_summary_mode) then
1473         per_ri_config_utilities.freeze_and_compile_flexfield
1474                        (p_appl_short_Name           => 'PER'
1475                        ,p_flex_code                 => 'JOB'
1476                        ,p_structure_code            => l_jobs_rv_name
1477                                                          || per_ri_config_main.g_job_rv_struct_def_string);
1478       end if;
1479       close csr_config_jobs_rv_seg;
1480     END IF;
1481     END LOOP;
1482     close csr_config_jobs_rv;
1483 
1484   EXCEPTION
1485     when others then
1486       l_error_message := 'Error in ' || l_proc;
1487       hr_utility.trace(l_error_message || '-' || sqlerrm);
1488       hr_utility.set_location(' Leaving:'|| l_proc, 500);
1489       hr_utility.raise_error;
1490 
1491   END create_jobs_rv_keyflex;
1492 
1493   /* --------------------------------------------------------------------------
1494   -- Name      : create_positions_rv_keyflex
1495   -- Purpose   : This procedure creates positions keyflex structures, segments and
1496   --             valuesets when regional variance are not defined.
1497   --             and profiles options assigned to it.
1498   -- Arguments : p_configuration_code
1499   --
1500   -------------------------------------------------------------------------- */
1501 
1502   PROCEDURE create_positions_rv_keyflex (p_configuration_code in varchar2
1503                                         ,p_technical_summary_mode in boolean default FALSE
1504                                         ,p_kf_pos_rv_tab in out nocopy
1505                                                per_ri_config_tech_summary.kf_pos_rv_tab
1506                                         ,p_kf_pos_rv_seg_tab in out nocopy
1507                                                per_ri_config_tech_summary.kf_pos_rv_seg_tab) IS
1508 
1509   cursor csr_config_positions_rv (cp_configuration_code in varchar2) IS
1510     select distinct per_ri_config_utilities.return_config_entity_name(regional_variance_name),
1511            regional_variance_name, REG_VARIANCE_COUNTRY_CODE
1512       from per_ri_config_jp_rv_v
1513      where configuration_code = cp_configuration_code
1514        and exists (select configuration_code
1515                      from per_ri_config_pos_rv_seg_v
1516                     where configuration_code   = cp_configuration_code);
1517 
1518     cursor csr_config_positions_rv_seg (cp_configuration_code in varchar2
1519                                        ,cp_positions_rv_name         in varchar2) IS
1520     select distinct segment_type
1521                    ,segment_name
1522                    ,CONFIG_SEQUENCE
1523       from per_ri_config_pos_rv_seg_v
1524      where configuration_code        = cp_configuration_code
1525        and regional_variance_name    = cp_positions_rv_name
1526        order by CONFIG_SEQUENCE;
1527 
1528   l_proc                         varchar2(72) := g_package || 'create_positions_rv_keyflex';
1529   l_error_message                varchar2(360);
1530   l_kf_pos_rv_count              number(8) := 0;
1531   l_kf_pos_rv_tab                per_ri_config_tech_summary.kf_pos_rv_tab;
1532 
1533   l_kf_pos_rv_seg_count          number(8) := 0;
1534   l_kf_pos_rv_seg_tab            per_ri_config_tech_summary.kf_pos_rv_tab;
1535 
1536   l_kf_pos_rv_valueset_tab       per_ri_config_tech_summary.valueset_tab;
1537   l_value_set_tab_count          number(9) := 1;
1538 
1539   l_positions_rv_name            per_ri_config_information.config_information1%type;
1540   l_positions_rv_name_orig       per_ri_config_information.config_information1%type;
1541 
1542   l_rv_positions_segment_type    per_ri_config_information.config_information1%type;
1543   l_rv_positions_segment_name    per_ri_config_information.config_information1%type;
1544   l_positions_keyflex_number     number(9);
1545   l_positions_structures_code    fnd_id_flex_structures.id_flex_structure_code%type;
1546 
1547   l_positions_segment_count        number(9);
1548   l_positions_segment_no           number(9);
1549 
1550   l_country_selected          varchar2(10);
1551   l_rv_country_code           varchar2(10);
1552   l_multi_tenancy                 boolean default false;
1553   l_system_model                  varchar2(10) := 'N';
1554   l_sec_group_id                  varchar2(10);
1555   BEGIN
1556     hr_utility.set_location('Entering:'|| l_proc, 10);
1557 
1558     select legislation_code into l_country_selected from per_business_groups
1559       where business_group_id = fnd_profile.value('PER_BUSINESS_GROUP_ID');
1560 
1561     l_multi_tenancy := hr_multi_tenancy_pkg.is_multi_tenant_system;
1562     l_sec_group_id := fnd_global.security_group_id;
1563     if l_multi_tenancy then
1564         l_system_model := hr_multi_tenancy_pkg.get_system_model;
1565     end if;
1566 
1567     open csr_config_positions_rv(p_configuration_code);
1568     LOOP
1569       fetch csr_config_positions_rv into l_positions_rv_name,l_positions_rv_name_orig,l_rv_country_code;
1570 
1571       exit when csr_config_positions_rv%NOTFOUND;
1572 
1573       hr_utility.set_location(l_proc, 20);
1574     IF l_multi_tenancy AND l_system_model = 'B' AND l_sec_group_id <> '0'
1575         AND l_rv_country_code = l_country_selected THEN
1576          hr_utility.set_location('skip the creation of the flexfield structure', 90);
1577     ELSE
1578       -- Create Jobs RV Key flex
1579       if NOT (p_technical_summary_mode) then
1580         l_positions_keyflex_number  := per_ri_config_utilities.create_key_flexfield
1581                            (p_appl_short_Name => 'PER'
1582                            ,p_flex_code       => 'POS'
1583                            ,p_structure_code  => l_positions_rv_name || per_ri_config_main.g_pos_rv_struct_def_string
1584                            ,p_structure_title => l_positions_rv_name || per_ri_config_main.g_pos_rv_struct_def_string
1585                            ,p_description     => l_positions_rv_name || per_ri_config_main.g_pos_rv_struct_def_string
1586                                                                || per_ri_config_main.g_description_suffix_string);
1587 
1588       else
1589         p_kf_pos_rv_tab(l_kf_pos_rv_count).appl_short_name    := 'PER';
1590         p_kf_pos_rv_tab(l_kf_pos_rv_count).flex_code          := 'POS';
1591         p_kf_pos_rv_tab(l_kf_pos_rv_count).structure_code     := l_positions_rv_name || per_ri_config_main.g_pos_rv_struct_def_string;
1592         p_kf_pos_rv_tab(l_kf_pos_rv_count).structure_title    := l_positions_rv_name || per_ri_config_main.g_pos_rv_struct_def_string;
1593         p_kf_pos_rv_tab(l_kf_pos_rv_count).description        := l_positions_rv_name || per_ri_config_main.g_pos_rv_struct_def_string
1594                                                                 ||  per_ri_config_main.g_description_suffix_string;
1595         l_kf_pos_rv_count := l_kf_pos_rv_count + 1 ;
1596       end if;
1597       per_ri_config_utilities.write_log(p_message => 'Created Positions RV Keyflex ' || l_positions_rv_name
1598                                                      || per_ri_config_main.g_pos_rv_struct_def_string );
1599       hr_utility.trace('Created Positions RV Keyflex ' || l_positions_rv_name
1600                                                   || per_ri_config_main.g_pos_rv_struct_def_string);
1601 
1602       open csr_config_positions_rv_seg(p_configuration_code
1603                                       ,l_positions_rv_name_orig);
1604       l_positions_segment_count := 0;
1605       LOOP
1606         fetch csr_config_positions_rv_seg into l_rv_positions_segment_type
1607                                          ,l_rv_positions_segment_name
1608                                          ,l_positions_segment_no;
1609         exit when csr_config_positions_rv_seg%NOTFOUND;
1610 
1611         -- Create Jobs Key Flex Segments
1612         l_positions_segment_count := csr_config_positions_rv_seg%ROWCOUNT;
1613         if NOT (p_technical_summary_mode) then
1614         per_ri_config_utilities.create_flex_segments
1615                         (p_appl_short_Name           => 'PER'
1616                         ,p_flex_code                 => 'POS'
1617                         ,p_structure_code            => l_positions_rv_name
1618                                                         || per_ri_config_main.g_pos_rv_struct_def_string
1619                         ,p_segment_name              => l_rv_positions_segment_name
1620                         ,p_column_name               => 'SEGMENT' || l_positions_segment_count
1621                         ,p_segment_number            => l_positions_segment_no
1622                         ,p_value_set                 => null
1623                         ,p_lov_prompt                => l_rv_positions_segment_name
1624                         ,p_segment_type              => l_rv_positions_segment_type
1625                         ,p_window_prompt             => l_rv_positions_segment_name);
1626 
1627         else
1628           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).appl_short_name  := 'PER';
1629           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).flex_code        := 'POS';
1630           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).structure_code   :=  l_positions_rv_name
1631                                                                          || per_ri_config_main.g_pos_rv_struct_def_string;
1632           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).segment_name     :=  l_rv_positions_segment_name;
1633           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).column_name      := 'SEGMENT' || l_positions_segment_count;
1634           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).segment_number   :=  l_positions_segment_no;
1635           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).value_set        := null;
1636           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).lov_prompt       := l_rv_positions_segment_name;
1637           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).segment_type     := l_rv_positions_segment_type;
1638           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).window_prompt    := l_rv_positions_segment_name;
1639 
1640           --create technical summary data for valueset
1641           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
1642                                  ,p_valueset_type   => l_rv_positions_segment_type
1643                                  ,p_structure_code  => l_positions_rv_name
1644                                                        || per_ri_config_main.g_pos_rv_struct_def_string
1645                                  ,p_segment_name    => l_rv_positions_segment_name
1646                                  ,p_segment_number  => l_positions_segment_no
1647                                  ,p_valueset_tab    => l_kf_pos_rv_valueset_tab);
1648 
1649           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_value_set_name
1650                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).value_set_name;
1651           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_description
1652                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).description;
1653           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_security_available
1654                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).security_available;
1655           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_enable_longlist
1656                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
1657           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_format_type
1658                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).format_type;
1659           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_maximum_size
1660                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).maximum_size;
1661           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_precision
1662                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).precision;
1663           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_numbers_only
1664                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).numbers_only;
1665           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_uppercase_only
1666                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
1667           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_right_justify_zero_fill
1668                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
1669           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_min_value
1670                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).min_value;
1671           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_max_value
1672                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).max_value;
1673           l_kf_pos_rv_seg_count := l_kf_pos_rv_seg_count + 1 ;
1674     end if;
1675         per_ri_config_utilities.write_log(p_message => 'Created Positions Key Flex RV Segment' || l_rv_positions_segment_name);
1676         hr_utility.trace('Created Positions Key Flex RV Segment: ' ||  l_rv_positions_segment_name);
1677       END LOOP;
1678       --
1679       -- freeze and compile this flexfield
1680       --
1681       if NOT (p_technical_summary_mode) then
1682         per_ri_config_utilities.freeze_and_compile_flexfield
1683                          (p_appl_short_Name           => 'PER'
1684                          ,p_flex_code                 => 'POS'
1685                          ,p_structure_code            =>  l_positions_rv_name
1686                                                           || per_ri_config_main.g_pos_rv_struct_def_string);
1687       end if;
1688       close csr_config_positions_rv_seg;
1689     END IF;
1690     END LOOP;
1691     close csr_config_positions_rv;
1692     hr_utility.set_location('Leaving:'|| l_proc, 100);
1693   EXCEPTION
1694     when others then
1695       l_error_message := 'Error in ' || l_proc;
1696       hr_utility.trace(l_error_message || '-' || sqlerrm);
1697       hr_utility.set_location(' Leaving:'|| l_proc, 500);
1698       hr_utility.raise_error;
1699 
1700   END create_positions_rv_keyflex;
1701 
1702   /* --------------------------------------------------------------------------
1703   -- Name      : create_grades_rv_keyflex
1704   -- Purpose   : This procedure creates grades keyflex structures, segments and
1705   --             valuesets when regional variance are not defined.
1706   --             and profiles options assigned to it.
1707   -- Arguments : p_configuration_code
1708   --
1709   -------------------------------------------------------------------------- */
1710 
1711   PROCEDURE create_grades_rv_keyflex (p_configuration_code in varchar2
1712                                      ,p_technical_summary_mode in boolean default FALSE
1713                                      ,p_kf_grd_rv_tab in out nocopy
1714                                                per_ri_config_tech_summary.kf_grd_rv_tab
1715                                      ,p_kf_grd_rv_seg_tab in out nocopy
1716                                                per_ri_config_tech_summary.kf_grd_rv_seg_tab) IS
1717 
1718   cursor csr_config_grade_rv (cp_configuration_code in varchar2) IS
1719     select distinct per_ri_config_utilities.return_config_entity_name(regional_variance_name),
1720            regional_variance_name, REG_VARIANCE_COUNTRY_CODE
1721       from per_ri_config_grd_rv_v
1722      where configuration_code = cp_configuration_code;
1723 
1724     cursor csr_config_grade_rv_seg (cp_configuration_code in varchar2
1725                                    ,cp_grade_rv_name         in varchar2) IS
1726     select distinct segment_type
1727                    ,segment_name
1728                    ,CONFIG_SEQUENCE
1729       from per_ri_config_grd_rv_seg_v
1730      where configuration_code        = cp_configuration_code
1731        and regional_variance_name    = cp_grade_rv_name
1732        order by CONFIG_SEQUENCE;
1733 
1734   l_proc                      varchar2(72) := g_package || 'create_grades_rv_keyflex';
1735   l_error_message             varchar2(360);
1736 
1737   l_kf_grd_rv_count           number(8) := 0;
1738   l_kf_grd_rv_tab             per_ri_config_tech_summary.kf_grd_rv_tab;
1739   l_kf_grd_rv_seg_count       number(8) := 0;
1740   l_kf_grd_rv_seg_tab         per_ri_config_tech_summary.kf_grd_rv_tab;
1741 
1742   l_kf_grd_rv_valueset_tab    per_ri_config_tech_summary.valueset_tab;
1743   l_value_set_tab_count       number(9) := 1;
1744 
1745   l_grade_rv_name               per_ri_config_information.config_information1%type;
1746   l_grade_rv_name_orig          per_ri_config_information.config_information1%type;
1747 
1748   l_rv_grade_segment_name       per_ri_config_information.config_information1%type;
1749   l_rv_grade_segment_type       per_ri_config_information.config_information1%type;
1750   l_grades_keyflex_number       number(9);
1751   l_grade_structures_code       fnd_id_flex_structures.id_flex_structure_code%type;
1752 
1753   l_grades_segment_count        number(9);
1754   l_grades_segment_no           number(9);
1755 
1756   l_country_selected          varchar2(10);
1757   l_rv_country_code           varchar2(10);
1758   l_multi_tenancy                 boolean default false;
1759   l_system_model                  varchar2(10) := 'N';
1760   l_sec_group_id                  varchar2(10);
1761   BEGIN
1762     hr_utility.set_location('Entering:'|| l_proc, 10);
1763 
1764     select legislation_code into l_country_selected from per_business_groups
1765       where business_group_id = fnd_profile.value('PER_BUSINESS_GROUP_ID');
1766 
1767     l_multi_tenancy := hr_multi_tenancy_pkg.is_multi_tenant_system;
1768     l_sec_group_id := fnd_global.security_group_id;
1769     if l_multi_tenancy then
1770         l_system_model := hr_multi_tenancy_pkg.get_system_model;
1771     end if;
1772 
1773     open csr_config_grade_rv(p_configuration_code);
1774     LOOP
1775       fetch csr_config_grade_rv into l_grade_rv_name,l_grade_rv_name_orig,l_rv_country_code;
1776 
1777       exit when csr_config_grade_rv%NOTFOUND;
1778 
1779       -- Create Grades RV Key Flex
1780       hr_utility.set_location(l_proc, 20);
1781     IF l_multi_tenancy AND l_system_model = 'B' AND l_sec_group_id <> '0'
1782         AND l_rv_country_code = l_country_selected THEN
1783          hr_utility.set_location('skip the creation of the flexfield structure', 90);
1784     ELSE
1785       if NOT (p_technical_summary_mode) then
1786         l_grades_keyflex_number  :=
1787                per_ri_config_utilities.create_key_flexfield
1788                        (p_appl_short_Name => 'PER'
1789                        ,p_flex_code       => 'GRD'
1790                        ,p_structure_code  => l_grade_rv_name || per_ri_config_main.g_grd_rv_struct_def_string
1791                        ,p_structure_title => l_grade_rv_name || per_ri_config_main.g_grd_rv_struct_def_string
1792                        ,p_description     => l_grade_rv_name || per_ri_config_main.g_grd_rv_struct_def_string
1793                                                              || per_ri_config_main.g_description_suffix_string);
1794 
1795       else
1796         p_kf_grd_rv_tab(l_kf_grd_rv_count).appl_short_name    := 'PER';
1797         p_kf_grd_rv_tab(l_kf_grd_rv_count).flex_code          := 'GRD';
1798         p_kf_grd_rv_tab(l_kf_grd_rv_count).structure_code     := l_grade_rv_name || per_ri_config_main.g_grd_rv_struct_def_string;
1799         p_kf_grd_rv_tab(l_kf_grd_rv_count).structure_title    := l_grade_rv_name || per_ri_config_main.g_grd_rv_struct_def_string;
1800         p_kf_grd_rv_tab(l_kf_grd_rv_count).description        := l_grade_rv_name || per_ri_config_main.g_grd_rv_struct_def_string
1801                                                                    || per_ri_config_main.g_description_suffix_string;
1802         l_kf_grd_rv_count := l_kf_grd_rv_count + 1 ;
1803     end if;
1804       per_ri_config_utilities.write_log(p_message => 'Created Grades RV Keyflex '
1805                                                      || per_ri_config_main.g_grd_rv_struct_def_string );
1806       hr_utility.trace('Created Grades RV Keyflex ' || per_ri_config_main.g_grd_rv_struct_def_string);
1807 
1808       open csr_config_grade_rv_seg(p_configuration_code
1809                                   ,l_grade_rv_name_orig);
1810       l_grades_segment_count := 0;
1811       LOOP
1812         fetch csr_config_grade_rv_seg into l_rv_grade_segment_type
1813                                           ,l_rv_grade_segment_name
1814                                           ,l_grades_segment_no;
1815         exit when csr_config_grade_rv_seg%NOTFOUND;
1816 
1817         -- Create Jobs Key Flex Segments
1818         l_grades_segment_count := csr_config_grade_rv_seg%ROWCOUNT;
1819         if NOT (p_technical_summary_mode) then
1820           per_ri_config_utilities.create_flex_segments
1821                         (p_appl_short_Name           => 'PER'
1822                         ,p_flex_code                 => 'GRD'
1823                         ,p_structure_code            => l_grade_rv_name || per_ri_config_main.g_grd_rv_struct_def_string
1824                         ,p_segment_name              => l_rv_grade_segment_name
1825                         ,p_column_name               => 'SEGMENT' || l_grades_segment_count
1826                         ,p_segment_number            => l_grades_segment_no
1827                         ,p_value_set                 => null
1828                         ,p_lov_prompt                => l_rv_grade_segment_name
1829                         ,p_segment_type              => l_rv_grade_segment_type
1830                         ,p_window_prompt             => l_rv_grade_segment_name);
1831         else
1832           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).appl_short_name  := 'PER';
1833           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).flex_code        := 'GRD';
1834           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).structure_code   :=  l_grade_rv_name
1835                                                                          || per_ri_config_main.g_grd_rv_struct_def_string;
1836           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).segment_name     :=  l_rv_grade_segment_name;
1837           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).column_name      := 'SEGMENT' || l_grades_segment_count;
1838           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).segment_number   :=  l_grades_segment_no;
1839           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).value_set        := null;
1840           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).lov_prompt       := l_rv_grade_segment_name;
1841           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).segment_type     := l_rv_grade_segment_type;
1842           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).window_prompt    := l_rv_grade_segment_name;
1843 
1844           --create technical summary data for valueset
1845           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
1846                                  ,p_valueset_type   => l_rv_grade_segment_type
1847                                  ,p_structure_code  => l_grade_rv_name
1848                                                        || per_ri_config_main.g_grd_rv_struct_def_string
1849                                  ,p_segment_name    => l_rv_grade_segment_name
1850                                  ,p_segment_number  => l_grades_segment_no
1851                                  ,p_valueset_tab    => l_kf_grd_rv_valueset_tab);
1852 
1853           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_value_set_name
1854                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).value_set_name;
1855           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_description
1856                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).description;
1857           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_security_available
1858                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).security_available;
1859           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_enable_longlist
1860                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
1861           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_format_type
1862                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).format_type;
1863           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_maximum_size
1864                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).maximum_size;
1865           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_precision
1866                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).precision;
1867           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_numbers_only
1868                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).numbers_only;
1869           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_uppercase_only
1870                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
1871           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_right_justify_zero_fill
1872                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
1873           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_min_value
1874                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).min_value;
1875           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_max_value
1876                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).max_value;
1877           l_kf_grd_rv_seg_count := l_kf_grd_rv_seg_count + 1 ;
1878         end if;
1879         per_ri_config_utilities.write_log(p_message => 'Created Grade Key Flex RV Segment' || l_rv_grade_segment_name);
1880         hr_utility.trace('Created Job Key Flex RV Segment: ' ||  l_rv_grade_segment_name);
1881       END LOOP;
1882       close csr_config_grade_rv_seg;
1883       --
1884       -- freeze and compile this flexfield
1885       --
1886       if NOT (p_technical_summary_mode) then
1887         per_ri_config_utilities.freeze_and_compile_flexfield
1888                        (p_appl_short_Name           => 'PER'
1889                        ,p_flex_code                 => 'GRD'
1890                        ,p_structure_code            =>  l_grade_rv_name
1891                                                         || per_ri_config_main.g_grd_rv_struct_def_string);
1892       end if;
1893     END IF;
1894     END LOOP;
1895     close csr_config_grade_rv;
1896 
1897   EXCEPTION
1898     when others then
1899       l_error_message := 'Error in ' || l_proc;
1900       hr_utility.trace(l_error_message || '-' || sqlerrm);
1901       hr_utility.set_location(' Leaving:'|| l_proc, 500);
1902       hr_utility.raise_error;
1903 
1904   END create_grades_rv_keyflex;
1905 
1906   /* --------------------------------------------------------------------------
1907   -- Name      : create_global_grp_cmp_cost_kf
1908   -- Purpose   : This procedure creates global People Group, Competence and
1909   --             Cost allocation key flex structures, segments and
1910   --             valuesets.
1911   -- Arguments : p_configuration_code
1912   --
1913   -------------------------------------------------------------------------- */
1914   PROCEDURE create_global_grp_cmp_cost_kf (p_configuration_code in varchar2
1915                                           ,p_technical_summary_mode in boolean default FALSE
1916                                           ,p_kf_grp_tab in out nocopy
1917                                                per_ri_config_tech_summary.kf_grp_tab
1918                                           ,p_kf_cmp_tab in out nocopy
1919                                                per_ri_config_tech_summary.kf_cmp_tab
1920                                           ,p_kf_cost_tab in out nocopy
1921                                                per_ri_config_tech_summary.kf_cost_tab
1922                                           ,p_kf_grp_seg_tab in out nocopy
1923                                                per_ri_config_tech_summary.kf_grp_seg_tab
1924                                           ,p_kf_cmp_seg_tab in out nocopy
1925                                                per_ri_config_tech_summary.kf_cmp_seg_tab
1926                                           ,p_kf_cost_seg_tab in out nocopy
1927                                                per_ri_config_tech_summary.kf_cost_seg_tab) IS
1928 
1929   l_kf_grp_tab                per_ri_config_tech_summary.kf_grp_tab;
1930   l_kf_cmp_tab                per_ri_config_tech_summary.kf_cmp_tab;
1931   l_kf_cost_tab               per_ri_config_tech_summary.kf_cost_tab;
1932 
1933   l_kf_grp_seg_tab            per_ri_config_tech_summary.kf_grp_seg_tab;
1934   l_kf_cmp_seg_tab            per_ri_config_tech_summary.kf_cmp_seg_tab;
1935   l_kf_cost_seg_tab           per_ri_config_tech_summary.kf_cost_seg_tab;
1936 
1937   l_kf_grp_valueset_tab       per_ri_config_tech_summary.valueset_tab;
1938   l_kf_cmp_valueset_tab       per_ri_config_tech_summary.valueset_tab;
1939   l_kf_cost_valueset_tab      per_ri_config_tech_summary.valueset_tab;
1940   l_value_set_tab_count       number(9) := 1;
1941 
1942   l_proc                      varchar2(72) := g_package || 'create_global_grp_cmp_cost_kf';
1943   l_error_message             varchar2(360);
1944   l_configuration_code        per_ri_config_information.configuration_code%type;
1945   l_people_group_fk_number    number(9);
1946   l_competence_fk_number      number(9);
1947   l_cost_allocation_number    number(9);
1948 
1949   l_enterprise_short_name     per_ri_config_information.configuration_code%type;
1950 
1951   l_grp_structures_code       fnd_id_flex_structures.id_flex_structure_code%type;
1952   l_cmp_structures_code       fnd_id_flex_structures.id_flex_structure_code%type;
1953   l_cost_structures_code      fnd_id_flex_structures.id_flex_structure_code%type;
1954 
1955   l_kf_grp_count              number(8) := 0;
1956   l_kf_cmp_count              number(8) := 0;
1957   l_kf_cost_count             number(8) := 0;
1958 
1959   l_kf_grp_seg_count          number(8) :=0;
1960   l_kf_cmp_seg_count          number(8) :=0;
1961   l_kf_cost_seg_count         number(8) :=0;
1962   BEGIN
1963 
1964     hr_utility.set_location('Entering:'|| l_proc, 10);
1965 
1966     --
1967     -- create people group key flex
1968     --
1969     l_grp_structures_code := per_ri_config_main.g_global_pea_structure_name;
1970     if NOT (p_technical_summary_mode) then
1971       l_people_group_fk_number  := per_ri_config_utilities.create_key_flexfield
1972                                      (p_appl_short_Name   => 'PAY'
1973                                      ,p_flex_code         => 'GRP'
1974                                      ,p_structure_code    => l_grp_structures_code
1975                                      ,p_structure_title   => l_grp_structures_code
1976                                      ,p_description       => l_grp_structures_code);
1977 
1978     else
1979       p_kf_grp_tab(l_kf_grp_count).appl_short_name    := 'PAY';
1980       p_kf_grp_tab(l_kf_grp_count).flex_code          := 'GRP';
1981       p_kf_grp_tab(l_kf_grp_count).structure_code     := l_grp_structures_code;
1982       p_kf_grp_tab(l_kf_grp_count).structure_title    := l_grp_structures_code;
1983       p_kf_grp_tab(l_kf_grp_count).description        := l_grp_structures_code;
1984     end if;
1985 
1986     hr_utility.trace('Created People Group Key Flex: ' || l_grp_structures_code );
1987 
1988     --
1989     -- create people group flex segments
1990     --
1991     if NOT (p_technical_summary_mode) then
1992     per_ri_config_utilities.create_flex_segments
1993                     (p_appl_short_Name           => 'PAY'
1994                     ,p_flex_code                 => 'GRP'
1995                     ,p_structure_code            => l_grp_structures_code
1996                     ,p_segment_name              => 'People Group Name'
1997                     ,p_column_name               => 'SEGMENT1'
1998                     ,p_segment_number            => 1
1999                     ,p_value_set                 => null
2000                     ,p_lov_prompt                =>  'People Group'
2001                     ,p_window_prompt             =>  'People Group');
2002 
2003     else
2004       p_kf_grp_seg_tab(l_kf_grp_seg_count).appl_short_name  := 'PAY';
2005       p_kf_grp_seg_tab(l_kf_grp_seg_count).flex_code        := 'GRP';
2006       p_kf_grp_seg_tab(l_kf_grp_seg_count).structure_code   :=  l_grp_structures_code;
2007       p_kf_grp_seg_tab(l_kf_grp_seg_count).segment_name     :=  'People Group Name';
2008       p_kf_grp_seg_tab(l_kf_grp_seg_count).column_name      :=  'SEGMENT1';
2009       p_kf_grp_seg_tab(l_kf_grp_seg_count).segment_number   :=  1;
2010       p_kf_grp_seg_tab(l_kf_grp_seg_count).value_set        := null;
2011       p_kf_grp_seg_tab(l_kf_grp_seg_count).lov_prompt       := 'People Group';
2012       p_kf_grp_seg_tab(l_kf_grp_seg_count).segment_type     := null;
2013       p_kf_grp_seg_tab(l_kf_grp_seg_count).window_prompt    := 'People Group';
2014 
2015       --create technical summary data for valueset
2016       per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2017                              ,p_valueset_type   => null
2018                              ,p_structure_code  => l_grp_structures_code
2019                              ,p_segment_name    => 'People Group Name'
2020                              ,p_segment_number  => 1
2021                              ,p_valueset_tab    => l_kf_grp_valueset_tab);
2022 
2023 
2024       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_value_set_name
2025                      := l_kf_grp_valueset_tab(l_value_set_tab_count).value_set_name;
2026       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_description
2027                      := l_kf_grp_valueset_tab(l_value_set_tab_count).description;
2028       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_security_available
2029                      := l_kf_grp_valueset_tab(l_value_set_tab_count).security_available;
2030       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_enable_longlist
2031                      := l_kf_grp_valueset_tab(l_value_set_tab_count).enable_longlist;
2032       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_format_type
2033                      := l_kf_grp_valueset_tab(l_value_set_tab_count).format_type;
2034       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_maximum_size
2035                      := l_kf_grp_valueset_tab(l_value_set_tab_count).maximum_size;
2036       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_precision
2037                      := l_kf_grp_valueset_tab(l_value_set_tab_count).precision;
2038       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_numbers_only
2039                      := l_kf_grp_valueset_tab(l_value_set_tab_count).numbers_only;
2040       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_uppercase_only
2041                      := l_kf_grp_valueset_tab(l_value_set_tab_count).uppercase_only;
2042       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_right_justify_zero_fill
2043                      := l_kf_grp_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2044       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_min_value
2045                      := l_kf_grp_valueset_tab(l_value_set_tab_count).min_value;
2046       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_max_value
2047                      := l_kf_grp_valueset_tab(l_value_set_tab_count).max_value;
2048       l_kf_grp_seg_count := l_kf_grp_seg_count + 1 ;
2049     end if;
2050 
2051     hr_utility.trace('Created People Group Key Flex Segment: ' || l_grp_structures_code);
2052 
2053     --
2054     -- freeze and compile this flexfield
2055     --
2056     if NOT (p_technical_summary_mode) then
2057       per_ri_config_utilities.freeze_and_compile_flexfield
2058                        (p_appl_short_Name           => 'PAY'
2059                        ,p_flex_code                 => 'GRP'
2060                        ,p_structure_code            => l_grp_structures_code);
2061     end if;
2062 
2063 
2064 
2065     --
2066     -- create competence key flex
2067     --
2068     l_cmp_structures_code := per_ri_config_main.g_global_cmp_structure_name;
2069     if NOT (p_technical_summary_mode) then
2070       l_competence_fk_number  := per_ri_config_utilities.create_key_flexfield
2071                                      (p_appl_short_Name   => 'PER'
2072                                      ,p_flex_code         => 'CMP'
2073                                      ,p_structure_code    => l_cmp_structures_code
2074                                      ,p_structure_title   => l_cmp_structures_code
2075                                      ,p_description       => l_cmp_structures_code);
2076 
2077     else
2078       p_kf_cmp_tab(l_kf_cmp_count).appl_short_name    := 'PER';
2079       p_kf_cmp_tab(l_kf_cmp_count).flex_code          := 'CMP';
2080       p_kf_cmp_tab(l_kf_cmp_count).structure_code     := l_cmp_structures_code;
2081       p_kf_cmp_tab(l_kf_cmp_count).structure_title    := l_cmp_structures_code;
2082       p_kf_cmp_tab(l_kf_cmp_count).description        := l_cmp_structures_code;
2083     end if;
2084 
2085     hr_utility.trace('Created Competence Group Key Flex: ' || l_cmp_structures_code);
2086 
2087     --
2088     -- create competence flex segments
2089     --
2090     if NOT (p_technical_summary_mode) then
2091       per_ri_config_utilities.create_flex_segments
2092                     (p_appl_short_Name           => 'PER'
2093                     ,p_flex_code                 => 'CMP'
2094                     ,p_structure_code            => l_cmp_structures_code
2095                     ,p_segment_name              => 'Competence Name'
2096                     ,p_column_name               => 'SEGMENT1'
2097                     ,p_segment_number            => 1
2098                     ,p_value_set                 => null
2099                     ,p_lov_prompt                =>  'Competence Name'
2100                     ,p_window_prompt             =>  'Competence Name');
2101     else
2102       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).appl_short_name  := 'PER';
2103       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).flex_code        := 'CMP';
2104       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).structure_code   := l_cmp_structures_code;
2105       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).segment_name     := 'Competence Name';
2106       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).column_name      := 'SEGMENT1';
2107       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).segment_number   := 1;
2108       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).value_set        := null;
2109       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).lov_prompt       := 'Competence Name';
2110       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).segment_type     := null;
2111       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).window_prompt    := 'Competence Name';
2112 
2113       --create technical summary data for valueset
2114       per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2115                              ,p_valueset_type   => null
2116                              ,p_structure_code  => l_cmp_structures_code
2117                              ,p_segment_name    => 'Competence Name'
2118                              ,p_segment_number  => 1
2119                              ,p_valueset_tab    => l_kf_cmp_valueset_tab);
2120 
2121       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_value_set_name
2122                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).value_set_name;
2123       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_description
2124                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).description;
2125       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_security_available
2126                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).security_available;
2127       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_enable_longlist
2128                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).enable_longlist;
2129       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_format_type
2130                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).format_type;
2131       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_maximum_size
2132                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).maximum_size;
2133       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_precision
2134                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).precision;
2135       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_numbers_only
2136                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).numbers_only;
2137       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_uppercase_only
2138                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).uppercase_only;
2139       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_right_justify_zero_fill
2140                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2141       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_min_value
2142                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).min_value;
2143       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_max_value
2144                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).max_value;
2145       l_kf_cmp_seg_count := l_kf_cmp_seg_count + 1 ;
2146     end if;
2147 
2148     hr_utility.trace('Created Competence Key Flex Segment: l_cmp_structures_code' );
2149 
2150     --
2151     -- freeze and compile this flexfield
2152     --
2153     if NOT (p_technical_summary_mode) then
2154       per_ri_config_utilities.freeze_and_compile_flexfield
2155                        (p_appl_short_Name           => 'PER'
2156                        ,p_flex_code                 => 'CMP'
2157                        ,p_structure_code            => l_cmp_structures_code);
2158     end if;
2159 
2160     --
2161     -- create cost allocation key flex
2162     --
2163     l_cost_structures_code := per_ri_config_main.g_global_cst_structure_name;
2164     if NOT (p_technical_summary_mode) then
2165       l_cost_allocation_number  := per_ri_config_utilities.create_key_flexfield
2166                                      (p_appl_short_Name   => 'PAY'
2167                                      ,p_flex_code         => 'COST'
2168                                      ,p_structure_code    => l_cost_structures_code
2169                                      ,p_structure_title   => l_cost_structures_code
2170                                      ,p_description       => l_cost_structures_code);
2171 
2172     else
2173       p_kf_cost_tab(l_kf_cost_count).appl_short_name    := 'PAY';
2174       p_kf_cost_tab(l_kf_cost_count).flex_code          := 'COST';
2175       p_kf_cost_tab(l_kf_cost_count).structure_code     := l_cost_structures_code;
2176       p_kf_cost_tab(l_kf_cost_count).structure_title    := l_cost_structures_code;
2177       p_kf_cost_tab(l_kf_cost_count).description        := l_cost_structures_code;
2178     end if;
2179 
2180     hr_utility.trace('Created Cost Allocation Key Flex: ' || l_cost_structures_code);
2181 
2182     --
2183     -- create cost allocation flex segments
2184     --
2185     if NOT (p_technical_summary_mode) then
2186       per_ri_config_utilities.create_flex_segments
2187                     (p_appl_short_Name           => 'PAY'
2188                     ,p_flex_code                 => 'COST'
2189                     ,p_structure_code            => l_cost_structures_code
2190                     ,p_segment_name              => 'Account'
2191                     ,p_column_name               => 'SEGMENT1'
2192                     ,p_segment_number            => 1
2193                     ,p_value_set                 => null
2194                     ,p_lov_prompt                =>  'Account'
2195                     ,p_window_prompt             =>  'Account');
2196     else
2197       p_kf_cost_seg_tab(l_kf_cost_seg_count).appl_short_name  := 'PAY';
2198       p_kf_cost_seg_tab(l_kf_cost_seg_count).flex_code        := 'COST';
2199       p_kf_cost_seg_tab(l_kf_cost_seg_count).structure_code   := l_cost_structures_code;
2200       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_name     := 'Account';
2201       p_kf_cost_seg_tab(l_kf_cost_seg_count).column_name      := 'SEGMENT1';
2202       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_number   := 1;
2203       p_kf_cost_seg_tab(l_kf_cost_seg_count).value_set        := null;
2204       p_kf_cost_seg_tab(l_kf_cost_seg_count).lov_prompt       := 'Account';
2205       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_type     := null;
2206       p_kf_cost_seg_tab(l_kf_cost_seg_count).window_prompt    := 'Account';
2207 
2208       --create technical summary data for valueset
2209       per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2210                              ,p_valueset_type   => null
2211                              ,p_structure_code  => l_cost_structures_code
2212                              ,p_segment_name    => 'Account'
2213                              ,p_segment_number  => 1
2214                              ,p_valueset_tab    => l_kf_cost_valueset_tab);
2215 
2216       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_value_set_name
2217                      := l_kf_cost_valueset_tab(l_value_set_tab_count).value_set_name;
2218       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_description
2219                      := l_kf_cost_valueset_tab(l_value_set_tab_count).description;
2220       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_security_available
2221                      := l_kf_cost_valueset_tab(l_value_set_tab_count).security_available;
2222       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_enable_longlist
2223                      := l_kf_cost_valueset_tab(l_value_set_tab_count).enable_longlist;
2224       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_format_type
2225                      := l_kf_cost_valueset_tab(l_value_set_tab_count).format_type;
2226       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_maximum_size
2227                      := l_kf_cost_valueset_tab(l_value_set_tab_count).maximum_size;
2228       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_precision
2229                      := l_kf_cost_valueset_tab(l_value_set_tab_count).precision;
2230       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_numbers_only
2231                      := l_kf_cost_valueset_tab(l_value_set_tab_count).numbers_only;
2232       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_uppercase_only
2233                      := l_kf_cost_valueset_tab(l_value_set_tab_count).uppercase_only;
2234       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_right_justify_zero_fill
2235                      := l_kf_cost_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2236       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_min_value
2237                      := l_kf_cost_valueset_tab(l_value_set_tab_count).min_value;
2238       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_max_value
2239                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).max_value;
2240       l_kf_cost_seg_count := l_kf_cost_seg_count + 1 ;
2241       hr_utility.trace('ENABLELONGLIST := ' || l_kf_cost_valueset_tab(l_value_set_tab_count).enable_longlist);
2242     end if;
2243 
2244     if NOT (p_technical_summary_mode) then
2245       per_ri_config_utilities.create_flex_segments
2246                     (p_appl_short_Name           => 'PAY'
2247                     ,p_flex_code                 => 'COST'
2248                     ,p_structure_code            => l_cost_structures_code
2249                     ,p_segment_name              => 'Company'
2250                     ,p_column_name               => 'SEGMENT2'
2251                     ,p_segment_number            => 2
2252                     ,p_value_set                 => null
2253                     ,p_lov_prompt                =>  'Company'
2254                    ,p_window_prompt             =>  'Company');
2255     else
2256       p_kf_cost_seg_tab(l_kf_cost_seg_count).appl_short_name  := 'PAY';
2257       p_kf_cost_seg_tab(l_kf_cost_seg_count).flex_code        := 'COST';
2258       p_kf_cost_seg_tab(l_kf_cost_seg_count).structure_code   := l_cost_structures_code;
2259       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_name     := 'Company';
2260       p_kf_cost_seg_tab(l_kf_cost_seg_count).column_name      := 'SEGMENT2';
2261       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_number   := 2;
2262       p_kf_cost_seg_tab(l_kf_cost_seg_count).value_set        := null;
2263       p_kf_cost_seg_tab(l_kf_cost_seg_count).lov_prompt       := 'Company';
2264       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_type     := null;
2265       p_kf_cost_seg_tab(l_kf_cost_seg_count).window_prompt    := 'Company';
2266 
2267       --create technical summary data for valueset
2268       per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2269                              ,p_valueset_type   => null
2270                              ,p_structure_code  => l_cost_structures_code
2271                              ,p_segment_name    => 'Company'
2272                              ,p_segment_number  => 2
2273                              ,p_valueset_tab    => l_kf_cost_valueset_tab);
2274 
2275       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_value_set_name
2276                      := l_kf_cost_valueset_tab(l_value_set_tab_count).value_set_name;
2277       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_description
2278                      := l_kf_cost_valueset_tab(l_value_set_tab_count).description;
2279       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_security_available
2280                      := l_kf_cost_valueset_tab(l_value_set_tab_count).security_available;
2281       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_enable_longlist
2282                      := l_kf_cost_valueset_tab(l_value_set_tab_count).enable_longlist;
2283       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_format_type
2284                      := l_kf_cost_valueset_tab(l_value_set_tab_count).format_type;
2285       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_maximum_size
2286                      := l_kf_cost_valueset_tab(l_value_set_tab_count).maximum_size;
2287       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_precision
2288                      := l_kf_cost_valueset_tab(l_value_set_tab_count).precision;
2289       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_numbers_only
2290                      := l_kf_cost_valueset_tab(l_value_set_tab_count).numbers_only;
2291       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_uppercase_only
2292                      := l_kf_cost_valueset_tab(l_value_set_tab_count).uppercase_only;
2293       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_right_justify_zero_fill
2294                      := l_kf_cost_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2295       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_min_value
2296                      := l_kf_cost_valueset_tab(l_value_set_tab_count).min_value;
2297       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_max_value
2298                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).max_value;
2299       l_kf_cost_seg_count := l_kf_cost_seg_count + 1 ;
2300     end if;
2301 
2302     if NOT (p_technical_summary_mode) then
2303       per_ri_config_utilities.create_flex_segments
2304                     (p_appl_short_Name           => 'PAY'
2305                     ,p_flex_code                 => 'COST'
2306                     ,p_structure_code            => l_cost_structures_code
2307                     ,p_segment_name              => 'Cost Center'
2308                     ,p_column_name               => 'SEGMENT3'
2309                     ,p_segment_number            => 3
2310                     ,p_value_set                 => null
2311                     ,p_lov_prompt                =>  'Cost Center'
2312                     ,p_window_prompt             =>  'Cost Center');
2313 
2314     else
2315       p_kf_cost_seg_tab(l_kf_cost_seg_count).appl_short_name  := 'PAY';
2316       p_kf_cost_seg_tab(l_kf_cost_seg_count).flex_code        := 'COST';
2317       p_kf_cost_seg_tab(l_kf_cost_seg_count).structure_code   := l_cost_structures_code;
2318       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_name     := 'Cost Center';
2319       p_kf_cost_seg_tab(l_kf_cost_seg_count).column_name      := 'SEGMENT3';
2320       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_number   := 3;
2321       p_kf_cost_seg_tab(l_kf_cost_seg_count).value_set        := null;
2322       p_kf_cost_seg_tab(l_kf_cost_seg_count).lov_prompt       := 'Cost Center';
2323       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_type     := null;
2324       p_kf_cost_seg_tab(l_kf_cost_seg_count).window_prompt    := 'Cost Center';
2325 
2326       --create technical summary data for valueset
2327       per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2328                              ,p_valueset_type   => null
2329                              ,p_structure_code  => l_cost_structures_code
2330                              ,p_segment_name    => 'Cost Center'
2331                              ,p_segment_number  => 3
2332                              ,p_valueset_tab    => l_kf_cost_valueset_tab);
2333 
2334       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_value_set_name
2335                      := l_kf_cost_valueset_tab(l_value_set_tab_count).value_set_name;
2336       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_description
2337                      := l_kf_cost_valueset_tab(l_value_set_tab_count).description;
2338       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_security_available
2339                      := l_kf_cost_valueset_tab(l_value_set_tab_count).security_available;
2340       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_enable_longlist
2341                      := l_kf_cost_valueset_tab(l_value_set_tab_count).enable_longlist;
2342       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_format_type
2343                      := l_kf_cost_valueset_tab(l_value_set_tab_count).format_type;
2344       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_maximum_size
2345                      := l_kf_cost_valueset_tab(l_value_set_tab_count).maximum_size;
2346       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_precision
2347                      := l_kf_cost_valueset_tab(l_value_set_tab_count).precision;
2348       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_numbers_only
2349                      := l_kf_cost_valueset_tab(l_value_set_tab_count).numbers_only;
2350       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_uppercase_only
2351                      := l_kf_cost_valueset_tab(l_value_set_tab_count).uppercase_only;
2352       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_right_justify_zero_fill
2353                      := l_kf_cost_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2354       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_min_value
2355                      := l_kf_cost_valueset_tab(l_value_set_tab_count).min_value;
2356       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_max_value
2357                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).max_value;
2358 
2359       l_kf_cost_seg_count := l_kf_cost_seg_count + 1 ;
2360     end if;
2361     --
2362     -- freeze and compile this flexfield
2363     --
2364     if NOT (p_technical_summary_mode) then
2365       per_ri_config_utilities.freeze_and_compile_flexfield
2366                        (p_appl_short_Name           => 'PAY'
2367                        ,p_flex_code                 => 'COST'
2368                        ,p_structure_code            => l_cost_structures_code);
2369     end if;
2370   EXCEPTION
2371     when others then
2372       l_error_message := 'Error in ' || l_proc;
2373       hr_utility.trace(l_error_message || '-' || sqlerrm);
2374       hr_utility.set_location(' Leaving:'|| l_proc, 500);
2375       hr_utility.raise_error;
2376 
2377   END create_global_grp_cmp_cost_kf;
2378 
2379   /* --------------------------------------------------------------------------
2380   -- Name      : create_global_job_pos_kf
2381   -- Purpose   : This procedure creates global jobs and positions keyflex structures,
2382   --             segments and valuesets when jobs/positions are not defined.
2383   -- Arguments : p_configuration_code
2384   --
2385   -------------------------------------------------------------------------- */
2386 
2387   PROCEDURE create_global_job_pos_kf (p_configuration_code in varchar2
2388                                      ,p_technical_summary_mode in boolean default FALSE
2389                                      ,p_kf_job_tab in out nocopy
2390                                                per_ri_config_tech_summary.kf_job_tab
2391                                      ,p_kf_pos_tab in out nocopy
2392                                                per_ri_config_tech_summary.kf_pos_tab
2393                                      ,p_kf_job_seg_tab in out nocopy
2394                                                per_ri_config_tech_summary.kf_job_seg_tab
2395                                      ,p_kf_pos_seg_tab in out nocopy
2396                                                per_ri_config_tech_summary.kf_pos_seg_tab) IS
2397 
2398   l_proc                         varchar2(72) := g_package || 'create_global_job_pos_kf';
2399   l_configuration_code           per_ri_config_information.configuration_code%type;
2400   l_jobs_fk_number               number(9);
2401   l_position_fk_number           number(9);
2402 
2403   l_enterprise_short_name        per_ri_config_information.configuration_code%type;
2404 
2405   l_job_structures_code          fnd_id_flex_structures.id_flex_structure_code%type;
2406   l_pos_structures_code          fnd_id_flex_structures.id_flex_structure_code%type;
2407   l_enterprise_primary_industry  per_ri_config_information.config_information1%type;
2408 
2409   l_kf_job_tab                   per_ri_config_tech_summary.kf_job_tab;
2410   l_kf_pos_tab                   per_ri_config_tech_summary.kf_pos_tab;
2411   l_kf_job_count                 number(8) :=0;
2412   l_kf_pos_count                 number(8) :=0;
2413 
2414   l_kf_job_seg_tab               per_ri_config_tech_summary.kf_job_seg_tab;
2415   l_kf_pos_seg_tab               per_ri_config_tech_summary.kf_pos_seg_tab;
2416   l_kf_job_seg_count             number(8) :=0;
2417   l_kf_pos_seg_count             number(8) :=0;
2418 
2419   l_kf_job_valueset_tab          per_ri_config_tech_summary.valueset_tab;
2420   l_kf_pos_valueset_tab          per_ri_config_tech_summary.valueset_tab;
2421   l_value_set_tab_count          number(9) := 1;
2422 
2423   l_log_message                  varchar2(360);
2424   l_error_message                varchar2(360);
2425 
2426   BEGIN
2427     hr_utility.set_location('Entering:'|| l_proc, 10);
2428 
2429     l_enterprise_short_name := per_ri_config_utilities.get_enterprise_short_name(p_configuration_code);
2430 
2431     -- Create Global Jobs Key flex
2432     hr_utility.set_location(l_proc, 20);
2433     l_job_structures_code := per_ri_config_utilities.return_config_entity_name
2434                                (per_ri_config_main.g_global_job_structure_name);
2435 
2436 
2437     if NOT (p_technical_summary_mode) then
2438       l_jobs_fk_number  := per_ri_config_utilities.create_key_flexfield
2439                                      (p_appl_short_name   => 'PER'
2440                                      ,p_flex_code         => 'JOB'
2441                                      ,p_structure_code    => l_job_structures_code
2442                                      ,p_structure_title   => l_job_structures_code
2443                                      ,p_description       => l_job_structures_code);
2444 
2445 
2446     else
2447       p_kf_job_tab(l_kf_job_count).appl_short_name    := 'PER';
2448       p_kf_job_tab(l_kf_job_count).flex_code          := 'JOB';
2449       p_kf_job_tab(l_kf_job_count).structure_code     := l_job_structures_code;
2450       p_kf_job_tab(l_kf_job_count).structure_title    := l_job_structures_code;
2451       p_kf_job_tab(l_kf_job_count).description        := l_job_structures_code;
2452       l_kf_job_count := l_kf_job_count + 1 ;
2453     end if;
2454 
2455     l_enterprise_primary_industry := per_ri_config_utilities.get_ent_primary_industry
2456                                                    (p_configuration_code => p_configuration_code);
2457 
2458     l_log_message := 'Created KEYFLEX PER JOB ' || l_job_structures_code;
2459     per_ri_config_utilities.write_log(p_message => l_log_message);
2460 
2461     -- Create Position Key flex
2462     hr_utility.set_location(l_proc, 30);
2463     l_pos_structures_code :=  per_ri_config_utilities.return_config_entity_name
2464                                (per_ri_config_main.g_global_pos_structure_name);
2465     if NOT (p_technical_summary_mode) then
2466       l_position_fk_number  := per_ri_config_utilities.create_key_flexfield
2467                                    (p_appl_short_Name   => 'PER'
2468                                    ,p_flex_code         => 'POS'
2469                                    ,p_structure_code    => l_pos_structures_code
2470                                    ,p_structure_title   => l_pos_structures_code
2471                                    ,p_description       => l_pos_structures_code);
2472     else
2473       p_kf_pos_tab(l_kf_pos_count).appl_short_name    := 'PER';
2474       p_kf_pos_tab(l_kf_pos_count).flex_code          := 'POS';
2475       p_kf_pos_tab(l_kf_pos_count).structure_code     := l_pos_structures_code;
2476       p_kf_pos_tab(l_kf_pos_count).structure_title    := l_pos_structures_code;
2477       p_kf_pos_tab(l_kf_pos_count).description        := l_pos_structures_code;
2478       l_kf_pos_count := l_kf_pos_count + 1 ;
2479     end if;
2480 
2481 
2482     l_log_message := 'Created KEYFLEX PER POS ' || l_pos_structures_code;
2483     per_ri_config_utilities.write_log(p_message => l_log_message);
2484 
2485     hr_utility.set_location(l_proc, 40);
2486 
2487     if l_enterprise_primary_industry <> 'US_GOVERNMENT' then
2488        hr_utility.set_location(l_proc, 50);
2489 
2490        -- Create Jobs Key Flex Segments
2491 
2492        if NOT (p_technical_summary_mode) then
2493          per_ri_config_utilities.create_flex_segments
2494                     (p_appl_short_Name           => 'PER'
2495                     ,p_flex_code                 => 'JOB'
2496                     ,p_structure_code            => l_job_structures_code
2497                     ,p_segment_name              => 'Job Name'
2498                     ,p_column_name               => 'SEGMENT1'
2499                     ,p_segment_number            => 1
2500                     ,p_value_set                 => null
2501                     ,p_lov_prompt                => 'Job Name'
2502                     ,p_window_prompt             => 'Job Name');
2503        else
2504          p_kf_job_seg_tab(l_kf_job_seg_count).appl_short_name  := 'PER';
2505          p_kf_job_seg_tab(l_kf_job_seg_count).flex_code        := 'JOB';
2506          p_kf_job_seg_tab(l_kf_job_seg_count).structure_code   := l_job_structures_code;
2507          p_kf_job_seg_tab(l_kf_job_seg_count).segment_name     :=  'Job Name';
2508          p_kf_job_seg_tab(l_kf_job_seg_count).column_name      := 'SEGMENT1';
2509          p_kf_job_seg_tab(l_kf_job_seg_count).segment_number   := 1;
2510          p_kf_job_seg_tab(l_kf_job_seg_count).value_set        := null;
2511          p_kf_job_seg_tab(l_kf_job_seg_count).lov_prompt       := 'Job Name';
2512          p_kf_job_seg_tab(l_kf_job_seg_count).segment_type     := null;
2513          p_kf_job_seg_tab(l_kf_job_seg_count).window_prompt    := 'Job Name';
2514 
2515           --create technical summary data for valueset
2516           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2517                                  ,p_valueset_type   => null
2518                                  ,p_structure_code  => l_job_structures_code
2519                                  ,p_segment_name    => 'Job Name'
2520                                  ,p_segment_number  => 1
2521                                  ,p_valueset_tab    => l_kf_job_valueset_tab);
2522 
2523           p_kf_job_seg_tab(l_kf_job_seg_count).vs_value_set_name
2524                          := l_kf_job_valueset_tab(l_value_set_tab_count).value_set_name;
2525           p_kf_job_seg_tab(l_kf_job_seg_count).vs_description
2526                          := l_kf_job_valueset_tab(l_value_set_tab_count).description;
2527           p_kf_job_seg_tab(l_kf_job_seg_count).vs_security_available
2528                          := l_kf_job_valueset_tab(l_value_set_tab_count).security_available;
2529           p_kf_job_seg_tab(l_kf_job_seg_count).vs_enable_longlist
2530                          := l_kf_job_valueset_tab(l_value_set_tab_count).enable_longlist;
2531           p_kf_job_seg_tab(l_kf_job_seg_count).vs_format_type
2532                          := l_kf_job_valueset_tab(l_value_set_tab_count).format_type;
2533           p_kf_job_seg_tab(l_kf_job_seg_count).vs_maximum_size
2534                          := l_kf_job_valueset_tab(l_value_set_tab_count).maximum_size;
2535           p_kf_job_seg_tab(l_kf_job_seg_count).vs_precision
2536                          := l_kf_job_valueset_tab(l_value_set_tab_count).precision;
2537           p_kf_job_seg_tab(l_kf_job_seg_count).vs_numbers_only
2538                          := l_kf_job_valueset_tab(l_value_set_tab_count).numbers_only;
2539           p_kf_job_seg_tab(l_kf_job_seg_count).vs_uppercase_only
2540                          := l_kf_job_valueset_tab(l_value_set_tab_count).uppercase_only;
2541           p_kf_job_seg_tab(l_kf_job_seg_count).vs_right_justify_zero_fill
2542                          := l_kf_job_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2543           p_kf_job_seg_tab(l_kf_job_seg_count).vs_min_value
2544                          := l_kf_job_valueset_tab(l_value_set_tab_count).min_value;
2545           p_kf_job_seg_tab(l_kf_job_seg_count).vs_max_value
2546                          := l_kf_job_valueset_tab(l_value_set_tab_count).max_value;
2547           l_kf_job_seg_count := l_kf_job_seg_count + 1 ;
2548        end if;
2549 
2550       l_log_message := 'Created KEYFLEX SEGMENT : PER JOB ' || 'Job Name';
2551       per_ri_config_utilities.write_log(p_message => l_log_message);
2552 
2553        -- Create Position Key Flex Segments
2554        if NOT (p_technical_summary_mode) then
2555          per_ri_config_utilities.create_flex_segments
2556                        (p_appl_short_Name           => 'PER'
2557                        ,p_flex_code                 => 'POS'
2558                        ,p_structure_code            => l_pos_structures_code
2559                        ,p_segment_name              => 'Position Name'
2560                        ,p_column_name               => 'SEGMENT1'
2561                        ,p_segment_number            => 1
2562                        ,p_value_set                 => null
2563                        ,p_lov_prompt                => 'Position Name'
2564                       ,p_window_prompt             => 'Position Name');
2565          else
2566            p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
2567            p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
2568            p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   := l_pos_structures_code;
2569            p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Position Name';
2570            p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT1';
2571            p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   := 1;
2572            p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := null;
2573            p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Position Name';
2574            p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := null;
2575            p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Position Name';
2576 
2577            --create technical summary data for valueset
2578            per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2579                                  ,p_valueset_type   => null
2580                                  ,p_structure_code  => l_pos_structures_code
2581                                  ,p_segment_name    => 'Position Name'
2582                                  ,p_segment_number  => 1
2583                                  ,p_valueset_tab    => l_kf_pos_valueset_tab);
2584 
2585            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
2586                           := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
2587            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
2588                           := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
2589            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
2590                           := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
2591            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
2592                           := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
2593            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
2594                           := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
2595            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
2596                           := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
2597            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
2598                           := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
2599            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
2600                           := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
2601            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
2602                           := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
2603            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
2604                           := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2605            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
2606                           := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
2607            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
2608                           := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
2609            l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
2610          end if;
2611 
2612       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || l_pos_structures_code;
2613       per_ri_config_utilities.write_log(p_message => l_log_message);
2614 
2615        hr_utility.set_location(l_proc, 60);
2616      else
2617        hr_utility.set_location(l_proc, 70);
2618        hr_utility.trace('Positions : Industry is US_GOVERNMENT');
2619 
2620       -- create only federal job segments with specified value segment name valuesets.
2621       -- First Segment 'Name' valueset '60 Characters'
2622       if NOT (p_technical_summary_mode) then
2623         per_ri_config_utilities.create_flex_segments
2624                         (p_appl_short_Name           => 'PER'
2625                         ,p_flex_code                 => 'JOB'
2626                         ,p_structure_code            => l_job_structures_code
2627                         ,p_segment_name              => 'Name'
2628                         ,p_column_name               => 'SEGMENT1'
2629                         ,p_segment_number            => 1
2630                         ,p_value_set                 => '60 Characters'
2631                         ,p_lov_prompt                => 'Name'
2632                         ,p_segment_type              => 'Char'
2633                         ,p_window_prompt             => 'Name'
2634                         ,p_fed_seg_attribute         => 'Y');
2635 
2636       else
2637         p_kf_job_seg_tab(l_kf_job_seg_count).appl_short_name  := 'PER';
2638         p_kf_job_seg_tab(l_kf_job_seg_count).flex_code        := 'JOB';
2639         p_kf_job_seg_tab(l_kf_job_seg_count).structure_code   :=  l_job_structures_code;
2640         p_kf_job_seg_tab(l_kf_job_seg_count).segment_name     :=  'Name';
2641         p_kf_job_seg_tab(l_kf_job_seg_count).column_name      := 'SEGMENT1';
2642         p_kf_job_seg_tab(l_kf_job_seg_count).segment_number   :=  1;
2643         p_kf_job_seg_tab(l_kf_job_seg_count).value_set        :=  '60 Characters';
2644         p_kf_job_seg_tab(l_kf_job_seg_count).lov_prompt       := 'Name';
2645         p_kf_job_seg_tab(l_kf_job_seg_count).segment_type     := 'Char';
2646         p_kf_job_seg_tab(l_kf_job_seg_count).window_prompt    := 'Name';
2647 
2648         --create technical summary data for valueset
2649         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2650                                ,p_valueset_type   => 'Char'
2651                                ,p_structure_code  => l_job_structures_code
2652                                ,p_segment_name    => 'Name'
2653                                ,p_segment_number  => 1
2654                                ,p_valueset_tab    => l_kf_job_valueset_tab);
2655 
2656         p_kf_job_seg_tab(l_kf_job_seg_count).vs_value_set_name
2657                        := l_kf_job_valueset_tab(l_value_set_tab_count).value_set_name;
2658         p_kf_job_seg_tab(l_kf_job_seg_count).vs_description
2659                        := l_kf_job_valueset_tab(l_value_set_tab_count).description;
2660         p_kf_job_seg_tab(l_kf_job_seg_count).vs_security_available
2661                        := l_kf_job_valueset_tab(l_value_set_tab_count).security_available;
2662         p_kf_job_seg_tab(l_kf_job_seg_count).vs_enable_longlist
2663                        := l_kf_job_valueset_tab(l_value_set_tab_count).enable_longlist;
2664         p_kf_job_seg_tab(l_kf_job_seg_count).vs_format_type
2665                        := l_kf_job_valueset_tab(l_value_set_tab_count).format_type;
2666         p_kf_job_seg_tab(l_kf_job_seg_count).vs_maximum_size
2667                        := l_kf_job_valueset_tab(l_value_set_tab_count).maximum_size;
2668         p_kf_job_seg_tab(l_kf_job_seg_count).vs_precision
2669                        := l_kf_job_valueset_tab(l_value_set_tab_count).precision;
2670         p_kf_job_seg_tab(l_kf_job_seg_count).vs_numbers_only
2671                        := l_kf_job_valueset_tab(l_value_set_tab_count).numbers_only;
2672         p_kf_job_seg_tab(l_kf_job_seg_count).vs_uppercase_only
2673                        := l_kf_job_valueset_tab(l_value_set_tab_count).uppercase_only;
2674         p_kf_job_seg_tab(l_kf_job_seg_count).vs_right_justify_zero_fill
2675                        := l_kf_job_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2676         p_kf_job_seg_tab(l_kf_job_seg_count).vs_min_value
2677                        := l_kf_job_valueset_tab(l_value_set_tab_count).min_value;
2678         p_kf_job_seg_tab(l_kf_job_seg_count).vs_max_value
2679                        := l_kf_job_valueset_tab(l_value_set_tab_count).max_value;
2680         l_kf_job_seg_count := l_kf_job_seg_count + 1 ;
2681       end if;
2682 
2683       -- create only federal position segments with specified value segment name valuesets.
2684       -- First Segment
2685       if NOT (p_technical_summary_mode) then
2686       per_ri_config_utilities.create_flex_segments
2687                         (p_appl_short_Name           => 'PER'
2688                         ,p_flex_code                 => 'POS'
2689                         ,p_structure_code            =>  l_pos_structures_code
2690                         ,p_segment_name              => 'Position Title'
2691                         ,p_column_name               => 'SEGMENT1'
2692                         ,p_segment_number            => 1
2693                         ,p_value_set                 => 'GHR_US_POSITION_TITLE'
2694                         ,p_lov_prompt                => 'Position Title'
2695                         ,p_segment_type              => 'Char'
2696                         ,p_window_prompt             => 'Position Title'
2697                         ,p_fed_seg_attribute         => 'Y');
2698 
2699       else
2700         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
2701         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
2702         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
2703         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Position Title';
2704         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT1';
2705         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  1;
2706         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_POSITION_TITLE';
2707         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Position Title';
2708         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
2709         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Position Title';
2710 
2711         --create technical summary data for valueset
2712         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_POSITION_TITLE'
2713                                ,p_valueset_type   => 'Char'
2714                                ,p_structure_code  => l_pos_structures_code
2715                                ,p_segment_name    => 'Position Title'
2716                                ,p_segment_number  => 1
2717                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
2718 
2719         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
2720                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
2721         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
2722                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
2723         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
2724                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
2725         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
2726                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
2727         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
2728                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
2729         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
2730                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
2731         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
2732                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
2733         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
2734                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
2735         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
2736                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
2737         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
2738                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2739         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
2740                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
2741         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
2742                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
2743         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
2744       end if;
2745 
2746       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Position Title';
2747       per_ri_config_utilities.write_log(p_message => l_log_message);
2748 
2749       -- Second Segment
2750       if NOT (p_technical_summary_mode) then
2751       per_ri_config_utilities.create_flex_segments
2752                         (p_appl_short_Name           => 'PER'
2753                         ,p_flex_code                 => 'POS'
2754                         ,p_structure_code            =>  l_pos_structures_code
2755                         ,p_segment_name              => 'Description'
2756                         ,p_column_name               => 'SEGMENT2'
2757                         ,p_segment_number            => 2
2758                         ,p_value_set                 => 'GHR_US_POS_DESC_NUM'
2759                         ,p_lov_prompt                => 'Description'
2760                         ,p_segment_type              => 'Char'
2761                         ,p_window_prompt             => 'Description'
2762                         ,p_fed_seg_attribute         => 'Y');
2763       else
2764         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
2765         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
2766         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
2767         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Description';
2768         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT2';
2769         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  2;
2770         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_POS_DESC_NUM';
2771         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Description';
2772         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
2773         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Description';
2774 
2775         --create technical summary data for valueset
2776         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_POS_DESC_NUM'
2777                                ,p_valueset_type   => 'Char'
2778                                ,p_structure_code  => l_pos_structures_code
2779                                ,p_segment_name    => 'Description'
2780                                ,p_segment_number  => 2
2781                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
2782 
2783         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
2784                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
2785         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
2786                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
2787         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
2788                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
2789         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
2790                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
2791         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
2792                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
2793         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
2794                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
2795         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
2796                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
2797         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
2798                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
2799         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
2800                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
2801         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
2802                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2803         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
2804                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
2805         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
2806                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
2807         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
2808       end if;
2809 
2810       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Description';
2811       per_ri_config_utilities.write_log(p_message => l_log_message);
2812 
2813       -- Third Segment
2814       if NOT (p_technical_summary_mode) then
2815       per_ri_config_utilities.create_flex_segments
2816                         (p_appl_short_Name           => 'PER'
2817                         ,p_flex_code                 => 'POS'
2818                         ,p_structure_code            =>  l_pos_structures_code
2819                         ,p_segment_name              => 'Sequence'
2820                         ,p_column_name               => 'SEGMENT3'
2821                         ,p_segment_number            => 3
2822                         ,p_value_set                 => 'GHR_US_SEQUENCE_NUM'
2823                         ,p_lov_prompt                => 'Sequence'
2824                         ,p_segment_type              => 'Char'
2825                         ,p_window_prompt             => 'Sequence'
2826                         ,p_fed_seg_attribute         => 'Y');
2827       else
2828         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
2829         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
2830         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
2831         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Sequence';
2832         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT3';
2833         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  3;
2834         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_SEQUENCE_NUM';
2835         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Sequence';
2836         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
2837         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Sequence';
2838 
2839         --create technical summary data for valueset
2840         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_SEQUENCE_NUM'
2841                                ,p_valueset_type   => 'Char'
2842                                ,p_structure_code  => l_pos_structures_code
2843                                ,p_segment_name    => 'Sequence'
2844                                ,p_segment_number  => 3
2845                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
2846 
2847         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
2848                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
2849         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
2850                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
2851         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
2852                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
2853         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
2854                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
2855         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
2856                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
2857         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
2858                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
2859         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
2860                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
2861         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
2862                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
2863         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
2864                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
2865         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
2866                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2867         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
2868                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
2869         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
2870                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
2871         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
2872       end if;
2873 
2874       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Sequence';
2875       per_ri_config_utilities.write_log(p_message => l_log_message);
2876       -- Fourth Segment
2877       if NOT (p_technical_summary_mode) then
2878       per_ri_config_utilities.create_flex_segments
2879                         (p_appl_short_Name           => 'PER'
2880                         ,p_flex_code                 => 'POS'
2881                         ,p_structure_code            =>  l_pos_structures_code
2882                         ,p_segment_name              => 'Agency Code'
2883                         ,p_column_name               => 'SEGMENT4'
2884                         ,p_segment_number            => 4
2885                         ,p_value_set                 => 'GHR_US_AGENCY_CODE'
2886                         ,p_lov_prompt                => 'Agency Code'
2887                         ,p_segment_type              => 'Char'
2888                         ,p_window_prompt             => 'Agency Code'
2889                         ,p_fed_seg_attribute         => 'Y');
2890       else
2891         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
2892         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
2893         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
2894         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Agency Code';
2895         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT4';
2896         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  4;
2897         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_AGENCY_CODE';
2898         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Agency Code';
2899         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
2900         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Agency Code';
2901 
2902         --create technical summary data for valueset
2903         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_AGENCY_CODE'
2904                                ,p_valueset_type   => 'Char'
2905                                ,p_structure_code  => l_pos_structures_code
2906                                ,p_segment_name    => 'Agency Code'
2907                                ,p_segment_number  => 4
2908                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
2909 
2910         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
2911                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
2912         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
2913                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
2914         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
2915                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
2916         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
2917                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
2918         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
2919                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
2920         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
2921                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
2922         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
2923                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
2924         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
2925                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
2926         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
2927                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
2928         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
2929                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2930         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
2931                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
2932         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
2933                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
2934         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
2935       end if;
2936 
2937       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Agency Code';
2938       per_ri_config_utilities.write_log(p_message => l_log_message);
2939       hr_utility.set_location(l_proc, 90);
2940     end if;
2941 
2942     --
2943     -- freeze and compile this flexfield
2944     --
2945     if NOT (p_technical_summary_mode) then
2946       per_ri_config_utilities.freeze_and_compile_flexfield
2947                        (p_appl_short_Name           => 'PER'
2948                        ,p_flex_code                 => 'JOB'
2949                        ,p_structure_code            =>  l_job_structures_code);
2950     end if;
2951 
2952     --
2953     -- freeze and compile this flexfield
2954     --
2955     if NOT (p_technical_summary_mode) then
2956       per_ri_config_utilities.freeze_and_compile_flexfield
2957                        (p_appl_short_Name           => 'PER'
2958                        ,p_flex_code                 => 'POS'
2959                        ,p_structure_code            =>  l_pos_structures_code);
2960     end if;
2961 
2962     hr_utility.set_location(' Leaving:'|| l_proc, 100);
2963 
2964   EXCEPTION
2965     when others then
2966       l_error_message := 'Error in ' || l_proc;
2967       hr_utility.trace(l_error_message || '-' || sqlerrm);
2968       hr_utility.set_location(' Leaving:'|| l_proc, 500);
2969       hr_utility.raise_error;
2970 
2971   END create_global_job_pos_kf;
2972 
2973   /* --------------------------------------------------------------------------
2974   -- Name      : create_global_pos_kf
2975   -- Purpose   : This procedure creates global positions keyflex structures,
2976   --             segments and valuesets when positions are not defined.
2977   -- Arguments : p_configuration_code
2978   --
2979   -------------------------------------------------------------------------- */
2980 
2981   PROCEDURE create_global_pos_kf (p_configuration_code in varchar2
2982                                  ,p_technical_summary_mode in boolean default FALSE
2983                                  ,p_kf_pos_tab in out nocopy
2984                                            per_ri_config_tech_summary.kf_pos_tab
2985                                  ,p_kf_pos_seg_tab in out nocopy
2986                                            per_ri_config_tech_summary.kf_pos_seg_tab) IS
2987 
2988   l_proc                         varchar2(72) := g_package || 'create_global_pos_kf';
2989   l_configuration_code           per_ri_config_information.configuration_code%type;
2990   l_position_fk_number           number(9);
2991 
2992   l_enterprise_short_name        per_ri_config_information.configuration_code%type;
2993 
2994   l_pos_structures_code          fnd_id_flex_structures.id_flex_structure_code%type;
2995   l_enterprise_primary_industry  per_ri_config_information.config_information1%type;
2996   l_log_message                  varchar2(360);
2997   l_error_message                varchar2(360);
2998 
2999   l_kf_pos_tab                   per_ri_config_tech_summary.kf_pos_tab;
3000   l_kf_pos_count                 number(8) :=0;
3001   l_kf_pos_seg_tab               per_ri_config_tech_summary.kf_pos_seg_tab;
3002   l_kf_pos_seg_count             number(8) :=0;
3003 
3004   l_kf_pos_valueset_tab          per_ri_config_tech_summary.valueset_tab;
3005   l_value_set_tab_count          number(9) := 1;
3006 
3007 
3008   BEGIN
3009     hr_utility.set_location('Entering:'|| l_proc, 10);
3010 
3011     l_enterprise_short_name := per_ri_config_utilities.get_enterprise_short_name(p_configuration_code);
3012 
3013     l_enterprise_primary_industry := per_ri_config_utilities.get_ent_primary_industry
3014                                                    (p_configuration_code => p_configuration_code);
3015 
3016     -- Create Position Key flex
3017     hr_utility.set_location(l_proc, 20);
3018 
3019     l_pos_structures_code :=  per_ri_config_utilities.return_config_entity_name
3020                                (per_ri_config_main.g_global_pos_structure_name);
3021     if NOT (p_technical_summary_mode) then
3022       l_position_fk_number  := per_ri_config_utilities.create_key_flexfield
3023                                      (p_appl_short_Name   => 'PER'
3024                                      ,p_flex_code         => 'POS'
3025                                      ,p_structure_code    => l_pos_structures_code
3026                                      ,p_structure_title   => l_pos_structures_code
3027                                      ,p_description       => l_pos_structures_code);
3028      else
3029        p_kf_pos_tab(l_kf_pos_count).appl_short_name    := 'PER';
3030        p_kf_pos_tab(l_kf_pos_count).flex_code          := 'POS';
3031        p_kf_pos_tab(l_kf_pos_count).structure_code     := l_pos_structures_code;
3032        p_kf_pos_tab(l_kf_pos_count).structure_title    := l_pos_structures_code;
3033        p_kf_pos_tab(l_kf_pos_count).description        := l_pos_structures_code;
3034        l_kf_pos_count := l_kf_pos_count + 1 ;
3035     end if;
3036 
3037     l_log_message := 'Created KEYFLEX PER POS ' || l_pos_structures_code;
3038     per_ri_config_utilities.write_log(p_message => l_log_message);
3039 
3040     hr_utility.set_location(l_proc, 30);
3041 
3042     if l_enterprise_primary_industry <> 'US_GOVERNMENT' then
3043        hr_utility.set_location(l_proc, 50);
3044 
3045        -- Create Position Key Flex Segments
3046        if NOT (p_technical_summary_mode) then
3047          per_ri_config_utilities.create_flex_segments
3048                          (p_appl_short_Name           => 'PER'
3049                          ,p_flex_code                 => 'POS'
3050                          ,p_structure_code            => l_pos_structures_code
3051                          ,p_segment_name              => 'Position Name'
3052                          ,p_column_name               => 'SEGMENT1'
3053                          ,p_segment_number            => 1
3054                          ,p_value_set                 => null
3055                          ,p_lov_prompt                => 'Position Name'
3056                         ,p_window_prompt             => 'Position Name');
3057          else
3058            p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
3059            p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
3060            p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   := l_pos_structures_code;
3061            p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Position Name';
3062            p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT1';
3063            p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   := 1;
3064            p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := null;
3065            p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Position Name';
3066            p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := null;
3067            p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Position Name';
3068 
3069            --create technical summary data for valueset
3070            per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
3071                                  ,p_valueset_type   => null
3072                                  ,p_structure_code  => l_pos_structures_code
3073                                  ,p_segment_name    => 'Position Name'
3074                                  ,p_segment_number  => 1
3075                                  ,p_valueset_tab    => l_kf_pos_valueset_tab);
3076 
3077            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
3078                           := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
3079            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
3080                           := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
3081            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
3082                           := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
3083            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
3084                           := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
3085            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
3086                           := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
3087            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
3088                           := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
3089            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
3090                           := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
3091            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
3092                           := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
3093            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
3094                           := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
3095            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
3096                           := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
3097            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
3098                           := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
3099            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
3100                           := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
3101            l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
3102          end if;
3103 
3104       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || l_pos_structures_code;
3105       per_ri_config_utilities.write_log(p_message => l_log_message);
3106 
3107        hr_utility.set_location(l_proc, 60);
3108      else
3109        hr_utility.set_location(l_proc, 70);
3110        hr_utility.trace('Positions : Industry is US_GOVERNMENT');
3111 
3112       -- create only federal position segments with specified value segment name valuesets.
3113       -- First Segment
3114       if NOT (p_technical_summary_mode) then
3115         per_ri_config_utilities.create_flex_segments
3116                           (p_appl_short_Name           => 'PER'
3117                           ,p_flex_code                 => 'POS'
3118                           ,p_structure_code            =>  l_pos_structures_code
3119                           ,p_segment_name              => 'Position Title'
3120                           ,p_column_name               => 'SEGMENT1'
3121                           ,p_segment_number            => 1
3122                           ,p_value_set                 => 'GHR_US_POSITION_TITLE'
3123                           ,p_lov_prompt                => 'Position Title'
3124                           ,p_segment_type              => 'Char'
3125                           ,p_window_prompt             => 'Position Title'
3126                           ,p_fed_seg_attribute         => 'Y');
3127       else
3128         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
3129         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
3130         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
3131         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Position Title';
3132         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT1';
3133         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  1;
3134         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_POSITION_TITLE';
3135         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Position Title';
3136         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
3137         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Position Title';
3138 
3139         --create technical summary data for valueset
3140         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_POSITION_TITLE'
3141                                ,p_valueset_type   => 'Char'
3142                                ,p_structure_code  => l_pos_structures_code
3143                                ,p_segment_name    => 'Position Title'
3144                                ,p_segment_number  => 1
3145                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
3146 
3147         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
3148                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
3149         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
3150                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
3151         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
3152                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
3153         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
3154                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
3155         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
3156                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
3157         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
3158                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
3159         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
3160                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
3161         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
3162                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
3163         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
3164                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
3165         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
3166                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
3167         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
3168                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
3169         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
3170                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
3171         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
3172       end if;
3173 
3174       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Position Title';
3175       per_ri_config_utilities.write_log(p_message => l_log_message);
3176 
3177       -- Second Segment
3178       if NOT (p_technical_summary_mode) then
3179         per_ri_config_utilities.create_flex_segments
3180                           (p_appl_short_Name           => 'PER'
3181                           ,p_flex_code                 => 'POS'
3182                           ,p_structure_code            =>  l_pos_structures_code
3183                           ,p_segment_name              => 'Description'
3184                           ,p_column_name               => 'SEGMENT2'
3185                           ,p_segment_number            => 2
3186                           ,p_value_set                 => 'GHR_US_POS_DESC_NUM'
3187                           ,p_lov_prompt                => 'Description'
3188                           ,p_segment_type              => 'Char'
3189                           ,p_window_prompt             => 'Description'
3190                           ,p_fed_seg_attribute         => 'Y');
3191       else
3192         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
3193         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
3194         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
3195         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Description';
3196         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT2';
3197         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  2;
3198         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_POS_DESC_NUM';
3199         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Description';
3200         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
3201         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Description';
3202 
3203         --create technical summary data for valueset
3204         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_POS_DESC_NUM'
3205                                ,p_valueset_type   => 'Char'
3206                                ,p_structure_code  => l_pos_structures_code
3207                                ,p_segment_name    => 'Description'
3208                                ,p_segment_number  => 2
3209                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
3210 
3211         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
3212                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
3213         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
3214                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
3215         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
3216                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
3217         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
3218                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
3219         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
3220                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
3221         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
3222                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
3223         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
3224                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
3225         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
3226                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
3227         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
3228                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
3229         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
3230                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
3231         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
3232                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
3233         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
3234                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
3235         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
3236       end if;
3237 
3238       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Description';
3239       per_ri_config_utilities.write_log(p_message => l_log_message);
3240 
3241       -- Third Segment
3242       if NOT (p_technical_summary_mode) then
3243         per_ri_config_utilities.create_flex_segments
3244                           (p_appl_short_Name           => 'PER'
3245                           ,p_flex_code                 => 'POS'
3246                           ,p_structure_code            =>  l_pos_structures_code
3247                           ,p_segment_name              => 'Sequence'
3248                           ,p_column_name               => 'SEGMENT3'
3249                           ,p_segment_number            => 3
3250                           ,p_value_set                 => 'GHR_US_SEQUENCE_NUM'
3251                           ,p_lov_prompt                => 'Sequence'
3252                           ,p_segment_type              => 'Char'
3253                           ,p_window_prompt             => 'Sequence'
3254                           ,p_fed_seg_attribute         => 'Y');
3255 
3256       else
3257         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
3258         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
3259         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
3260         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Sequence';
3261         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT3';
3262         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  3;
3263         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_SEQUENCE_NUM';
3264         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Sequence';
3265         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
3266         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Sequence';
3267 
3268         --create technical summary data for valueset
3269         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_SEQUENCE_NUM'
3270                                ,p_valueset_type   => 'Char'
3271                                ,p_structure_code  => l_pos_structures_code
3272                                ,p_segment_name    => 'Sequence'
3273                                ,p_segment_number  => 3
3274                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
3275 
3276         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
3277                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
3278         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
3279                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
3280         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
3281                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
3282         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
3283                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
3284         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
3285                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
3286         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
3287                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
3288         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
3289                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
3290         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
3291                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
3292         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
3293                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
3294         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
3295                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
3296         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
3297                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
3298         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
3299                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
3300         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
3301       end if;
3302       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Sequence';
3303       per_ri_config_utilities.write_log(p_message => l_log_message);
3304       -- Fourth Segment
3305       if NOT (p_technical_summary_mode) then
3306         per_ri_config_utilities.create_flex_segments
3307                           (p_appl_short_Name           => 'PER'
3308                           ,p_flex_code                 => 'POS'
3309                           ,p_structure_code            =>  l_pos_structures_code
3310                           ,p_segment_name              => 'Agency Code'
3311                           ,p_column_name               => 'SEGMENT4'
3312                           ,p_segment_number            => 4
3313                           ,p_value_set                 => 'GHR_US_AGENCY_CODE'
3314                           ,p_lov_prompt                => 'Agency Code'
3315                           ,p_segment_type              => 'Char'
3316                           ,p_window_prompt             => 'Agency Code'
3317                           ,p_fed_seg_attribute         => 'Y');
3318       else
3319         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
3320         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
3321         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
3322         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Agency Code';
3323         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT4';
3324         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  4;
3325         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_AGENCY_CODE';
3326         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Agency Code';
3327         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
3328         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Agency Code';
3329 
3330         --create technical summary data for valueset
3331         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_AGENCY_CODE'
3332                                ,p_valueset_type   => 'Char'
3333                                ,p_structure_code  => l_pos_structures_code
3334                                ,p_segment_name    => 'Agency Code'
3335                                ,p_segment_number  => 4
3336                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
3337 
3338         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
3339                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
3340         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
3341                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
3342         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
3343                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
3344         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
3345                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
3346         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
3347                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
3348         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
3349                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
3350         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
3351                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
3352         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
3353                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
3354         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
3355                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
3356         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
3357                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
3358         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
3359                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
3360         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
3361                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
3362         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
3363       end if;
3364 
3365       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Agency Code';
3366       per_ri_config_utilities.write_log(p_message => l_log_message);
3367       hr_utility.set_location(l_proc, 90);
3368     end if;
3369 
3370     --
3371     -- freeze and compile this flexfield
3372     --
3373     per_ri_config_utilities.freeze_and_compile_flexfield
3374                        (p_appl_short_Name           => 'PER'
3375                        ,p_flex_code                 => 'POS'
3376                        ,p_structure_code            =>  l_pos_structures_code);
3377 
3378     hr_utility.set_location(' Leaving:'|| l_proc, 100);
3379 
3380   EXCEPTION
3381     when others then
3382       l_error_message := 'Error in ' || l_proc;
3383       hr_utility.trace(l_error_message || '-' || sqlerrm);
3384       hr_utility.set_location(' Leaving:'|| l_proc, 500);
3385       hr_utility.raise_error;
3386 
3387   END create_global_pos_kf;
3388 
3389   /* --------------------------------------------------------------------------
3390   -- Name      : create_global_grd_kf
3391   -- Purpose   : This procedure creates grades keyflex structures, segments and
3392   --             valuesets when grades are not defined.
3393   -- Arguments : p_configuration_code
3394   --
3395   -------------------------------------------------------------------------- */
3396   PROCEDURE create_global_grd_kf (p_configuration_code in varchar2
3397                                  ,p_technical_summary_mode in boolean default FALSE
3398                                   ,p_kf_grd_tab in out nocopy
3399                                      per_ri_config_tech_summary.kf_grd_tab
3400                                   ,p_kf_grd_seg_tab in out nocopy
3401                                      per_ri_config_tech_summary.kf_grd_seg_tab) IS
3402 
3403   l_proc                         varchar2(72) := g_package || 'create_global_grd_kf';
3404   l_log_message                  varchar2(360);
3405   l_kf_grd_tab                   per_ri_config_tech_summary.kf_grd_tab;
3406   l_kf_grd_count                 number(8) := 0;
3407   l_error_message                varchar2(360);
3408   l_kf_grd_seg_tab               per_ri_config_tech_summary.kf_grd_seg_tab;
3409   l_kf_grd_seg_count             number(8) := 0;
3410 
3411   l_configuration_code           per_ri_config_information.configuration_code%type;
3412   l_grade_number                 number(9);
3413 
3414   l_kf_grd_valueset_tab          per_ri_config_tech_summary.valueset_tab;
3415   l_value_set_tab_count          number(9) := 1;
3416 
3417   l_enterprise_short_name        per_ri_config_information.configuration_code%type;
3418 
3419   l_grd_structures_code          fnd_id_flex_structures.id_flex_structure_code%type;
3420   l_enterprise_primary_industry  per_ri_config_information.config_information1%type;
3421 
3422   BEGIN
3423     hr_utility.set_location('Entering:'|| l_proc, 10);
3424 
3425     l_enterprise_primary_industry := per_ri_config_utilities.get_ent_primary_industry
3426                                                    (p_configuration_code => p_configuration_code);
3427 
3428     l_enterprise_short_name := per_ri_config_utilities.get_enterprise_short_name(p_configuration_code);
3429 
3430     if l_enterprise_primary_industry <> 'US_GOVERNMENT' then
3431        hr_utility.set_location(l_proc, 20);
3432        -- Create Grade Key Flex
3433        l_grd_structures_code :=  per_ri_config_utilities.return_config_entity_name
3434                                (per_ri_config_main.g_global_grd_structure_name);
3435        if NOT (p_technical_summary_mode) then
3436          l_grade_number  := per_ri_config_utilities.create_key_flexfield
3437                                         (p_appl_short_Name   => 'PER'
3438                                         ,p_flex_code         => 'GRD'
3439                                         ,p_structure_code    => l_grd_structures_code
3440                                         ,p_structure_title   => l_grd_structures_code
3441                                         ,p_description       => l_grd_structures_code);
3442 
3443       else
3444         p_kf_grd_tab(l_kf_grd_count).appl_short_name    := 'PER';
3445         p_kf_grd_tab(l_kf_grd_count).flex_code          := 'GRD';
3446         p_kf_grd_tab(l_kf_grd_count).structure_code     := l_grd_structures_code;
3447         p_kf_grd_tab(l_kf_grd_count).structure_title    := l_grd_structures_code;
3448         p_kf_grd_tab(l_kf_grd_count).description        := l_grd_structures_code;
3449 
3450         l_kf_grd_count := l_kf_grd_count + 1 ;
3451       end if;
3452        l_log_message := 'Created KEYFLEX PER GRD ' || l_grd_structures_code;
3453        per_ri_config_utilities.write_log(p_message => l_log_message);
3454 
3455        -- Create Grade Key Flex Segments
3456        if NOT (p_technical_summary_mode) then
3457          per_ri_config_utilities.create_flex_segments
3458                        (p_appl_short_Name           => 'PER'
3459                        ,p_flex_code                 => 'GRD'
3460                        ,p_structure_code            => l_grd_structures_code
3461                        ,p_segment_name              => 'Grade'
3462                        ,p_column_name               => 'SEGMENT1'
3463                        ,p_segment_number            => 1
3464                        ,p_value_set                 => null
3465                        ,p_lov_prompt                => 'Grade'
3466                        ,p_window_prompt             => 'Grade');
3467         else
3468           p_kf_grd_seg_tab(l_kf_grd_seg_count).appl_short_name  := 'PER';
3469           p_kf_grd_seg_tab(l_kf_grd_seg_count).flex_code        := 'GRD';
3470           p_kf_grd_seg_tab(l_kf_grd_seg_count).structure_code   := l_grd_structures_code;
3471           p_kf_grd_seg_tab(l_kf_grd_seg_count).segment_name     := 'Grade';
3472           p_kf_grd_seg_tab(l_kf_grd_seg_count).column_name      := 'SEGMENT1';
3473           p_kf_grd_seg_tab(l_kf_grd_seg_count).segment_number   := 1;
3474           p_kf_grd_seg_tab(l_kf_grd_seg_count).value_set        := null;
3475           p_kf_grd_seg_tab(l_kf_grd_seg_count).lov_prompt       := 'Grade';
3476           p_kf_grd_seg_tab(l_kf_grd_seg_count).segment_type     := 'Grade';
3477           p_kf_grd_seg_tab(l_kf_grd_seg_count).window_prompt    := 'Grade';
3478 
3479           --create technical summary data for valueset
3480           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
3481                                  ,p_valueset_type   => null
3482                                  ,p_structure_code  => l_grd_structures_code
3483                                  ,p_segment_name    => 'Grade'
3484                                  ,p_segment_number  => 1
3485                                  ,p_valueset_tab    => l_kf_grd_valueset_tab);
3486 
3487           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_value_set_name
3488                          := l_kf_grd_valueset_tab(l_value_set_tab_count).value_set_name;
3489           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_description
3490                          := l_kf_grd_valueset_tab(l_value_set_tab_count).description;
3491           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_security_available
3492                          := l_kf_grd_valueset_tab(l_value_set_tab_count).security_available;
3493           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_enable_longlist
3494                          := l_kf_grd_valueset_tab(l_value_set_tab_count).enable_longlist;
3495           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_format_type
3496                          := l_kf_grd_valueset_tab(l_value_set_tab_count).format_type;
3497           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_maximum_size
3498                          := l_kf_grd_valueset_tab(l_value_set_tab_count).maximum_size;
3499           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_precision
3500                          := l_kf_grd_valueset_tab(l_value_set_tab_count).precision;
3501           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_numbers_only
3502                          := l_kf_grd_valueset_tab(l_value_set_tab_count).numbers_only;
3503           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_uppercase_only
3504                          := l_kf_grd_valueset_tab(l_value_set_tab_count).uppercase_only;
3505           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_right_justify_zero_fill
3506                          := l_kf_grd_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
3507           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_min_value
3508                          := l_kf_grd_valueset_tab(l_value_set_tab_count).min_value;
3509           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_max_value
3510                          := l_kf_grd_valueset_tab(l_value_set_tab_count).max_value;
3511 
3512           l_kf_grd_seg_count := l_kf_grd_seg_count + 1 ;
3513     end if;
3514 
3515       l_log_message := 'Created KEYFLEX SEGMENT : PER GRD ' || 'Grade';
3516       per_ri_config_utilities.write_log(p_message => l_log_message);
3517 
3518        if NOT (p_technical_summary_mode) then
3519          per_ri_config_utilities.create_flex_segments
3520                        (p_appl_short_Name           => 'PER'
3521                        ,p_flex_code                 => 'GRD'
3522                        ,p_structure_code            => l_grd_structures_code
3523                        ,p_segment_name              => 'Level'
3524                        ,p_column_name               => 'SEGMENT2'
3525                        ,p_segment_number            => 2
3526                        ,p_value_set                 => null
3527                        ,p_lov_prompt                => 'Level'
3528                        ,p_window_prompt             => 'Level');
3529         else
3530           p_kf_grd_seg_tab(l_kf_grd_seg_count).appl_short_name  := 'PER';
3531           p_kf_grd_seg_tab(l_kf_grd_seg_count).flex_code        := 'GRD';
3532           p_kf_grd_seg_tab(l_kf_grd_seg_count).structure_code   := l_grd_structures_code;
3533           p_kf_grd_seg_tab(l_kf_grd_seg_count).segment_name     := 'Level';
3534           p_kf_grd_seg_tab(l_kf_grd_seg_count).column_name      := 'SEGMENT2';
3535           p_kf_grd_seg_tab(l_kf_grd_seg_count).segment_number   := 2;
3536           p_kf_grd_seg_tab(l_kf_grd_seg_count).value_set        := null;
3537           p_kf_grd_seg_tab(l_kf_grd_seg_count).lov_prompt       := 'Level';
3538           p_kf_grd_seg_tab(l_kf_grd_seg_count).segment_type     := 'Level';
3539           p_kf_grd_seg_tab(l_kf_grd_seg_count).window_prompt    := 'Level';
3540 
3541           --create technical summary data for valueset
3542           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
3543                                  ,p_valueset_type   => null
3544                                  ,p_structure_code  => l_grd_structures_code
3545                                  ,p_segment_name    => 'Level'
3546                                  ,p_segment_number  => 2
3547                                  ,p_valueset_tab    => l_kf_grd_valueset_tab);
3548 
3549           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_value_set_name
3550                          := l_kf_grd_valueset_tab(l_value_set_tab_count).value_set_name;
3551           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_description
3552                          := l_kf_grd_valueset_tab(l_value_set_tab_count).description;
3553           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_security_available
3554                          := l_kf_grd_valueset_tab(l_value_set_tab_count).security_available;
3555           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_enable_longlist
3556                          := l_kf_grd_valueset_tab(l_value_set_tab_count).enable_longlist;
3557           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_format_type
3558                          := l_kf_grd_valueset_tab(l_value_set_tab_count).format_type;
3559           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_maximum_size
3560                          := l_kf_grd_valueset_tab(l_value_set_tab_count).maximum_size;
3561           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_precision
3562                          := l_kf_grd_valueset_tab(l_value_set_tab_count).precision;
3563           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_numbers_only
3564                          := l_kf_grd_valueset_tab(l_value_set_tab_count).numbers_only;
3565           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_uppercase_only
3566                          := l_kf_grd_valueset_tab(l_value_set_tab_count).uppercase_only;
3567           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_right_justify_zero_fill
3568                          := l_kf_grd_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
3569           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_min_value
3570                          := l_kf_grd_valueset_tab(l_value_set_tab_count).min_value;
3571           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_max_value
3572                          := l_kf_grd_valueset_tab(l_value_set_tab_count).max_value;
3573 
3574           l_kf_grd_seg_count := l_kf_grd_seg_count + 1 ;
3575     end if;
3576 
3577       l_log_message := 'Created KEYFLEX SEGMENT : PER GRD ' || 'Level';
3578       per_ri_config_utilities.write_log(p_message => l_log_message);
3579       --
3580       -- freeze and compile this flexfield
3581       --
3582       if NOT (p_technical_summary_mode) then
3583         per_ri_config_utilities.freeze_and_compile_flexfield
3584                        (p_appl_short_Name           => 'PER'
3585                        ,p_flex_code                 => 'GRD'
3586                        ,p_structure_code            => l_grd_structures_code);
3587       end if;
3588     else
3589       -- Since GRD Keyflex and segments are already defined.
3590       Null;
3591     end if;
3592 
3593   EXCEPTION
3594     when others then
3595       l_error_message := 'Error in ' || l_proc;
3596       hr_utility.trace(l_error_message || '-' || sqlerrm);
3597       hr_utility.set_location(' Leaving:'|| l_proc, 500);
3598       hr_utility.raise_error;
3599 
3600   END create_global_grd_kf;
3601 
3602   /* --------------------------------------------------------------------------
3603   -- Name      : create_default_value_sets
3604   -- Purpose   : This procedure creates default valuests.
3605   -- Arguments : p_configuration_code
3606   --
3607   -------------------------------------------------------------------------- */
3608   PROCEDURE create_default_value_sets (p_configuration_code in varchar2) IS
3609 
3610   l_proc                         varchar2(72) := g_package || 'create_default_value_sets';
3611   l_log_message	                 varchar2(360);
3612   l_error_message                 varchar2(360);
3613 
3614   l_security_available	         varchar2(1)    default 'N';
3615   l_enable_longlist		 varchar2(1)    default 'Y';
3616   l_format_type			 varchar2(1)    default 'C';
3617   l_maximum_size   		 number(9)      default 60;
3618   l_precision 			 number(2)      default null;
3619   l_numbers_only 		 varchar2(1)    default 'N';
3620   l_uppercase_only               varchar2(1)    default 'N';
3621   l_right_justify_zero_fill	 varchar2(1)    default 'N';
3622   l_min_value			 varchar2(150)  default null;
3623   l_max_value 			 varchar2(150)  default null;
3624   l_description                  varchar2(240);
3625   l_value_set_exists             boolean;
3626 
3627   BEGIN
3628 
3629    hr_utility.set_location('Entering:'|| l_proc, 10);
3630 
3631    fnd_flex_val_api.set_session_mode('customer_data');
3632 
3633    -- Create PER_RI_DEFAULT_GRADES
3634    l_value_set_exists := fnd_flex_val_api.valueset_exists(value_set => 'PER_RI_CONFIG_DEFAULT_GRADES');
3635    if not (l_value_set_exists) then
3636      hr_utility.set_location(l_proc, 20);
3637      l_description  := 'The default Grades Value Set is generated by Enterprise Structures Configuration '
3638                         || 'and used in Grade flexfield validation. This will initially be empty and can '
3639                         || 'be populated using the load reference data';
3640      fnd_flex_val_api.create_valueset_independent
3641                                       (value_set_name	                => 'PER_RI_CONFIG_DEFAULT_GRADES'
3642 	                              ,description	                => l_description
3643 	                              ,security_available               => l_security_available
3644 	                              ,enable_longlist	                => l_enable_longlist
3645    	                              ,format_type	                => l_format_type
3646 	                              ,maximum_size   	                => l_maximum_size
3647 	                              ,precision 	                => l_precision
3648 	                              ,numbers_only 	                => l_numbers_only
3649 	                              ,uppercase_only                   => l_uppercase_only
3650 	                              ,right_justify_zero_fill          => l_right_justify_zero_fill
3651 	                              ,min_value		       => l_min_value
3652 	                              ,max_value 	               => l_max_value);
3653     l_log_message := 'Created DEFAULT VALUESET ' || 'PER_RI_CONFIG_DEFAULT_GRADES';
3654     per_ri_config_utilities.write_log(p_message => l_log_message);
3655    end if;
3656    hr_utility.set_location(l_proc, 30);
3657    -- Create PER_RI_DEFAULT_GRADES
3658    l_value_set_exists := fnd_flex_val_api.valueset_exists(value_set => 'PER_RI_CONFIG_DEFAULT_LEVELS');
3659    if not (l_value_set_exists) then
3660      hr_utility.set_location(l_proc, 40);
3661      l_description  := 'The default Grades Level Value Set is generated by Enterprise Structures Configuration '
3662                         || 'and used in Grade flexfield validation. This will initially be empty and can '
3663                         || 'be populated using the load reference data';
3664      fnd_flex_val_api.create_valueset_independent
3665                                       (value_set_name            => 'PER_RI_CONFIG_DEFAULT_LEVELS'
3666                                       ,description              => l_description
3667                                       ,security_available       => l_security_available
3668                                       ,enable_longlist          => l_enable_longlist
3669                                       ,format_type              => l_format_type
3670                                       ,maximum_size             => l_maximum_size
3671                                       ,precision                => l_precision
3672                                       ,numbers_only             => l_numbers_only
3673                                       ,uppercase_only           => l_uppercase_only
3674                                       ,right_justify_zero_fill  => l_right_justify_zero_fill
3675                                       ,min_value                => l_min_value
3676                                       ,max_value                => l_max_value);
3677     l_log_message := 'Created DEFAULT VALUESET ' || 'PER_RI_CONFIG_DEFAULT_LEVELS';
3678    end if;
3679    hr_utility.set_location(l_proc, 50);
3680 
3681    -- Create PER_RI_DEFAULT_GRADES
3682    l_description  := 'The default Account Number Value Set is generated by Enterprise Structures Configuration '
3683                       || 'and used in Grade flexfield validation. This will initially be empty and can '
3684                       || 'be populated using the load reference data';
3685    l_value_set_exists := fnd_flex_val_api.valueset_exists(value_set => 'PER_RI_CONFIG_DEFAULT_ACCOUNT');
3686    if not (l_value_set_exists) then
3687      hr_utility.set_location(l_proc, 60);
3688      fnd_flex_val_api.create_valueset_independent
3689                                       (value_set_name            => 'PER_RI_CONFIG_DEFAULT_ACCOUNT'
3690                                       ,description              => l_description
3691                                       ,security_available       => l_security_available
3692                                       ,enable_longlist          => l_enable_longlist
3693                                       ,format_type              => l_format_type
3694                                       ,maximum_size             => l_maximum_size
3695                                       ,precision                => l_precision
3696                                       ,numbers_only             => l_numbers_only
3697                                       ,uppercase_only           => l_uppercase_only
3698                                       ,right_justify_zero_fill  => l_right_justify_zero_fill
3699                                       ,min_value                => l_min_value
3700                                       ,max_value                => l_max_value);
3701     l_log_message := 'Created DEFAULT VALUESET ' || 'PER_RI_CONFIG_DEFAULT_ACCOUNT';
3702    end if;
3703    hr_utility.set_location(l_proc, 70);
3704    -- Create PER_RI_DEFAULT_GRADES
3705    l_description  := 'The default Company Value Set is generated by Enterprise Structures Configuration '
3706                       || 'and used in Grade flexfield validation. This will initially be empty and can '
3707                       || 'be populated using the load reference data';
3708    l_value_set_exists := fnd_flex_val_api.valueset_exists(value_set => 'PER_RI_CONFIG_DEFAULT_COMPANY');
3709    if not (l_value_set_exists) then
3710      hr_utility.set_location(l_proc, 80);
3711      fnd_flex_val_api.create_valueset_independent
3712                                       (value_set_name            => 'PER_RI_CONFIG_DEFAULT_COMPANY'
3713                                       ,description              => l_description
3714                                       ,security_available       => l_security_available
3715                                       ,enable_longlist          => l_enable_longlist
3716                                       ,format_type              => l_format_type
3717                                       ,maximum_size             => l_maximum_size
3718                                       ,precision                => l_precision
3719                                       ,numbers_only             => l_numbers_only
3720                                       ,uppercase_only           => l_uppercase_only
3721                                       ,right_justify_zero_fill  => l_right_justify_zero_fill
3722                                       ,min_value                => l_min_value
3723                                       ,max_value                => l_max_value);
3724     l_log_message := 'Created DEFAULT VALUESET ' || 'PER_RI_CONFIG_DEFAULT_COMPANY';
3725    end if;
3726    hr_utility.set_location(l_proc, 90);
3727    -- Create PER_RI_DEFAULT_GRADES
3728    l_description  := 'The default Cost Center Value Set is generated by Enterprise Structures Configuration '
3729                       || 'and used in Grade flexfield validation. This will initially be empty and can '
3730                       || 'be populated using the load reference data';
3731    l_value_set_exists := fnd_flex_val_api.valueset_exists(value_set => 'PER_RI_CONFIG_DEFAULT_CC');
3732    if not (l_value_set_exists) then
3733      hr_utility.set_location(l_proc, 100);
3734      fnd_flex_val_api.create_valueset_independent
3735                                       (value_set_name            => 'PER_RI_CONFIG_DEFAULT_CC'
3736                                       ,description              => l_description
3737                                       ,security_available       => l_security_available
3738                                       ,enable_longlist          => l_enable_longlist
3739                                       ,format_type              => l_format_type
3740                                       ,maximum_size             => l_maximum_size
3741                                       ,precision                => l_precision
3742                                       ,numbers_only             => l_numbers_only
3743                                       ,uppercase_only           => l_uppercase_only
3744                                       ,right_justify_zero_fill  => l_right_justify_zero_fill
3745                                       ,min_value                => l_min_value
3746                                       ,max_value                => l_max_value);
3747     l_log_message := 'Created DEFAULT VALUESET ' || 'PER_RI_CONFIG_DEFAULT_CC';
3748    end if;
3749 
3750    hr_utility.set_location(' Leaving:'|| l_proc, 120);
3751 
3752   EXCEPTION
3753     when others then
3754       l_error_message := 'Error in ' || l_proc;
3755       hr_utility.trace(l_error_message || '-' || sqlerrm);
3756       hr_utility.set_location(' Leaving:'|| l_proc, 500);
3757       hr_utility.raise_error;
3758 
3759 
3760   END create_default_value_sets;
3761 
3762   /* --------------------------------------------------------------------------
3763   -- Name      : create_hrms_responsibility
3764   -- Purpose   : This procedure creates hrms responsibilities and assign them to
3765   --             the super user created by the enterprise structures configuration
3766   --             loader program. Responsibilities attached are based on the product
3767   --             country selection list.
3768   -- Arguments : p_configuration_code
3769   --             p_security_profile_tab
3770   -------------------------------------------------------------------------- */
3771 
3772   PROCEDURE create_hrms_responsibility (p_configuration_code   in varchar2
3773                                        ,p_security_profile_tab in out nocopy security_profile_tab
3774                                        ,p_technical_summary_mode in boolean default FALSE
3775                                        ,p_hrms_resp_tab in out nocopy per_ri_config_tech_summary.hrms_resp_tab) IS
3776 
3777   cursor csr_get_country (cp_configuration_code in varchar2) IS
3778       select country_code
3779       from per_ri_config_country_v
3780      where configuration_code = cp_configuration_code
3781        and country_code in (select distinct territory_code
3782                               from per_ri_config_responsibility)
3783         and country_code in (select per_ri_config_utilities.business_group_decision
3784                                    (cp_configuration_code
3785                                    ,country_code)
3786                               from  per_ri_config_country_v where configuration_code = cp_configuration_code);
3787 
3788   /*
3789   cursor csr_get_country (cp_configuration_code in varchar2) IS
3790     select country_code
3791       from per_ri_config_country_v
3792      where configuration_code = cp_configuration_code
3793        and country_code in (select distinct territory_code
3794                                      from per_ri_config_responsibility);
3795   */
3796 
3797   cursor csr_get_product (cp_configuration_code in varchar2) IS
3798     select product_name
3799       from per_ri_config_prod_selection_v
3800      where configuration_code = cp_configuration_code;
3801 
3802   cursor csr_get_responsibility (cp_territory_code in varchar2
3803                                 ,cp_responsibility_application in varchar2) IS
3804     select distinct resp.responsibility_key,
3805            apps.application_short_name
3806       from fnd_application  apps,
3807            fnd_responsibility  resp,
3808            per_ri_config_responsibility con,
3809            per_ri_config_country_v      cont
3810      where apps.application_id = resp.application_id
3811        and con.responsibility_key = resp.responsibility_key
3812        and resp.responsibility_key = con.responsibility_key
3813        and resp.responsibility_key = con.responsibility_key
3814        and con.territory_code             = cp_territory_code
3815        and con.responsibility_application = cp_responsibility_application
3816        and con.territory_code = cont.country_code
3817        and cont.country_code in (select distinct territory_code
3818                                      from per_ri_config_responsibility);
3819 
3820   cursor csr_global_responsibility(cp_configuration_code in varchar2) IS
3821     select country_code
3822      from  per_ri_config_country_v con
3823     where con.configuration_code = cp_configuration_code
3824       and con.country_code not in (select distinct territory_code
3825                                      from per_ri_config_responsibility)
3826       and per_ri_config_utilities.business_group_decision
3827                                    (cp_configuration_code
3828                                    ,country_code)  <> 'INT' ;
3829 
3830   l_proc                         varchar2(72) := g_package || 'create_hrms_responsibility';
3831   l_error_message                 varchar2(360);
3832   l_country_code                 per_ri_config_information.config_information1%type;
3833   l_product_name                 per_ri_config_information.config_information1%type;
3834   l_fnd_application_short_name   varchar2(30);
3835 
3836   l_country_code_global          per_ri_config_information.config_information1%type;
3837   l_responsibility_key           varchar2(60);
3838   l_application_short_name       per_ri_config_information.configuration_code%type;
3839   l_assign_responsibility        varchar2(30);
3840   l_assign_global_responsibility boolean default FALSE;
3841   l_assign_global_resp_key       varchar2(60);
3842   l_assign_glb_resp_key_app_name varchar2(30);
3843 
3844   l_assign_determined_resp       varchar2(30);
3845   l_hr                           boolean default FALSE;
3846   l_hrms                         boolean default FALSE;
3847   l_benefits                     boolean default FALSE;
3848   l_self_service                 boolean default FALSE;
3849 
3850   l_business_group_name          per_business_groups.name%type;
3851   l_business_group_name_main     per_business_groups.name%type;
3852   l_business_group_name_global   per_business_groups.name%type;
3853   l_start_date                   varchar2(240) := to_char(per_ri_config_fnd_hr_entity.g_config_effective_date,'YYYY/MM/DD');
3854   l_end_date                     varchar2(240) := to_char(per_ri_config_fnd_hr_entity.g_config_effective_end_date,'YYYY/MM/DD');
3855   l_row_count                    number(9) default 0 ;
3856   l_earlier_row_count            number(9) default 0 ;
3857 
3858   l_configuration_user_name      fnd_user.user_name%type;
3859 
3860   l_hrms_resp_count              number(9) := 0;
3861   l_hrms_bgsgut_profile_resp_tab per_ri_config_tech_summary.profile_resp_tab;
3862   l_profile_resp_main_tab        per_ri_config_tech_summary.profile_resp_tab;
3863 
3864   BEGIN
3865 
3866     hr_utility.set_location('Entering:'|| l_proc, 10);
3867 
3868     l_configuration_user_name :=  upper(per_ri_config_utilities.return_config_entity_name_pre
3869                                     (per_ri_config_main.g_configuration_user_name));
3870     open csr_get_product(p_configuration_code);
3871 
3872     loop
3873       fetch csr_get_product into l_product_name;
3874       exit when csr_get_product%NOTFOUND;
3875       hr_utility.trace('l_product_name = ' || l_product_name);
3876 
3877       if l_product_name = 'PER' then
3878         l_hr := TRUE;
3879       end if;
3880       if l_product_name = 'PAY' then
3881         l_hrms := TRUE;
3882       end if;
3883       if l_product_name = 'BEN' then
3884         l_benefits := TRUE;
3885       end if;
3886       if l_product_name = 'SSHR' then
3887         l_self_service := TRUE;
3888       end if;
3889     end loop;
3890 
3891     close csr_get_product;
3892 
3893     hr_utility.set_location(l_proc, 30);
3894 
3895     --
3896     -- assign hrms self service responsibilities
3897     --
3898 
3899     if l_self_service then
3900 
3901       if NOT (p_technical_summary_mode) then
3902         fnd_user_resp_groups_api.load_row(
3903                       x_user_name       => l_configuration_user_name,
3904                       x_resp_key        => 'EMPLOYEE_DIRECT_ACCESS_V4.0',
3905                       x_app_short_name  => 'PER',
3906                       x_security_group  => 'STANDARD',
3907                       x_owner           => 'SEED',
3908                       x_start_date      =>  l_start_date,
3909                       x_end_date        =>  l_end_date,
3910                       x_description     => per_ri_config_main.g_description_string);
3911         hr_utility.trace('Assigned Responsibility: ' || 'EMPLOYEE_DIRECT_ACCESS');
3912         hr_utility.set_location(l_proc, 40);
3913       else
3914           p_hrms_resp_tab(l_hrms_resp_count).user_name      :=  l_configuration_user_name;
3915           p_hrms_resp_tab(l_hrms_resp_count).resp_key  := 'EMPLOYEE_DIRECT_ACCESS_V4';
3916           p_hrms_resp_tab(l_hrms_resp_count).app_short_name := 'PER';
3917           p_hrms_resp_tab(l_hrms_resp_count).security_group := 'STANDARD';
3918           p_hrms_resp_tab(l_hrms_resp_count).owner          := 'SEED';
3919           p_hrms_resp_tab(l_hrms_resp_count).start_date     := l_start_date;
3920           p_hrms_resp_tab(l_hrms_resp_count).end_date       := l_end_date;
3921           p_hrms_resp_tab(l_hrms_resp_count).description    := per_ri_config_main.g_description_string;
3922 
3923           l_hrms_resp_count := l_hrms_resp_count + 1 ;
3924       end if;
3925 
3926       if NOT (p_technical_summary_mode) then
3927         fnd_user_resp_groups_api.load_row(
3928                       x_user_name       => l_configuration_user_name,
3929                       x_resp_key        => 'LINE_MANAGER_ACCESS_V4.0',
3930                       x_app_short_name  => 'PER',
3931                       x_security_group  => 'STANDARD',
3932                       x_owner           => 'SEED',
3933                       x_start_date      =>  l_start_date,
3934                       x_end_date        =>  l_end_date,
3935                       x_description     => per_ri_config_main.g_description_string);
3936       else
3937           p_hrms_resp_tab(l_hrms_resp_count).user_name      :=  l_configuration_user_name;
3938           p_hrms_resp_tab(l_hrms_resp_count).resp_key  := 'LINE_MANAGER_ACCESS_V4';
3939           p_hrms_resp_tab(l_hrms_resp_count).app_short_name := 'PER';
3940           p_hrms_resp_tab(l_hrms_resp_count).security_group := 'STANDARD';
3941           p_hrms_resp_tab(l_hrms_resp_count).owner          := 'SEED';
3942           p_hrms_resp_tab(l_hrms_resp_count).start_date     := l_start_date;
3943           p_hrms_resp_tab(l_hrms_resp_count).end_date       := l_end_date;
3944           p_hrms_resp_tab(l_hrms_resp_count).description    := per_ri_config_main.g_description_string;
3945 
3946           l_hrms_resp_count := l_hrms_resp_count + 1 ;
3947       end if;
3948       hr_utility.trace('Assigned Responsibility: ' || 'LINE_MANAGER_DIRECT_ACCESS');
3949       hr_utility.set_location(l_proc, 50);
3950     end if;
3951 
3952     --decide on the responsibility to be assigned.
3953 
3954     hr_utility.set_location(l_proc, 60);
3955     l_assign_responsibility := 'PER';
3956 
3957     if l_hr and not l_hrms and not l_benefits then
3958       l_assign_responsibility := 'PER';
3959     end if;
3960     if l_hr and l_hrms and not l_benefits then
3961       l_assign_responsibility := 'HRMS';
3962     end if;
3963     if l_hr and l_hrms and l_benefits then
3964       l_assign_responsibility := 'SHRMS';
3965     end if;
3966 
3967     open csr_get_country(p_configuration_code);
3968     loop
3969       fetch csr_get_country into l_country_code;
3970       exit when csr_get_country%NOTFOUND;
3971 
3972       l_assign_determined_resp
3973                := per_ri_config_utilities.determine_country_resp
3974                                 (p_country_code          => l_country_code
3975                                 ,p_assign_responsibility => l_assign_responsibility);
3976 
3977       hr_utility.trace('l_assign_responsibility = ' || l_assign_responsibility);
3978       hr_utility.trace('l_assign_determined_resp = ' || l_assign_determined_resp);
3979       --open csr_get_responsibility(l_country_code
3980       --                           ,l_assign_responsibility);
3981 
3982       open csr_get_responsibility(l_country_code
3983                                  ,l_assign_determined_resp);
3984       loop
3985         fetch csr_get_responsibility into  l_responsibility_key
3986                                           ,l_fnd_application_short_name;
3987 
3988           exit when csr_get_responsibility%NOTFOUND;
3989 
3990           hr_utility.trace('l_country_code : ' || l_country_code);
3991           hr_utility.trace('l_responsibility_key : ' || l_responsibility_key);
3992           hr_utility.trace('l_fnd_application_short_name : ' || l_fnd_application_short_name);
3993 
3994           -- Security Group Removal Changes
3995           -- This is taken care by security_profile_assignment creation
3996           --assign responsibility
3997           /* fnd_user_resp_groups_api.load_row(
3998                                   x_user_name       => l_configuration_user_name,
3999                                   x_resp_key        => l_responsibility_key,
4000                                   x_app_short_name  => l_fnd_application_short_name,
4001                                   x_security_group  => 'STANDARD',
4002                                   x_owner           => 'SEED',
4003                                   x_start_date      =>  l_start_date,
4004                                   x_end_date        =>  l_end_date,
4005                                   x_description     => per_ri_config_main.g_description_string);
4006           hr_utility.trace('Assigned Responsibility:' || l_responsibility_key || ':' || l_fnd_application_short_name);
4007           */
4008           -- get business group name for given country code
4009           l_business_group_name_main := per_ri_config_utilities.get_enterprise_short_name
4010                                            (p_configuration_code => p_configuration_code)
4011                              || ' ' || l_country_code || per_ri_config_main.g_bg_name_suffix_string;
4012 
4013           per_ri_config_fnd_hr_entity.create_resp_level_profile
4014                                     (p_configuration_code       => p_configuration_code
4015                                     ,p_responsibility_key       => l_responsibility_key
4016                                     ,p_technical_summary_mode   => p_technical_summary_mode
4017                                     ,p_profile_resp_tab         => l_profile_resp_main_tab);
4018           -- this need special processing
4019           --once data is populated we need to populate this main table to show data.
4020 
4021 
4022           if NOT (p_technical_summary_mode) then
4023             p_security_profile_tab(csr_get_responsibility%ROWCOUNT + l_row_count).security_profile_name
4024                                                      := l_business_group_name_main;
4025             p_security_profile_tab(csr_get_responsibility%ROWCOUNT + l_row_count).responsibility_key
4026                                                      := l_responsibility_key;
4027 
4028           -- This procedure can be used to populate technical summary records.
4029           else
4030             --this table is also needed now for security group changes
4031             p_security_profile_tab(csr_get_responsibility%ROWCOUNT + l_row_count).security_profile_name
4032                                                      := l_business_group_name_main;
4033             p_security_profile_tab(csr_get_responsibility%ROWCOUNT + l_row_count).responsibility_key
4034                                                      := l_responsibility_key;
4035             --
4036             p_hrms_resp_tab(l_hrms_resp_count).user_name      := l_configuration_user_name;
4037             p_hrms_resp_tab(l_hrms_resp_count).resp_key       := l_responsibility_key;
4038             p_hrms_resp_tab(l_hrms_resp_count).app_short_name := null;
4039             p_hrms_resp_tab(l_hrms_resp_count).security_group := l_business_group_name_main;
4040             p_hrms_resp_tab(l_hrms_resp_count).owner          := null;
4041             p_hrms_resp_tab(l_hrms_resp_count).start_date     := l_start_date;
4042             p_hrms_resp_tab(l_hrms_resp_count).end_date       := l_end_date;
4043             p_hrms_resp_tab(l_hrms_resp_count).description    := per_ri_config_main.g_description_string;
4044 
4045             l_hrms_resp_count := l_hrms_resp_count + 1;
4046           end if;
4047 
4048 
4049           hr_utility.trace('l_business_group_name_main : ' || l_business_group_name_main);
4050           hr_utility.trace('l_responsibility_key : ' || l_responsibility_key);
4051 
4052           hr_utility.trace('l_row_count inside = ' || to_char(l_row_count));
4053 
4054       end loop;
4055       l_row_count := l_row_count + (csr_get_responsibility%ROWCOUNT);
4056       hr_utility.trace('l_row_count outside = ' || to_char(l_row_count));
4057       close csr_get_responsibility;
4058     end loop;
4059     close csr_get_country;
4060 
4061     --process gobal responsibility
4062     hr_utility.set_location('Entering:'|| l_proc, 210);
4063     l_assign_glb_resp_key_app_name  := 'PER';
4064 
4065     if l_hr and not l_hrms and not l_benefits then
4066       l_assign_global_resp_key  := 'GLOBAL HR MANAGER';
4067       l_assign_glb_resp_key_app_name  := 'PER';
4068     end if;
4069 
4070     if l_hr and l_hrms and not l_benefits then
4071       l_assign_global_resp_key  := 'GLOBAL_HRMS_MANAGER';
4072       l_assign_glb_resp_key_app_name  := 'PER';
4073     end if;
4074 
4075     if l_hr and l_hrms and l_benefits then
4076       l_assign_global_resp_key  := 'GLB_SHRMS_MANAGER';
4077       l_assign_glb_resp_key_app_name  := 'PER';
4078     end if;
4079 
4080     if l_hr and not l_hrms and l_benefits then
4081       l_assign_global_resp_key  := 'US_BEN_MANAGER';
4082       l_assign_glb_resp_key_app_name  := 'BEN';
4083     end if;
4084 
4085     hr_utility.set_location('Entering:'|| l_proc, 220);
4086     hr_utility.trace('l_assign_glb_resp_key_app_name : ' || l_assign_glb_resp_key_app_name);
4087     hr_utility.trace('l_assign_global_resp_key : ' || l_assign_global_resp_key);
4088 
4089     l_earlier_row_count := p_security_profile_tab.count + 1;
4090     hr_utility.trace('GLOBAL l_earlier_row_count : ' || l_earlier_row_count);
4091 
4092     open csr_global_responsibility(p_configuration_code);
4093     loop
4094       fetch csr_global_responsibility into l_country_code_global;
4095       exit when csr_global_responsibility%NOTFOUND;
4096 
4097       hr_utility.trace('Assigned Global Responsibility:' || l_assign_global_resp_key );
4098 
4099      -- get business group name for given country code
4100      -- business group name and security profile names are same
4101      l_business_group_name_global := per_ri_config_utilities.get_enterprise_short_name
4102                                            (p_configuration_code => p_configuration_code)
4103                              || ' ' || l_country_code_global || per_ri_config_main.g_bg_name_suffix_string;
4104 
4105       p_security_profile_tab(l_earlier_row_count).security_profile_name
4106                                                        := l_business_group_name_global;
4107       p_security_profile_tab(l_earlier_row_count).responsibility_key
4108                                                      := l_assign_global_resp_key;
4109       -- Populate the data for TS
4110       p_hrms_resp_tab(l_earlier_row_count).user_name      := l_configuration_user_name;
4111       p_hrms_resp_tab(l_earlier_row_count).resp_key       := l_assign_global_resp_key;
4112       p_hrms_resp_tab(l_earlier_row_count).app_short_name := null;
4113       p_hrms_resp_tab(l_earlier_row_count).security_group := null;
4114       p_hrms_resp_tab(l_earlier_row_count).owner          := null;
4115       p_hrms_resp_tab(l_earlier_row_count).start_date     := l_start_date;
4116       p_hrms_resp_tab(l_earlier_row_count).end_date       := l_end_date;
4117       p_hrms_resp_tab(l_earlier_row_count).description    := per_ri_config_main.g_description_string;
4118 
4119       l_earlier_row_count := 1 + l_earlier_row_count;
4120     end loop;
4121     close csr_global_responsibility;
4122 
4123     --assign global responsibility
4124      /* MSG Changes BEGIN
4125       /*     if NOT (p_technical_summary_mode) then
4126       fnd_user_resp_groups_api.load_row(
4127                           x_user_name       => l_configuration_user_name,
4128                           x_resp_key        => l_assign_global_resp_key,
4129                           x_app_short_name  => l_assign_glb_resp_key_app_name,
4130                           x_security_group  => 'STANDARD',
4131                           x_owner           => 'SEED',
4132                           x_start_date      =>  l_start_date,
4133                           x_end_date        =>  l_end_date,
4134                           x_description     => per_ri_config_main.g_description_string);
4135     else
4136       p_hrms_resp_tab(l_hrms_resp_count).user_name      := l_configuration_user_name;
4137       p_hrms_resp_tab(l_hrms_resp_count).resp_key       := l_assign_global_resp_key;
4138       p_hrms_resp_tab(l_hrms_resp_count).app_short_name := l_assign_glb_resp_key_app_name;
4139       p_hrms_resp_tab(l_hrms_resp_count).security_group := 'STANDARD';
4140       p_hrms_resp_tab(l_hrms_resp_count).owner          := 'SEED';
4141       p_hrms_resp_tab(l_hrms_resp_count).start_date     := l_start_date;
4142       p_hrms_resp_tab(l_hrms_resp_count).end_date       := l_end_date;
4143       p_hrms_resp_tab(l_hrms_resp_count).description    := per_ri_config_main.g_description_string;
4144 
4145       l_hrms_resp_count := l_hrms_resp_count + 1 ;
4146     end if;
4147 
4148      per_ri_config_fnd_hr_entity.create_resp_level_profile
4149                                (p_configuration_code      => p_configuration_code
4150                                ,p_responsibility_key      => l_assign_global_resp_key
4151                                ,p_technical_summary_mode  => p_technical_summary_mode
4152                                ,p_profile_resp_tab        => l_profile_resp_main_tab);
4153 
4154      -- get business group name for given country code
4155      l_business_group_name_global := per_ri_config_utilities.get_enterprise_short_name
4156                                            (p_configuration_code => p_configuration_code)
4157                              || ' ' || l_country_code_global || per_ri_config_main.g_bg_name_suffix_string;
4158 
4159      hr_utility.trace('Security Group Removal Changes');
4160      per_ri_config_fnd_hr_entity.create_bg_id_and_sg_id_profile
4161                                           (p_configuration_code         => p_configuration_code
4162                                           ,p_responsibility_key         => l_assign_global_resp_key
4163                                           ,p_responsibility_name        => l_assign_global_resp_name
4164                                           ,p_business_group_name        => l_business_group_name_global
4165                                           ,p_technical_summary_mode     => p_technical_summary_mode
4166                                           ,p_bg_sg_ut_profile_resp_tab  => l_hrms_bgsgut_profile_resp_tab);
4167     MSG Changes END */
4168 
4169   EXCEPTION
4170     when others then
4171       l_error_message := 'Error in ' || l_proc;
4172       hr_utility.trace(l_error_message || '-' || sqlerrm);
4173       hr_utility.set_location(' Leaving:'|| l_proc, 500);
4174       hr_utility.raise_error;
4175 
4176   END create_hrms_responsibility;
4177 
4178   /* --------------------------------------------------------------------------
4179   -- Name      : create_application_level_resp
4180   -- Purpose   : This procedure creates application level profile options.
4181   -- Arguments : p_configuration_code
4182   --
4183   -------------------------------------------------------------------------- */
4184   PROCEDURE create_application_level_resp(p_configuration_code     in varchar2
4185                                          ,p_technical_summary_mode in boolean default FALSE
4186                                          ,p_profile_apps_tab       in out nocopy
4187                                                  per_ri_config_tech_summary.profile_apps_tab) IS
4188 
4189 
4190   cursor csr_get_product (cp_configuration_code in varchar2) IS
4191     select product_name
4192       from per_ri_config_prod_selection_v
4193      where configuration_code = cp_configuration_code;
4194 
4195   l_product_name                 per_ri_config_information.config_information1%type;
4196 
4197   l_profile_apps_count           number(8) := 0;
4198   l_proc                         varchar2(72) := g_package || 'create_application_level_resp';
4199   l_log_message                  varchar2(360);
4200   l_error_message                 varchar2(360);
4201 
4202   BEGIN
4203     hr_utility.set_location('Entering:'|| l_proc, 10);
4204 
4205     open csr_get_product(p_configuration_code);
4206 
4207     loop
4208       fetch csr_get_product into l_product_name;
4209       exit when csr_get_product%NOTFOUND;
4210 
4211 
4212       /* DGARG MSG Changes
4213       -- For each product selected set application level profile option
4214       -- ENABLE_SECURITY_GROUPS
4215       if l_product_name in ('PER','PAY','BEN') then
4216         hr_utility.trace('l_product_name ' || l_product_name);
4217         if NOT (p_technical_summary_mode) then
4218           per_ri_config_utilities.set_profile_option_value
4219                            (p_level                => 10002
4220                            ,p_level_value          => l_product_name
4221                            ,p_level_value_app      => l_product_name
4222                            ,p_profile_name         => 'ENABLE_SECURITY_GROUPS'
4223                            ,p_profile_option_value => 'Y');
4224         else
4225           p_profile_apps_tab(l_profile_apps_count).level                 := 1002;
4226           p_profile_apps_tab(l_profile_apps_count).level_value           := l_product_name;
4227           p_profile_apps_tab(l_profile_apps_count).level_value_app       := l_product_name;
4228           p_profile_apps_tab(l_profile_apps_count).profile_name          := 'ENABLE_SECURITY_GROUPS';
4229           p_profile_apps_tab(l_profile_apps_count).profile_option_value  := 'Y';
4230 
4231           l_profile_apps_count  := l_profile_apps_count + 1;
4232 
4233         end if;
4234 
4235         l_log_message := 'Created PROFILE_OPTION ENABLE_SECURITY_GROUPS ' || l_product_name;
4236         per_ri_config_utilities.write_log(p_message => l_log_message);
4237       end if;
4238       ** */
4239     end loop;
4240     close csr_get_product;
4241 
4242     /* DGARG - Multiple Security Groups Removal chnages
4243     --
4244     -- Set ENABLE_SECURITY_GROUPS all all HRMS application
4245     --
4246     for rec in ( select application_id
4247                     from   fnd_application
4248                     where hr_general.chk_application_id(application_id) = 'TRUE'
4249                     Order by Application_short_name)
4250       loop
4251 
4252         if fnd_profile.save ('ENABLE_SECURITY_GROUPS'
4253                           ,'Y'
4254                           ,'APPL'
4255                           ,rec.application_id ) then
4256 
4257           l_log_message := 'Setting the Enable Security Groups Profile to the application '
4258                            || rec.application_id;
4259 
4260         else
4261            l_log_message := 'The profile setting has errored out for application '
4262                            || rec.application_id;
4263         end if;
4264         per_ri_config_utilities.write_log(p_message => l_log_message);
4265         hr_utility.trace(l_log_message);
4266       end loop;
4267     --
4268     */
4269 
4270   EXCEPTION
4271     when others then
4272       l_error_message := 'Error in ' || l_proc;
4273       hr_utility.trace(l_error_message || '-' || sqlerrm);
4274       hr_utility.set_location(' Leaving:'|| l_proc, 500);
4275       hr_utility.raise_error;
4276 
4277   END create_application_level_resp;
4278   /* --------------------------------------------------------------------------
4279   -- Name      : create_resp_level_profile
4280   -- Purpose   : This procedure creates application level profile options.
4281   -- Arguments : p_configuration_code
4282   --             p_responsibility_key
4283   -------------------------------------------------------------------------- */
4284 
4285   PROCEDURE create_resp_level_profile(p_configuration_code  in varchar2
4286                                      ,p_responsibility_key  in varchar2
4287                                      ,p_technical_summary_mode in boolean default FALSE
4288                                      ,p_profile_resp_tab    in out nocopy
4289                                                                per_ri_config_tech_summary.profile_resp_tab) IS
4290 
4291 
4292   cursor csr_get_product (cp_configuration_code in varchar2) IS
4293     select product_name
4294       from per_ri_config_prod_selection_v
4295      where configuration_code = cp_configuration_code;
4296 
4297   cursor csr_get_resp_key_app (cp_responsibility_key in varchar2) IS
4298     select apps.application_short_name
4299       from fnd_responsibility resp,
4300            fnd_application    apps
4301      where apps.application_id = resp.application_id
4302        and resp.responsibility_key = cp_responsibility_key;
4303 
4304   l_application_short_name       fnd_application.application_short_name%type;
4305   l_hr_user_type                 varchar2(30);
4306   l_product_name                 varchar2(30);
4307 
4308   l_hr                           boolean default TRUE;
4309   l_hrms                         boolean default FALSE;
4310   l_profile_resp_count           number(8) := 0;
4311 
4312   l_proc                         varchar2(72) := g_package || 'create_resp_level_profile';
4313   l_error_message                 varchar2(360);
4314 
4315   BEGIN
4316     hr_utility.set_location('Entering:'|| l_proc, 10);
4317 
4318     -- only one row is there
4319     open csr_get_resp_key_app(p_responsibility_key);
4320     fetch csr_get_resp_key_app into l_application_short_name;
4321     close csr_get_resp_key_app;
4322 
4323     open csr_get_product(p_configuration_code);
4324     loop
4325       fetch csr_get_product into l_product_name;
4326       exit when csr_get_product%NOTFOUND;
4327       if l_product_name = 'PER' then
4328         l_hr := TRUE;
4329       end if;
4330       if l_product_name = 'PAY' then
4331         l_hrms := TRUE;
4332       end if;
4333     end loop;
4334     close csr_get_product;
4335 
4336     if l_hr and l_hrms then
4337        l_hr_user_type := 'INT';
4338     else
4339        l_hr_user_type := 'PER';
4340     end if;
4341 
4342     hr_utility.trace('p_responsibility_key ' || p_responsibility_key);
4343     hr_utility.trace('l_hr_user_type ' || l_hr_user_type);
4344     if NOT (p_technical_summary_mode) then
4345       per_ri_config_utilities.set_profile_option_value
4346                          (p_level                => 10003
4347                          ,p_level_value          => p_responsibility_key
4348                          ,p_level_value_app      => l_application_short_name
4349                          ,p_profile_name         => 'HR_USER_TYPE'
4350                          ,p_profile_option_value => l_hr_user_type);
4351     else
4352       p_profile_resp_tab(l_profile_resp_count).level                 := 1003;
4353       p_profile_resp_tab(l_profile_resp_count).level_value           := p_responsibility_key;
4354       p_profile_resp_tab(l_profile_resp_count).level_value_app       := l_application_short_name;
4355       p_profile_resp_tab(l_profile_resp_count).profile_name          := 'HR_USER_TYPE';
4356       p_profile_resp_tab(l_profile_resp_count).profile_option_value  := l_hr_user_type;
4357 
4358       l_profile_resp_count  := l_profile_resp_count + 1;
4359 
4360     end if;
4361 
4362 
4363     hr_utility.trace('Created HR_USER_TYPE for '|| l_product_name);
4364     hr_utility.set_location('Leaving:'|| l_proc, 40);
4365 
4366   EXCEPTION
4367     when others then
4368       l_error_message := 'Error in ' || l_proc;
4369       hr_utility.trace(l_error_message || '-' || sqlerrm);
4370       hr_utility.set_location(' Leaving:'|| l_proc, 500);
4371       hr_utility.raise_error;
4372 
4373   END create_resp_level_profile;
4374 
4375   /* --------------------------------------------------------------------------
4376   -- Name      : create_bg_id_and_sg_id_profile
4377   -- Purpose   : This procedure creates profile option values for
4378   --             PER_BUSINESS_GROUP_ID
4379   --             PER_SECURITY_GROUP_ID
4380   --             HR_USER_TYPE
4381   -- Arguments : p_configuration_code
4382   --             p_responsibility_key
4383   --             p_business_group_name
4384   -------------------------------------------------------------------------- */
4385 
4386   PROCEDURE create_bg_id_and_sg_id_profile(p_configuration_code    in varchar2
4387                                           ,p_responsibility_key    in varchar2
4388                                           ,p_business_group_name   in varchar2
4389                                           ,p_technical_summary_mode  in boolean default FALSE
4390                                           ,p_bg_sg_ut_profile_resp_tab in out nocopy
4391                                                        per_ri_config_tech_summary.profile_resp_tab) IS
4392 
4393 
4394   cursor csr_get_resp_key_app (cp_responsibility_key in varchar2) IS
4395     select apps.application_short_name,resp.responsibility_id
4396       from fnd_responsibility resp,
4397            fnd_application    apps
4398      where apps.application_id = resp.application_id
4399        and resp.responsibility_key = cp_responsibility_key;
4400 
4401   cursor csr_bg_id (cp_business_group_name in varchar2) IS
4402     select business_group_id
4403       from per_business_groups
4404      where name = cp_business_group_name;
4405 
4406   cursor csr_sg_id (cp_business_group_name in varchar2) IS
4407     select security_profile_id
4408       from per_security_profiles
4409      where security_profile_name = cp_business_group_name;
4410 
4411   cursor csr_get_product (cp_configuration_code in varchar2) IS
4412     select product_name
4413       from per_ri_config_prod_selection_v
4414      where configuration_code = cp_configuration_code;
4415 
4416   l_application_short_name       fnd_application.application_short_name%type;
4417   l_hr_user_type                 varchar2(30);
4418   l_product_name                 varchar2(30);
4419 
4420   l_bg_id                        varchar2(30);
4421   l_sg_id                        varchar2(30);
4422   l_responsibility_id            number(9);
4423 
4424   l_hr                           boolean default TRUE;
4425   l_hrms                         boolean default FALSE;
4426 
4427   l_profile_count                number(10) := 0;
4428   l_proc                         varchar2(72) := g_package || 'create_bg_id_and_sg_id_profile';
4429   l_error_message                varchar2(360);
4430   l_log_message                  varchar2(360);
4431 
4432   BEGIN
4433     hr_utility.set_location('Entering:'|| l_proc, 10);
4434 
4435     if NOT (p_technical_summary_mode) then
4436       -- only one row is there
4437       open csr_get_resp_key_app(p_responsibility_key);
4438       fetch csr_get_resp_key_app into l_application_short_name,l_responsibility_id;
4439       close csr_get_resp_key_app;
4440 
4441 
4442       open csr_bg_id(p_business_group_name);
4443       fetch csr_bg_id into l_bg_id;
4444       close csr_bg_id;
4445 
4446       open csr_sg_id(p_business_group_name);
4447       fetch csr_sg_id into l_sg_id;
4448       close csr_sg_id;
4449 
4450       hr_utility.trace('l_responsibility_id ' || l_responsibility_id);
4451       hr_utility.trace('l_bg_id ' || l_bg_id);
4452       hr_utility.trace('l_sg_id ' || l_sg_id);
4453       hr_utility.trace('p_responsibility_key ' || p_responsibility_key);
4454       hr_utility.trace('p_business_group_name ' || p_business_group_name);
4455 
4456       --
4457       -- Create PER_BUSINESS_GROUP_ID
4458       --
4459       if fnd_profile.save ('PER_BUSINESS_GROUP_ID',
4460                         l_bg_id,
4461                         'RESP',
4462                         l_responsibility_id,
4463                         '800') then
4464         null;
4465       end if;
4466       l_log_message := 'Created Profile Option Value PER_BUSINESS_GROUP_ID ' || l_bg_id;
4467       per_ri_config_utilities.write_log(p_message => l_log_message);
4468       hr_utility.set_location(l_proc, 20);
4469 
4470       --
4471       -- Create PER_SECURITY_PROFILE_ID
4472       --
4473       if fnd_profile.save ('PER_SECURITY_PROFILE_ID',
4474                         l_sg_id,
4475                         'RESP',
4476                         l_responsibility_id,
4477                         '800') then
4478         null;
4479       end if;
4480       l_log_message := 'Created Profile Option Value PER_SECURITY_PROFILE_ID ' || l_sg_id;
4481       per_ri_config_utilities.write_log(p_message => l_log_message);
4482       hr_utility.set_location(l_proc, 30);
4483 
4484       open csr_get_product(p_configuration_code);
4485       loop
4486         fetch csr_get_product into l_product_name;
4487         exit when csr_get_product%NOTFOUND;
4488         if l_product_name = 'PER' then
4489           l_hr := TRUE;
4490         end if;
4491         if l_product_name = 'PAY' then
4492           l_hrms := TRUE;
4493         end if;
4494       end loop;
4495       close csr_get_product;
4496 
4497       if l_hr and l_hrms then
4498          l_hr_user_type := 'INT';
4499       else
4500          l_hr_user_type := 'PER';
4501       end if;
4502       --
4503       -- Create HR_USER_TYPE
4504       --
4505       if fnd_profile.save ('HR_USER_TYPE',
4506                         l_hr_user_type,
4507                         'RESP',
4508                         l_responsibility_id,
4509                         '800') then
4510         null;
4511       end if;
4512       l_log_message := 'Created Profile Option Value HR_USER_TYPE ' || l_hr_user_type;
4513       per_ri_config_utilities.write_log(p_message => l_log_message);
4514       hr_utility.set_location(' Leaving:'|| l_proc, 50);
4515 
4516     else
4517       hr_utility.set_location(l_proc, 110);
4518       open csr_get_product(p_configuration_code);
4519       loop
4520         fetch csr_get_product into l_product_name;
4521         exit when csr_get_product%NOTFOUND;
4522         if l_product_name = 'PER' then
4523           l_hr := TRUE;
4524         end if;
4525         if l_product_name = 'PAY' then
4526           l_hrms := TRUE;
4527         end if;
4528       end loop;
4529       close csr_get_product;
4530 
4531       if l_hr and l_hrms then
4532          l_hr_user_type := 'INT';
4533       else
4534          l_hr_user_type := 'PER';
4535       end if;
4536       hr_utility.set_location(l_proc, 120);
4537       p_bg_sg_ut_profile_resp_tab(l_profile_count).level                 := 10003;
4538       p_bg_sg_ut_profile_resp_tab(l_profile_count).level_value           := p_responsibility_key;
4539       p_bg_sg_ut_profile_resp_tab(l_profile_count).level_value_app       := 'PER';
4540       p_bg_sg_ut_profile_resp_tab(l_profile_count).profile_name          := 'PER_BUSINESS_GROUP_ID';
4541       p_bg_sg_ut_profile_resp_tab(l_profile_count).profile_option_value  := p_business_group_name;
4542       l_profile_count  := l_profile_count + 1;
4543 
4544       p_bg_sg_ut_profile_resp_tab(l_profile_count).level                 := 10003;
4545       p_bg_sg_ut_profile_resp_tab(l_profile_count).level_value           := p_responsibility_key;
4546       p_bg_sg_ut_profile_resp_tab(l_profile_count).level_value_app       := 'PER';
4547       p_bg_sg_ut_profile_resp_tab(l_profile_count).profile_name          := 'PER_SECURITY_PROFILE_ID';
4548       p_bg_sg_ut_profile_resp_tab(l_profile_count).profile_option_value  := p_business_group_name;
4549       l_profile_count  := l_profile_count + 1;
4550 
4551       p_bg_sg_ut_profile_resp_tab(l_profile_count).level                 := 10003;
4552       p_bg_sg_ut_profile_resp_tab(l_profile_count).level_value           := p_responsibility_key;
4553       p_bg_sg_ut_profile_resp_tab(l_profile_count).level_value_app       := 'PER';
4554       p_bg_sg_ut_profile_resp_tab(l_profile_count).profile_name          := 'HR_USER_TYPE';
4555       p_bg_sg_ut_profile_resp_tab(l_profile_count).profile_option_value  := l_hr_user_type;
4556 
4557       l_profile_count  := l_profile_count + 1;
4558 
4559       hr_utility.set_location(l_proc, 130);
4560     end if;
4561   EXCEPTION
4562     when others then
4563       l_error_message := 'Error in ' || l_proc;
4564       hr_utility.trace(l_error_message || '-' || sqlerrm);
4565       hr_utility.set_location(' Leaving:'|| l_proc, 500);
4566       hr_utility.raise_error;
4567 
4568   END create_bg_id_and_sg_id_profile;
4569 
4570 END per_ri_config_fnd_hr_entity;