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.3.12000000.2 2007/03/05 11:59:20 pkagrawa noship $ */
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
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   BEGIN
1341     hr_utility.set_location('Entering:'|| l_proc, 10);
1342 
1343     open csr_config_jobs_rv(p_configuration_code);
1344     LOOP
1345       fetch csr_config_jobs_rv into l_jobs_rv_name,l_jobs_rv_name_orig;
1346 
1347       exit when csr_config_jobs_rv%NOTFOUND;
1348 
1349       hr_utility.set_location(l_proc, 20);
1350       -- Create Jobs RV Key flex
1351       if NOT (p_technical_summary_mode) then
1352         l_jobs_keyflex_number  := per_ri_config_utilities.create_key_flexfield
1353                            (p_appl_short_Name => 'PER'
1354                            ,p_flex_code       => 'JOB'
1355                            ,p_structure_code  => l_jobs_rv_name || per_ri_config_main.g_job_rv_struct_def_string
1356                            ,p_structure_title => l_jobs_rv_name || per_ri_config_main.g_job_rv_struct_def_string
1357                            ,p_description     => l_jobs_rv_name || per_ri_config_main.g_job_rv_struct_def_string
1358                                                                || per_ri_config_main.g_description_suffix_string);
1359       else
1360         p_kf_job_rv_tab(l_kf_job_rv_count).appl_short_name    := 'PER';
1361         p_kf_job_rv_tab(l_kf_job_rv_count).flex_code          := 'JOB';
1362         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;
1363         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;
1364         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
1365                                                                     ||  per_ri_config_main.g_description_suffix_string;
1366         l_kf_job_rv_count := l_kf_job_rv_count + 1 ;
1367     end if;
1368 
1369       per_ri_config_utilities.write_log(p_message => 'Created Jobs RV Keyflex ' || l_jobs_rv_name
1370                                                      || per_ri_config_main.g_job_rv_struct_def_string );
1371       hr_utility.trace('Created Jobs RV Keyflex ' || l_jobs_rv_name
1372                                                   || per_ri_config_main.g_job_rv_struct_def_string);
1373 
1374       open csr_config_jobs_rv_seg(p_configuration_code
1375                                  ,l_jobs_rv_name_orig);
1376       l_jobs_segment_count := 0;
1377       LOOP
1378         fetch csr_config_jobs_rv_seg into l_rv_jobs_segment_type
1379                                          ,l_rv_jobs_segment_name
1380                                          ,l_jobs_segment_no;
1381         exit when csr_config_jobs_rv_seg%NOTFOUND;
1382 
1383         -- Create Jobs Key Flex Segments
1384         l_jobs_segment_count := csr_config_jobs_rv_seg%ROWCOUNT;
1385         if NOT (p_technical_summary_mode) then
1386         per_ri_config_utilities.create_flex_segments
1387                         (p_appl_short_Name           => 'PER'
1388                         ,p_flex_code                 => 'JOB'
1389                         ,p_structure_code            => l_jobs_rv_name
1390                                                         || per_ri_config_main.g_job_rv_struct_def_string
1391                         ,p_segment_name              => l_rv_jobs_segment_name
1392                         ,p_column_name               => 'SEGMENT' || l_jobs_segment_count
1393                         ,p_segment_number            => l_jobs_segment_no --l_jobs_segment_count
1394                         ,p_value_set                 => null
1395                         ,p_lov_prompt                => l_rv_jobs_segment_name
1396                         ,p_segment_type              => l_rv_jobs_segment_type
1397                         ,p_window_prompt             => l_rv_jobs_segment_name);
1398         else
1399           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).appl_short_name  := 'PER';
1400           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).flex_code        := 'JOB';
1401           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).structure_code   :=  l_jobs_rv_name
1402                                                                           || per_ri_config_main.g_job_rv_struct_def_string;
1403           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).segment_name     :=  l_rv_jobs_segment_name;
1404           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).column_name      :=  'SEGMENT' || l_jobs_segment_count;
1405           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).segment_number   :=  l_jobs_segment_no;
1406           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).value_set        :=  null;
1407           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).lov_prompt       := l_rv_jobs_segment_name;
1408           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).segment_type     := l_rv_jobs_segment_type;
1409           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).window_prompt    := l_rv_jobs_segment_name;
1410 
1411           --create technical summary data for valueset
1412           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
1413                                  ,p_valueset_type   => l_rv_jobs_segment_type
1414                                  ,p_structure_code  => l_jobs_rv_name
1415                                                        || per_ri_config_main.g_job_rv_struct_def_string
1416                                  ,p_segment_name    => l_jobs_rv_name
1417                                  ,p_segment_number  => l_jobs_segment_no
1418                                  ,p_valueset_tab    => l_kf_job_rv_valueset_tab);
1419 
1420           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_value_set_name
1421                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).value_set_name;
1422           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_description
1423                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).description;
1424           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_security_available
1425                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).security_available;
1426           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_enable_longlist
1427                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
1428           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_format_type
1429                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).format_type;
1430           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_maximum_size
1431                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).maximum_size;
1432           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_precision
1433                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).precision;
1434           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_numbers_only
1435                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).numbers_only;
1436           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_uppercase_only
1437                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
1438           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_right_justify_zero_fill
1439                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
1440           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_min_value
1441                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).min_value;
1442           p_kf_job_rv_seg_tab(l_kf_job_rv_seg_count).vs_max_value
1443                          := l_kf_job_rv_valueset_tab(l_value_set_tab_count).max_value;
1444           l_kf_job_rv_seg_count := l_kf_job_rv_seg_count + 1 ;
1445         end if;
1446 
1447         per_ri_config_utilities.write_log(p_message => 'Created Grade Key Flex RV Segment' || l_rv_jobs_segment_name);
1448         hr_utility.trace('Created Job Key Flex RV Segment: ' ||  l_rv_jobs_segment_name);
1449       END LOOP;
1450       --
1451       -- freeze and compile this flexfield
1452       --
1453       if NOT (p_technical_summary_mode) then
1454         per_ri_config_utilities.freeze_and_compile_flexfield
1455                        (p_appl_short_Name           => 'PER'
1456                        ,p_flex_code                 => 'JOB'
1457                        ,p_structure_code            => l_jobs_rv_name
1458                                                          || per_ri_config_main.g_job_rv_struct_def_string);
1459       end if;
1460       close csr_config_jobs_rv_seg;
1461     END LOOP;
1462     close csr_config_jobs_rv;
1463 
1464   EXCEPTION
1465     when others then
1466       l_error_message := 'Error in ' || l_proc;
1467       hr_utility.trace(l_error_message || '-' || sqlerrm);
1468       hr_utility.set_location(' Leaving:'|| l_proc, 500);
1469       hr_utility.raise_error;
1470 
1471   END create_jobs_rv_keyflex;
1472 
1473   /* --------------------------------------------------------------------------
1474   -- Name      : create_positions_rv_keyflex
1475   -- Purpose   : This procedure creates positions keyflex structures, segments and
1476   --             valuesets when regional variance are not defined.
1477   --             and profiles options assigned to it.
1478   -- Arguments : p_configuration_code
1479   --
1480   -------------------------------------------------------------------------- */
1481 
1482   PROCEDURE create_positions_rv_keyflex (p_configuration_code in varchar2
1483                                         ,p_technical_summary_mode in boolean default FALSE
1484                                         ,p_kf_pos_rv_tab in out nocopy
1485                                                per_ri_config_tech_summary.kf_pos_rv_tab
1486                                         ,p_kf_pos_rv_seg_tab in out nocopy
1487                                                per_ri_config_tech_summary.kf_pos_rv_seg_tab) IS
1488 
1489   cursor csr_config_positions_rv (cp_configuration_code in varchar2) IS
1490     select distinct per_ri_config_utilities.return_config_entity_name(regional_variance_name),
1491            regional_variance_name
1492       from per_ri_config_jp_rv_v
1493      where configuration_code = cp_configuration_code
1494        and exists (select configuration_code
1495                      from per_ri_config_pos_rv_seg_v
1496                     where configuration_code   = cp_configuration_code);
1497 
1498     cursor csr_config_positions_rv_seg (cp_configuration_code in varchar2
1499                                        ,cp_positions_rv_name         in varchar2) IS
1500     select distinct segment_type
1501                    ,segment_name
1502                    ,CONFIG_SEQUENCE
1503       from per_ri_config_pos_rv_seg_v
1504      where configuration_code        = cp_configuration_code
1505        and regional_variance_name    = cp_positions_rv_name
1506        order by CONFIG_SEQUENCE;
1507 
1508   l_proc                         varchar2(72) := g_package || 'create_positions_rv_keyflex';
1509   l_error_message                varchar2(360);
1510   l_kf_pos_rv_count              number(8) := 0;
1511   l_kf_pos_rv_tab                per_ri_config_tech_summary.kf_pos_rv_tab;
1512 
1513   l_kf_pos_rv_seg_count          number(8) := 0;
1514   l_kf_pos_rv_seg_tab            per_ri_config_tech_summary.kf_pos_rv_tab;
1515 
1516   l_kf_pos_rv_valueset_tab       per_ri_config_tech_summary.valueset_tab;
1517   l_value_set_tab_count          number(9) := 1;
1518 
1519   l_positions_rv_name            per_ri_config_information.config_information1%type;
1520   l_positions_rv_name_orig       per_ri_config_information.config_information1%type;
1521 
1522   l_rv_positions_segment_type    per_ri_config_information.config_information1%type;
1523   l_rv_positions_segment_name    per_ri_config_information.config_information1%type;
1524   l_positions_keyflex_number     number(9);
1525   l_positions_structures_code    fnd_id_flex_structures.id_flex_structure_code%type;
1526 
1527   l_positions_segment_count        number(9);
1528   l_positions_segment_no           number(9);
1529   BEGIN
1530     hr_utility.set_location('Entering:'|| l_proc, 10);
1531 
1532     open csr_config_positions_rv(p_configuration_code);
1533     LOOP
1534       fetch csr_config_positions_rv into l_positions_rv_name,l_positions_rv_name_orig;
1535 
1536       exit when csr_config_positions_rv%NOTFOUND;
1537 
1538       hr_utility.set_location(l_proc, 20);
1539       -- Create Jobs RV Key flex
1540       if NOT (p_technical_summary_mode) then
1541         l_positions_keyflex_number  := per_ri_config_utilities.create_key_flexfield
1542                            (p_appl_short_Name => 'PER'
1543                            ,p_flex_code       => 'POS'
1544                            ,p_structure_code  => l_positions_rv_name || per_ri_config_main.g_pos_rv_struct_def_string
1545                            ,p_structure_title => l_positions_rv_name || per_ri_config_main.g_pos_rv_struct_def_string
1546                            ,p_description     => l_positions_rv_name || per_ri_config_main.g_pos_rv_struct_def_string
1547                                                                || per_ri_config_main.g_description_suffix_string);
1548 
1549       else
1550         p_kf_pos_rv_tab(l_kf_pos_rv_count).appl_short_name    := 'PER';
1551         p_kf_pos_rv_tab(l_kf_pos_rv_count).flex_code          := 'POS';
1552         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;
1553         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;
1554         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
1555                                                                 ||  per_ri_config_main.g_description_suffix_string;
1556         l_kf_pos_rv_count := l_kf_pos_rv_count + 1 ;
1557       end if;
1558       per_ri_config_utilities.write_log(p_message => 'Created Positions RV Keyflex ' || l_positions_rv_name
1559                                                      || per_ri_config_main.g_pos_rv_struct_def_string );
1560       hr_utility.trace('Created Positions RV Keyflex ' || l_positions_rv_name
1561                                                   || per_ri_config_main.g_pos_rv_struct_def_string);
1562 
1563       open csr_config_positions_rv_seg(p_configuration_code
1564                                       ,l_positions_rv_name_orig);
1565       l_positions_segment_count := 0;
1566       LOOP
1567         fetch csr_config_positions_rv_seg into l_rv_positions_segment_type
1568                                          ,l_rv_positions_segment_name
1569                                          ,l_positions_segment_no;
1570         exit when csr_config_positions_rv_seg%NOTFOUND;
1571 
1572         -- Create Jobs Key Flex Segments
1573         l_positions_segment_count := csr_config_positions_rv_seg%ROWCOUNT;
1574         if NOT (p_technical_summary_mode) then
1575         per_ri_config_utilities.create_flex_segments
1576                         (p_appl_short_Name           => 'PER'
1577                         ,p_flex_code                 => 'POS'
1578                         ,p_structure_code            => l_positions_rv_name
1579                                                         || per_ri_config_main.g_pos_rv_struct_def_string
1580                         ,p_segment_name              => l_rv_positions_segment_name
1581                         ,p_column_name               => 'SEGMENT' || l_positions_segment_count
1582                         ,p_segment_number            => l_positions_segment_no
1583                         ,p_value_set                 => null
1584                         ,p_lov_prompt                => l_rv_positions_segment_name
1585                         ,p_segment_type              => l_rv_positions_segment_type
1586                         ,p_window_prompt             => l_rv_positions_segment_name);
1587 
1588         else
1589           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).appl_short_name  := 'PER';
1590           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).flex_code        := 'POS';
1591           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).structure_code   :=  l_positions_rv_name
1592                                                                          || per_ri_config_main.g_pos_rv_struct_def_string;
1593           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).segment_name     :=  l_rv_positions_segment_name;
1594           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).column_name      := 'SEGMENT' || l_positions_segment_count;
1595           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).segment_number   :=  l_positions_segment_no;
1596           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).value_set        := null;
1597           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).lov_prompt       := l_rv_positions_segment_name;
1598           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).segment_type     := l_rv_positions_segment_type;
1599           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).window_prompt    := l_rv_positions_segment_name;
1600 
1601           --create technical summary data for valueset
1602           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
1603                                  ,p_valueset_type   => l_rv_positions_segment_type
1604                                  ,p_structure_code  => l_positions_rv_name
1605                                                        || per_ri_config_main.g_pos_rv_struct_def_string
1606                                  ,p_segment_name    => l_rv_positions_segment_name
1607                                  ,p_segment_number  => l_positions_segment_no
1608                                  ,p_valueset_tab    => l_kf_pos_rv_valueset_tab);
1609 
1610           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_value_set_name
1611                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).value_set_name;
1612           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_description
1613                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).description;
1614           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_security_available
1615                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).security_available;
1616           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_enable_longlist
1617                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
1618           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_format_type
1619                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).format_type;
1620           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_maximum_size
1621                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).maximum_size;
1622           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_precision
1623                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).precision;
1624           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_numbers_only
1625                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).numbers_only;
1626           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_uppercase_only
1627                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
1628           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_right_justify_zero_fill
1629                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
1630           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_min_value
1631                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).min_value;
1632           p_kf_pos_rv_seg_tab(l_kf_pos_rv_seg_count).vs_max_value
1633                          := l_kf_pos_rv_valueset_tab(l_value_set_tab_count).max_value;
1634           l_kf_pos_rv_seg_count := l_kf_pos_rv_seg_count + 1 ;
1635     end if;
1636         per_ri_config_utilities.write_log(p_message => 'Created Positions Key Flex RV Segment' || l_rv_positions_segment_name);
1637         hr_utility.trace('Created Positions Key Flex RV Segment: ' ||  l_rv_positions_segment_name);
1638       END LOOP;
1639       --
1640       -- freeze and compile this flexfield
1641       --
1642       if NOT (p_technical_summary_mode) then
1643         per_ri_config_utilities.freeze_and_compile_flexfield
1644                          (p_appl_short_Name           => 'PER'
1645                          ,p_flex_code                 => 'POS'
1646                          ,p_structure_code            =>  l_positions_rv_name
1647                                                           || per_ri_config_main.g_pos_rv_struct_def_string);
1648       end if;
1649       close csr_config_positions_rv_seg;
1650     END LOOP;
1651     close csr_config_positions_rv;
1652     hr_utility.set_location('Leaving:'|| l_proc, 100);
1653   EXCEPTION
1654     when others then
1655       l_error_message := 'Error in ' || l_proc;
1656       hr_utility.trace(l_error_message || '-' || sqlerrm);
1657       hr_utility.set_location(' Leaving:'|| l_proc, 500);
1658       hr_utility.raise_error;
1659 
1660   END create_positions_rv_keyflex;
1661 
1662   /* --------------------------------------------------------------------------
1663   -- Name      : create_grades_rv_keyflex
1664   -- Purpose   : This procedure creates grades keyflex structures, segments and
1665   --             valuesets when regional variance are not defined.
1666   --             and profiles options assigned to it.
1667   -- Arguments : p_configuration_code
1668   --
1669   -------------------------------------------------------------------------- */
1670 
1671   PROCEDURE create_grades_rv_keyflex (p_configuration_code in varchar2
1672                                      ,p_technical_summary_mode in boolean default FALSE
1673                                      ,p_kf_grd_rv_tab in out nocopy
1674                                                per_ri_config_tech_summary.kf_grd_rv_tab
1675                                      ,p_kf_grd_rv_seg_tab in out nocopy
1676                                                per_ri_config_tech_summary.kf_grd_rv_seg_tab) IS
1677 
1678   cursor csr_config_grade_rv (cp_configuration_code in varchar2) IS
1679     select distinct per_ri_config_utilities.return_config_entity_name(regional_variance_name),
1680            regional_variance_name
1681       from per_ri_config_grd_rv_v
1682      where configuration_code = cp_configuration_code;
1683 
1684     cursor csr_config_grade_rv_seg (cp_configuration_code in varchar2
1685                                    ,cp_grade_rv_name         in varchar2) IS
1686     select distinct segment_type
1687                    ,segment_name
1688                    ,CONFIG_SEQUENCE
1689       from per_ri_config_grd_rv_seg_v
1690      where configuration_code        = cp_configuration_code
1691        and regional_variance_name    = cp_grade_rv_name
1692        order by CONFIG_SEQUENCE;
1693 
1694   l_proc                      varchar2(72) := g_package || 'create_grades_rv_keyflex';
1695   l_error_message             varchar2(360);
1696 
1697   l_kf_grd_rv_count           number(8) := 0;
1698   l_kf_grd_rv_tab             per_ri_config_tech_summary.kf_grd_rv_tab;
1699   l_kf_grd_rv_seg_count       number(8) := 0;
1700   l_kf_grd_rv_seg_tab         per_ri_config_tech_summary.kf_grd_rv_tab;
1701 
1702   l_kf_grd_rv_valueset_tab    per_ri_config_tech_summary.valueset_tab;
1703   l_value_set_tab_count       number(9) := 1;
1704 
1705   l_grade_rv_name               per_ri_config_information.config_information1%type;
1706   l_grade_rv_name_orig          per_ri_config_information.config_information1%type;
1707 
1708   l_rv_grade_segment_name       per_ri_config_information.config_information1%type;
1709   l_rv_grade_segment_type       per_ri_config_information.config_information1%type;
1710   l_grades_keyflex_number       number(9);
1711   l_grade_structures_code       fnd_id_flex_structures.id_flex_structure_code%type;
1712 
1713   l_grades_segment_count        number(9);
1714   l_grades_segment_no           number(9);
1715   BEGIN
1716     hr_utility.set_location('Entering:'|| l_proc, 10);
1717 
1718     open csr_config_grade_rv(p_configuration_code);
1719     LOOP
1720       fetch csr_config_grade_rv into l_grade_rv_name,l_grade_rv_name_orig;
1721 
1722       exit when csr_config_grade_rv%NOTFOUND;
1723 
1724       -- Create Grades RV Key Flex
1725       hr_utility.set_location(l_proc, 20);
1726       if NOT (p_technical_summary_mode) then
1727         l_grades_keyflex_number  :=
1728                per_ri_config_utilities.create_key_flexfield
1729                        (p_appl_short_Name => 'PER'
1730                        ,p_flex_code       => 'GRD'
1731                        ,p_structure_code  => l_grade_rv_name || per_ri_config_main.g_grd_rv_struct_def_string
1732                        ,p_structure_title => l_grade_rv_name || per_ri_config_main.g_grd_rv_struct_def_string
1733                        ,p_description     => l_grade_rv_name || per_ri_config_main.g_grd_rv_struct_def_string
1734                                                              || per_ri_config_main.g_description_suffix_string);
1735 
1736       else
1737         p_kf_grd_rv_tab(l_kf_grd_rv_count).appl_short_name    := 'PER';
1738         p_kf_grd_rv_tab(l_kf_grd_rv_count).flex_code          := 'GRD';
1739         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;
1740         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;
1741         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
1742                                                                    || per_ri_config_main.g_description_suffix_string;
1743         l_kf_grd_rv_count := l_kf_grd_rv_count + 1 ;
1744     end if;
1745       per_ri_config_utilities.write_log(p_message => 'Created Grades RV Keyflex '
1746                                                      || per_ri_config_main.g_grd_rv_struct_def_string );
1747       hr_utility.trace('Created Grades RV Keyflex ' || per_ri_config_main.g_grd_rv_struct_def_string);
1748 
1749       open csr_config_grade_rv_seg(p_configuration_code
1750                                   ,l_grade_rv_name_orig);
1751       l_grades_segment_count := 0;
1752       LOOP
1753         fetch csr_config_grade_rv_seg into l_rv_grade_segment_type
1754                                           ,l_rv_grade_segment_name
1755                                           ,l_grades_segment_no;
1756         exit when csr_config_grade_rv_seg%NOTFOUND;
1757 
1758         -- Create Jobs Key Flex Segments
1759         l_grades_segment_count := csr_config_grade_rv_seg%ROWCOUNT;
1760         if NOT (p_technical_summary_mode) then
1761           per_ri_config_utilities.create_flex_segments
1762                         (p_appl_short_Name           => 'PER'
1763                         ,p_flex_code                 => 'GRD'
1764                         ,p_structure_code            => l_grade_rv_name || per_ri_config_main.g_grd_rv_struct_def_string
1765                         ,p_segment_name              => l_rv_grade_segment_name
1766                         ,p_column_name               => 'SEGMENT' || l_grades_segment_count
1767                         ,p_segment_number            => l_grades_segment_no
1768                         ,p_value_set                 => null
1769                         ,p_lov_prompt                => l_rv_grade_segment_name
1770                         ,p_segment_type              => l_rv_grade_segment_type
1771                         ,p_window_prompt             => l_rv_grade_segment_name);
1772         else
1773           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).appl_short_name  := 'PER';
1774           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).flex_code        := 'GRD';
1775           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).structure_code   :=  l_grade_rv_name
1776                                                                          || per_ri_config_main.g_grd_rv_struct_def_string;
1777           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).segment_name     :=  l_rv_grade_segment_name;
1778           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).column_name      := 'SEGMENT' || l_grades_segment_count;
1779           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).segment_number   :=  l_grades_segment_no;
1780           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).value_set        := null;
1781           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).lov_prompt       := l_rv_grade_segment_name;
1782           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).segment_type     := l_rv_grade_segment_type;
1783           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).window_prompt    := l_rv_grade_segment_name;
1784 
1785           --create technical summary data for valueset
1786           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
1787                                  ,p_valueset_type   => l_rv_grade_segment_type
1788                                  ,p_structure_code  => l_grade_rv_name
1789                                                        || per_ri_config_main.g_grd_rv_struct_def_string
1790                                  ,p_segment_name    => l_rv_grade_segment_name
1791                                  ,p_segment_number  => l_grades_segment_no
1792                                  ,p_valueset_tab    => l_kf_grd_rv_valueset_tab);
1793 
1794           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_value_set_name
1795                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).value_set_name;
1796           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_description
1797                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).description;
1798           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_security_available
1799                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).security_available;
1800           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_enable_longlist
1801                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).enable_longlist;
1802           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_format_type
1803                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).format_type;
1804           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_maximum_size
1805                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).maximum_size;
1806           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_precision
1807                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).precision;
1808           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_numbers_only
1809                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).numbers_only;
1810           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_uppercase_only
1811                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).uppercase_only;
1812           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_right_justify_zero_fill
1813                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
1814           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_min_value
1815                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).min_value;
1816           p_kf_grd_rv_seg_tab(l_kf_grd_rv_seg_count).vs_max_value
1817                          := l_kf_grd_rv_valueset_tab(l_value_set_tab_count).max_value;
1818           l_kf_grd_rv_seg_count := l_kf_grd_rv_seg_count + 1 ;
1819         end if;
1820         per_ri_config_utilities.write_log(p_message => 'Created Grade Key Flex RV Segment' || l_rv_grade_segment_name);
1821         hr_utility.trace('Created Job Key Flex RV Segment: ' ||  l_rv_grade_segment_name);
1822       END LOOP;
1823       close csr_config_grade_rv_seg;
1824       --
1825       -- freeze and compile this flexfield
1826       --
1827       if NOT (p_technical_summary_mode) then
1828         per_ri_config_utilities.freeze_and_compile_flexfield
1829                        (p_appl_short_Name           => 'PER'
1830                        ,p_flex_code                 => 'GRD'
1831                        ,p_structure_code            =>  l_grade_rv_name
1832                                                         || per_ri_config_main.g_grd_rv_struct_def_string);
1833       end if;
1834     END LOOP;
1835     close csr_config_grade_rv;
1836 
1837   EXCEPTION
1838     when others then
1839       l_error_message := 'Error in ' || l_proc;
1840       hr_utility.trace(l_error_message || '-' || sqlerrm);
1841       hr_utility.set_location(' Leaving:'|| l_proc, 500);
1842       hr_utility.raise_error;
1843 
1844   END create_grades_rv_keyflex;
1845 
1846   /* --------------------------------------------------------------------------
1847   -- Name      : create_global_grp_cmp_cost_kf
1848   -- Purpose   : This procedure creates global People Group, Competence and
1849   --             Cost allocation key flex structures, segments and
1850   --             valuesets.
1851   -- Arguments : p_configuration_code
1852   --
1853   -------------------------------------------------------------------------- */
1854   PROCEDURE create_global_grp_cmp_cost_kf (p_configuration_code in varchar2
1855                                           ,p_technical_summary_mode in boolean default FALSE
1856                                           ,p_kf_grp_tab in out nocopy
1857                                                per_ri_config_tech_summary.kf_grp_tab
1858                                           ,p_kf_cmp_tab in out nocopy
1859                                                per_ri_config_tech_summary.kf_cmp_tab
1860                                           ,p_kf_cost_tab in out nocopy
1861                                                per_ri_config_tech_summary.kf_cost_tab
1862                                           ,p_kf_grp_seg_tab in out nocopy
1863                                                per_ri_config_tech_summary.kf_grp_seg_tab
1864                                           ,p_kf_cmp_seg_tab in out nocopy
1865                                                per_ri_config_tech_summary.kf_cmp_seg_tab
1866                                           ,p_kf_cost_seg_tab in out nocopy
1867                                                per_ri_config_tech_summary.kf_cost_seg_tab) IS
1868 
1869   l_kf_grp_tab                per_ri_config_tech_summary.kf_grp_tab;
1870   l_kf_cmp_tab                per_ri_config_tech_summary.kf_cmp_tab;
1871   l_kf_cost_tab               per_ri_config_tech_summary.kf_cost_tab;
1872 
1873   l_kf_grp_seg_tab            per_ri_config_tech_summary.kf_grp_seg_tab;
1874   l_kf_cmp_seg_tab            per_ri_config_tech_summary.kf_cmp_seg_tab;
1875   l_kf_cost_seg_tab           per_ri_config_tech_summary.kf_cost_seg_tab;
1876 
1877   l_kf_grp_valueset_tab       per_ri_config_tech_summary.valueset_tab;
1878   l_kf_cmp_valueset_tab       per_ri_config_tech_summary.valueset_tab;
1879   l_kf_cost_valueset_tab      per_ri_config_tech_summary.valueset_tab;
1880   l_value_set_tab_count       number(9) := 1;
1881 
1882   l_proc                      varchar2(72) := g_package || 'create_global_grp_cmp_cost_kf';
1883   l_error_message             varchar2(360);
1884   l_configuration_code        per_ri_config_information.configuration_code%type;
1885   l_people_group_fk_number    number(9);
1886   l_competence_fk_number      number(9);
1887   l_cost_allocation_number    number(9);
1888 
1889   l_enterprise_short_name     per_ri_config_information.configuration_code%type;
1890 
1891   l_grp_structures_code       fnd_id_flex_structures.id_flex_structure_code%type;
1892   l_cmp_structures_code       fnd_id_flex_structures.id_flex_structure_code%type;
1893   l_cost_structures_code      fnd_id_flex_structures.id_flex_structure_code%type;
1894 
1895   l_kf_grp_count              number(8) := 0;
1896   l_kf_cmp_count              number(8) := 0;
1897   l_kf_cost_count             number(8) := 0;
1898 
1899   l_kf_grp_seg_count          number(8) :=0;
1900   l_kf_cmp_seg_count          number(8) :=0;
1901   l_kf_cost_seg_count         number(8) :=0;
1902   BEGIN
1903 
1904     hr_utility.set_location('Entering:'|| l_proc, 10);
1905 
1906     --
1907     -- create people group key flex
1908     --
1909     l_grp_structures_code := per_ri_config_main.g_global_pea_structure_name;
1910     if NOT (p_technical_summary_mode) then
1911       l_people_group_fk_number  := per_ri_config_utilities.create_key_flexfield
1912                                      (p_appl_short_Name   => 'PAY'
1913                                      ,p_flex_code         => 'GRP'
1914                                      ,p_structure_code    => l_grp_structures_code
1915                                      ,p_structure_title   => l_grp_structures_code
1916                                      ,p_description       => l_grp_structures_code);
1917 
1918     else
1919       p_kf_grp_tab(l_kf_grp_count).appl_short_name    := 'PAY';
1920       p_kf_grp_tab(l_kf_grp_count).flex_code          := 'GRP';
1921       p_kf_grp_tab(l_kf_grp_count).structure_code     := l_grp_structures_code;
1922       p_kf_grp_tab(l_kf_grp_count).structure_title    := l_grp_structures_code;
1923       p_kf_grp_tab(l_kf_grp_count).description        := l_grp_structures_code;
1924     end if;
1925 
1926     hr_utility.trace('Created People Group Key Flex: ' || l_grp_structures_code );
1927 
1928     --
1929     -- create people group flex segments
1930     --
1931     if NOT (p_technical_summary_mode) then
1932     per_ri_config_utilities.create_flex_segments
1933                     (p_appl_short_Name           => 'PAY'
1934                     ,p_flex_code                 => 'GRP'
1935                     ,p_structure_code            => l_grp_structures_code
1936                     ,p_segment_name              => 'People Group Name'
1937                     ,p_column_name               => 'SEGMENT1'
1938                     ,p_segment_number            => 1
1939                     ,p_value_set                 => null
1940                     ,p_lov_prompt                =>  'People Group'
1941                     ,p_window_prompt             =>  'People Group');
1942 
1943     else
1944       p_kf_grp_seg_tab(l_kf_grp_seg_count).appl_short_name  := 'PAY';
1945       p_kf_grp_seg_tab(l_kf_grp_seg_count).flex_code        := 'GRP';
1946       p_kf_grp_seg_tab(l_kf_grp_seg_count).structure_code   :=  l_grp_structures_code;
1947       p_kf_grp_seg_tab(l_kf_grp_seg_count).segment_name     :=  'People Group Name';
1948       p_kf_grp_seg_tab(l_kf_grp_seg_count).column_name      :=  'SEGMENT1';
1949       p_kf_grp_seg_tab(l_kf_grp_seg_count).segment_number   :=  1;
1950       p_kf_grp_seg_tab(l_kf_grp_seg_count).value_set        := null;
1951       p_kf_grp_seg_tab(l_kf_grp_seg_count).lov_prompt       := 'People Group';
1952       p_kf_grp_seg_tab(l_kf_grp_seg_count).segment_type     := null;
1953       p_kf_grp_seg_tab(l_kf_grp_seg_count).window_prompt    := 'People Group';
1954 
1955       --create technical summary data for valueset
1956       per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
1957                              ,p_valueset_type   => null
1958                              ,p_structure_code  => l_grp_structures_code
1959                              ,p_segment_name    => 'People Group Name'
1960                              ,p_segment_number  => 1
1961                              ,p_valueset_tab    => l_kf_grp_valueset_tab);
1962 
1963 
1964       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_value_set_name
1965                      := l_kf_grp_valueset_tab(l_value_set_tab_count).value_set_name;
1966       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_description
1967                      := l_kf_grp_valueset_tab(l_value_set_tab_count).description;
1968       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_security_available
1969                      := l_kf_grp_valueset_tab(l_value_set_tab_count).security_available;
1970       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_enable_longlist
1971                      := l_kf_grp_valueset_tab(l_value_set_tab_count).enable_longlist;
1972       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_format_type
1973                      := l_kf_grp_valueset_tab(l_value_set_tab_count).format_type;
1974       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_maximum_size
1975                      := l_kf_grp_valueset_tab(l_value_set_tab_count).maximum_size;
1976       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_precision
1977                      := l_kf_grp_valueset_tab(l_value_set_tab_count).precision;
1978       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_numbers_only
1979                      := l_kf_grp_valueset_tab(l_value_set_tab_count).numbers_only;
1980       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_uppercase_only
1981                      := l_kf_grp_valueset_tab(l_value_set_tab_count).uppercase_only;
1982       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_right_justify_zero_fill
1983                      := l_kf_grp_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
1984       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_min_value
1985                      := l_kf_grp_valueset_tab(l_value_set_tab_count).min_value;
1986       p_kf_grp_seg_tab(l_kf_grp_seg_count).vs_max_value
1987                      := l_kf_grp_valueset_tab(l_value_set_tab_count).max_value;
1988       l_kf_grp_seg_count := l_kf_grp_seg_count + 1 ;
1989     end if;
1990 
1991     hr_utility.trace('Created People Group Key Flex Segment: ' || l_grp_structures_code);
1992 
1993     --
1994     -- freeze and compile this flexfield
1995     --
1996     if NOT (p_technical_summary_mode) then
1997       per_ri_config_utilities.freeze_and_compile_flexfield
1998                        (p_appl_short_Name           => 'PAY'
1999                        ,p_flex_code                 => 'GRP'
2000                        ,p_structure_code            => l_grp_structures_code);
2001     end if;
2002 
2003 
2004 
2005     --
2006     -- create competence key flex
2007     --
2008     l_cmp_structures_code := per_ri_config_main.g_global_cmp_structure_name;
2009     if NOT (p_technical_summary_mode) then
2010       l_competence_fk_number  := per_ri_config_utilities.create_key_flexfield
2011                                      (p_appl_short_Name   => 'PER'
2012                                      ,p_flex_code         => 'CMP'
2013                                      ,p_structure_code    => l_cmp_structures_code
2014                                      ,p_structure_title   => l_cmp_structures_code
2015                                      ,p_description       => l_cmp_structures_code);
2016 
2017     else
2018       p_kf_cmp_tab(l_kf_cmp_count).appl_short_name    := 'PER';
2019       p_kf_cmp_tab(l_kf_cmp_count).flex_code          := 'CMP';
2020       p_kf_cmp_tab(l_kf_cmp_count).structure_code     := l_cmp_structures_code;
2021       p_kf_cmp_tab(l_kf_cmp_count).structure_title    := l_cmp_structures_code;
2022       p_kf_cmp_tab(l_kf_cmp_count).description        := l_cmp_structures_code;
2023     end if;
2024 
2025     hr_utility.trace('Created Competence Group Key Flex: ' || l_cmp_structures_code);
2026 
2027     --
2028     -- create competence flex segments
2029     --
2030     if NOT (p_technical_summary_mode) then
2031       per_ri_config_utilities.create_flex_segments
2032                     (p_appl_short_Name           => 'PER'
2033                     ,p_flex_code                 => 'CMP'
2034                     ,p_structure_code            => l_cmp_structures_code
2035                     ,p_segment_name              => 'Competence Name'
2036                     ,p_column_name               => 'SEGMENT1'
2037                     ,p_segment_number            => 1
2038                     ,p_value_set                 => null
2039                     ,p_lov_prompt                =>  'Competence Name'
2040                     ,p_window_prompt             =>  'Competence Name');
2041     else
2042       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).appl_short_name  := 'PER';
2043       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).flex_code        := 'CMP';
2044       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).structure_code   := l_cmp_structures_code;
2045       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).segment_name     := 'Competence Name';
2046       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).column_name      := 'SEGMENT1';
2047       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).segment_number   := 1;
2048       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).value_set        := null;
2049       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).lov_prompt       := 'Competence Name';
2050       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).segment_type     := null;
2051       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).window_prompt    := 'Competence Name';
2052 
2053       --create technical summary data for valueset
2054       per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2055                              ,p_valueset_type   => null
2056                              ,p_structure_code  => l_cmp_structures_code
2057                              ,p_segment_name    => 'Competence Name'
2058                              ,p_segment_number  => 1
2059                              ,p_valueset_tab    => l_kf_cmp_valueset_tab);
2060 
2061       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_value_set_name
2062                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).value_set_name;
2063       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_description
2064                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).description;
2065       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_security_available
2066                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).security_available;
2067       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_enable_longlist
2068                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).enable_longlist;
2069       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_format_type
2070                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).format_type;
2071       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_maximum_size
2072                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).maximum_size;
2073       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_precision
2074                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).precision;
2075       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_numbers_only
2076                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).numbers_only;
2077       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_uppercase_only
2078                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).uppercase_only;
2079       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_right_justify_zero_fill
2080                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2081       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_min_value
2082                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).min_value;
2083       p_kf_cmp_seg_tab(l_kf_cmp_seg_count).vs_max_value
2084                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).max_value;
2085       l_kf_cmp_seg_count := l_kf_cmp_seg_count + 1 ;
2086     end if;
2087 
2088     hr_utility.trace('Created Competence Key Flex Segment: l_cmp_structures_code' );
2089 
2090     --
2091     -- freeze and compile this flexfield
2092     --
2093     if NOT (p_technical_summary_mode) then
2094       per_ri_config_utilities.freeze_and_compile_flexfield
2095                        (p_appl_short_Name           => 'PER'
2096                        ,p_flex_code                 => 'CMP'
2097                        ,p_structure_code            => l_cmp_structures_code);
2098     end if;
2099 
2100     --
2101     -- create cost allocation key flex
2102     --
2103     l_cost_structures_code := per_ri_config_main.g_global_cst_structure_name;
2104     if NOT (p_technical_summary_mode) then
2105       l_cost_allocation_number  := per_ri_config_utilities.create_key_flexfield
2106                                      (p_appl_short_Name   => 'PAY'
2107                                      ,p_flex_code         => 'COST'
2108                                      ,p_structure_code    => l_cost_structures_code
2109                                      ,p_structure_title   => l_cost_structures_code
2110                                      ,p_description       => l_cost_structures_code);
2111 
2112     else
2113       p_kf_cost_tab(l_kf_cost_count).appl_short_name    := 'PAY';
2114       p_kf_cost_tab(l_kf_cost_count).flex_code          := 'COST';
2115       p_kf_cost_tab(l_kf_cost_count).structure_code     := l_cost_structures_code;
2116       p_kf_cost_tab(l_kf_cost_count).structure_title    := l_cost_structures_code;
2117       p_kf_cost_tab(l_kf_cost_count).description        := l_cost_structures_code;
2118     end if;
2119 
2120     hr_utility.trace('Created Cost Allocation Key Flex: ' || l_cost_structures_code);
2121 
2122     --
2123     -- create cost allocation flex segments
2124     --
2125     if NOT (p_technical_summary_mode) then
2126       per_ri_config_utilities.create_flex_segments
2127                     (p_appl_short_Name           => 'PAY'
2128                     ,p_flex_code                 => 'COST'
2129                     ,p_structure_code            => l_cost_structures_code
2130                     ,p_segment_name              => 'Account'
2131                     ,p_column_name               => 'SEGMENT1'
2132                     ,p_segment_number            => 1
2133                     ,p_value_set                 => null
2134                     ,p_lov_prompt                =>  'Account'
2135                     ,p_window_prompt             =>  'Account');
2136     else
2137       p_kf_cost_seg_tab(l_kf_cost_seg_count).appl_short_name  := 'PAY';
2138       p_kf_cost_seg_tab(l_kf_cost_seg_count).flex_code        := 'COST';
2139       p_kf_cost_seg_tab(l_kf_cost_seg_count).structure_code   := l_cost_structures_code;
2140       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_name     := 'Account';
2141       p_kf_cost_seg_tab(l_kf_cost_seg_count).column_name      := 'SEGMENT1';
2142       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_number   := 1;
2143       p_kf_cost_seg_tab(l_kf_cost_seg_count).value_set        := null;
2144       p_kf_cost_seg_tab(l_kf_cost_seg_count).lov_prompt       := 'Account';
2145       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_type     := null;
2146       p_kf_cost_seg_tab(l_kf_cost_seg_count).window_prompt    := 'Account';
2147 
2148       --create technical summary data for valueset
2149       per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2150                              ,p_valueset_type   => null
2151                              ,p_structure_code  => l_cost_structures_code
2152                              ,p_segment_name    => 'Account'
2153                              ,p_segment_number  => 1
2154                              ,p_valueset_tab    => l_kf_cost_valueset_tab);
2155 
2156       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_value_set_name
2157                      := l_kf_cost_valueset_tab(l_value_set_tab_count).value_set_name;
2158       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_description
2159                      := l_kf_cost_valueset_tab(l_value_set_tab_count).description;
2160       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_security_available
2161                      := l_kf_cost_valueset_tab(l_value_set_tab_count).security_available;
2162       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_enable_longlist
2163                      := l_kf_cost_valueset_tab(l_value_set_tab_count).enable_longlist;
2164       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_format_type
2165                      := l_kf_cost_valueset_tab(l_value_set_tab_count).format_type;
2166       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_maximum_size
2167                      := l_kf_cost_valueset_tab(l_value_set_tab_count).maximum_size;
2168       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_precision
2169                      := l_kf_cost_valueset_tab(l_value_set_tab_count).precision;
2170       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_numbers_only
2171                      := l_kf_cost_valueset_tab(l_value_set_tab_count).numbers_only;
2172       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_uppercase_only
2173                      := l_kf_cost_valueset_tab(l_value_set_tab_count).uppercase_only;
2174       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_right_justify_zero_fill
2175                      := l_kf_cost_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2176       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_min_value
2177                      := l_kf_cost_valueset_tab(l_value_set_tab_count).min_value;
2178       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_max_value
2179                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).max_value;
2180       l_kf_cost_seg_count := l_kf_cost_seg_count + 1 ;
2181       hr_utility.trace('ENABLELONGLIST := ' || l_kf_cost_valueset_tab(l_value_set_tab_count).enable_longlist);
2182     end if;
2183 
2184     if NOT (p_technical_summary_mode) then
2185       per_ri_config_utilities.create_flex_segments
2186                     (p_appl_short_Name           => 'PAY'
2187                     ,p_flex_code                 => 'COST'
2188                     ,p_structure_code            => l_cost_structures_code
2189                     ,p_segment_name              => 'Company'
2190                     ,p_column_name               => 'SEGMENT2'
2191                     ,p_segment_number            => 2
2192                     ,p_value_set                 => null
2193                     ,p_lov_prompt                =>  'Company'
2194                    ,p_window_prompt             =>  'Company');
2195     else
2196       p_kf_cost_seg_tab(l_kf_cost_seg_count).appl_short_name  := 'PAY';
2197       p_kf_cost_seg_tab(l_kf_cost_seg_count).flex_code        := 'COST';
2198       p_kf_cost_seg_tab(l_kf_cost_seg_count).structure_code   := l_cost_structures_code;
2199       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_name     := 'Company';
2200       p_kf_cost_seg_tab(l_kf_cost_seg_count).column_name      := 'SEGMENT2';
2201       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_number   := 2;
2202       p_kf_cost_seg_tab(l_kf_cost_seg_count).value_set        := null;
2203       p_kf_cost_seg_tab(l_kf_cost_seg_count).lov_prompt       := 'Company';
2204       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_type     := null;
2205       p_kf_cost_seg_tab(l_kf_cost_seg_count).window_prompt    := 'Company';
2206 
2207       --create technical summary data for valueset
2208       per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2209                              ,p_valueset_type   => null
2210                              ,p_structure_code  => l_cost_structures_code
2211                              ,p_segment_name    => 'Company'
2212                              ,p_segment_number  => 2
2213                              ,p_valueset_tab    => l_kf_cost_valueset_tab);
2214 
2215       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_value_set_name
2216                      := l_kf_cost_valueset_tab(l_value_set_tab_count).value_set_name;
2217       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_description
2218                      := l_kf_cost_valueset_tab(l_value_set_tab_count).description;
2219       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_security_available
2220                      := l_kf_cost_valueset_tab(l_value_set_tab_count).security_available;
2221       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_enable_longlist
2222                      := l_kf_cost_valueset_tab(l_value_set_tab_count).enable_longlist;
2223       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_format_type
2224                      := l_kf_cost_valueset_tab(l_value_set_tab_count).format_type;
2225       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_maximum_size
2226                      := l_kf_cost_valueset_tab(l_value_set_tab_count).maximum_size;
2227       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_precision
2228                      := l_kf_cost_valueset_tab(l_value_set_tab_count).precision;
2229       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_numbers_only
2230                      := l_kf_cost_valueset_tab(l_value_set_tab_count).numbers_only;
2231       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_uppercase_only
2232                      := l_kf_cost_valueset_tab(l_value_set_tab_count).uppercase_only;
2233       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_right_justify_zero_fill
2234                      := l_kf_cost_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2235       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_min_value
2236                      := l_kf_cost_valueset_tab(l_value_set_tab_count).min_value;
2237       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_max_value
2238                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).max_value;
2239       l_kf_cost_seg_count := l_kf_cost_seg_count + 1 ;
2240     end if;
2241 
2242     if NOT (p_technical_summary_mode) then
2243       per_ri_config_utilities.create_flex_segments
2244                     (p_appl_short_Name           => 'PAY'
2245                     ,p_flex_code                 => 'COST'
2246                     ,p_structure_code            => l_cost_structures_code
2247                     ,p_segment_name              => 'Cost Center'
2248                     ,p_column_name               => 'SEGMENT3'
2249                     ,p_segment_number            => 3
2250                     ,p_value_set                 => null
2251                     ,p_lov_prompt                =>  'Cost Center'
2252                     ,p_window_prompt             =>  'Cost Center');
2253 
2254     else
2255       p_kf_cost_seg_tab(l_kf_cost_seg_count).appl_short_name  := 'PAY';
2256       p_kf_cost_seg_tab(l_kf_cost_seg_count).flex_code        := 'COST';
2257       p_kf_cost_seg_tab(l_kf_cost_seg_count).structure_code   := l_cost_structures_code;
2258       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_name     := 'Cost Center';
2259       p_kf_cost_seg_tab(l_kf_cost_seg_count).column_name      := 'SEGMENT3';
2260       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_number   := 3;
2261       p_kf_cost_seg_tab(l_kf_cost_seg_count).value_set        := null;
2262       p_kf_cost_seg_tab(l_kf_cost_seg_count).lov_prompt       := 'Cost Center';
2263       p_kf_cost_seg_tab(l_kf_cost_seg_count).segment_type     := null;
2264       p_kf_cost_seg_tab(l_kf_cost_seg_count).window_prompt    := 'Cost Center';
2265 
2266       --create technical summary data for valueset
2267       per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2268                              ,p_valueset_type   => null
2269                              ,p_structure_code  => l_cost_structures_code
2270                              ,p_segment_name    => 'Cost Center'
2271                              ,p_segment_number  => 3
2272                              ,p_valueset_tab    => l_kf_cost_valueset_tab);
2273 
2274       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_value_set_name
2275                      := l_kf_cost_valueset_tab(l_value_set_tab_count).value_set_name;
2276       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_description
2277                      := l_kf_cost_valueset_tab(l_value_set_tab_count).description;
2278       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_security_available
2279                      := l_kf_cost_valueset_tab(l_value_set_tab_count).security_available;
2280       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_enable_longlist
2281                      := l_kf_cost_valueset_tab(l_value_set_tab_count).enable_longlist;
2282       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_format_type
2283                      := l_kf_cost_valueset_tab(l_value_set_tab_count).format_type;
2284       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_maximum_size
2285                      := l_kf_cost_valueset_tab(l_value_set_tab_count).maximum_size;
2286       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_precision
2287                      := l_kf_cost_valueset_tab(l_value_set_tab_count).precision;
2288       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_numbers_only
2289                      := l_kf_cost_valueset_tab(l_value_set_tab_count).numbers_only;
2290       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_uppercase_only
2291                      := l_kf_cost_valueset_tab(l_value_set_tab_count).uppercase_only;
2292       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_right_justify_zero_fill
2293                      := l_kf_cost_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2294       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_min_value
2295                      := l_kf_cost_valueset_tab(l_value_set_tab_count).min_value;
2296       p_kf_cost_seg_tab(l_kf_cost_seg_count).vs_max_value
2297                      := l_kf_cmp_valueset_tab(l_value_set_tab_count).max_value;
2298 
2299       l_kf_cost_seg_count := l_kf_cost_seg_count + 1 ;
2300     end if;
2301     --
2302     -- freeze and compile this flexfield
2303     --
2304     if NOT (p_technical_summary_mode) then
2305       per_ri_config_utilities.freeze_and_compile_flexfield
2306                        (p_appl_short_Name           => 'PAY'
2307                        ,p_flex_code                 => 'COST'
2308                        ,p_structure_code            => l_cost_structures_code);
2309     end if;
2310   EXCEPTION
2311     when others then
2312       l_error_message := 'Error in ' || l_proc;
2313       hr_utility.trace(l_error_message || '-' || sqlerrm);
2314       hr_utility.set_location(' Leaving:'|| l_proc, 500);
2315       hr_utility.raise_error;
2316 
2317   END create_global_grp_cmp_cost_kf;
2318 
2319   /* --------------------------------------------------------------------------
2320   -- Name      : create_global_job_pos_kf
2321   -- Purpose   : This procedure creates global jobs and positions keyflex structures,
2322   --             segments and valuesets when jobs/positions are not defined.
2323   -- Arguments : p_configuration_code
2324   --
2325   -------------------------------------------------------------------------- */
2326 
2327   PROCEDURE create_global_job_pos_kf (p_configuration_code in varchar2
2328                                      ,p_technical_summary_mode in boolean default FALSE
2329                                      ,p_kf_job_tab in out nocopy
2330                                                per_ri_config_tech_summary.kf_job_tab
2331                                      ,p_kf_pos_tab in out nocopy
2332                                                per_ri_config_tech_summary.kf_pos_tab
2333                                      ,p_kf_job_seg_tab in out nocopy
2334                                                per_ri_config_tech_summary.kf_job_seg_tab
2335                                      ,p_kf_pos_seg_tab in out nocopy
2336                                                per_ri_config_tech_summary.kf_pos_seg_tab) IS
2337 
2338   l_proc                         varchar2(72) := g_package || 'create_global_job_pos_kf';
2339   l_configuration_code           per_ri_config_information.configuration_code%type;
2340   l_jobs_fk_number               number(9);
2341   l_position_fk_number           number(9);
2342 
2343   l_enterprise_short_name        per_ri_config_information.configuration_code%type;
2344 
2345   l_job_structures_code          fnd_id_flex_structures.id_flex_structure_code%type;
2346   l_pos_structures_code          fnd_id_flex_structures.id_flex_structure_code%type;
2347   l_enterprise_primary_industry  per_ri_config_information.config_information1%type;
2348 
2349   l_kf_job_tab                   per_ri_config_tech_summary.kf_job_tab;
2350   l_kf_pos_tab                   per_ri_config_tech_summary.kf_pos_tab;
2351   l_kf_job_count                 number(8) :=0;
2352   l_kf_pos_count                 number(8) :=0;
2353 
2354   l_kf_job_seg_tab               per_ri_config_tech_summary.kf_job_seg_tab;
2355   l_kf_pos_seg_tab               per_ri_config_tech_summary.kf_pos_seg_tab;
2356   l_kf_job_seg_count             number(8) :=0;
2357   l_kf_pos_seg_count             number(8) :=0;
2358 
2359   l_kf_job_valueset_tab          per_ri_config_tech_summary.valueset_tab;
2360   l_kf_pos_valueset_tab          per_ri_config_tech_summary.valueset_tab;
2361   l_value_set_tab_count          number(9) := 1;
2362 
2363   l_log_message                  varchar2(360);
2364   l_error_message                varchar2(360);
2365 
2366   BEGIN
2367     hr_utility.set_location('Entering:'|| l_proc, 10);
2368 
2369     l_enterprise_short_name := per_ri_config_utilities.get_enterprise_short_name(p_configuration_code);
2370 
2371     -- Create Global Jobs Key flex
2372     hr_utility.set_location(l_proc, 20);
2373     l_job_structures_code := per_ri_config_utilities.return_config_entity_name
2374                                (per_ri_config_main.g_global_job_structure_name);
2375 
2376 
2377     if NOT (p_technical_summary_mode) then
2378       l_jobs_fk_number  := per_ri_config_utilities.create_key_flexfield
2379                                      (p_appl_short_name   => 'PER'
2380                                      ,p_flex_code         => 'JOB'
2381                                      ,p_structure_code    => l_job_structures_code
2382                                      ,p_structure_title   => l_job_structures_code
2383                                      ,p_description       => l_job_structures_code);
2384 
2385 
2386     else
2387       p_kf_job_tab(l_kf_job_count).appl_short_name    := 'PER';
2388       p_kf_job_tab(l_kf_job_count).flex_code          := 'JOB';
2389       p_kf_job_tab(l_kf_job_count).structure_code     := l_job_structures_code;
2390       p_kf_job_tab(l_kf_job_count).structure_title    := l_job_structures_code;
2391       p_kf_job_tab(l_kf_job_count).description        := l_job_structures_code;
2392       l_kf_job_count := l_kf_job_count + 1 ;
2393     end if;
2394 
2395     l_enterprise_primary_industry := per_ri_config_utilities.get_ent_primary_industry
2396                                                    (p_configuration_code => p_configuration_code);
2397 
2398     l_log_message := 'Created KEYFLEX PER JOB ' || l_job_structures_code;
2399     per_ri_config_utilities.write_log(p_message => l_log_message);
2400 
2401     -- Create Position Key flex
2402     hr_utility.set_location(l_proc, 30);
2403     l_pos_structures_code :=  per_ri_config_utilities.return_config_entity_name
2404                                (per_ri_config_main.g_global_pos_structure_name);
2405     if NOT (p_technical_summary_mode) then
2406       l_position_fk_number  := per_ri_config_utilities.create_key_flexfield
2407                                    (p_appl_short_Name   => 'PER'
2408                                    ,p_flex_code         => 'POS'
2409                                    ,p_structure_code    => l_pos_structures_code
2410                                    ,p_structure_title   => l_pos_structures_code
2411                                    ,p_description       => l_pos_structures_code);
2412     else
2413       p_kf_pos_tab(l_kf_pos_count).appl_short_name    := 'PER';
2414       p_kf_pos_tab(l_kf_pos_count).flex_code          := 'POS';
2415       p_kf_pos_tab(l_kf_pos_count).structure_code     := l_pos_structures_code;
2416       p_kf_pos_tab(l_kf_pos_count).structure_title    := l_pos_structures_code;
2417       p_kf_pos_tab(l_kf_pos_count).description        := l_pos_structures_code;
2418       l_kf_pos_count := l_kf_pos_count + 1 ;
2419     end if;
2420 
2421 
2422     l_log_message := 'Created KEYFLEX PER POS ' || l_pos_structures_code;
2423     per_ri_config_utilities.write_log(p_message => l_log_message);
2424 
2425     hr_utility.set_location(l_proc, 40);
2426 
2427     if l_enterprise_primary_industry <> 'US_GOVERNMENT' then
2428        hr_utility.set_location(l_proc, 50);
2429 
2430        -- Create Jobs Key Flex Segments
2431 
2432        if NOT (p_technical_summary_mode) then
2433          per_ri_config_utilities.create_flex_segments
2434                     (p_appl_short_Name           => 'PER'
2435                     ,p_flex_code                 => 'JOB'
2436                     ,p_structure_code            => l_job_structures_code
2437                     ,p_segment_name              => 'Job Name'
2438                     ,p_column_name               => 'SEGMENT1'
2439                     ,p_segment_number            => 1
2440                     ,p_value_set                 => null
2441                     ,p_lov_prompt                => 'Job Name'
2442                     ,p_window_prompt             => 'Job Name');
2443        else
2444          p_kf_job_seg_tab(l_kf_job_seg_count).appl_short_name  := 'PER';
2445          p_kf_job_seg_tab(l_kf_job_seg_count).flex_code        := 'JOB';
2446          p_kf_job_seg_tab(l_kf_job_seg_count).structure_code   := l_job_structures_code;
2447          p_kf_job_seg_tab(l_kf_job_seg_count).segment_name     :=  'Job Name';
2448          p_kf_job_seg_tab(l_kf_job_seg_count).column_name      := 'SEGMENT1';
2449          p_kf_job_seg_tab(l_kf_job_seg_count).segment_number   := 1;
2450          p_kf_job_seg_tab(l_kf_job_seg_count).value_set        := null;
2451          p_kf_job_seg_tab(l_kf_job_seg_count).lov_prompt       := 'Job Name';
2452          p_kf_job_seg_tab(l_kf_job_seg_count).segment_type     := null;
2453          p_kf_job_seg_tab(l_kf_job_seg_count).window_prompt    := 'Job Name';
2454 
2455           --create technical summary data for valueset
2456           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2457                                  ,p_valueset_type   => null
2458                                  ,p_structure_code  => l_job_structures_code
2459                                  ,p_segment_name    => 'Job Name'
2460                                  ,p_segment_number  => 1
2461                                  ,p_valueset_tab    => l_kf_job_valueset_tab);
2462 
2463           p_kf_job_seg_tab(l_kf_job_seg_count).vs_value_set_name
2464                          := l_kf_job_valueset_tab(l_value_set_tab_count).value_set_name;
2465           p_kf_job_seg_tab(l_kf_job_seg_count).vs_description
2466                          := l_kf_job_valueset_tab(l_value_set_tab_count).description;
2467           p_kf_job_seg_tab(l_kf_job_seg_count).vs_security_available
2468                          := l_kf_job_valueset_tab(l_value_set_tab_count).security_available;
2469           p_kf_job_seg_tab(l_kf_job_seg_count).vs_enable_longlist
2470                          := l_kf_job_valueset_tab(l_value_set_tab_count).enable_longlist;
2471           p_kf_job_seg_tab(l_kf_job_seg_count).vs_format_type
2472                          := l_kf_job_valueset_tab(l_value_set_tab_count).format_type;
2473           p_kf_job_seg_tab(l_kf_job_seg_count).vs_maximum_size
2474                          := l_kf_job_valueset_tab(l_value_set_tab_count).maximum_size;
2475           p_kf_job_seg_tab(l_kf_job_seg_count).vs_precision
2476                          := l_kf_job_valueset_tab(l_value_set_tab_count).precision;
2477           p_kf_job_seg_tab(l_kf_job_seg_count).vs_numbers_only
2478                          := l_kf_job_valueset_tab(l_value_set_tab_count).numbers_only;
2479           p_kf_job_seg_tab(l_kf_job_seg_count).vs_uppercase_only
2480                          := l_kf_job_valueset_tab(l_value_set_tab_count).uppercase_only;
2481           p_kf_job_seg_tab(l_kf_job_seg_count).vs_right_justify_zero_fill
2482                          := l_kf_job_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2483           p_kf_job_seg_tab(l_kf_job_seg_count).vs_min_value
2484                          := l_kf_job_valueset_tab(l_value_set_tab_count).min_value;
2485           p_kf_job_seg_tab(l_kf_job_seg_count).vs_max_value
2486                          := l_kf_job_valueset_tab(l_value_set_tab_count).max_value;
2487           l_kf_job_seg_count := l_kf_job_seg_count + 1 ;
2488        end if;
2489 
2490       l_log_message := 'Created KEYFLEX SEGMENT : PER JOB ' || 'Job Name';
2491       per_ri_config_utilities.write_log(p_message => l_log_message);
2492 
2493        -- Create Position Key Flex Segments
2494        if NOT (p_technical_summary_mode) then
2495          per_ri_config_utilities.create_flex_segments
2496                        (p_appl_short_Name           => 'PER'
2497                        ,p_flex_code                 => 'POS'
2498                        ,p_structure_code            => l_pos_structures_code
2499                        ,p_segment_name              => 'Position Name'
2500                        ,p_column_name               => 'SEGMENT1'
2501                        ,p_segment_number            => 1
2502                        ,p_value_set                 => null
2503                        ,p_lov_prompt                => 'Position Name'
2504                       ,p_window_prompt             => 'Position Name');
2505          else
2506            p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
2507            p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
2508            p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   := l_pos_structures_code;
2509            p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Position Name';
2510            p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT1';
2511            p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   := 1;
2512            p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := null;
2513            p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Position Name';
2514            p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := null;
2515            p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Position Name';
2516 
2517            --create technical summary data for valueset
2518            per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2519                                  ,p_valueset_type   => null
2520                                  ,p_structure_code  => l_pos_structures_code
2521                                  ,p_segment_name    => 'Position Name'
2522                                  ,p_segment_number  => 1
2523                                  ,p_valueset_tab    => l_kf_pos_valueset_tab);
2524 
2525            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
2526                           := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
2527            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
2528                           := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
2529            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
2530                           := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
2531            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
2532                           := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
2533            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
2534                           := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
2535            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
2536                           := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
2537            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
2538                           := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
2539            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
2540                           := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
2541            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
2542                           := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
2543            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
2544                           := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2545            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
2546                           := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
2547            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
2548                           := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
2549            l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
2550          end if;
2551 
2552       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || l_pos_structures_code;
2553       per_ri_config_utilities.write_log(p_message => l_log_message);
2554 
2555        hr_utility.set_location(l_proc, 60);
2556      else
2557        hr_utility.set_location(l_proc, 70);
2558        hr_utility.trace('Positions : Industry is US_GOVERNMENT');
2559 
2560       -- create only federal job segments with specified value segment name valuesets.
2561       -- First Segment 'Name' valueset '60 Characters'
2562       if NOT (p_technical_summary_mode) then
2563         per_ri_config_utilities.create_flex_segments
2564                         (p_appl_short_Name           => 'PER'
2565                         ,p_flex_code                 => 'JOB'
2566                         ,p_structure_code            => l_job_structures_code
2567                         ,p_segment_name              => 'Name'
2568                         ,p_column_name               => 'SEGMENT1'
2569                         ,p_segment_number            => 1
2570                         ,p_value_set                 => '60 Characters'
2571                         ,p_lov_prompt                => 'Name'
2572                         ,p_segment_type              => 'Char'
2573                         ,p_window_prompt             => 'Name'
2574                         ,p_fed_seg_attribute         => 'Y');
2575 
2576       else
2577         p_kf_job_seg_tab(l_kf_job_seg_count).appl_short_name  := 'PER';
2578         p_kf_job_seg_tab(l_kf_job_seg_count).flex_code        := 'JOB';
2579         p_kf_job_seg_tab(l_kf_job_seg_count).structure_code   :=  l_job_structures_code;
2580         p_kf_job_seg_tab(l_kf_job_seg_count).segment_name     :=  'Name';
2581         p_kf_job_seg_tab(l_kf_job_seg_count).column_name      := 'SEGMENT1';
2582         p_kf_job_seg_tab(l_kf_job_seg_count).segment_number   :=  1;
2583         p_kf_job_seg_tab(l_kf_job_seg_count).value_set        :=  '60 Characters';
2584         p_kf_job_seg_tab(l_kf_job_seg_count).lov_prompt       := 'Name';
2585         p_kf_job_seg_tab(l_kf_job_seg_count).segment_type     := 'Char';
2586         p_kf_job_seg_tab(l_kf_job_seg_count).window_prompt    := 'Name';
2587 
2588         --create technical summary data for valueset
2589         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
2590                                ,p_valueset_type   => 'Char'
2591                                ,p_structure_code  => l_job_structures_code
2592                                ,p_segment_name    => 'Name'
2593                                ,p_segment_number  => 1
2594                                ,p_valueset_tab    => l_kf_job_valueset_tab);
2595 
2596         p_kf_job_seg_tab(l_kf_job_seg_count).vs_value_set_name
2597                        := l_kf_job_valueset_tab(l_value_set_tab_count).value_set_name;
2598         p_kf_job_seg_tab(l_kf_job_seg_count).vs_description
2599                        := l_kf_job_valueset_tab(l_value_set_tab_count).description;
2600         p_kf_job_seg_tab(l_kf_job_seg_count).vs_security_available
2601                        := l_kf_job_valueset_tab(l_value_set_tab_count).security_available;
2602         p_kf_job_seg_tab(l_kf_job_seg_count).vs_enable_longlist
2603                        := l_kf_job_valueset_tab(l_value_set_tab_count).enable_longlist;
2604         p_kf_job_seg_tab(l_kf_job_seg_count).vs_format_type
2605                        := l_kf_job_valueset_tab(l_value_set_tab_count).format_type;
2606         p_kf_job_seg_tab(l_kf_job_seg_count).vs_maximum_size
2607                        := l_kf_job_valueset_tab(l_value_set_tab_count).maximum_size;
2608         p_kf_job_seg_tab(l_kf_job_seg_count).vs_precision
2609                        := l_kf_job_valueset_tab(l_value_set_tab_count).precision;
2610         p_kf_job_seg_tab(l_kf_job_seg_count).vs_numbers_only
2611                        := l_kf_job_valueset_tab(l_value_set_tab_count).numbers_only;
2612         p_kf_job_seg_tab(l_kf_job_seg_count).vs_uppercase_only
2613                        := l_kf_job_valueset_tab(l_value_set_tab_count).uppercase_only;
2614         p_kf_job_seg_tab(l_kf_job_seg_count).vs_right_justify_zero_fill
2615                        := l_kf_job_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2616         p_kf_job_seg_tab(l_kf_job_seg_count).vs_min_value
2617                        := l_kf_job_valueset_tab(l_value_set_tab_count).min_value;
2618         p_kf_job_seg_tab(l_kf_job_seg_count).vs_max_value
2619                        := l_kf_job_valueset_tab(l_value_set_tab_count).max_value;
2620         l_kf_job_seg_count := l_kf_job_seg_count + 1 ;
2621       end if;
2622 
2623       -- create only federal position segments with specified value segment name valuesets.
2624       -- First Segment
2625       if NOT (p_technical_summary_mode) then
2626       per_ri_config_utilities.create_flex_segments
2627                         (p_appl_short_Name           => 'PER'
2628                         ,p_flex_code                 => 'POS'
2629                         ,p_structure_code            =>  l_pos_structures_code
2630                         ,p_segment_name              => 'Position Title'
2631                         ,p_column_name               => 'SEGMENT1'
2632                         ,p_segment_number            => 1
2633                         ,p_value_set                 => 'GHR_US_POSITION_TITLE'
2634                         ,p_lov_prompt                => 'Position Title'
2635                         ,p_segment_type              => 'Char'
2636                         ,p_window_prompt             => 'Position Title'
2637                         ,p_fed_seg_attribute         => 'Y');
2638 
2639       else
2640         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
2641         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
2642         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
2643         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Position Title';
2644         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT1';
2645         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  1;
2646         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_POSITION_TITLE';
2647         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Position Title';
2648         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
2649         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Position Title';
2650 
2651         --create technical summary data for valueset
2652         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_POSITION_TITLE'
2653                                ,p_valueset_type   => 'Char'
2654                                ,p_structure_code  => l_pos_structures_code
2655                                ,p_segment_name    => 'Position Title'
2656                                ,p_segment_number  => 1
2657                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
2658 
2659         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
2660                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
2661         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
2662                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
2663         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
2664                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
2665         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
2666                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
2667         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
2668                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
2669         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
2670                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
2671         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
2672                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
2673         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
2674                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
2675         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
2676                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
2677         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
2678                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2679         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
2680                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
2681         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
2682                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
2683         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
2684       end if;
2685 
2686       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Position Title';
2687       per_ri_config_utilities.write_log(p_message => l_log_message);
2688 
2689       -- Second Segment
2690       if NOT (p_technical_summary_mode) then
2691       per_ri_config_utilities.create_flex_segments
2692                         (p_appl_short_Name           => 'PER'
2693                         ,p_flex_code                 => 'POS'
2694                         ,p_structure_code            =>  l_pos_structures_code
2695                         ,p_segment_name              => 'Description'
2696                         ,p_column_name               => 'SEGMENT2'
2697                         ,p_segment_number            => 2
2698                         ,p_value_set                 => 'GHR_US_POS_DESC_NUM'
2699                         ,p_lov_prompt                => 'Description'
2700                         ,p_segment_type              => 'Char'
2701                         ,p_window_prompt             => 'Description'
2702                         ,p_fed_seg_attribute         => 'Y');
2703       else
2704         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
2705         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
2706         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
2707         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Description';
2708         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT2';
2709         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  2;
2710         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_POS_DESC_NUM';
2711         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Description';
2712         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
2713         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Description';
2714 
2715         --create technical summary data for valueset
2716         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_POS_DESC_NUM'
2717                                ,p_valueset_type   => 'Char'
2718                                ,p_structure_code  => l_pos_structures_code
2719                                ,p_segment_name    => 'Description'
2720                                ,p_segment_number  => 2
2721                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
2722 
2723         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
2724                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
2725         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
2726                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
2727         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
2728                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
2729         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
2730                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
2731         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
2732                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
2733         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
2734                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
2735         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
2736                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
2737         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
2738                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
2739         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
2740                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
2741         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
2742                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2743         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
2744                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
2745         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
2746                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
2747         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
2748       end if;
2749 
2750       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Description';
2751       per_ri_config_utilities.write_log(p_message => l_log_message);
2752 
2753       -- Third Segment
2754       if NOT (p_technical_summary_mode) then
2755       per_ri_config_utilities.create_flex_segments
2756                         (p_appl_short_Name           => 'PER'
2757                         ,p_flex_code                 => 'POS'
2758                         ,p_structure_code            =>  l_pos_structures_code
2759                         ,p_segment_name              => 'Sequence'
2760                         ,p_column_name               => 'SEGMENT3'
2761                         ,p_segment_number            => 3
2762                         ,p_value_set                 => 'GHR_US_SEQUENCE_NUM'
2763                         ,p_lov_prompt                => 'Sequence'
2764                         ,p_segment_type              => 'Char'
2765                         ,p_window_prompt             => 'Sequence'
2766                         ,p_fed_seg_attribute         => 'Y');
2767       else
2768         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
2769         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
2770         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
2771         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Sequence';
2772         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT3';
2773         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  3;
2774         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_SEQUENCE_NUM';
2775         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Sequence';
2776         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
2777         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Sequence';
2778 
2779         --create technical summary data for valueset
2780         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_SEQUENCE_NUM'
2781                                ,p_valueset_type   => 'Char'
2782                                ,p_structure_code  => l_pos_structures_code
2783                                ,p_segment_name    => 'Sequence'
2784                                ,p_segment_number  => 3
2785                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
2786 
2787         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
2788                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
2789         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
2790                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
2791         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
2792                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
2793         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
2794                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
2795         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
2796                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
2797         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
2798                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
2799         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
2800                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
2801         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
2802                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
2803         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
2804                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
2805         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
2806                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2807         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
2808                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
2809         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
2810                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
2811         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
2812       end if;
2813 
2814       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Sequence';
2815       per_ri_config_utilities.write_log(p_message => l_log_message);
2816       -- Fourth Segment
2817       if NOT (p_technical_summary_mode) then
2818       per_ri_config_utilities.create_flex_segments
2819                         (p_appl_short_Name           => 'PER'
2820                         ,p_flex_code                 => 'POS'
2821                         ,p_structure_code            =>  l_pos_structures_code
2822                         ,p_segment_name              => 'Agency Code'
2823                         ,p_column_name               => 'SEGMENT4'
2824                         ,p_segment_number            => 4
2825                         ,p_value_set                 => 'GHR_US_AGENCY_CODE'
2826                         ,p_lov_prompt                => 'Agency Code'
2827                         ,p_segment_type              => 'Char'
2828                         ,p_window_prompt             => 'Agency Code'
2829                         ,p_fed_seg_attribute         => 'Y');
2830       else
2831         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
2832         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
2833         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
2834         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Agency Code';
2835         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT4';
2836         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  4;
2837         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_AGENCY_CODE';
2838         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Agency Code';
2839         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
2840         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Agency Code';
2841 
2842         --create technical summary data for valueset
2843         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_AGENCY_CODE'
2844                                ,p_valueset_type   => 'Char'
2845                                ,p_structure_code  => l_pos_structures_code
2846                                ,p_segment_name    => 'Agency Code'
2847                                ,p_segment_number  => 4
2848                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
2849 
2850         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
2851                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
2852         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
2853                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
2854         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
2855                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
2856         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
2857                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
2858         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
2859                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
2860         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
2861                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
2862         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
2863                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
2864         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
2865                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
2866         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
2867                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
2868         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
2869                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
2870         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
2871                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
2872         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
2873                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
2874         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
2875       end if;
2876 
2877       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Agency Code';
2878       per_ri_config_utilities.write_log(p_message => l_log_message);
2879       hr_utility.set_location(l_proc, 90);
2880     end if;
2881 
2882     --
2883     -- freeze and compile this flexfield
2884     --
2885     if NOT (p_technical_summary_mode) then
2886       per_ri_config_utilities.freeze_and_compile_flexfield
2887                        (p_appl_short_Name           => 'PER'
2888                        ,p_flex_code                 => 'JOB'
2889                        ,p_structure_code            =>  l_job_structures_code);
2890     end if;
2891 
2892     --
2893     -- freeze and compile this flexfield
2894     --
2895     if NOT (p_technical_summary_mode) then
2896       per_ri_config_utilities.freeze_and_compile_flexfield
2897                        (p_appl_short_Name           => 'PER'
2898                        ,p_flex_code                 => 'POS'
2899                        ,p_structure_code            =>  l_pos_structures_code);
2900     end if;
2901 
2902     hr_utility.set_location(' Leaving:'|| l_proc, 100);
2903 
2904   EXCEPTION
2905     when others then
2906       l_error_message := 'Error in ' || l_proc;
2907       hr_utility.trace(l_error_message || '-' || sqlerrm);
2908       hr_utility.set_location(' Leaving:'|| l_proc, 500);
2909       hr_utility.raise_error;
2910 
2911   END create_global_job_pos_kf;
2912 
2913   /* --------------------------------------------------------------------------
2914   -- Name      : create_global_pos_kf
2915   -- Purpose   : This procedure creates global positions keyflex structures,
2916   --             segments and valuesets when positions are not defined.
2917   -- Arguments : p_configuration_code
2918   --
2919   -------------------------------------------------------------------------- */
2920 
2921   PROCEDURE create_global_pos_kf (p_configuration_code in varchar2
2922                                  ,p_technical_summary_mode in boolean default FALSE
2923                                  ,p_kf_pos_tab in out nocopy
2924                                            per_ri_config_tech_summary.kf_pos_tab
2925                                  ,p_kf_pos_seg_tab in out nocopy
2926                                            per_ri_config_tech_summary.kf_pos_seg_tab) IS
2927 
2928   l_proc                         varchar2(72) := g_package || 'create_global_pos_kf';
2929   l_configuration_code           per_ri_config_information.configuration_code%type;
2930   l_position_fk_number           number(9);
2931 
2932   l_enterprise_short_name        per_ri_config_information.configuration_code%type;
2933 
2934   l_pos_structures_code          fnd_id_flex_structures.id_flex_structure_code%type;
2935   l_enterprise_primary_industry  per_ri_config_information.config_information1%type;
2936   l_log_message                  varchar2(360);
2937   l_error_message                varchar2(360);
2938 
2939   l_kf_pos_tab                   per_ri_config_tech_summary.kf_pos_tab;
2940   l_kf_pos_count                 number(8) :=0;
2941   l_kf_pos_seg_tab               per_ri_config_tech_summary.kf_pos_seg_tab;
2942   l_kf_pos_seg_count             number(8) :=0;
2943 
2944   l_kf_pos_valueset_tab          per_ri_config_tech_summary.valueset_tab;
2945   l_value_set_tab_count          number(9) := 1;
2946 
2947 
2948   BEGIN
2949     hr_utility.set_location('Entering:'|| l_proc, 10);
2950 
2951     l_enterprise_short_name := per_ri_config_utilities.get_enterprise_short_name(p_configuration_code);
2952 
2953     l_enterprise_primary_industry := per_ri_config_utilities.get_ent_primary_industry
2954                                                    (p_configuration_code => p_configuration_code);
2955 
2956     -- Create Position Key flex
2957     hr_utility.set_location(l_proc, 20);
2958 
2959     l_pos_structures_code :=  per_ri_config_utilities.return_config_entity_name
2960                                (per_ri_config_main.g_global_pos_structure_name);
2961     if NOT (p_technical_summary_mode) then
2962       l_position_fk_number  := per_ri_config_utilities.create_key_flexfield
2963                                      (p_appl_short_Name   => 'PER'
2964                                      ,p_flex_code         => 'POS'
2965                                      ,p_structure_code    => l_pos_structures_code
2966                                      ,p_structure_title   => l_pos_structures_code
2967                                      ,p_description       => l_pos_structures_code);
2968      else
2969        p_kf_pos_tab(l_kf_pos_count).appl_short_name    := 'PER';
2970        p_kf_pos_tab(l_kf_pos_count).flex_code          := 'POS';
2971        p_kf_pos_tab(l_kf_pos_count).structure_code     := l_pos_structures_code;
2972        p_kf_pos_tab(l_kf_pos_count).structure_title    := l_pos_structures_code;
2973        p_kf_pos_tab(l_kf_pos_count).description        := l_pos_structures_code;
2974        l_kf_pos_count := l_kf_pos_count + 1 ;
2975     end if;
2976 
2977     l_log_message := 'Created KEYFLEX PER POS ' || l_pos_structures_code;
2978     per_ri_config_utilities.write_log(p_message => l_log_message);
2979 
2980     hr_utility.set_location(l_proc, 30);
2981 
2982     if l_enterprise_primary_industry <> 'US_GOVERNMENT' then
2983        hr_utility.set_location(l_proc, 50);
2984 
2985        -- Create Position Key Flex Segments
2986        if NOT (p_technical_summary_mode) then
2987          per_ri_config_utilities.create_flex_segments
2988                          (p_appl_short_Name           => 'PER'
2989                          ,p_flex_code                 => 'POS'
2990                          ,p_structure_code            => l_pos_structures_code
2991                          ,p_segment_name              => 'Position Name'
2992                          ,p_column_name               => 'SEGMENT1'
2993                          ,p_segment_number            => 1
2994                          ,p_value_set                 => null
2995                          ,p_lov_prompt                => 'Position Name'
2996                         ,p_window_prompt             => 'Position Name');
2997          else
2998            p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
2999            p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
3000            p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   := l_pos_structures_code;
3001            p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Position Name';
3002            p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT1';
3003            p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   := 1;
3004            p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := null;
3005            p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Position Name';
3006            p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := null;
3007            p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Position Name';
3008 
3009            --create technical summary data for valueset
3010            per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
3011                                  ,p_valueset_type   => null
3012                                  ,p_structure_code  => l_pos_structures_code
3013                                  ,p_segment_name    => 'Position Name'
3014                                  ,p_segment_number  => 1
3015                                  ,p_valueset_tab    => l_kf_pos_valueset_tab);
3016 
3017            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
3018                           := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
3019            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
3020                           := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
3021            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
3022                           := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
3023            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
3024                           := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
3025            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
3026                           := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
3027            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
3028                           := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
3029            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
3030                           := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
3031            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
3032                           := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
3033            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
3034                           := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
3035            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
3036                           := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
3037            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
3038                           := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
3039            p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
3040                           := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
3041            l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
3042          end if;
3043 
3044       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || l_pos_structures_code;
3045       per_ri_config_utilities.write_log(p_message => l_log_message);
3046 
3047        hr_utility.set_location(l_proc, 60);
3048      else
3049        hr_utility.set_location(l_proc, 70);
3050        hr_utility.trace('Positions : Industry is US_GOVERNMENT');
3051 
3052       -- create only federal position segments with specified value segment name valuesets.
3053       -- First Segment
3054       if NOT (p_technical_summary_mode) then
3055         per_ri_config_utilities.create_flex_segments
3056                           (p_appl_short_Name           => 'PER'
3057                           ,p_flex_code                 => 'POS'
3058                           ,p_structure_code            =>  l_pos_structures_code
3059                           ,p_segment_name              => 'Position Title'
3060                           ,p_column_name               => 'SEGMENT1'
3061                           ,p_segment_number            => 1
3062                           ,p_value_set                 => 'GHR_US_POSITION_TITLE'
3063                           ,p_lov_prompt                => 'Position Title'
3064                           ,p_segment_type              => 'Char'
3065                           ,p_window_prompt             => 'Position Title'
3066                           ,p_fed_seg_attribute         => 'Y');
3067       else
3068         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
3069         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
3070         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
3071         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Position Title';
3072         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT1';
3073         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  1;
3074         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_POSITION_TITLE';
3075         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Position Title';
3076         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
3077         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Position Title';
3078 
3079         --create technical summary data for valueset
3080         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_POSITION_TITLE'
3081                                ,p_valueset_type   => 'Char'
3082                                ,p_structure_code  => l_pos_structures_code
3083                                ,p_segment_name    => 'Position Title'
3084                                ,p_segment_number  => 1
3085                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
3086 
3087         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
3088                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
3089         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
3090                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
3091         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
3092                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
3093         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
3094                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
3095         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
3096                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
3097         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
3098                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
3099         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
3100                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
3101         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
3102                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
3103         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
3104                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
3105         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
3106                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
3107         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
3108                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
3109         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
3110                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
3111         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
3112       end if;
3113 
3114       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Position Title';
3115       per_ri_config_utilities.write_log(p_message => l_log_message);
3116 
3117       -- Second Segment
3118       if NOT (p_technical_summary_mode) then
3119         per_ri_config_utilities.create_flex_segments
3120                           (p_appl_short_Name           => 'PER'
3121                           ,p_flex_code                 => 'POS'
3122                           ,p_structure_code            =>  l_pos_structures_code
3123                           ,p_segment_name              => 'Description'
3124                           ,p_column_name               => 'SEGMENT2'
3125                           ,p_segment_number            => 2
3126                           ,p_value_set                 => 'GHR_US_POS_DESC_NUM'
3127                           ,p_lov_prompt                => 'Description'
3128                           ,p_segment_type              => 'Char'
3129                           ,p_window_prompt             => 'Description'
3130                           ,p_fed_seg_attribute         => 'Y');
3131       else
3132         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
3133         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
3134         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
3135         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Description';
3136         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT2';
3137         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  2;
3138         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_POS_DESC_NUM';
3139         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Description';
3140         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
3141         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Description';
3142 
3143         --create technical summary data for valueset
3144         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_POS_DESC_NUM'
3145                                ,p_valueset_type   => 'Char'
3146                                ,p_structure_code  => l_pos_structures_code
3147                                ,p_segment_name    => 'Description'
3148                                ,p_segment_number  => 2
3149                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
3150 
3151         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
3152                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
3153         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
3154                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
3155         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
3156                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
3157         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
3158                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
3159         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
3160                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
3161         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
3162                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
3163         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
3164                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
3165         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
3166                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
3167         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
3168                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
3169         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
3170                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
3171         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
3172                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
3173         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
3174                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
3175         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
3176       end if;
3177 
3178       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Description';
3179       per_ri_config_utilities.write_log(p_message => l_log_message);
3180 
3181       -- Third Segment
3182       if NOT (p_technical_summary_mode) then
3183         per_ri_config_utilities.create_flex_segments
3184                           (p_appl_short_Name           => 'PER'
3185                           ,p_flex_code                 => 'POS'
3186                           ,p_structure_code            =>  l_pos_structures_code
3187                           ,p_segment_name              => 'Sequence'
3188                           ,p_column_name               => 'SEGMENT3'
3189                           ,p_segment_number            => 3
3190                           ,p_value_set                 => 'GHR_US_SEQUENCE_NUM'
3191                           ,p_lov_prompt                => 'Sequence'
3192                           ,p_segment_type              => 'Char'
3193                           ,p_window_prompt             => 'Sequence'
3194                           ,p_fed_seg_attribute         => 'Y');
3195 
3196       else
3197         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
3198         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
3199         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
3200         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Sequence';
3201         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT3';
3202         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  3;
3203         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_SEQUENCE_NUM';
3204         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Sequence';
3205         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
3206         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Sequence';
3207 
3208         --create technical summary data for valueset
3209         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_SEQUENCE_NUM'
3210                                ,p_valueset_type   => 'Char'
3211                                ,p_structure_code  => l_pos_structures_code
3212                                ,p_segment_name    => 'Sequence'
3213                                ,p_segment_number  => 3
3214                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
3215 
3216         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
3217                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
3218         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
3219                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
3220         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
3221                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
3222         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
3223                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
3224         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
3225                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
3226         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
3227                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
3228         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
3229                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
3230         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
3231                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
3232         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
3233                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
3234         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
3235                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
3236         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
3237                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
3238         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
3239                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
3240         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
3241       end if;
3242       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Sequence';
3243       per_ri_config_utilities.write_log(p_message => l_log_message);
3244       -- Fourth Segment
3245       if NOT (p_technical_summary_mode) then
3246         per_ri_config_utilities.create_flex_segments
3247                           (p_appl_short_Name           => 'PER'
3248                           ,p_flex_code                 => 'POS'
3249                           ,p_structure_code            =>  l_pos_structures_code
3250                           ,p_segment_name              => 'Agency Code'
3251                           ,p_column_name               => 'SEGMENT4'
3252                           ,p_segment_number            => 4
3253                           ,p_value_set                 => 'GHR_US_AGENCY_CODE'
3254                           ,p_lov_prompt                => 'Agency Code'
3255                           ,p_segment_type              => 'Char'
3256                           ,p_window_prompt             => 'Agency Code'
3257                           ,p_fed_seg_attribute         => 'Y');
3258       else
3259         p_kf_pos_seg_tab(l_kf_pos_seg_count).appl_short_name  := 'PER';
3260         p_kf_pos_seg_tab(l_kf_pos_seg_count).flex_code        := 'POS';
3261         p_kf_pos_seg_tab(l_kf_pos_seg_count).structure_code   :=  l_pos_structures_code;
3262         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_name     :=  'Agency Code';
3263         p_kf_pos_seg_tab(l_kf_pos_seg_count).column_name      := 'SEGMENT4';
3264         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_number   :=  4;
3265         p_kf_pos_seg_tab(l_kf_pos_seg_count).value_set        := 'GHR_US_AGENCY_CODE';
3266         p_kf_pos_seg_tab(l_kf_pos_seg_count).lov_prompt       := 'Agency Code';
3267         p_kf_pos_seg_tab(l_kf_pos_seg_count).segment_type     := 'Char';
3268         p_kf_pos_seg_tab(l_kf_pos_seg_count).window_prompt    := 'Agency Code';
3269 
3270         --create technical summary data for valueset
3271         per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => 'GHR_US_AGENCY_CODE'
3272                                ,p_valueset_type   => 'Char'
3273                                ,p_structure_code  => l_pos_structures_code
3274                                ,p_segment_name    => 'Agency Code'
3275                                ,p_segment_number  => 4
3276                                ,p_valueset_tab    => l_kf_pos_valueset_tab);
3277 
3278         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_value_set_name
3279                        := l_kf_pos_valueset_tab(l_value_set_tab_count).value_set_name;
3280         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_description
3281                        := l_kf_pos_valueset_tab(l_value_set_tab_count).description;
3282         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_security_available
3283                        := l_kf_pos_valueset_tab(l_value_set_tab_count).security_available;
3284         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_enable_longlist
3285                        := l_kf_pos_valueset_tab(l_value_set_tab_count).enable_longlist;
3286         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_format_type
3287                        := l_kf_pos_valueset_tab(l_value_set_tab_count).format_type;
3288         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_maximum_size
3289                        := l_kf_pos_valueset_tab(l_value_set_tab_count).maximum_size;
3290         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_precision
3291                        := l_kf_pos_valueset_tab(l_value_set_tab_count).precision;
3292         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_numbers_only
3293                        := l_kf_pos_valueset_tab(l_value_set_tab_count).numbers_only;
3294         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_uppercase_only
3295                        := l_kf_pos_valueset_tab(l_value_set_tab_count).uppercase_only;
3296         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_right_justify_zero_fill
3297                        := l_kf_pos_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
3298         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_min_value
3299                        := l_kf_pos_valueset_tab(l_value_set_tab_count).min_value;
3300         p_kf_pos_seg_tab(l_kf_pos_seg_count).vs_max_value
3301                        := l_kf_pos_valueset_tab(l_value_set_tab_count).max_value;
3302         l_kf_pos_seg_count := l_kf_pos_seg_count + 1 ;
3303       end if;
3304 
3305       l_log_message := 'Created KEYFLEX SEGMENT : PER POS ' || 'Agency Code';
3306       per_ri_config_utilities.write_log(p_message => l_log_message);
3307       hr_utility.set_location(l_proc, 90);
3308     end if;
3309 
3310     --
3311     -- freeze and compile this flexfield
3312     --
3313     per_ri_config_utilities.freeze_and_compile_flexfield
3314                        (p_appl_short_Name           => 'PER'
3315                        ,p_flex_code                 => 'POS'
3316                        ,p_structure_code            =>  l_pos_structures_code);
3317 
3318     hr_utility.set_location(' Leaving:'|| l_proc, 100);
3319 
3320   EXCEPTION
3321     when others then
3322       l_error_message := 'Error in ' || l_proc;
3323       hr_utility.trace(l_error_message || '-' || sqlerrm);
3324       hr_utility.set_location(' Leaving:'|| l_proc, 500);
3325       hr_utility.raise_error;
3326 
3327   END create_global_pos_kf;
3328 
3329   /* --------------------------------------------------------------------------
3330   -- Name      : create_global_grd_kf
3331   -- Purpose   : This procedure creates grades keyflex structures, segments and
3332   --             valuesets when grades are not defined.
3333   -- Arguments : p_configuration_code
3334   --
3335   -------------------------------------------------------------------------- */
3336   PROCEDURE create_global_grd_kf (p_configuration_code in varchar2
3337                                  ,p_technical_summary_mode in boolean default FALSE
3338                                   ,p_kf_grd_tab in out nocopy
3339                                      per_ri_config_tech_summary.kf_grd_tab
3340                                   ,p_kf_grd_seg_tab in out nocopy
3341                                      per_ri_config_tech_summary.kf_grd_seg_tab) IS
3342 
3343   l_proc                         varchar2(72) := g_package || 'create_global_grd_kf';
3344   l_log_message                  varchar2(360);
3345   l_kf_grd_tab                   per_ri_config_tech_summary.kf_grd_tab;
3346   l_kf_grd_count                 number(8) := 0;
3347   l_error_message                varchar2(360);
3348   l_kf_grd_seg_tab               per_ri_config_tech_summary.kf_grd_seg_tab;
3349   l_kf_grd_seg_count             number(8) := 0;
3350 
3351   l_configuration_code           per_ri_config_information.configuration_code%type;
3352   l_grade_number                 number(9);
3353 
3354   l_kf_grd_valueset_tab          per_ri_config_tech_summary.valueset_tab;
3355   l_value_set_tab_count          number(9) := 1;
3356 
3357   l_enterprise_short_name        per_ri_config_information.configuration_code%type;
3358 
3359   l_grd_structures_code          fnd_id_flex_structures.id_flex_structure_code%type;
3360   l_enterprise_primary_industry  per_ri_config_information.config_information1%type;
3361 
3362   BEGIN
3363     hr_utility.set_location('Entering:'|| l_proc, 10);
3364 
3365     l_enterprise_primary_industry := per_ri_config_utilities.get_ent_primary_industry
3366                                                    (p_configuration_code => p_configuration_code);
3367 
3368     l_enterprise_short_name := per_ri_config_utilities.get_enterprise_short_name(p_configuration_code);
3369 
3370     if l_enterprise_primary_industry <> 'US_GOVERNMENT' then
3371        hr_utility.set_location(l_proc, 20);
3372        -- Create Grade Key Flex
3373        l_grd_structures_code :=  per_ri_config_utilities.return_config_entity_name
3374                                (per_ri_config_main.g_global_grd_structure_name);
3375        if NOT (p_technical_summary_mode) then
3376          l_grade_number  := per_ri_config_utilities.create_key_flexfield
3377                                         (p_appl_short_Name   => 'PER'
3378                                         ,p_flex_code         => 'GRD'
3379                                         ,p_structure_code    => l_grd_structures_code
3380                                         ,p_structure_title   => l_grd_structures_code
3381                                         ,p_description       => l_grd_structures_code);
3382 
3383       else
3384         p_kf_grd_tab(l_kf_grd_count).appl_short_name    := 'PER';
3385         p_kf_grd_tab(l_kf_grd_count).flex_code          := 'GRD';
3386         p_kf_grd_tab(l_kf_grd_count).structure_code     := l_grd_structures_code;
3387         p_kf_grd_tab(l_kf_grd_count).structure_title    := l_grd_structures_code;
3388         p_kf_grd_tab(l_kf_grd_count).description        := l_grd_structures_code;
3389 
3390         l_kf_grd_count := l_kf_grd_count + 1 ;
3391       end if;
3392        l_log_message := 'Created KEYFLEX PER GRD ' || l_grd_structures_code;
3393        per_ri_config_utilities.write_log(p_message => l_log_message);
3394 
3395        -- Create Grade Key Flex Segments
3396        if NOT (p_technical_summary_mode) then
3397          per_ri_config_utilities.create_flex_segments
3398                        (p_appl_short_Name           => 'PER'
3399                        ,p_flex_code                 => 'GRD'
3400                        ,p_structure_code            => l_grd_structures_code
3401                        ,p_segment_name              => 'Grade'
3402                        ,p_column_name               => 'SEGMENT1'
3403                        ,p_segment_number            => 1
3404                        ,p_value_set                 => null
3405                        ,p_lov_prompt                => 'Grade'
3406                        ,p_window_prompt             => 'Grade');
3407         else
3408           p_kf_grd_seg_tab(l_kf_grd_seg_count).appl_short_name  := 'PER';
3409           p_kf_grd_seg_tab(l_kf_grd_seg_count).flex_code        := 'GRD';
3410           p_kf_grd_seg_tab(l_kf_grd_seg_count).structure_code   := l_grd_structures_code;
3411           p_kf_grd_seg_tab(l_kf_grd_seg_count).segment_name     := 'Grade';
3412           p_kf_grd_seg_tab(l_kf_grd_seg_count).column_name      := 'SEGMENT1';
3413           p_kf_grd_seg_tab(l_kf_grd_seg_count).segment_number   := 1;
3414           p_kf_grd_seg_tab(l_kf_grd_seg_count).value_set        := null;
3415           p_kf_grd_seg_tab(l_kf_grd_seg_count).lov_prompt       := 'Grade';
3416           p_kf_grd_seg_tab(l_kf_grd_seg_count).segment_type     := 'Grade';
3417           p_kf_grd_seg_tab(l_kf_grd_seg_count).window_prompt    := 'Grade';
3418 
3419           --create technical summary data for valueset
3420           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
3421                                  ,p_valueset_type   => null
3422                                  ,p_structure_code  => l_grd_structures_code
3423                                  ,p_segment_name    => 'Grade'
3424                                  ,p_segment_number  => 1
3425                                  ,p_valueset_tab    => l_kf_grd_valueset_tab);
3426 
3427           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_value_set_name
3428                          := l_kf_grd_valueset_tab(l_value_set_tab_count).value_set_name;
3429           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_description
3430                          := l_kf_grd_valueset_tab(l_value_set_tab_count).description;
3431           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_security_available
3432                          := l_kf_grd_valueset_tab(l_value_set_tab_count).security_available;
3433           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_enable_longlist
3434                          := l_kf_grd_valueset_tab(l_value_set_tab_count).enable_longlist;
3435           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_format_type
3436                          := l_kf_grd_valueset_tab(l_value_set_tab_count).format_type;
3437           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_maximum_size
3438                          := l_kf_grd_valueset_tab(l_value_set_tab_count).maximum_size;
3439           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_precision
3440                          := l_kf_grd_valueset_tab(l_value_set_tab_count).precision;
3441           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_numbers_only
3442                          := l_kf_grd_valueset_tab(l_value_set_tab_count).numbers_only;
3443           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_uppercase_only
3444                          := l_kf_grd_valueset_tab(l_value_set_tab_count).uppercase_only;
3445           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_right_justify_zero_fill
3446                          := l_kf_grd_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
3447           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_min_value
3448                          := l_kf_grd_valueset_tab(l_value_set_tab_count).min_value;
3449           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_max_value
3450                          := l_kf_grd_valueset_tab(l_value_set_tab_count).max_value;
3451 
3452           l_kf_grd_seg_count := l_kf_grd_seg_count + 1 ;
3453     end if;
3454 
3455       l_log_message := 'Created KEYFLEX SEGMENT : PER GRD ' || 'Grade';
3456       per_ri_config_utilities.write_log(p_message => l_log_message);
3457 
3458        if NOT (p_technical_summary_mode) then
3459          per_ri_config_utilities.create_flex_segments
3460                        (p_appl_short_Name           => 'PER'
3461                        ,p_flex_code                 => 'GRD'
3462                        ,p_structure_code            => l_grd_structures_code
3463                        ,p_segment_name              => 'Level'
3464                        ,p_column_name               => 'SEGMENT2'
3465                        ,p_segment_number            => 2
3466                        ,p_value_set                 => null
3467                        ,p_lov_prompt                => 'Level'
3468                        ,p_window_prompt             => 'Level');
3469         else
3470           p_kf_grd_seg_tab(l_kf_grd_seg_count).appl_short_name  := 'PER';
3471           p_kf_grd_seg_tab(l_kf_grd_seg_count).flex_code        := 'GRD';
3472           p_kf_grd_seg_tab(l_kf_grd_seg_count).structure_code   := l_grd_structures_code;
3473           p_kf_grd_seg_tab(l_kf_grd_seg_count).segment_name     := 'Level';
3474           p_kf_grd_seg_tab(l_kf_grd_seg_count).column_name      := 'SEGMENT2';
3475           p_kf_grd_seg_tab(l_kf_grd_seg_count).segment_number   := 2;
3476           p_kf_grd_seg_tab(l_kf_grd_seg_count).value_set        := null;
3477           p_kf_grd_seg_tab(l_kf_grd_seg_count).lov_prompt       := 'Level';
3478           p_kf_grd_seg_tab(l_kf_grd_seg_count).segment_type     := 'Level';
3479           p_kf_grd_seg_tab(l_kf_grd_seg_count).window_prompt    := 'Level';
3480 
3481           --create technical summary data for valueset
3482           per_ri_config_utilities.create_valueset_ts_data(p_valueset_name   => null
3483                                  ,p_valueset_type   => null
3484                                  ,p_structure_code  => l_grd_structures_code
3485                                  ,p_segment_name    => 'Level'
3486                                  ,p_segment_number  => 2
3487                                  ,p_valueset_tab    => l_kf_grd_valueset_tab);
3488 
3489           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_value_set_name
3490                          := l_kf_grd_valueset_tab(l_value_set_tab_count).value_set_name;
3491           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_description
3492                          := l_kf_grd_valueset_tab(l_value_set_tab_count).description;
3493           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_security_available
3494                          := l_kf_grd_valueset_tab(l_value_set_tab_count).security_available;
3495           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_enable_longlist
3496                          := l_kf_grd_valueset_tab(l_value_set_tab_count).enable_longlist;
3497           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_format_type
3498                          := l_kf_grd_valueset_tab(l_value_set_tab_count).format_type;
3499           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_maximum_size
3500                          := l_kf_grd_valueset_tab(l_value_set_tab_count).maximum_size;
3501           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_precision
3502                          := l_kf_grd_valueset_tab(l_value_set_tab_count).precision;
3503           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_numbers_only
3504                          := l_kf_grd_valueset_tab(l_value_set_tab_count).numbers_only;
3505           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_uppercase_only
3506                          := l_kf_grd_valueset_tab(l_value_set_tab_count).uppercase_only;
3507           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_right_justify_zero_fill
3508                          := l_kf_grd_valueset_tab(l_value_set_tab_count).right_justify_zero_fill;
3509           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_min_value
3510                          := l_kf_grd_valueset_tab(l_value_set_tab_count).min_value;
3511           p_kf_grd_seg_tab(l_kf_grd_seg_count).vs_max_value
3512                          := l_kf_grd_valueset_tab(l_value_set_tab_count).max_value;
3513 
3514           l_kf_grd_seg_count := l_kf_grd_seg_count + 1 ;
3515     end if;
3516 
3517       l_log_message := 'Created KEYFLEX SEGMENT : PER GRD ' || 'Level';
3518       per_ri_config_utilities.write_log(p_message => l_log_message);
3519       --
3520       -- freeze and compile this flexfield
3521       --
3522       if NOT (p_technical_summary_mode) then
3523         per_ri_config_utilities.freeze_and_compile_flexfield
3524                        (p_appl_short_Name           => 'PER'
3525                        ,p_flex_code                 => 'GRD'
3526                        ,p_structure_code            => l_grd_structures_code);
3527       end if;
3528     else
3529       -- Since GRD Keyflex and segments are already defined.
3530       Null;
3531     end if;
3532 
3533   EXCEPTION
3534     when others then
3535       l_error_message := 'Error in ' || l_proc;
3536       hr_utility.trace(l_error_message || '-' || sqlerrm);
3537       hr_utility.set_location(' Leaving:'|| l_proc, 500);
3538       hr_utility.raise_error;
3539 
3540   END create_global_grd_kf;
3541 
3542   /* --------------------------------------------------------------------------
3543   -- Name      : create_default_value_sets
3544   -- Purpose   : This procedure creates default valuests.
3545   -- Arguments : p_configuration_code
3546   --
3547   -------------------------------------------------------------------------- */
3548   PROCEDURE create_default_value_sets (p_configuration_code in varchar2) IS
3549 
3550   l_proc                         varchar2(72) := g_package || 'create_default_value_sets';
3551   l_log_message	                 varchar2(360);
3552   l_error_message                 varchar2(360);
3553 
3554   l_security_available	         varchar2(1)    default 'N';
3555   l_enable_longlist		 varchar2(1)    default 'Y';
3556   l_format_type			 varchar2(1)    default 'C';
3557   l_maximum_size   		 number(9)      default 60;
3558   l_precision 			 number(2)      default null;
3559   l_numbers_only 		 varchar2(1)    default 'N';
3560   l_uppercase_only               varchar2(1)    default 'N';
3561   l_right_justify_zero_fill	 varchar2(1)    default 'N';
3562   l_min_value			 varchar2(150)  default null;
3563   l_max_value 			 varchar2(150)  default null;
3564   l_description                  varchar2(240);
3565   l_value_set_exists             boolean;
3566 
3567   BEGIN
3568 
3569    hr_utility.set_location('Entering:'|| l_proc, 10);
3570 
3571    fnd_flex_val_api.set_session_mode('customer_data');
3572 
3573    -- Create PER_RI_DEFAULT_GRADES
3574    l_value_set_exists := fnd_flex_val_api.valueset_exists(value_set => 'PER_RI_CONFIG_DEFAULT_GRADES');
3575    if not (l_value_set_exists) then
3576      hr_utility.set_location(l_proc, 20);
3577      l_description  := 'The default Grades Value Set is generated by Enterprise Structures Configuration '
3578                         || 'and used in Grade flexfield validation. This will initially be empty and can '
3579                         || 'be populated using the load reference data';
3580      fnd_flex_val_api.create_valueset_independent
3581                                       (value_set_name	                => 'PER_RI_CONFIG_DEFAULT_GRADES'
3582 	                              ,description	                => l_description
3583 	                              ,security_available               => l_security_available
3584 	                              ,enable_longlist	                => l_enable_longlist
3585    	                              ,format_type	                => l_format_type
3586 	                              ,maximum_size   	                => l_maximum_size
3587 	                              ,precision 	                => l_precision
3588 	                              ,numbers_only 	                => l_numbers_only
3589 	                              ,uppercase_only                   => l_uppercase_only
3590 	                              ,right_justify_zero_fill          => l_right_justify_zero_fill
3591 	                              ,min_value		       => l_min_value
3592 	                              ,max_value 	               => l_max_value);
3593     l_log_message := 'Created DEFAULT VALUESET ' || 'PER_RI_CONFIG_DEFAULT_GRADES';
3594     per_ri_config_utilities.write_log(p_message => l_log_message);
3595    end if;
3596    hr_utility.set_location(l_proc, 30);
3597    -- Create PER_RI_DEFAULT_GRADES
3598    l_value_set_exists := fnd_flex_val_api.valueset_exists(value_set => 'PER_RI_CONFIG_DEFAULT_LEVELS');
3599    if not (l_value_set_exists) then
3600      hr_utility.set_location(l_proc, 40);
3601      l_description  := 'The default Grades Level Value Set is generated by Enterprise Structures Configuration '
3602                         || 'and used in Grade flexfield validation. This will initially be empty and can '
3603                         || 'be populated using the load reference data';
3604      fnd_flex_val_api.create_valueset_independent
3605                                       (value_set_name            => 'PER_RI_CONFIG_DEFAULT_LEVELS'
3606                                       ,description              => l_description
3607                                       ,security_available       => l_security_available
3608                                       ,enable_longlist          => l_enable_longlist
3609                                       ,format_type              => l_format_type
3610                                       ,maximum_size             => l_maximum_size
3611                                       ,precision                => l_precision
3612                                       ,numbers_only             => l_numbers_only
3613                                       ,uppercase_only           => l_uppercase_only
3614                                       ,right_justify_zero_fill  => l_right_justify_zero_fill
3615                                       ,min_value                => l_min_value
3616                                       ,max_value                => l_max_value);
3617     l_log_message := 'Created DEFAULT VALUESET ' || 'PER_RI_CONFIG_DEFAULT_LEVELS';
3618    end if;
3619    hr_utility.set_location(l_proc, 50);
3620 
3621    -- Create PER_RI_DEFAULT_GRADES
3622    l_description  := 'The default Account Number Value Set is generated by Enterprise Structures Configuration '
3623                       || 'and used in Grade flexfield validation. This will initially be empty and can '
3624                       || 'be populated using the load reference data';
3625    l_value_set_exists := fnd_flex_val_api.valueset_exists(value_set => 'PER_RI_CONFIG_DEFAULT_ACCOUNT');
3626    if not (l_value_set_exists) then
3627      hr_utility.set_location(l_proc, 60);
3628      fnd_flex_val_api.create_valueset_independent
3629                                       (value_set_name            => 'PER_RI_CONFIG_DEFAULT_ACCOUNT'
3630                                       ,description              => l_description
3631                                       ,security_available       => l_security_available
3632                                       ,enable_longlist          => l_enable_longlist
3633                                       ,format_type              => l_format_type
3634                                       ,maximum_size             => l_maximum_size
3635                                       ,precision                => l_precision
3636                                       ,numbers_only             => l_numbers_only
3637                                       ,uppercase_only           => l_uppercase_only
3638                                       ,right_justify_zero_fill  => l_right_justify_zero_fill
3639                                       ,min_value                => l_min_value
3640                                       ,max_value                => l_max_value);
3641     l_log_message := 'Created DEFAULT VALUESET ' || 'PER_RI_CONFIG_DEFAULT_ACCOUNT';
3642    end if;
3643    hr_utility.set_location(l_proc, 70);
3644    -- Create PER_RI_DEFAULT_GRADES
3645    l_description  := 'The default Company Value Set is generated by Enterprise Structures Configuration '
3646                       || 'and used in Grade flexfield validation. This will initially be empty and can '
3647                       || 'be populated using the load reference data';
3648    l_value_set_exists := fnd_flex_val_api.valueset_exists(value_set => 'PER_RI_CONFIG_DEFAULT_COMPANY');
3649    if not (l_value_set_exists) then
3650      hr_utility.set_location(l_proc, 80);
3651      fnd_flex_val_api.create_valueset_independent
3652                                       (value_set_name            => 'PER_RI_CONFIG_DEFAULT_COMPANY'
3653                                       ,description              => l_description
3654                                       ,security_available       => l_security_available
3655                                       ,enable_longlist          => l_enable_longlist
3656                                       ,format_type              => l_format_type
3657                                       ,maximum_size             => l_maximum_size
3658                                       ,precision                => l_precision
3659                                       ,numbers_only             => l_numbers_only
3660                                       ,uppercase_only           => l_uppercase_only
3661                                       ,right_justify_zero_fill  => l_right_justify_zero_fill
3662                                       ,min_value                => l_min_value
3663                                       ,max_value                => l_max_value);
3664     l_log_message := 'Created DEFAULT VALUESET ' || 'PER_RI_CONFIG_DEFAULT_COMPANY';
3665    end if;
3666    hr_utility.set_location(l_proc, 90);
3667    -- Create PER_RI_DEFAULT_GRADES
3668    l_description  := 'The default Cost Center Value Set is generated by Enterprise Structures Configuration '
3669                       || 'and used in Grade flexfield validation. This will initially be empty and can '
3670                       || 'be populated using the load reference data';
3671    l_value_set_exists := fnd_flex_val_api.valueset_exists(value_set => 'PER_RI_CONFIG_DEFAULT_CC');
3672    if not (l_value_set_exists) then
3673      hr_utility.set_location(l_proc, 100);
3674      fnd_flex_val_api.create_valueset_independent
3675                                       (value_set_name            => 'PER_RI_CONFIG_DEFAULT_CC'
3676                                       ,description              => l_description
3677                                       ,security_available       => l_security_available
3678                                       ,enable_longlist          => l_enable_longlist
3679                                       ,format_type              => l_format_type
3680                                       ,maximum_size             => l_maximum_size
3681                                       ,precision                => l_precision
3682                                       ,numbers_only             => l_numbers_only
3683                                       ,uppercase_only           => l_uppercase_only
3684                                       ,right_justify_zero_fill  => l_right_justify_zero_fill
3685                                       ,min_value                => l_min_value
3686                                       ,max_value                => l_max_value);
3687     l_log_message := 'Created DEFAULT VALUESET ' || 'PER_RI_CONFIG_DEFAULT_CC';
3688    end if;
3689 
3690    hr_utility.set_location(' Leaving:'|| l_proc, 120);
3691 
3692   EXCEPTION
3693     when others then
3694       l_error_message := 'Error in ' || l_proc;
3695       hr_utility.trace(l_error_message || '-' || sqlerrm);
3696       hr_utility.set_location(' Leaving:'|| l_proc, 500);
3697       hr_utility.raise_error;
3698 
3699 
3700   END create_default_value_sets;
3701 
3702   /* --------------------------------------------------------------------------
3703   -- Name      : create_hrms_responsibility
3704   -- Purpose   : This procedure creates hrms responsibilities and assign them to
3705   --             the super user created by the enterprise structures configuration
3706   --             loader program. Responsibilities attached are based on the product
3707   --             country selection list.
3708   -- Arguments : p_configuration_code
3709   --             p_security_profile_tab
3710   -------------------------------------------------------------------------- */
3711 
3712   PROCEDURE create_hrms_responsibility (p_configuration_code   in varchar2
3713                                        ,p_security_profile_tab in out nocopy security_profile_tab
3714                                        ,p_technical_summary_mode in boolean default FALSE
3715                                        ,p_hrms_resp_tab in out nocopy per_ri_config_tech_summary.hrms_resp_tab) IS
3716 
3717   cursor csr_get_country (cp_configuration_code in varchar2) IS
3718       select country_code
3719       from per_ri_config_country_v
3720      where configuration_code = cp_configuration_code
3721        and country_code in (select distinct territory_code
3722                               from per_ri_config_responsibility)
3723         and country_code in (select per_ri_config_utilities.business_group_decision
3724                                    (cp_configuration_code
3725                                    ,country_code)
3726                               from  per_ri_config_country_v where configuration_code = cp_configuration_code);
3727 
3728   /*
3729   cursor csr_get_country (cp_configuration_code in varchar2) IS
3730     select country_code
3731       from per_ri_config_country_v
3732      where configuration_code = cp_configuration_code
3733        and country_code in (select distinct territory_code
3734                                      from per_ri_config_responsibility);
3735   */
3736 
3737   cursor csr_get_product (cp_configuration_code in varchar2) IS
3738     select product_name
3739       from per_ri_config_prod_selection_v
3740      where configuration_code = cp_configuration_code;
3741 
3742   cursor csr_get_responsibility (cp_territory_code in varchar2
3743                                 ,cp_responsibility_application in varchar2) IS
3744     select distinct resp.responsibility_key,
3745            apps.application_short_name
3746       from fnd_application  apps,
3747            fnd_responsibility  resp,
3748            per_ri_config_responsibility con,
3749            per_ri_config_country_v      cont
3750      where apps.application_id = resp.application_id
3751        and con.responsibility_key = resp.responsibility_key
3752        and resp.responsibility_key = con.responsibility_key
3753        and resp.responsibility_key = con.responsibility_key
3754        and con.territory_code             = cp_territory_code
3755        and con.responsibility_application = cp_responsibility_application
3756        and con.territory_code = cont.country_code
3757        and cont.country_code in (select distinct territory_code
3758                                      from per_ri_config_responsibility);
3759 
3760   cursor csr_global_responsibility(cp_configuration_code in varchar2) IS
3761     select country_code
3762      from  per_ri_config_country_v con
3763     where con.configuration_code = cp_configuration_code
3764       and con.country_code not in (select distinct territory_code
3765                                      from per_ri_config_responsibility)
3766       and per_ri_config_utilities.business_group_decision
3767                                    (cp_configuration_code
3768                                    ,country_code)  <> 'INT' ;
3769 
3770   l_proc                         varchar2(72) := g_package || 'create_hrms_responsibility';
3771   l_error_message                 varchar2(360);
3772   l_country_code                 per_ri_config_information.config_information1%type;
3773   l_product_name                 per_ri_config_information.config_information1%type;
3774   l_fnd_application_short_name   varchar2(30);
3775 
3776   l_country_code_global          per_ri_config_information.config_information1%type;
3777   l_responsibility_key           varchar2(60);
3778   l_application_short_name       per_ri_config_information.configuration_code%type;
3779   l_assign_responsibility        varchar2(30);
3780   l_assign_global_responsibility boolean default FALSE;
3781   l_assign_global_resp_key       varchar2(60);
3782   l_assign_glb_resp_key_app_name varchar2(30);
3783 
3784   l_assign_determined_resp       varchar2(30);
3785   l_hr                           boolean default FALSE;
3786   l_hrms                         boolean default FALSE;
3787   l_benefits                     boolean default FALSE;
3788   l_self_service                 boolean default FALSE;
3789 
3790   l_business_group_name          per_business_groups.name%type;
3791   l_business_group_name_main     per_business_groups.name%type;
3792   l_business_group_name_global   per_business_groups.name%type;
3793   l_start_date                   varchar2(240) := to_char(per_ri_config_fnd_hr_entity.g_config_effective_date,'YYYY/MM/DD');
3794   l_end_date                     varchar2(240) := to_char(per_ri_config_fnd_hr_entity.g_config_effective_end_date,'YYYY/MM/DD');
3795   l_row_count                    number(9) default 0 ;
3796   l_earlier_row_count            number(9) default 0 ;
3797 
3798   l_configuration_user_name      fnd_user.user_name%type;
3799 
3800   l_hrms_resp_count              number(9) := 0;
3801   l_hrms_bgsgut_profile_resp_tab per_ri_config_tech_summary.profile_resp_tab;
3802   l_profile_resp_main_tab        per_ri_config_tech_summary.profile_resp_tab;
3803 
3804   BEGIN
3805 
3806     hr_utility.set_location('Entering:'|| l_proc, 10);
3807 
3808     l_configuration_user_name :=  upper(per_ri_config_utilities.return_config_entity_name_pre
3809                                     (per_ri_config_main.g_configuration_user_name));
3810     open csr_get_product(p_configuration_code);
3811 
3812     loop
3813       fetch csr_get_product into l_product_name;
3814       exit when csr_get_product%NOTFOUND;
3815       hr_utility.trace('l_product_name = ' || l_product_name);
3816 
3817       if l_product_name = 'PER' then
3818         l_hr := TRUE;
3819       end if;
3820       if l_product_name = 'PAY' then
3821         l_hrms := TRUE;
3822       end if;
3823       if l_product_name = 'BEN' then
3824         l_benefits := TRUE;
3825       end if;
3826       if l_product_name = 'SSHR' then
3827         l_self_service := TRUE;
3828       end if;
3829     end loop;
3830 
3831     close csr_get_product;
3832 
3833     hr_utility.set_location(l_proc, 30);
3834 
3835     --
3836     -- assign hrms self service responsibilities
3837     --
3838 
3839     if l_self_service then
3840 
3841       if NOT (p_technical_summary_mode) then
3842         fnd_user_resp_groups_api.load_row(
3843                       x_user_name       => l_configuration_user_name,
3844                       x_resp_key        => 'EMPLOYEE_DIRECT_ACCESS_V4.0',
3845                       x_app_short_name  => 'PER',
3846                       x_security_group  => 'STANDARD',
3847                       x_owner           => 'SEED',
3848                       x_start_date      =>  l_start_date,
3849                       x_end_date        =>  l_end_date,
3850                       x_description     => per_ri_config_main.g_description_string);
3851         hr_utility.trace('Assigned Responsibility: ' || 'EMPLOYEE_DIRECT_ACCESS');
3852         hr_utility.set_location(l_proc, 40);
3853       else
3854           p_hrms_resp_tab(l_hrms_resp_count).user_name      :=  l_configuration_user_name;
3855           p_hrms_resp_tab(l_hrms_resp_count).resp_key  := 'EMPLOYEE_DIRECT_ACCESS_V4';
3856           p_hrms_resp_tab(l_hrms_resp_count).app_short_name := 'PER';
3857           p_hrms_resp_tab(l_hrms_resp_count).security_group := 'STANDARD';
3858           p_hrms_resp_tab(l_hrms_resp_count).owner          := 'SEED';
3859           p_hrms_resp_tab(l_hrms_resp_count).start_date     := l_start_date;
3860           p_hrms_resp_tab(l_hrms_resp_count).end_date       := l_end_date;
3861           p_hrms_resp_tab(l_hrms_resp_count).description    := per_ri_config_main.g_description_string;
3862 
3863           l_hrms_resp_count := l_hrms_resp_count + 1 ;
3864       end if;
3865 
3866       if NOT (p_technical_summary_mode) then
3867         fnd_user_resp_groups_api.load_row(
3868                       x_user_name       => l_configuration_user_name,
3869                       x_resp_key        => 'LINE_MANAGER_ACCESS_V4.0',
3870                       x_app_short_name  => 'PER',
3871                       x_security_group  => 'STANDARD',
3872                       x_owner           => 'SEED',
3873                       x_start_date      =>  l_start_date,
3874                       x_end_date        =>  l_end_date,
3875                       x_description     => per_ri_config_main.g_description_string);
3876       else
3877           p_hrms_resp_tab(l_hrms_resp_count).user_name      :=  l_configuration_user_name;
3878           p_hrms_resp_tab(l_hrms_resp_count).resp_key  := 'LINE_MANAGER_ACCESS_V4';
3879           p_hrms_resp_tab(l_hrms_resp_count).app_short_name := 'PER';
3880           p_hrms_resp_tab(l_hrms_resp_count).security_group := 'STANDARD';
3881           p_hrms_resp_tab(l_hrms_resp_count).owner          := 'SEED';
3882           p_hrms_resp_tab(l_hrms_resp_count).start_date     := l_start_date;
3883           p_hrms_resp_tab(l_hrms_resp_count).end_date       := l_end_date;
3884           p_hrms_resp_tab(l_hrms_resp_count).description    := per_ri_config_main.g_description_string;
3885 
3886           l_hrms_resp_count := l_hrms_resp_count + 1 ;
3887       end if;
3888       hr_utility.trace('Assigned Responsibility: ' || 'LINE_MANAGER_DIRECT_ACCESS');
3889       hr_utility.set_location(l_proc, 50);
3890     end if;
3891 
3892     --decide on the responsibility to be assigned.
3893 
3894     hr_utility.set_location(l_proc, 60);
3895     l_assign_responsibility := 'PER';
3896 
3897     if l_hr and not l_hrms and not l_benefits then
3898       l_assign_responsibility := 'PER';
3899     end if;
3900     if l_hr and l_hrms and not l_benefits then
3901       l_assign_responsibility := 'HRMS';
3902     end if;
3903     if l_hr and l_hrms and l_benefits then
3904       l_assign_responsibility := 'SHRMS';
3905     end if;
3906 
3907     open csr_get_country(p_configuration_code);
3908     loop
3909       fetch csr_get_country into l_country_code;
3910       exit when csr_get_country%NOTFOUND;
3911 
3912       l_assign_determined_resp
3913                := per_ri_config_utilities.determine_country_resp
3914                                 (p_country_code          => l_country_code
3915                                 ,p_assign_responsibility => l_assign_responsibility);
3916 
3917       hr_utility.trace('l_assign_responsibility = ' || l_assign_responsibility);
3918       hr_utility.trace('l_assign_determined_resp = ' || l_assign_determined_resp);
3919       --open csr_get_responsibility(l_country_code
3920       --                           ,l_assign_responsibility);
3921 
3922       open csr_get_responsibility(l_country_code
3923                                  ,l_assign_determined_resp);
3924       loop
3925         fetch csr_get_responsibility into  l_responsibility_key
3926                                           ,l_fnd_application_short_name;
3927 
3928           exit when csr_get_responsibility%NOTFOUND;
3929 
3930           hr_utility.trace('l_country_code : ' || l_country_code);
3931           hr_utility.trace('l_responsibility_key : ' || l_responsibility_key);
3932           hr_utility.trace('l_fnd_application_short_name : ' || l_fnd_application_short_name);
3933 
3934           -- Security Group Removal Changes
3935           -- This is taken care by security_profile_assignment creation
3936           --assign responsibility
3937           /* fnd_user_resp_groups_api.load_row(
3938                                   x_user_name       => l_configuration_user_name,
3939                                   x_resp_key        => l_responsibility_key,
3940                                   x_app_short_name  => l_fnd_application_short_name,
3941                                   x_security_group  => 'STANDARD',
3942                                   x_owner           => 'SEED',
3943                                   x_start_date      =>  l_start_date,
3944                                   x_end_date        =>  l_end_date,
3945                                   x_description     => per_ri_config_main.g_description_string);
3946           hr_utility.trace('Assigned Responsibility:' || l_responsibility_key || ':' || l_fnd_application_short_name);
3947           */
3948           -- get business group name for given country code
3949           l_business_group_name_main := per_ri_config_utilities.get_enterprise_short_name
3950                                            (p_configuration_code => p_configuration_code)
3951                              || ' ' || l_country_code || per_ri_config_main.g_bg_name_suffix_string;
3952 
3953           per_ri_config_fnd_hr_entity.create_resp_level_profile
3954                                     (p_configuration_code       => p_configuration_code
3955                                     ,p_responsibility_key       => l_responsibility_key
3956                                     ,p_technical_summary_mode   => p_technical_summary_mode
3957                                     ,p_profile_resp_tab         => l_profile_resp_main_tab);
3958           -- this need special processing
3959           --once data is populated we need to populate this main table to show data.
3960 
3961 
3962           if NOT (p_technical_summary_mode) then
3963             p_security_profile_tab(csr_get_responsibility%ROWCOUNT + l_row_count).security_profile_name
3964                                                      := l_business_group_name_main;
3965             p_security_profile_tab(csr_get_responsibility%ROWCOUNT + l_row_count).responsibility_key
3966                                                      := l_responsibility_key;
3967 
3968           -- This procedure can be used to populate technical summary records.
3969           else
3970             --this table is also needed now for security group changes
3971             p_security_profile_tab(csr_get_responsibility%ROWCOUNT + l_row_count).security_profile_name
3972                                                      := l_business_group_name_main;
3973             p_security_profile_tab(csr_get_responsibility%ROWCOUNT + l_row_count).responsibility_key
3974                                                      := l_responsibility_key;
3975             --
3976             p_hrms_resp_tab(l_hrms_resp_count).user_name      := l_configuration_user_name;
3977             p_hrms_resp_tab(l_hrms_resp_count).resp_key       := l_responsibility_key;
3978             p_hrms_resp_tab(l_hrms_resp_count).app_short_name := null;
3979             p_hrms_resp_tab(l_hrms_resp_count).security_group := l_business_group_name_main;
3980             p_hrms_resp_tab(l_hrms_resp_count).owner          := null;
3981             p_hrms_resp_tab(l_hrms_resp_count).start_date     := l_start_date;
3982             p_hrms_resp_tab(l_hrms_resp_count).end_date       := l_end_date;
3983             p_hrms_resp_tab(l_hrms_resp_count).description    := per_ri_config_main.g_description_string;
3984 
3985             l_hrms_resp_count := l_hrms_resp_count + 1;
3986           end if;
3987 
3988 
3989           hr_utility.trace('l_business_group_name_main : ' || l_business_group_name_main);
3990           hr_utility.trace('l_responsibility_key : ' || l_responsibility_key);
3991 
3992           hr_utility.trace('l_row_count inside = ' || to_char(l_row_count));
3993 
3994       end loop;
3995       l_row_count := l_row_count + (csr_get_responsibility%ROWCOUNT);
3996       hr_utility.trace('l_row_count outside = ' || to_char(l_row_count));
3997       close csr_get_responsibility;
3998     end loop;
3999     close csr_get_country;
4000 
4001     --process gobal responsibility
4002     hr_utility.set_location('Entering:'|| l_proc, 210);
4003     l_assign_glb_resp_key_app_name  := 'PER';
4004 
4005     if l_hr and not l_hrms and not l_benefits then
4006       l_assign_global_resp_key  := 'GLOBAL HR MANAGER';
4007       l_assign_glb_resp_key_app_name  := 'PER';
4008     end if;
4009 
4010     if l_hr and l_hrms and not l_benefits then
4011       l_assign_global_resp_key  := 'GLOBAL_HRMS_MANAGER';
4012       l_assign_glb_resp_key_app_name  := 'PER';
4013     end if;
4014 
4015     if l_hr and l_hrms and l_benefits then
4016       l_assign_global_resp_key  := 'GLB_SHRMS_MANAGER';
4017       l_assign_glb_resp_key_app_name  := 'PER';
4018     end if;
4019 
4020     if l_hr and not l_hrms and l_benefits then
4021       l_assign_global_resp_key  := 'US_BEN_MANAGER';
4022       l_assign_glb_resp_key_app_name  := 'BEN';
4023     end if;
4024 
4025     hr_utility.set_location('Entering:'|| l_proc, 220);
4026     hr_utility.trace('l_assign_glb_resp_key_app_name : ' || l_assign_glb_resp_key_app_name);
4027     hr_utility.trace('l_assign_global_resp_key : ' || l_assign_global_resp_key);
4028 
4029     l_earlier_row_count := p_security_profile_tab.count + 1;
4030     hr_utility.trace('GLOBAL l_earlier_row_count : ' || l_earlier_row_count);
4031 
4032     open csr_global_responsibility(p_configuration_code);
4033     loop
4034       fetch csr_global_responsibility into l_country_code_global;
4035       exit when csr_global_responsibility%NOTFOUND;
4036 
4037       hr_utility.trace('Assigned Global Responsibility:' || l_assign_global_resp_key );
4038 
4039      -- get business group name for given country code
4040      -- business group name and security profile names are same
4041      l_business_group_name_global := per_ri_config_utilities.get_enterprise_short_name
4042                                            (p_configuration_code => p_configuration_code)
4043                              || ' ' || l_country_code_global || per_ri_config_main.g_bg_name_suffix_string;
4044 
4045       p_security_profile_tab(l_earlier_row_count).security_profile_name
4046                                                        := l_business_group_name_global;
4047       p_security_profile_tab(l_earlier_row_count).responsibility_key
4048                                                      := l_assign_global_resp_key;
4049       -- Populate the data for TS
4050       p_hrms_resp_tab(l_earlier_row_count).user_name      := l_configuration_user_name;
4051       p_hrms_resp_tab(l_earlier_row_count).resp_key       := l_assign_global_resp_key;
4052       p_hrms_resp_tab(l_earlier_row_count).app_short_name := null;
4053       p_hrms_resp_tab(l_earlier_row_count).security_group := null;
4054       p_hrms_resp_tab(l_earlier_row_count).owner          := null;
4055       p_hrms_resp_tab(l_earlier_row_count).start_date     := l_start_date;
4056       p_hrms_resp_tab(l_earlier_row_count).end_date       := l_end_date;
4057       p_hrms_resp_tab(l_earlier_row_count).description    := per_ri_config_main.g_description_string;
4058 
4059       l_earlier_row_count := 1 + l_earlier_row_count;
4060     end loop;
4061     close csr_global_responsibility;
4062 
4063     --assign global responsibility
4064      /* MSG Changes BEGIN
4065       /*     if NOT (p_technical_summary_mode) then
4066       fnd_user_resp_groups_api.load_row(
4067                           x_user_name       => l_configuration_user_name,
4068                           x_resp_key        => l_assign_global_resp_key,
4069                           x_app_short_name  => l_assign_glb_resp_key_app_name,
4070                           x_security_group  => 'STANDARD',
4071                           x_owner           => 'SEED',
4072                           x_start_date      =>  l_start_date,
4073                           x_end_date        =>  l_end_date,
4074                           x_description     => per_ri_config_main.g_description_string);
4075     else
4076       p_hrms_resp_tab(l_hrms_resp_count).user_name      := l_configuration_user_name;
4077       p_hrms_resp_tab(l_hrms_resp_count).resp_key       := l_assign_global_resp_key;
4078       p_hrms_resp_tab(l_hrms_resp_count).app_short_name := l_assign_glb_resp_key_app_name;
4079       p_hrms_resp_tab(l_hrms_resp_count).security_group := 'STANDARD';
4080       p_hrms_resp_tab(l_hrms_resp_count).owner          := 'SEED';
4081       p_hrms_resp_tab(l_hrms_resp_count).start_date     := l_start_date;
4082       p_hrms_resp_tab(l_hrms_resp_count).end_date       := l_end_date;
4083       p_hrms_resp_tab(l_hrms_resp_count).description    := per_ri_config_main.g_description_string;
4084 
4085       l_hrms_resp_count := l_hrms_resp_count + 1 ;
4086     end if;
4087 
4088      per_ri_config_fnd_hr_entity.create_resp_level_profile
4089                                (p_configuration_code      => p_configuration_code
4090                                ,p_responsibility_key      => l_assign_global_resp_key
4091                                ,p_technical_summary_mode  => p_technical_summary_mode
4092                                ,p_profile_resp_tab        => l_profile_resp_main_tab);
4093 
4094      -- get business group name for given country code
4095      l_business_group_name_global := per_ri_config_utilities.get_enterprise_short_name
4096                                            (p_configuration_code => p_configuration_code)
4097                              || ' ' || l_country_code_global || per_ri_config_main.g_bg_name_suffix_string;
4098 
4099      hr_utility.trace('Security Group Removal Changes');
4100      per_ri_config_fnd_hr_entity.create_bg_id_and_sg_id_profile
4101                                           (p_configuration_code         => p_configuration_code
4102                                           ,p_responsibility_key         => l_assign_global_resp_key
4103                                           ,p_responsibility_name        => l_assign_global_resp_name
4104                                           ,p_business_group_name        => l_business_group_name_global
4105                                           ,p_technical_summary_mode     => p_technical_summary_mode
4106                                           ,p_bg_sg_ut_profile_resp_tab  => l_hrms_bgsgut_profile_resp_tab);
4107     MSG Changes END */
4108 
4109   EXCEPTION
4110     when others then
4111       l_error_message := 'Error in ' || l_proc;
4112       hr_utility.trace(l_error_message || '-' || sqlerrm);
4113       hr_utility.set_location(' Leaving:'|| l_proc, 500);
4114       hr_utility.raise_error;
4115 
4116   END create_hrms_responsibility;
4117 
4118   /* --------------------------------------------------------------------------
4119   -- Name      : create_application_level_resp
4120   -- Purpose   : This procedure creates application level profile options.
4121   -- Arguments : p_configuration_code
4122   --
4123   -------------------------------------------------------------------------- */
4124   PROCEDURE create_application_level_resp(p_configuration_code     in varchar2
4125                                          ,p_technical_summary_mode in boolean default FALSE
4126                                          ,p_profile_apps_tab       in out nocopy
4127                                                  per_ri_config_tech_summary.profile_apps_tab) IS
4128 
4129 
4130   cursor csr_get_product (cp_configuration_code in varchar2) IS
4131     select product_name
4132       from per_ri_config_prod_selection_v
4133      where configuration_code = cp_configuration_code;
4134 
4135   l_product_name                 per_ri_config_information.config_information1%type;
4136 
4137   l_profile_apps_count           number(8) := 0;
4138   l_proc                         varchar2(72) := g_package || 'create_application_level_resp';
4139   l_log_message                  varchar2(360);
4140   l_error_message                 varchar2(360);
4141 
4142   BEGIN
4143     hr_utility.set_location('Entering:'|| l_proc, 10);
4144 
4145     open csr_get_product(p_configuration_code);
4146 
4147     loop
4148       fetch csr_get_product into l_product_name;
4149       exit when csr_get_product%NOTFOUND;
4150 
4151 
4152       /* DGARG MSG Changes
4153       -- For each product selected set application level profile option
4154       -- ENABLE_SECURITY_GROUPS
4155       if l_product_name in ('PER','PAY','BEN') then
4156         hr_utility.trace('l_product_name ' || l_product_name);
4157         if NOT (p_technical_summary_mode) then
4158           per_ri_config_utilities.set_profile_option_value
4159                            (p_level                => 10002
4160                            ,p_level_value          => l_product_name
4161                            ,p_level_value_app      => l_product_name
4162                            ,p_profile_name         => 'ENABLE_SECURITY_GROUPS'
4163                            ,p_profile_option_value => 'Y');
4164         else
4165           p_profile_apps_tab(l_profile_apps_count).level                 := 1002;
4166           p_profile_apps_tab(l_profile_apps_count).level_value           := l_product_name;
4167           p_profile_apps_tab(l_profile_apps_count).level_value_app       := l_product_name;
4168           p_profile_apps_tab(l_profile_apps_count).profile_name          := 'ENABLE_SECURITY_GROUPS';
4169           p_profile_apps_tab(l_profile_apps_count).profile_option_value  := 'Y';
4170 
4171           l_profile_apps_count  := l_profile_apps_count + 1;
4172 
4173         end if;
4174 
4175         l_log_message := 'Created PROFILE_OPTION ENABLE_SECURITY_GROUPS ' || l_product_name;
4176         per_ri_config_utilities.write_log(p_message => l_log_message);
4177       end if;
4178       ** */
4179     end loop;
4180     close csr_get_product;
4181 
4182     /* DGARG - Multiple Security Groups Removal chnages
4183     --
4184     -- Set ENABLE_SECURITY_GROUPS all all HRMS application
4185     --
4186     for rec in ( select application_id
4187                     from   fnd_application
4188                     where hr_general.chk_application_id(application_id) = 'TRUE'
4189                     Order by Application_short_name)
4190       loop
4191 
4192         if fnd_profile.save ('ENABLE_SECURITY_GROUPS'
4193                           ,'Y'
4194                           ,'APPL'
4195                           ,rec.application_id ) then
4196 
4197           l_log_message := 'Setting the Enable Security Groups Profile to the application '
4198                            || rec.application_id;
4199 
4200         else
4201            l_log_message := 'The profile setting has errored out for application '
4202                            || rec.application_id;
4203         end if;
4204         per_ri_config_utilities.write_log(p_message => l_log_message);
4205         hr_utility.trace(l_log_message);
4206       end loop;
4207     --
4208     */
4209 
4210   EXCEPTION
4211     when others then
4212       l_error_message := 'Error in ' || l_proc;
4213       hr_utility.trace(l_error_message || '-' || sqlerrm);
4214       hr_utility.set_location(' Leaving:'|| l_proc, 500);
4215       hr_utility.raise_error;
4216 
4217   END create_application_level_resp;
4218   /* --------------------------------------------------------------------------
4219   -- Name      : create_resp_level_profile
4220   -- Purpose   : This procedure creates application level profile options.
4221   -- Arguments : p_configuration_code
4222   --             p_responsibility_key
4223   -------------------------------------------------------------------------- */
4224 
4225   PROCEDURE create_resp_level_profile(p_configuration_code  in varchar2
4226                                      ,p_responsibility_key  in varchar2
4227                                      ,p_technical_summary_mode in boolean default FALSE
4228                                      ,p_profile_resp_tab    in out nocopy
4229                                                                per_ri_config_tech_summary.profile_resp_tab) IS
4230 
4231 
4232   cursor csr_get_product (cp_configuration_code in varchar2) IS
4233     select product_name
4234       from per_ri_config_prod_selection_v
4235      where configuration_code = cp_configuration_code;
4236 
4237   cursor csr_get_resp_key_app (cp_responsibility_key in varchar2) IS
4238     select apps.application_short_name
4239       from fnd_responsibility resp,
4240            fnd_application    apps
4241      where apps.application_id = resp.application_id
4242        and resp.responsibility_key = cp_responsibility_key;
4243 
4244   l_application_short_name       fnd_application.application_short_name%type;
4245   l_hr_user_type                 varchar2(30);
4246   l_product_name                 varchar2(30);
4247 
4248   l_hr                           boolean default TRUE;
4249   l_hrms                         boolean default FALSE;
4250   l_profile_resp_count           number(8) := 0;
4251 
4252   l_proc                         varchar2(72) := g_package || 'create_resp_level_profile';
4253   l_error_message                 varchar2(360);
4254 
4255   BEGIN
4256     hr_utility.set_location('Entering:'|| l_proc, 10);
4257 
4258     -- only one row is there
4259     open csr_get_resp_key_app(p_responsibility_key);
4260     fetch csr_get_resp_key_app into l_application_short_name;
4261     close csr_get_resp_key_app;
4262 
4263     open csr_get_product(p_configuration_code);
4264     loop
4265       fetch csr_get_product into l_product_name;
4266       exit when csr_get_product%NOTFOUND;
4267       if l_product_name = 'PER' then
4268         l_hr := TRUE;
4269       end if;
4270       if l_product_name = 'PAY' then
4271         l_hrms := TRUE;
4272       end if;
4273     end loop;
4274     close csr_get_product;
4275 
4276     if l_hr and l_hrms then
4277        l_hr_user_type := 'INT';
4278     else
4279        l_hr_user_type := 'PER';
4280     end if;
4281 
4282     hr_utility.trace('p_responsibility_key ' || p_responsibility_key);
4283     hr_utility.trace('l_hr_user_type ' || l_hr_user_type);
4284     if NOT (p_technical_summary_mode) then
4285       per_ri_config_utilities.set_profile_option_value
4286                          (p_level                => 10003
4287                          ,p_level_value          => p_responsibility_key
4288                          ,p_level_value_app      => l_application_short_name
4289                          ,p_profile_name         => 'HR_USER_TYPE'
4290                          ,p_profile_option_value => l_hr_user_type);
4291     else
4292       p_profile_resp_tab(l_profile_resp_count).level                 := 1003;
4293       p_profile_resp_tab(l_profile_resp_count).level_value           := p_responsibility_key;
4294       p_profile_resp_tab(l_profile_resp_count).level_value_app       := l_application_short_name;
4295       p_profile_resp_tab(l_profile_resp_count).profile_name          := 'HR_USER_TYPE';
4296       p_profile_resp_tab(l_profile_resp_count).profile_option_value  := l_hr_user_type;
4297 
4298       l_profile_resp_count  := l_profile_resp_count + 1;
4299 
4300     end if;
4301 
4302 
4303     hr_utility.trace('Created HR_USER_TYPE for '|| l_product_name);
4304     hr_utility.set_location('Leaving:'|| l_proc, 40);
4305 
4306   EXCEPTION
4307     when others then
4308       l_error_message := 'Error in ' || l_proc;
4309       hr_utility.trace(l_error_message || '-' || sqlerrm);
4310       hr_utility.set_location(' Leaving:'|| l_proc, 500);
4311       hr_utility.raise_error;
4312 
4313   END create_resp_level_profile;
4314 
4315   /* --------------------------------------------------------------------------
4316   -- Name      : create_bg_id_and_sg_id_profile
4317   -- Purpose   : This procedure creates profile option values for
4318   --             PER_BUSINESS_GROUP_ID
4319   --             PER_SECURITY_GROUP_ID
4320   --             HR_USER_TYPE
4321   -- Arguments : p_configuration_code
4322   --             p_responsibility_key
4323   --             p_business_group_name
4324   -------------------------------------------------------------------------- */
4325 
4326   PROCEDURE create_bg_id_and_sg_id_profile(p_configuration_code    in varchar2
4327                                           ,p_responsibility_key    in varchar2
4328                                           ,p_business_group_name   in varchar2
4329                                           ,p_technical_summary_mode  in boolean default FALSE
4330                                           ,p_bg_sg_ut_profile_resp_tab in out nocopy
4331                                                        per_ri_config_tech_summary.profile_resp_tab) IS
4332 
4333 
4334   cursor csr_get_resp_key_app (cp_responsibility_key in varchar2) IS
4335     select apps.application_short_name,resp.responsibility_id
4336       from fnd_responsibility resp,
4337            fnd_application    apps
4338      where apps.application_id = resp.application_id
4339        and resp.responsibility_key = cp_responsibility_key;
4340 
4341   cursor csr_bg_id (cp_business_group_name in varchar2) IS
4342     select business_group_id
4343       from per_business_groups
4344      where name = cp_business_group_name;
4345 
4346   cursor csr_sg_id (cp_business_group_name in varchar2) IS
4347     select security_profile_id
4348       from per_security_profiles
4349      where security_profile_name = cp_business_group_name;
4350 
4351   cursor csr_get_product (cp_configuration_code in varchar2) IS
4352     select product_name
4353       from per_ri_config_prod_selection_v
4354      where configuration_code = cp_configuration_code;
4355 
4356   l_application_short_name       fnd_application.application_short_name%type;
4357   l_hr_user_type                 varchar2(30);
4358   l_product_name                 varchar2(30);
4359 
4360   l_bg_id                        varchar2(30);
4361   l_sg_id                        varchar2(30);
4362   l_responsibility_id            number(9);
4363 
4364   l_hr                           boolean default TRUE;
4365   l_hrms                         boolean default FALSE;
4366 
4367   l_profile_count                number(10) := 0;
4368   l_proc                         varchar2(72) := g_package || 'create_bg_id_and_sg_id_profile';
4369   l_error_message                varchar2(360);
4370   l_log_message                  varchar2(360);
4371 
4372   BEGIN
4373     hr_utility.set_location('Entering:'|| l_proc, 10);
4374 
4375     if NOT (p_technical_summary_mode) then
4376       -- only one row is there
4377       open csr_get_resp_key_app(p_responsibility_key);
4378       fetch csr_get_resp_key_app into l_application_short_name,l_responsibility_id;
4379       close csr_get_resp_key_app;
4380 
4381 
4382       open csr_bg_id(p_business_group_name);
4383       fetch csr_bg_id into l_bg_id;
4384       close csr_bg_id;
4385 
4386       open csr_sg_id(p_business_group_name);
4387       fetch csr_sg_id into l_sg_id;
4388       close csr_sg_id;
4389 
4390       hr_utility.trace('l_responsibility_id ' || l_responsibility_id);
4391       hr_utility.trace('l_bg_id ' || l_bg_id);
4392       hr_utility.trace('l_sg_id ' || l_sg_id);
4393       hr_utility.trace('p_responsibility_key ' || p_responsibility_key);
4394       hr_utility.trace('p_business_group_name ' || p_business_group_name);
4395 
4396       --
4397       -- Create PER_BUSINESS_GROUP_ID
4398       --
4399       if fnd_profile.save ('PER_BUSINESS_GROUP_ID',
4400                         l_bg_id,
4401                         'RESP',
4402                         l_responsibility_id,
4403                         '800') then
4404         null;
4405       end if;
4406       l_log_message := 'Created Profile Option Value PER_BUSINESS_GROUP_ID ' || l_bg_id;
4407       per_ri_config_utilities.write_log(p_message => l_log_message);
4408       hr_utility.set_location(l_proc, 20);
4409 
4410       --
4411       -- Create PER_SECURITY_PROFILE_ID
4412       --
4413       if fnd_profile.save ('PER_SECURITY_PROFILE_ID',
4414                         l_sg_id,
4415                         'RESP',
4416                         l_responsibility_id,
4417                         '800') then
4418         null;
4419       end if;
4420       l_log_message := 'Created Profile Option Value PER_SECURITY_PROFILE_ID ' || l_sg_id;
4421       per_ri_config_utilities.write_log(p_message => l_log_message);
4422       hr_utility.set_location(l_proc, 30);
4423 
4424       open csr_get_product(p_configuration_code);
4425       loop
4426         fetch csr_get_product into l_product_name;
4427         exit when csr_get_product%NOTFOUND;
4428         if l_product_name = 'PER' then
4429           l_hr := TRUE;
4430         end if;
4431         if l_product_name = 'PAY' then
4432           l_hrms := TRUE;
4433         end if;
4434       end loop;
4435       close csr_get_product;
4436 
4437       if l_hr and l_hrms then
4438          l_hr_user_type := 'INT';
4439       else
4440          l_hr_user_type := 'PER';
4441       end if;
4442       --
4443       -- Create HR_USER_TYPE
4444       --
4445       if fnd_profile.save ('HR_USER_TYPE',
4446                         l_hr_user_type,
4447                         'RESP',
4448                         l_responsibility_id,
4449                         '800') then
4450         null;
4451       end if;
4452       l_log_message := 'Created Profile Option Value HR_USER_TYPE ' || l_hr_user_type;
4453       per_ri_config_utilities.write_log(p_message => l_log_message);
4454       hr_utility.set_location(' Leaving:'|| l_proc, 50);
4455 
4456     else
4457       hr_utility.set_location(l_proc, 110);
4458       open csr_get_product(p_configuration_code);
4459       loop
4460         fetch csr_get_product into l_product_name;
4461         exit when csr_get_product%NOTFOUND;
4462         if l_product_name = 'PER' then
4463           l_hr := TRUE;
4464         end if;
4465         if l_product_name = 'PAY' then
4466           l_hrms := TRUE;
4467         end if;
4468       end loop;
4469       close csr_get_product;
4470 
4471       if l_hr and l_hrms then
4472          l_hr_user_type := 'INT';
4473       else
4474          l_hr_user_type := 'PER';
4475       end if;
4476       hr_utility.set_location(l_proc, 120);
4477       p_bg_sg_ut_profile_resp_tab(l_profile_count).level                 := 10003;
4478       p_bg_sg_ut_profile_resp_tab(l_profile_count).level_value           := p_responsibility_key;
4479       p_bg_sg_ut_profile_resp_tab(l_profile_count).level_value_app       := 'PER';
4480       p_bg_sg_ut_profile_resp_tab(l_profile_count).profile_name          := 'PER_BUSINESS_GROUP_ID';
4481       p_bg_sg_ut_profile_resp_tab(l_profile_count).profile_option_value  := p_business_group_name;
4482       l_profile_count  := l_profile_count + 1;
4483 
4484       p_bg_sg_ut_profile_resp_tab(l_profile_count).level                 := 10003;
4485       p_bg_sg_ut_profile_resp_tab(l_profile_count).level_value           := p_responsibility_key;
4486       p_bg_sg_ut_profile_resp_tab(l_profile_count).level_value_app       := 'PER';
4487       p_bg_sg_ut_profile_resp_tab(l_profile_count).profile_name          := 'PER_SECURITY_PROFILE_ID';
4488       p_bg_sg_ut_profile_resp_tab(l_profile_count).profile_option_value  := p_business_group_name;
4489       l_profile_count  := l_profile_count + 1;
4490 
4491       p_bg_sg_ut_profile_resp_tab(l_profile_count).level                 := 10003;
4492       p_bg_sg_ut_profile_resp_tab(l_profile_count).level_value           := p_responsibility_key;
4493       p_bg_sg_ut_profile_resp_tab(l_profile_count).level_value_app       := 'PER';
4494       p_bg_sg_ut_profile_resp_tab(l_profile_count).profile_name          := 'HR_USER_TYPE';
4495       p_bg_sg_ut_profile_resp_tab(l_profile_count).profile_option_value  := l_hr_user_type;
4496 
4497       l_profile_count  := l_profile_count + 1;
4498 
4499       hr_utility.set_location(l_proc, 130);
4500     end if;
4501   EXCEPTION
4502     when others then
4503       l_error_message := 'Error in ' || l_proc;
4504       hr_utility.trace(l_error_message || '-' || sqlerrm);
4505       hr_utility.set_location(' Leaving:'|| l_proc, 500);
4506       hr_utility.raise_error;
4507 
4508   END create_bg_id_and_sg_id_profile;
4509 
4510 END per_ri_config_fnd_hr_entity;