[Home] [Help]
PACKAGE BODY: APPS.PER_SPP_SHD
Source
1 Package Body per_spp_shd as
2 /* $Header: pespprhi.pkb 120.1.12000000.2 2007/08/30 07:19:59 ande noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- | Private Global Definitions |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package varchar2(33) := ' per_spp_shd.'; -- Global package name
9 --
10 -- ----------------------------------------------------------------------------
11 -- |------------------------< return_api_dml_status >-------------------------|
12 -- ----------------------------------------------------------------------------
13 Function return_api_dml_status Return Boolean Is
14 --
15 Begin
16 --
17 Return (nvl(g_api_dml, false));
18 --
19 End return_api_dml_status;
20 --
21 -- ----------------------------------------------------------------------------
22 -- |---------------------------< constraint_error >---------------------------|
23 -- ----------------------------------------------------------------------------
24 Procedure constraint_error
25 (p_constraint_name in all_constraints.constraint_name%TYPE
26 ) Is
27 --
28 l_proc varchar2(72) := g_package||'constraint_error';
29 --
30 Begin
31 --
32 If (p_constraint_name = 'PER_SPINAL_POINT_PLACEMENT_FK1') Then
33 fnd_message.set_name('PER', 'HR_289228_SPP_FK1_BUS_GROUP');
34 fnd_message.set_token('PROCEDURE', l_proc);
35 fnd_message.set_token('STEP','5');
36 fnd_message.raise_error;
37 ElsIf (p_constraint_name = 'PER_SPINAL_POINT_PLACEMENT_PK') Then
38 fnd_message.set_name('PER', 'HR_289222_SPP_PK_PLACEMENT_ID');
39 fnd_message.set_token('PROCEDURE', l_proc);
40 fnd_message.set_token('STEP','10');
41 fnd_message.raise_error;
42 ElsIf (p_constraint_name = 'PER_SPTPL_AUTO_INCREMENT_F_CHK') Then
43 fnd_message.set_name('PER', 'HR_289223_SPP_AUTO_INC_FLG_CHK');
44 fnd_message.set_token('PROCEDURE', l_proc);
45 fnd_message.set_token('STEP','15');
46 fnd_message.raise_error;
47 Else
48 fnd_message.set_name('PAY', 'HR_7877_API_INVALID_CONSTRAINT');
49 fnd_message.set_token('PROCEDURE', l_proc);
50 fnd_message.set_token('CONSTRAINT_NAME', p_constraint_name);
51 fnd_message.raise_error;
52 End If;
53 --
54 End constraint_error;
55 --
56 -- ----------------------------------------------------------------------------
57 -- |-----------------------------< api_updating >-----------------------------|
58 -- ----------------------------------------------------------------------------
59 Function api_updating
60 (p_effective_date in date
61 ,p_placement_id in number
62 ,p_object_version_number in number
63 ) Return Boolean Is
64 --
65 -- Cursor selects the 'current' row from the HR Schema
66 --
67 Cursor C_Sel1 is
68 select
69 placement_id
70 ,effective_start_date
71 ,effective_end_date
72 ,business_group_id
73 ,assignment_id
74 ,step_id
75 ,auto_increment_flag
76 ,parent_spine_id
77 ,reason
78 ,request_id
79 ,program_application_id
80 ,program_id
81 ,program_update_date
82 ,increment_number
83 ,information1
84 ,information2
85 ,information3
86 ,information4
87 ,information5
88 ,information6
89 ,information7
90 ,information8
91 ,information9
92 ,information10
93 ,information11
94 ,information12
95 ,information13
96 ,information14
97 ,information15
98 ,information16
99 ,information17
100 ,information18
101 ,information19
102 ,information20
103 ,information21
104 ,information22
105 ,information23
106 ,information24
107 ,information25
108 ,information26
109 ,information27
110 ,information28
111 ,information29
112 ,information30
113 ,information_category
114 ,object_version_number
115 from per_spinal_point_placements_f
116 where placement_id = p_placement_id
117 and p_effective_date
118 between effective_start_date and effective_end_date;
119 --
120 l_fct_ret boolean;
121 l_proc varchar2(72) := g_package|| 'api_updating';
122 --
123 Begin
124 --
125 hr_utility.set_location('Entering :'||l_proc, 5);
126 If (p_effective_date is null or
127 p_placement_id is null or
128 p_object_version_number is null) Then
129 --
130 -- One of the primary key arguments is null therefore we must
131 -- set the returning function value to false
132 --
133 l_fct_ret := false;
134 hr_utility.set_location('Entering :'||l_proc, 10);
135 Else
136 hr_utility.set_location('Entering :'||l_proc, 15);
137
138 If (p_placement_id =
139 per_spp_shd.g_old_rec.placement_id and
140 p_object_version_number =
141 per_spp_shd.g_old_rec.object_version_number) Then
142 --
143 -- The g_old_rec is current therefore we must
144 -- set the returning function to true
145 --
146 hr_utility.set_location('Entering :'||l_proc, 20);
147 l_fct_ret := true;
148 Else
149 hr_utility.set_location('Entering :'||l_proc, 25);
150 --
151 -- Select the current row
152 --
153 Open C_Sel1;
154 Fetch C_Sel1 Into per_spp_shd.g_old_rec;
155 If C_Sel1%notfound Then
156 Close C_Sel1;
157 --
158 -- The primary key is invalid therefore we must error
159 --
160 fnd_message.set_name('PAY', 'HR_7220_INVALID_PRIMARY_KEY');
161 fnd_message.raise_error;
162 End If;
163 Close C_Sel1;
164 hr_utility.set_location('Entering :'||l_proc, 30);
165 If (p_object_version_number
166 <> per_spp_shd.g_old_rec.object_version_number) Then
167 fnd_message.set_name('PAY', 'HR_7155_OBJECT_INVALID');
168 fnd_message.raise_error;
169 End If;
170 l_fct_ret := true;
171 End If;
172 End If;
173 Return (l_fct_ret);
174 --
175 End api_updating;
176 --
177 -- ----------------------------------------------------------------------------
178 -- |---------------------------< find_dt_upd_modes >--------------------------|
179 -- ----------------------------------------------------------------------------
180 Procedure find_dt_upd_modes
181 (p_effective_date in date
182 ,p_base_key_value in number
183 ,p_correction out nocopy boolean
184 ,p_update out nocopy boolean
185 ,p_update_override out nocopy boolean
186 ,p_update_change_insert out nocopy boolean
187 ) is
188 --
189 l_proc varchar2(72) := g_package||'find_dt_upd_modes';
190 l_grade_id number;
191
192 cursor csr_future_grade_scale is
193 select paa.grade_id
194 from per_all_assignments_f paa,
195 per_spinal_point_placements_f spp
196 where paa.assignment_id = spp.assignment_id
197 and spp.placement_id = p_base_key_value
198 and paa.effective_start_date > p_effective_date
199 and paa.grade_id <> (select paa1.grade_id
200 from per_all_assignments_f paa1
201 where paa1.assignment_id = paa.assignment_id
202 and p_effective_date between paa1.effective_start_date
203 and paa1.effective_end_date);
204 --
205 Begin
206 hr_utility.set_location('Entering:'||l_proc, 5);
207 --
208 -- Call the corresponding datetrack api
209 --
210 dt_api.find_dt_upd_modes
211 (p_effective_date => p_effective_date
212 ,p_base_table_name => 'per_spinal_point_placements_f'
213 ,p_base_key_column => 'placement_id'
214 ,p_base_key_value => p_base_key_value
215 ,p_correction => p_correction
216 ,p_update => p_update
217 ,p_update_override => p_update_override
218 ,p_update_change_insert => p_update_change_insert
219 );
220 --
221 -- If there is a future change of grade scales then do not allow the user
222 -- to replace future changes
223 --
224 open csr_future_grade_scale;
225 fetch csr_future_grade_scale into l_grade_id;
226
227 if csr_future_grade_scale%found then
228 hr_utility.set_location('REMOVING UPDATE OVERRIDE',6);
229 p_update_override := false;
230 end if;
231
232 close csr_future_grade_scale;
233
234 hr_utility.set_location(' Leaving:'||l_proc, 10);
235 End find_dt_upd_modes;
236 --
237 -- ----------------------------------------------------------------------------
238 -- |---------------------------< find_dt_del_modes >--------------------------|
239 -- ----------------------------------------------------------------------------
240 Procedure find_dt_del_modes
241 (p_effective_date in date
242 ,p_base_key_value in number
243 ,p_zap out nocopy boolean
244 ,p_delete out nocopy boolean
245 ,p_future_change out nocopy boolean
246 ,p_delete_next_change out nocopy boolean
247 ) is
248 --
249 l_proc varchar2(72) := g_package||'find_dt_del_modes';
250 --
251 l_parent_key_value1 number;
252 l_parent_key_value2 number;
253 --
254 Cursor C_Sel1 Is
255 select
256 t.step_id
257 ,t.assignment_id
258 from per_spinal_point_placements_f t
259 where t.placement_id = p_base_key_value
260 and p_effective_date
261 between t.effective_start_date and t.effective_end_date;
262 --
263 Begin
264 hr_utility.set_location('Entering:'||l_proc, 5);
265 Open C_sel1;
266 Fetch C_Sel1 Into
267 l_parent_key_value1
268 ,l_parent_key_value2;
269 If C_Sel1%NOTFOUND then
270 Close C_Sel1;
271 fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
272 fnd_message.set_token('PROCEDURE',l_proc);
273 fnd_message.set_token('STEP','10');
274 fnd_message.raise_error;
275 End If;
276 Close C_Sel1;
277 --
278 -- Call the corresponding datetrack api
279 --
280 dt_api.find_dt_del_modes
281 (p_effective_date => p_effective_date
282 ,p_base_table_name => 'per_spinal_point_placements_f'
283 ,p_base_key_column => 'placement_id'
284 ,p_base_key_value => p_base_key_value
285 ,p_parent_table_name1 => 'per_spinal_point_steps_f'
286 ,p_parent_key_column1 => 'step_id'
287 ,p_parent_key_value1 => l_parent_key_value1
288 ,p_parent_table_name2 => 'per_all_assignments_f'
289 ,p_parent_key_column2 => 'assignment_id'
290 ,p_parent_key_value2 => l_parent_key_value2
291 ,p_zap => p_zap
292 ,p_delete => p_delete
293 ,p_future_change => p_future_change
294 ,p_delete_next_change => p_delete_next_change
295 );
296 --
297 hr_utility.set_location(' Leaving:'||l_proc, 10);
298 End find_dt_del_modes;
299 --
300 -- ----------------------------------------------------------------------------
301 -- |-----------------------< upd_effective_end_date >-------------------------|
302 -- ----------------------------------------------------------------------------
303 Procedure upd_effective_end_date
304 (p_effective_date in date
305 ,p_base_key_value in number
306 ,p_new_effective_end_date in date
307 ,p_validation_start_date in date
308 ,p_validation_end_date in date
309 ,p_object_version_number out nocopy number
310 ) is
311 --
312 l_proc varchar2(72) := g_package||'upd_effective_end_date';
313 l_object_version_number number;
314 --
315 Begin
316 hr_utility.set_location('Entering:'||l_proc, 5);
317 --
318 -- Because we are updating a row we must get the next object
319 -- version number.
320 --
321 l_object_version_number :=
322 dt_api.get_object_version_number
323 (p_base_table_name => 'per_spinal_point_placements_f'
324 ,p_base_key_column => 'placement_id'
325 ,p_base_key_value => p_base_key_value
326 );
327 --
328 hr_utility.set_location(l_proc, 10);
329 hr_utility.set_location('PLacement_id: '||p_base_key_value,1);
330 hr_utility.set_location('Object Version Number: '||l_object_version_number,2);
331 hr_utility.set_location('Effective_Date: '||p_effective_date,3);
332 hr_utility.set_location('NEW Effective_End_Date: '||p_new_effective_end_date,4);
333 per_spp_shd.g_api_dml := true; -- Set the api dml status
334 --
335 -- Update the specified datetrack row setting the effective
336 -- end date to the specified new effective end date.
337 --
338 update per_spinal_point_placements_f t
339 set t.effective_end_date = p_new_effective_end_date
340 , t.object_version_number = l_object_version_number
341 where t.placement_id = p_base_key_value
342 and p_effective_date
343 between t.effective_start_date and t.effective_end_date;
344 --
345 per_spp_shd.g_api_dml := false; -- Unset the api dml status
346 p_object_version_number := l_object_version_number;
347 hr_utility.set_location(' Leaving:'||l_proc, 15);
348 --
349 Exception
350 When Others Then
351 per_spp_shd.g_api_dml := false; -- Unset the api dml status
352 Raise;
353 --
354 End upd_effective_end_date;
355 --
356 -- ----------------------------------------------------------------------------
357 -- |---------------------------------< lck >----------------------------------|
358 -- ----------------------------------------------------------------------------
359 Procedure lck
360 (p_effective_date in date
361 ,p_datetrack_mode in varchar2
362 ,p_placement_id in number
363 ,p_object_version_number in number
364 ,p_validation_start_date out nocopy date
365 ,p_validation_end_date out nocopy date
366 ) is
367 --
368 l_proc varchar2(72) := g_package||'lck';
369 l_validation_start_date date;
370 l_validation_end_date date;
371 l_argument varchar2(30);
372 -- Bug 3158554 starts here.
373 -- Additional local variables
374 l_validation_start_date1 date;
375 l_validation_start_date2 date;
376 l_validation_end_date1 date;
377 l_validation_end_date2 date;
378 l_enforce_foreign_locking boolean;
379 -- Bug 3158554 ends here.
380 --
381 -- Cursor C_Sel1 selects the current locked row as of session date
382 -- ensuring that the object version numbers match.
383 --
384 Cursor C_Sel1 is
385 select
386 placement_id
387 ,effective_start_date
388 ,effective_end_date
389 ,business_group_id
390 ,assignment_id
391 ,step_id
392 ,auto_increment_flag
393 ,parent_spine_id
394 ,reason
395 ,request_id
396 ,program_application_id
397 ,program_id
398 ,program_update_date
399 ,increment_number
400 ,information1
401 ,information2
402 ,information3
403 ,information4
404 ,information5
405 ,information6
406 ,information7
407 ,information8
408 ,information9
409 ,information10
410 ,information11
411 ,information12
412 ,information13
413 ,information14
414 ,information15
415 ,information16
416 ,information17
417 ,information18
418 ,information19
419 ,information20
420 ,information21
421 ,information22
422 ,information23
423 ,information24
424 ,information25
428 ,information29
425 ,information26
426 ,information27
427 ,information28
429 ,information30
430 ,information_category
431 ,object_version_number
432 from per_spinal_point_placements_f
433 where placement_id = p_placement_id
434 and p_effective_date
435 between effective_start_date and effective_end_date
436 for update nowait;
437 --
438 --
439 --
440 Begin
441 hr_utility.set_location('Entering:'||l_proc, 5);
442 --
443 -- Ensure that all the mandatory arguments are not null
444 --
445 hr_api.mandatory_arg_error(p_api_name => l_proc
446 ,p_argument => 'effective_date'
447 ,p_argument_value => p_effective_date
448 );
449 hr_utility.set_location('Entering:'||l_proc, 6);
450 --
451 hr_api.mandatory_arg_error(p_api_name => l_proc
452 ,p_argument => 'datetrack_mode'
453 ,p_argument_value => p_datetrack_mode
454 );
455 hr_utility.set_location('Entering:'||l_proc, 7);
456 --
457 hr_api.mandatory_arg_error(p_api_name => l_proc
458 ,p_argument => 'placement_id'
459 ,p_argument_value => p_placement_id
460 );
461 hr_utility.set_location('Entering:'||l_proc, 8);
462 --
463 hr_api.mandatory_arg_error(p_api_name => l_proc
464 ,p_argument => 'object_version_number'
465 ,p_argument_value => p_object_version_number
466 );
467 hr_utility.set_location('Entering:'||l_proc, 9);
468 --
469 -- Check to ensure the datetrack mode is not INSERT.
470 --
471 If (p_datetrack_mode <> hr_api.g_insert) then
472 --
473 -- We must select and lock the current row.
474 --
475 hr_utility.set_location('Entering:'||l_proc, 10);
476 --
477 Open C_Sel1;
478 Fetch C_Sel1 Into per_spp_shd.g_old_rec;
479
480 If C_Sel1%notfound then
481 Close C_Sel1;
482 --
483 -- The primary key is invalid therefore we must error
484 --
485 fnd_message.set_name('PAY', 'HR_7220_INVALID_PRIMARY_KEY');
486 fnd_message.raise_error;
487 End If;
488 Close C_Sel1;
489 If (p_object_version_number
490 <> per_spp_shd.g_old_rec.object_version_number) Then
491 fnd_message.set_name('PAY', 'HR_7155_OBJECT_INVALID');
492 fnd_message.raise_error;
493 End If;
494 --
495 -- Validate the datetrack mode mode getting the validation start
496 -- and end dates for the specified datetrack operation.
497 --
498 -- Bug 3158554 starts here.
499 --
500 -- Always perform locking for set-up data parent
501 -- tables, unless this is a Data Pump session AND
502 -- the 'PUMP_DT_ENFORCE_FOREIGN_LOCKS' switch
503 -- has been set to no.
504 if hr_pump_utils.current_session_running then
505 l_enforce_foreign_locking := hr_pump_utils.dt_enforce_foreign_locks;
506 else
507 l_enforce_foreign_locking := true;
508 end if;
509
510 dt_api.validate_dt_mode
511 (p_effective_date => p_effective_date
512 ,p_datetrack_mode => p_datetrack_mode
513 ,p_base_table_name => 'per_spinal_point_placements_f'
514 ,p_base_key_column => 'placement_id'
515 ,p_base_key_value => p_placement_id
516 ,p_parent_table_name1 => 'per_spinal_point_steps_f'
517 ,p_parent_key_column1 => 'step_id'
518 ,p_parent_key_value1 => per_spp_shd.g_old_rec.step_id
519 -- ,p_parent_table_name2 => 'per_all_assignments_f'
520 -- ,p_parent_key_column2 => 'assignment_id'
521 -- ,p_parent_key_value2 => per_spp_shd.g_old_rec.assignment_id
522 ,p_enforce_foreign_locking => l_enforce_foreign_locking
523 ,p_validation_start_date => l_validation_start_date1
524 ,p_validation_end_date => l_validation_end_date1
525 );
526 --
527 -- Always perform locking for transaction data parent tables
528 --
529 dt_api.validate_dt_mode
530 (p_effective_date => p_effective_date
531 ,p_datetrack_mode => p_datetrack_mode
532 ,p_base_table_name => 'per_spinal_point_placements_f'
533 ,p_base_key_column => 'placement_id'
534 ,p_base_key_value => p_placement_id
535 --,p_parent_table_name1 => 'per_spinal_point_steps_f'
536 --,p_parent_key_column1 => 'step_id'
537 --,p_parent_key_value1 => per_spp_shd.g_old_rec.step_id
538 ,p_parent_table_name2 => 'per_all_assignments_f'
539 ,p_parent_key_column2 => 'assignment_id'
540 ,p_parent_key_value2 => per_spp_shd.g_old_rec.assignment_id
541 ,p_enforce_foreign_locking => true
542 ,p_validation_start_date => l_validation_start_date2
543 ,p_validation_end_date => l_validation_end_date2
544 );
545 --
546 -- bug 3158554 ends here.
547 --
548 Else
549 --
550 -- We are doing a datetrack 'INSERT' which is illegal within this
554 fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
551 -- procedure therefore we must error (note: to lck on insert the
552 -- private procedure ins_lck should be called).
553 --
555 fnd_message.set_token('PROCEDURE', l_proc);
556 fnd_message.set_token('STEP','20');
557 fnd_message.raise_error;
558 End If;
559 --
560 -- Set the validation start and end date OUT arguments
561 -- taking the most restrictive replies from the two calls
562 -- to dt_api.validate_dt_mode. i.e. The latest VSD and the
563 -- earliest VED.
564 --
565 -- bug 3158554 starts here.
566 --
567 if l_validation_start_date1 > l_validation_start_date2 then
568 p_validation_start_date := l_validation_start_date1;
569 else
570 p_validation_start_date := l_validation_start_date2;
571 end if;
572
573 if l_validation_end_date1 > l_validation_end_date2 then
574 p_validation_end_date := l_validation_end_date2;
575 else
576 p_validation_end_date := l_validation_end_date1;
577 end if;
578 -- p_validation_start_date := l_validation_start_date;
579 -- p_validation_end_date := l_validation_end_date;
580 --
581 -- bug 3158554 ends here.
582 --
583 hr_utility.set_location(' Leaving:'||l_proc, 30);
584 --
585 -- We need to trap the ORA LOCK exception
586 --
587 Exception
588 When HR_Api.Object_Locked then
589 --
590 -- The object is locked therefore we need to supply a meaningful
591 -- error message.
592 --
593 fnd_message.set_name('PAY', 'HR_7165_OBJECT_LOCKED');
594 fnd_message.set_token('TABLE_NAME', 'per_spinal_point_placements_f');
595 fnd_message.raise_error;
596 End lck;
597 --
598 -- ----------------------------------------------------------------------------
599 -- |-----------------------------< convert_args >-----------------------------|
600 -- ----------------------------------------------------------------------------
601 Function convert_args
602 (p_placement_id in number
603 ,p_effective_start_date in date
604 ,p_effective_end_date in date
605 ,p_business_group_id in number
606 ,p_assignment_id in number
607 ,p_step_id in number
608 ,p_auto_increment_flag in varchar2
609 ,p_parent_spine_id in number
610 ,p_reason in varchar2
611 ,p_request_id in number
612 ,p_program_application_id in number
613 ,p_program_id in number
614 ,p_program_update_date in date
615 ,p_increment_number in number
616 ,p_information1 in varchar2
617 ,p_information2 in varchar2
618 ,p_information3 in varchar2
619 ,p_information4 in varchar2
620 ,p_information5 in varchar2
621 ,p_information6 in varchar2
622 ,p_information7 in varchar2
623 ,p_information8 in varchar2
624 ,p_information9 in varchar2
625 ,p_information10 in varchar2
626 ,p_information11 in varchar2
627 ,p_information12 in varchar2
628 ,p_information13 in varchar2
629 ,p_information14 in varchar2
630 ,p_information15 in varchar2
631 ,p_information16 in varchar2
632 ,p_information17 in varchar2
633 ,p_information18 in varchar2
634 ,p_information19 in varchar2
635 ,p_information20 in varchar2
636 ,p_information21 in varchar2
637 ,p_information22 in varchar2
638 ,p_information23 in varchar2
639 ,p_information24 in varchar2
640 ,p_information25 in varchar2
641 ,p_information26 in varchar2
642 ,p_information27 in varchar2
643 ,p_information28 in varchar2
644 ,p_information29 in varchar2
645 ,p_information30 in varchar2
646 ,p_information_category in varchar2
647 ,p_object_version_number in number
648 )
649 Return g_rec_type is
650 --
651 l_rec g_rec_type;
652 --
653 Begin
654 --
655 -- Convert arguments into local l_rec structure.
656 --
657 l_rec.placement_id := p_placement_id;
658 l_rec.effective_start_date := p_effective_start_date;
659 l_rec.effective_end_date := p_effective_end_date;
660 l_rec.business_group_id := p_business_group_id;
661 l_rec.assignment_id := p_assignment_id;
662 l_rec.step_id := p_step_id;
663 l_rec.auto_increment_flag := p_auto_increment_flag;
664 l_rec.parent_spine_id := p_parent_spine_id;
665 l_rec.reason := p_reason;
666 l_rec.request_id := p_request_id;
667 l_rec.program_application_id := p_program_application_id;
668 l_rec.program_id := p_program_id;
669 l_rec.program_update_date := p_program_update_date;
673 l_rec.information2 := p_information2;
670 l_rec.increment_number := p_increment_number;
671 l_rec.object_version_number := p_object_version_number;
672 l_rec.information1 := p_information1;
674 l_rec.information3 := p_information3;
675 l_rec.information4 := p_information4;
676 l_rec.information5 := p_information5;
677 l_rec.information6 := p_information6;
678 l_rec.information7 := p_information7;
679 l_rec.information8 := p_information8;
680 l_rec.information9 := p_information9;
681 l_rec.information10 := p_information10;
682 l_rec.information11 := p_information11;
683 l_rec.information12 := p_information12;
684 l_rec.information13 := p_information13;
685 l_rec.information14 := p_information14;
686 l_rec.information15 := p_information15;
687 l_rec.information16 := p_information16;
688 l_rec.information17 := p_information17;
689 l_rec.information18 := p_information18;
690 l_rec.information19 := p_information19;
691 l_rec.information20 := p_information20;
692 l_rec.information21 := p_information21;
693 l_rec.information22 := p_information22;
694 l_rec.information23 := p_information23;
695 l_rec.information24 := p_information24;
696 l_rec.information25 := p_information25;
697 l_rec.information26 := p_information26;
698 l_rec.information27 := p_information27;
699 l_rec.information28 := p_information28;
700 l_rec.information29 := p_information29;
701 l_rec.information30 := p_information30;
702 l_rec.information_category := p_information_category;
703 --
704 -- Return the plsql record structure.
705 --
706 Return(l_rec);
707 --
708 End convert_args;
709 --
710 end per_spp_shd;