DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_ORS_UPD

Source


1 Package Body per_ors_upd as
2 /* $Header: peorsrhi.pkb 115.8 2003/06/30 09:58:15 kjagadee noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33) := '  per_ors_upd.';  -- Global package name
9 --
10 -- ----------------------------------------------------------------------------
11 -- |------------------------------< update_dml >------------------------------|
12 -- ----------------------------------------------------------------------------
13 -- {Start Of Comments}
14 --
15 -- Description:
16 --   This procedure controls the actual dml update logic. The processing of
17 --   this procedure is:
18 --   1) Increment the object_version_number by 1 if the object_version_number
19 --      is defined as an attribute for this entity.
20 --   2) To set and unset the g_api_dml status as required (as we are about to
21 --      perform dml).
22 --   3) To update the specified row in the schema using the primary key in
23 --      the predicates.
24 --   4) To trap any constraint violations that may have occurred.
25 --   5) To raise any other errors.
26 --
27 -- Prerequisites:
28 --   This is an internal private procedure which must be called from the upd
29 --   procedure.
30 --
31 -- In Parameters:
32 --   A Pl/Sql record structre.
33 --
34 -- Post Success:
35 --   The specified row will be updated in the schema.
36 --
37 -- Post Failure:
38 --   On the update dml failure it is important to note that we always reset the
39 --   g_api_dml status to false.
40 --   If a check, unique or parent integrity constraint violation is raised the
41 --   constraint_error procedure will be called.
42 --   If any other error is reported, the error will be raised after the
43 --   g_api_dml status is reset.
44 --
45 -- Developer Implementation Notes:
46 --   The update 'set' attribute list should be modified if any of your
47 --   attributes are not updateable.
48 --
49 -- Access Status:
50 --   Internal Row Handler Use Only.
51 --
52 -- {End Of Comments}
53 -- ----------------------------------------------------------------------------
54 Procedure update_dml
55   (p_rec in out nocopy per_ors_shd.g_rec_type
56   ) is
57 --
58   l_proc  varchar2(72) := g_package||'update_dml';
59 --
60 Begin
61   hr_utility.set_location('Entering:'||l_proc, 5);
62   --
63   -- Increment the object version
64   p_rec.object_version_number := p_rec.object_version_number + 1;
65   --
66   per_ors_shd.g_api_dml := true;  -- Set the api dml status
67   --
68   -- Update the per_organization_structures Row
69   --
70   update per_organization_structures
71     set
72      organization_structure_id       = p_rec.organization_structure_id
73     ,business_group_id               = p_rec.business_group_id
74     ,name                            = p_rec.name
75     ,comments                        = p_rec.comments
76     ,primary_structure_flag          = p_rec.primary_structure_flag
77     ,request_id                      = p_rec.request_id
78     ,program_application_id          = p_rec.program_application_id
79     ,program_id                      = p_rec.program_id
80     ,program_update_date             = p_rec.program_update_date
81     ,attribute_category              = p_rec.attribute_category
82     ,attribute1                      = p_rec.attribute1
83     ,attribute2                      = p_rec.attribute2
84     ,attribute3                      = p_rec.attribute3
85     ,attribute4                      = p_rec.attribute4
86     ,attribute5                      = p_rec.attribute5
87     ,attribute6                      = p_rec.attribute6
88     ,attribute7                      = p_rec.attribute7
89     ,attribute8                      = p_rec.attribute8
90     ,attribute9                      = p_rec.attribute9
91     ,attribute10                     = p_rec.attribute10
92     ,attribute11                     = p_rec.attribute11
93     ,attribute12                     = p_rec.attribute12
94     ,attribute13                     = p_rec.attribute13
95     ,attribute14                     = p_rec.attribute14
96     ,attribute15                     = p_rec.attribute15
97     ,attribute16                     = p_rec.attribute16
98     ,attribute17                     = p_rec.attribute17
99     ,attribute18                     = p_rec.attribute18
100     ,attribute19                     = p_rec.attribute19
101     ,attribute20                     = p_rec.attribute20
102     ,position_control_structure_flg  = p_rec.position_control_structure_flg
103     ,object_version_number           = p_rec.object_version_number
104     where organization_structure_id = p_rec.organization_structure_id;
105   --
106   per_ors_shd.g_api_dml := false;   -- Unset the api dml status
107   --
108   hr_utility.set_location(' Leaving:'||l_proc, 10);
109 --
110 Exception
111   When hr_api.check_integrity_violated Then
112     -- A check constraint has been violated
113     per_ors_shd.g_api_dml := false;   -- Unset the api dml status
114     per_ors_shd.constraint_error
115       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
116   When hr_api.parent_integrity_violated Then
117     -- Parent integrity has been violated
118     per_ors_shd.g_api_dml := false;   -- Unset the api dml status
119     per_ors_shd.constraint_error
120       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
121   When hr_api.unique_integrity_violated Then
122     -- Unique integrity has been violated
123     per_ors_shd.g_api_dml := false;   -- Unset the api dml status
124     per_ors_shd.constraint_error
125       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
126   When Others Then
127     per_ors_shd.g_api_dml := false;   -- Unset the api dml status
128     Raise;
129 End update_dml;
130 --
131 -- ----------------------------------------------------------------------------
132 -- |------------------------------< pre_update >------------------------------|
133 -- ----------------------------------------------------------------------------
134 -- {Start Of Comments}
135 --
136 -- Description:
137 --   This private procedure contains any processing which is required before
138 --   the update dml.
139 --
140 -- Prerequisites:
141 --   This is an internal procedure which is called from the upd procedure.
142 --
143 -- In Parameters:
144 --   A Pl/Sql record structure.
145 --
146 -- Post Success:
147 --   Processing continues.
148 --
149 -- Post Failure:
150 --   If an error has occurred, an error message and exception wil be raised
151 --   but not handled.
152 --
153 -- Developer Implementation Notes:
154 --   Any pre-processing required before the update dml is issued should be
155 --   coded within this procedure. It is important to note that any 3rd party
156 --   maintenance should be reviewed before placing in this procedure.
157 --
158 -- Access Status:
159 --   Internal Row Handler Use Only.
160 --
161 -- {End Of Comments}
162 -- ----------------------------------------------------------------------------
163 Procedure pre_update
164   (p_rec in per_ors_shd.g_rec_type
165   ) is
166 --
167   l_proc  varchar2(72) := g_package||'pre_update';
168 --
169 Begin
170   hr_utility.set_location('Entering:'||l_proc, 5);
171   --
172   hr_utility.set_location(' Leaving:'||l_proc, 10);
173 End pre_update;
174 --
175 -- ----------------------------------------------------------------------------
176 -- |-----------------------------< post_update >------------------------------|
177 -- ----------------------------------------------------------------------------
178 -- {Start Of Comments}
179 --
180 -- Description:
181 --   This private procedure contains any processing which is required after
182 --   the update dml.
183 --
184 -- Prerequisites:
185 --   This is an internal procedure which is called from the upd procedure.
186 --
187 -- In Parameters:
188 --   A Pl/Sql record structure.
189 --
190 -- Post Success:
191 --   Processing continues.
192 --
193 -- Post Failure:
194 --   If an error has occurred, an error message and exception will be raised
195 --   but not handled.
196 --
197 -- Developer Implementation Notes:
198 --   Any post-processing required after the update dml is issued should be
199 --   coded within this procedure. It is important to note that any 3rd party
200 --   maintenance should be reviewed before placing in this procedure.
201 --
202 -- Access Status:
203 --   Internal Row Handler Use Only.
204 --
205 -- {End Of Comments}
206 -- ----------------------------------------------------------------------------
207 Procedure post_update
208   (p_effective_date               in date
209   ,p_rec                          in per_ors_shd.g_rec_type
210   ) is
211 --
212   l_proc  varchar2(72) := g_package||'post_update';
213 --
214 Begin
215   hr_utility.set_location('Entering:'||l_proc, 5);
216   begin
217     --
218     per_ors_rku.after_update
219       (p_effective_date              => p_effective_date
220       ,p_organization_structure_id
221       => p_rec.organization_structure_id
222       ,p_business_group_id
223       => p_rec.business_group_id
224       ,p_name
225       => p_rec.name
226       ,p_comments
227       => p_rec.comments
228       ,p_primary_structure_flag
229       => p_rec.primary_structure_flag
230       ,p_request_id
231       => p_rec.request_id
232       ,p_program_application_id
233       => p_rec.program_application_id
234       ,p_program_id
235       => p_rec.program_id
236       ,p_program_update_date
237       => p_rec.program_update_date
238       ,p_attribute_category
239       => p_rec.attribute_category
240       ,p_attribute1
241       => p_rec.attribute1
242       ,p_attribute2
243       => p_rec.attribute2
244       ,p_attribute3
245       => p_rec.attribute3
246       ,p_attribute4
247       => p_rec.attribute4
248       ,p_attribute5
249       => p_rec.attribute5
250       ,p_attribute6
251       => p_rec.attribute6
252       ,p_attribute7
253       => p_rec.attribute7
254       ,p_attribute8
255       => p_rec.attribute8
256       ,p_attribute9
257       => p_rec.attribute9
258       ,p_attribute10
259       => p_rec.attribute10
260       ,p_attribute11
261       => p_rec.attribute11
262       ,p_attribute12
263       => p_rec.attribute12
264       ,p_attribute13
265       => p_rec.attribute13
266       ,p_attribute14
267       => p_rec.attribute14
268       ,p_attribute15
269       => p_rec.attribute15
270       ,p_attribute16
271       => p_rec.attribute16
272       ,p_attribute17
273       => p_rec.attribute17
274       ,p_attribute18
275       => p_rec.attribute18
276       ,p_attribute19
277       => p_rec.attribute19
278       ,p_attribute20
279       => p_rec.attribute20
280       ,p_position_control_structure_f
281       => p_rec.position_control_structure_flg
282       ,p_object_version_number
283       => p_rec.object_version_number
284       ,p_business_group_id_o
285       => per_ors_shd.g_old_rec.business_group_id
286       ,p_name_o
287       => per_ors_shd.g_old_rec.name
288       ,p_comments_o
289       => per_ors_shd.g_old_rec.comments
290       ,p_primary_structure_flag_o
291       => per_ors_shd.g_old_rec.primary_structure_flag
292       ,p_request_id_o
293       => per_ors_shd.g_old_rec.request_id
294       ,p_program_application_id_o
295       => per_ors_shd.g_old_rec.program_application_id
296       ,p_program_id_o
297       => per_ors_shd.g_old_rec.program_id
298       ,p_program_update_date_o
299       => per_ors_shd.g_old_rec.program_update_date
300       ,p_attribute_category_o
301       => per_ors_shd.g_old_rec.attribute_category
302       ,p_attribute1_o
303       => per_ors_shd.g_old_rec.attribute1
304       ,p_attribute2_o
305       => per_ors_shd.g_old_rec.attribute2
306       ,p_attribute3_o
307       => per_ors_shd.g_old_rec.attribute3
308       ,p_attribute4_o
309       => per_ors_shd.g_old_rec.attribute4
310       ,p_attribute5_o
311       => per_ors_shd.g_old_rec.attribute5
312       ,p_attribute6_o
313       => per_ors_shd.g_old_rec.attribute6
314       ,p_attribute7_o
315       => per_ors_shd.g_old_rec.attribute7
316       ,p_attribute8_o
317       => per_ors_shd.g_old_rec.attribute8
318       ,p_attribute9_o
319       => per_ors_shd.g_old_rec.attribute9
320       ,p_attribute10_o
321       => per_ors_shd.g_old_rec.attribute10
322       ,p_attribute11_o
323       => per_ors_shd.g_old_rec.attribute11
324       ,p_attribute12_o
325       => per_ors_shd.g_old_rec.attribute12
326       ,p_attribute13_o
327       => per_ors_shd.g_old_rec.attribute13
328       ,p_attribute14_o
329       => per_ors_shd.g_old_rec.attribute14
330       ,p_attribute15_o
331       => per_ors_shd.g_old_rec.attribute15
332       ,p_attribute16_o
333       => per_ors_shd.g_old_rec.attribute16
334       ,p_attribute17_o
335       => per_ors_shd.g_old_rec.attribute17
336       ,p_attribute18_o
337       => per_ors_shd.g_old_rec.attribute18
338       ,p_attribute19_o
339       => per_ors_shd.g_old_rec.attribute19
340       ,p_attribute20_o
341       => per_ors_shd.g_old_rec.attribute20
342       ,p_position_control_structure_o
343       => per_ors_shd.g_old_rec.position_control_structure_flg
344       ,p_object_version_number_o
345       => per_ors_shd.g_old_rec.object_version_number
346       );
347     --
348   exception
349     --
350     when hr_api.cannot_find_prog_unit then
351       --
352       hr_api.cannot_find_prog_unit_error
353         (p_module_name => 'PER_ORGANIZATION_STRUCTURES'
354         ,p_hook_type   => 'AU');
355       --
356   end;
357   --
358   hr_utility.set_location(' Leaving:'||l_proc, 10);
359 End post_update;
360 --
361 -- ----------------------------------------------------------------------------
362 -- |-----------------------------< convert_defs >-----------------------------|
363 -- ----------------------------------------------------------------------------
364 -- {Start Of Comments}
365 --
366 -- Description:
367 --   The Convert_Defs procedure has one very important function:
368 --   It must return the record structure for the row with all system defaulted
369 --   values converted into its corresponding parameter value for update. When
370 --   we attempt to update a row through the Upd process , certain
371 --   parameters can be defaulted which enables flexibility in the calling of
372 --   the upd process (e.g. only attributes which need to be updated need to be
373 --   specified). For the upd process to determine which attributes
374 --   have NOT been specified we need to check if the parameter has a reserved
375 --   system default value. Therefore, for all parameters which have a
376 --   corresponding reserved system default mechanism specified we need to
377 --   check if a system default is being used. If a system default is being
378 --   used then we convert the defaulted value into its corresponding attribute
379 --   value held in the g_old_rec data structure.
380 --
381 -- Prerequisites:
382 --   This private function can only be called from the upd process.
383 --
384 -- In Parameters:
385 --   A Pl/Sql record structure.
386 --
387 -- Post Success:
388 --   The record structure will be returned with all system defaulted parameter
389 --   values converted into its current row attribute value.
390 --
391 -- Post Failure:
392 --   No direct error handling is required within this function. Any possible
393 --   errors within this procedure will be a PL/SQL value error due to
394 --   conversion of datatypes or data lengths.
395 --
396 -- Developer Implementation Notes:
397 --   None.
398 --
399 -- Access Status:
400 --   Internal Row Handler Use Only.
401 --
402 -- {End Of Comments}
403 -- ----------------------------------------------------------------------------
404 Procedure convert_defs
405   (p_rec in out nocopy per_ors_shd.g_rec_type
406   ) is
407 --
408 Begin
409   --
410   -- We must now examine each argument value in the
411   -- p_rec plsql record structure
412   -- to see if a system default is being used. If a system default
413   -- is being used then we must set to the 'current' argument value.
414   --
415   If (p_rec.business_group_id = hr_api.g_number) then
416     p_rec.business_group_id :=
417     per_ors_shd.g_old_rec.business_group_id;
418   End If;
419   If (p_rec.name = hr_api.g_varchar2) then
420     p_rec.name :=
421     per_ors_shd.g_old_rec.name;
422   End If;
423   If (p_rec.comments = hr_api.g_varchar2) then
424     p_rec.comments :=
425     per_ors_shd.g_old_rec.comments;
426   End If;
427   If (p_rec.primary_structure_flag = hr_api.g_varchar2) then
428     p_rec.primary_structure_flag :=
429     per_ors_shd.g_old_rec.primary_structure_flag;
430   End If;
431   If (p_rec.request_id = hr_api.g_number) then
432     p_rec.request_id :=
433     per_ors_shd.g_old_rec.request_id;
434   End If;
435   If (p_rec.program_application_id = hr_api.g_number) then
436     p_rec.program_application_id :=
437     per_ors_shd.g_old_rec.program_application_id;
438   End If;
439   If (p_rec.program_id = hr_api.g_number) then
440     p_rec.program_id :=
441     per_ors_shd.g_old_rec.program_id;
442   End If;
443   If (p_rec.program_update_date = hr_api.g_date) then
444     p_rec.program_update_date :=
445     per_ors_shd.g_old_rec.program_update_date;
446   End If;
447   If (p_rec.attribute_category = hr_api.g_varchar2) then
448     p_rec.attribute_category :=
449     per_ors_shd.g_old_rec.attribute_category;
450   End If;
451   If (p_rec.attribute1 = hr_api.g_varchar2) then
452     p_rec.attribute1 :=
453     per_ors_shd.g_old_rec.attribute1;
454   End If;
455   If (p_rec.attribute2 = hr_api.g_varchar2) then
456     p_rec.attribute2 :=
457     per_ors_shd.g_old_rec.attribute2;
458   End If;
459   If (p_rec.attribute3 = hr_api.g_varchar2) then
460     p_rec.attribute3 :=
461     per_ors_shd.g_old_rec.attribute3;
462   End If;
463   If (p_rec.attribute4 = hr_api.g_varchar2) then
464     p_rec.attribute4 :=
465     per_ors_shd.g_old_rec.attribute4;
466   End If;
467   If (p_rec.attribute5 = hr_api.g_varchar2) then
468     p_rec.attribute5 :=
469     per_ors_shd.g_old_rec.attribute5;
470   End If;
471   If (p_rec.attribute6 = hr_api.g_varchar2) then
472     p_rec.attribute6 :=
473     per_ors_shd.g_old_rec.attribute6;
474   End If;
475   If (p_rec.attribute7 = hr_api.g_varchar2) then
476     p_rec.attribute7 :=
477     per_ors_shd.g_old_rec.attribute7;
478   End If;
479   If (p_rec.attribute8 = hr_api.g_varchar2) then
480     p_rec.attribute8 :=
481     per_ors_shd.g_old_rec.attribute8;
482   End If;
483   If (p_rec.attribute9 = hr_api.g_varchar2) then
484     p_rec.attribute9 :=
485     per_ors_shd.g_old_rec.attribute9;
486   End If;
487   If (p_rec.attribute10 = hr_api.g_varchar2) then
488     p_rec.attribute10 :=
489     per_ors_shd.g_old_rec.attribute10;
490   End If;
491   If (p_rec.attribute11 = hr_api.g_varchar2) then
492     p_rec.attribute11 :=
493     per_ors_shd.g_old_rec.attribute11;
494   End If;
495   If (p_rec.attribute12 = hr_api.g_varchar2) then
496     p_rec.attribute12 :=
497     per_ors_shd.g_old_rec.attribute12;
498   End If;
499   If (p_rec.attribute13 = hr_api.g_varchar2) then
500     p_rec.attribute13 :=
501     per_ors_shd.g_old_rec.attribute13;
502   End If;
503   If (p_rec.attribute14 = hr_api.g_varchar2) then
504     p_rec.attribute14 :=
505     per_ors_shd.g_old_rec.attribute14;
506   End If;
507   If (p_rec.attribute15 = hr_api.g_varchar2) then
508     p_rec.attribute15 :=
509     per_ors_shd.g_old_rec.attribute15;
510   End If;
511   If (p_rec.attribute16 = hr_api.g_varchar2) then
512     p_rec.attribute16 :=
513     per_ors_shd.g_old_rec.attribute16;
514   End If;
515   If (p_rec.attribute17 = hr_api.g_varchar2) then
516     p_rec.attribute17 :=
517     per_ors_shd.g_old_rec.attribute17;
518   End If;
519   If (p_rec.attribute18 = hr_api.g_varchar2) then
520     p_rec.attribute18 :=
521     per_ors_shd.g_old_rec.attribute18;
522   End If;
523   If (p_rec.attribute19 = hr_api.g_varchar2) then
524     p_rec.attribute19 :=
525     per_ors_shd.g_old_rec.attribute19;
526   End If;
527   If (p_rec.attribute20 = hr_api.g_varchar2) then
528     p_rec.attribute20 :=
529     per_ors_shd.g_old_rec.attribute20;
530   End If;
531   If (p_rec.position_control_structure_flg = hr_api.g_varchar2) then
532     p_rec.position_control_structure_flg :=
533     per_ors_shd.g_old_rec.position_control_structure_flg;
534   End If;
535   --
536 End convert_defs;
537 --
538 -- ----------------------------------------------------------------------------
539 -- |---------------------------------< upd >----------------------------------|
540 -- ----------------------------------------------------------------------------
541 Procedure upd
542   (p_effective_date               in date
543   ,p_rec                          in out nocopy per_ors_shd.g_rec_type
544   ) is
545 --
546   l_proc  varchar2(72) := g_package||'upd';
547 --
548 Begin
549   hr_utility.set_location('Entering:'||l_proc, 5);
550   --
551   -- We must lock the row which we need to update.
552   --
553   per_ors_shd.lck
554     (p_rec.organization_structure_id
555     ,p_rec.object_version_number
556     );
557   --
558   -- 1. During an update system defaults are used to determine if
559   --    arguments have been defaulted or not. We must therefore
560   --    derive the full record structure values to be updated.
561   --
562   -- 2. Call the supporting update validate operations.
563   --
564   convert_defs(p_rec);
565   per_ors_bus.update_validate
566      (p_effective_date
567      ,p_rec
568      );
569   --
570   -- Call the supporting pre-update operation
571   --
572   per_ors_upd.pre_update(p_rec);
573   --
574   -- Update the row.
575   --
576   per_ors_upd.update_dml(p_rec);
577   --
578   -- Call the supporting post-update operation
579   --
580   per_ors_upd.post_update
581      (p_effective_date
582      ,p_rec
583      );
584 End upd;
585 --
586 -- ----------------------------------------------------------------------------
587 -- |---------------------------------< upd >----------------------------------|
588 -- ----------------------------------------------------------------------------
589 Procedure upd
590   (p_effective_date               in     date
591   ,p_organization_structure_id    in     number
592   ,p_object_version_number        in out nocopy number
593   ,p_name                         in     varchar2  default hr_api.g_varchar2
594   ,p_business_group_id            in     number    default hr_api.g_number
595   ,p_comments                     in     varchar2  default hr_api.g_varchar2
596   ,p_primary_structure_flag       in     varchar2  default hr_api.g_varchar2
597   ,p_request_id                   in     number    default hr_api.g_number
598   ,p_program_application_id       in     number    default hr_api.g_number
599   ,p_program_id                   in     number    default hr_api.g_number
600   ,p_program_update_date          in     date      default hr_api.g_date
601   ,p_attribute_category           in     varchar2  default hr_api.g_varchar2
602   ,p_attribute1                   in     varchar2  default hr_api.g_varchar2
603   ,p_attribute2                   in     varchar2  default hr_api.g_varchar2
604   ,p_attribute3                   in     varchar2  default hr_api.g_varchar2
605   ,p_attribute4                   in     varchar2  default hr_api.g_varchar2
606   ,p_attribute5                   in     varchar2  default hr_api.g_varchar2
607   ,p_attribute6                   in     varchar2  default hr_api.g_varchar2
608   ,p_attribute7                   in     varchar2  default hr_api.g_varchar2
609   ,p_attribute8                   in     varchar2  default hr_api.g_varchar2
610   ,p_attribute9                   in     varchar2  default hr_api.g_varchar2
611   ,p_attribute10                  in     varchar2  default hr_api.g_varchar2
612   ,p_attribute11                  in     varchar2  default hr_api.g_varchar2
613   ,p_attribute12                  in     varchar2  default hr_api.g_varchar2
614   ,p_attribute13                  in     varchar2  default hr_api.g_varchar2
615   ,p_attribute14                  in     varchar2  default hr_api.g_varchar2
616   ,p_attribute15                  in     varchar2  default hr_api.g_varchar2
617   ,p_attribute16                  in     varchar2  default hr_api.g_varchar2
618   ,p_attribute17                  in     varchar2  default hr_api.g_varchar2
619   ,p_attribute18                  in     varchar2  default hr_api.g_varchar2
620   ,p_attribute19                  in     varchar2  default hr_api.g_varchar2
621   ,p_attribute20                  in     varchar2  default hr_api.g_varchar2
622   ,p_position_control_structure_f in     varchar2  default hr_api.g_varchar2
623   ) is
624 --
625   l_rec   per_ors_shd.g_rec_type;
626   l_proc  varchar2(72) := g_package||'upd';
627 --
628 Begin
629   hr_utility.set_location('Entering:'||l_proc, 5);
630   --
631   -- Call conversion function to turn arguments into the
632   -- l_rec structure.
633   --
634   l_rec :=
635   per_ors_shd.convert_args
636   (p_organization_structure_id
637   ,p_business_group_id
638   ,p_name
639   ,p_comments
640   ,p_primary_structure_flag
641   ,p_request_id
642   ,p_program_application_id
643   ,p_program_id
644   ,p_program_update_date
645   ,p_attribute_category
646   ,p_attribute1
647   ,p_attribute2
648   ,p_attribute3
649   ,p_attribute4
650   ,p_attribute5
651   ,p_attribute6
652   ,p_attribute7
653   ,p_attribute8
654   ,p_attribute9
655   ,p_attribute10
656   ,p_attribute11
657   ,p_attribute12
658   ,p_attribute13
659   ,p_attribute14
660   ,p_attribute15
661   ,p_attribute16
662   ,p_attribute17
663   ,p_attribute18
664   ,p_attribute19
665   ,p_attribute20
666   ,p_position_control_structure_f
667   ,p_object_version_number
668   );
669   --
670   -- Having converted the arguments into the
671   -- plsql record structure we call the corresponding record
672   -- business process.
673   --
674   per_ors_upd.upd
675      (p_effective_date
676      ,l_rec
677      );
678   p_object_version_number := l_rec.object_version_number;
679   --
680   hr_utility.set_location(' Leaving:'||l_proc, 10);
681 End upd;
682 --
683 end per_ors_upd;