DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_GENERIC_REPORT_PKG

Source


4 |		Copyright (C) 1995 Oracle Corporation                        |
1 PACKAGE BODY PER_GENERIC_REPORT_PKG AS
2 /* $Header: pergenrp.pkb 120.0 2005/05/31 17:56:59 appldev noship $ */
3 /*===========================================================================+
5 |		         All rights reserved 				     |
6 |									     |
7 +===========================================================================*/
8 --
9  /*
10    Name
11      PER_GENERIC_REPORT_PKG
12    Purpose
13     Contains all the procedures to support the generation of customisable
14     candidate list reports.
15 
16     Notes:
17 
18     History
19       18-Sep-1995  fshojaas		70.0		Date Created.
20 		   gperry
21       24-Jul-1997  teyres               70.1            Changed as to is on create or replace line
22       25-Jun-97    teyres               110.1/70.2      110.1 and 70.2 are the same
23       04-aug-97    mstewart             110.2           Changed statements using
24 							per_people_f_secv to
25 							use per_people_f instead
26 							(R11 security model
27 							change)
28       19-jun-01    gperry               110.3           WWBUG 1833930. Since
29                                                         this is sample code I
30                                                         converted it to use
31                                                         sysdate so the index is
32                                                         for the DT tables are
33                                                         being used. Also got
34                                                         rid of the distinct
35                                                         code.
39 
36       17-SEP-01    gperry               115.2           Fixed WWBUG 1997980.
37                                                         Inserts into tables
38                                                         use by column name.
40 ============================================================================*/
41 
42   --
43   --                               Private Global Definition
44   ----------------------------------------------------------------------------
45   --
46   -- Global package name
47   --
48   g_package varchar2(50):= 'per_generic_report_pkg.';
49   --
50   --
51   -- *************************************************************************
52   --
53   -- Name            : example1
54   -- Parameters      : p_param_1
55   --                   (This is the value of the first parameter that is
56   --                   displayed on the screen, in this example it refers to a
57   --                   vacancy).
58   -- Values Returned : none
59   -- Description     : This procedure is used as an example to show how a
60   --                   one parameter report can be used to populate a generic
61   --                   table with custom formatting.
62   --
63   -- *************************************************************************
64   procedure example1(p_param_1 varchar2
65                     ) is
66     --
67     -- Declare local variables, these are used for storing values that will be
68     -- inserted into the generic table.
69     --
70     l_recs_inserted       number := 1;
71     l_full_name           per_people_f.full_name%type;
72     l_sex                 per_people_f.sex%type;
73     --
74     -- The l_proc variable is used for handling errors that may occur during
75     -- program execution.
76     --
77     l_proc                varchar(72) := g_package || 'generate_report';
78     --
79     -- This cursor selects the full_name and sex of people who have applied
80     -- for a particular vacancy. This vacancy is dependant on the value of
81     -- p_param_1.
82     --
83     cursor c1 is
84       select          a.full_name, a.sex
85       from            per_all_people_f a,
86                       per_all_assignments_f b,
87                       per_vacancies c
88       where           a.business_group_id = b.business_group_id
89       and             a.person_id         = b.person_id
90       and             trunc(sysdate)
91                       between a.effective_start_date
92                       and     a.effective_end_date
93       and             b.vacancy_id        = c.vacancy_id
94       and             trunc(sysdate)
95                       between b.effective_start_date
96                       and     b.effective_end_date
97       and             c.name              = p_param_1;
98   begin
99     --
100     -- This example has one parameter only. The statements below insert
101     -- data with custom formatting into a table. This example using lpad
102     -- to demonstrate the sort of custom formatting that can be applied
103     -- to the resultant data.
104     --
105     open c1;
106       loop
107         fetch c1 into l_full_name, l_sex;
108         exit when c1%notfound;
109         --
110         -- Insert values into body of table with some example formatting.
111         -- In this case we insert the full_name and the sex which we
112         -- align using an lpad statement.
113         --
114         insert into per_generic_report_output
115         (line_type,line_number,line_content)
116         values ('B',l_recs_inserted,l_full_name||
117         lpad(l_sex,50-length(l_full_name),' '));
118         l_recs_inserted := l_recs_inserted + 1;
119         hr_utility.set_location(l_proc,20);
120       end loop;
121     close c1;
122   end example1;
123   -- *************************************************************************
124   --
125   -- Name            : example2
126   -- Parameters      : p_param_1
127   --                   (This is the value of the first parameter that is
128   --                   displayed on the screen, in this example it refers to a
129   --                   vacancy).
130   --                   p_param_2
131   --                   (This is the value of the second parameter that is
132   --                   displayed on the screen, in this example it refers to
133   --                   the sex of people applying for a vacancy).
134   -- Values Returned : none
135   -- Description     : This procedure is used as an example to show how a
136   --                   two parameter report can be used to populate a generic
137   --                   table with custom formatting.
138   --
139   -- *************************************************************************
140   procedure example2(p_param_1 varchar2,
141                      p_param_2 varchar2
142                     ) is
143     --
144     -- Declare local variables, these are used for storing values that will be
145     -- inserted into the generic table.
146     --
147     l_recs_inserted       number := 1;
148     l_full_name           per_people_f.full_name%type;
149     --
150     -- The l_proc variable is used for handling errors that may occur during
151     -- program execution.
152     --
153     l_proc                varchar(72) := g_package || 'generate_report';
154     --
155     -- This cursor selects the full_name of people who have applied for
156     -- a particular vacancy. This vacancy is dependant on the value of
157     -- p_param_1 and the sex of people who will be selected is dependant
158     -- on the value of p_param_2.
159     --
160     cursor c2 is
161       select          a.full_name
162       from            per_all_people_f a,
166       and             a.person_id         = b.person_id
163                       per_all_assignments_f b,
164                       per_vacancies c
165       where           a.business_group_id = b.business_group_id
167       and             trunc(sysdate)
168                       between a.effective_start_date
169                       and     a.effective_end_date
170       and             b.vacancy_id        = c.vacancy_id
171       and             trunc(sysdate)
172                       between b.effective_start_date
173                       and     b.effective_end_date
174       and             c.name              = p_param_1
175       and             a.sex               = p_param_2;
176   begin
177     --
178     -- This example has two parameters. The statements below insert the
179     -- full_name of people applying for a particular vacancy into a table
180     -- with certain custom formatting. This example uses upper to convert
181     -- the applicant's full_name to upper case in order to demonstrate
182     -- the sort of custom formatting that can be applied to the resultant
183     -- data.
184     --
185     open c2;
186       loop
187         fetch c2 into l_full_name;
188         exit when c2%notfound;
189         --
190         -- Insert values into body of table with some example formatting.
191         -- In this case we insert some spaces and full_name in upper case.
192         --
193         insert into per_generic_report_output
194         (line_type,line_number,line_content)
195         values ('B',l_recs_inserted,'     '||upper(l_full_name));
196         l_recs_inserted := l_recs_inserted + 1;
197         hr_utility.set_location(l_proc,25);
198       end loop;
199     close c2;
200   end example2;
201   -- *************************************************************************
202   --
203   -- Name            : example3
204   -- Parameters      : p_param_1
205   --                   (This is the value of the first parameter that is
206   --                   displayed on the screen, in this example it refers to a
207   --                   vacancy).
208   --                   p_param_2
209   --                   (This is the value of the second parameter that is
210   --                   displayed on the screen, in this example it refers to
211   --                   the marital status of people applying for a vacancy).
212   --                   p_param_3
213   --                   (This is the value of the second parameter that is
214   --                   displayed on the screen, in this example it refers to
215   --                   the sex of people applying for a vacancy).
216   -- Values Returned : none
217   -- Description     : This procedure is used as an example to show how a
218   --                   three parameter report can be used to populate a
219   --                   generic table with custom formatting.
220   --
221   -- *************************************************************************
222   procedure example3(p_param_1 varchar2,
223                      p_param_2 varchar2,
224                      p_param_3 varchar2
225                      ) is
226     --
227     -- Declare local variables, these are used for storing values that will be
228     -- inserted into the generic table.
229     --
230     l_recs_inserted       number := 1;
231     l_full_name           per_people_f.full_name%type;
232     l_sex                 per_people_f.sex%type;
233     --
234     -- The l_proc variable is used for handling errors that may occur during
235     -- program execution.
236     --
237     l_proc                varchar(72) := g_package || 'generate_report';
238     --
239     -- This cursor selects the full_name, marital status and sex of people
240     -- who have applied for a particular vacancy. This vacancy is dependant
244     --
241     -- on the value of p_param_1, the marital status is dependant on the
242     -- value of p_param_2 and the sex of people who will be selected is
243     -- dependant on the value of p_param_3.
245     cursor c3 is
246       select a.full_name, a.sex
247       from            per_all_people_f a,
248                       per_all_assignments_f b,
249                       per_vacancies c
250       where           a.business_group_id = b.business_group_id
251       and             a.person_id         = b.person_id
252       and             trunc(sysdate)
253                       between a.effective_start_date
254                       and     a.effective_end_date
255       and             b.vacancy_id        = c.vacancy_id
256       and             trunc(sysdate)
257                       between b.effective_start_date
258                       and     b.effective_end_date
259       and             b.primary_flag      = 'Y'
260       and             c.name              = p_param_1
261       and             a.marital_status    = p_param_2
262       and             a.sex               = p_param_3;
263   begin
264     --
265     -- This example has three parameters. The statements below insert the
266     -- full_name and sex of people applying for a particular vacancy into
267     -- a table with certain custom formatting. This example uses initcap
268     -- to convert the applicant's full_name to initial caps in order to
269     -- demonstrate the sort of custom formatting that can be applied to
270     -- the resultant data.
271     --
272     open c3;
273       loop
274         fetch c3 into l_full_name, l_sex;
275         exit when c3%notfound;
276         --
277         -- Insert values into body of table with some example formatting.
278         -- In this case we insert the sex and then some spaces followed
279         -- by the full_name in initcaps.
280         --
281         insert into per_generic_report_output
282         (line_type,line_number,line_content)
283         values ('B',l_recs_inserted,l_sex||'  '||initcap(l_full_name));
284         l_recs_inserted := l_recs_inserted + 1;
285         hr_utility.set_location(l_proc,30);
286       end loop;
287     close c3;
288   end example3;
289   -- *************************************************************************
290   --
291   -- Name            : generate_report
292   -- Parameters      : p_report_name varchar2
293   --                   (This is the report name selected from the LOV)
294   --                   p_param_1
295   --                   (This is the value of the first parameter on the
296   --                   screen).
297   --                   p_param_2
298   --                   (This is the value of the second parameter on the
299   --                   screen).
300   --                   p_param_3
301   --                   (This is the value of the third parameter on the
302   --                   screen).
303   --                   p_param_4
304   --                   (This is the value of the fourth parameter on the
305   --                   screen).
306   --                   p_param_5
307   --                   (This is the value of the fifth parameter on the
308   --                   screen).
309   --                   p_param_6
310   --                   (This is the value of the sixth parameter on the
311   --                   screen).
312   --                   p_param_7
313   --                   (This is the value of the seventh parameter on the
314   --                   screen).
315   --                   p_param_8
316   --                   (This is the value of the eighth parameter on the
317   --                   screen).
318   --                   p_param_9
319   --                   (This is the value of the nineth parameter on the
320   --                   screen).
321   --                   p_param_10
322   --                   (This is the value of the tenth parameter on the
323   --                   screen).
324   --                   p_param_11
325   --                   (This is the value of the eleventh parameter on the
326   --                   screen).
327   --                   p_param_12
328   --                   (This is the value of the twelvth parameter on the
329   --                   screen).
330   -- Values Returned : none
331   -- Description     : This procedure calls procedures which populate
332   --                   the per_generic_report_output table with the
333   --                   formatting required by the customer.
334   --
335   -- *************************************************************************
336   procedure generate_report(p_report_name varchar2,
337                             p_param_1     varchar2,
338 			    p_param_2     varchar2,
339                             p_param_3     varchar2,
340                             p_param_4     varchar2,
341                             p_param_5     varchar2,
342                             p_param_6     varchar2,
343                             p_param_7     varchar2,
344                             p_param_8     varchar2,
345                             p_param_9     varchar2,
346                             p_param_10    varchar2,
347                             p_param_11    varchar2,
348                             p_param_12    varchar2
349                             ) is
350     --
351     -- The l_proc variable is used for handling errors that may occur during
352     -- program execution.
353     --
354     l_proc varchar(72) := g_package || 'generate_report';
355   begin
356     hr_utility.set_location('Entering: ' ||l_proc,5);
357     --
358     -- Delete existing data from per_generic_report_output
359     --
360     delete from per_generic_report_output;
364     -- field type = varchar2(1)
361     --
362     -- Table per_generic_report_output has the following fields
363     -- Line Type T = Title, H = Header, B = Body, F = Footer
365     -- Line Number field type = number(9)
366     -- Line Text field type = long
367     --
368     -- Insert header information into table
369     -- This will be displayed as the header for the report
370     --
371     -- NOTE: The user may insert their own header into the next line instead of
372     -- the 'Example Title - Oracle Corporation UK Ltd'
373     --
374     insert into per_generic_report_output
375     (line_type,line_number,line_content)
376     values ('H',1,'Example Title - Oracle Corporation UK Ltd');
377     --
378     -- Insert footer information into table
379     -- This will be displayed as the footer for the report
380     --
381     -- NOTE: The user may insert their own footer into the next line instead
382     -- of the 'Example Footer - Oracle Corporation UK Ltd'.
383     --
384     insert into per_generic_report_output
385     (line_type,line_number,line_content)
386     values ('F',1,'Example Footer - Oracle Corporation UK Ltd');
387     --
388     -- Insert title information into table, in this case p_report_name
389     -- This will be displayed as the title for the report
390     --
391     insert into per_generic_report_output
392     (line_type,line_number,line_content)
393     values ('T',1,p_report_name);
394     --
395     -- Depending on the report name run different procedures
396     --
397     if p_report_name = 'Custom Report 1' then
398       example1(p_param_1);
399     elsif p_report_name = 'Custom Report 2' then
400       example2(p_param_1,p_param_2);
401     elsif p_report_name = 'Custom Report 3' then
402       example3(p_param_1,p_param_2,p_param_3);
403     end if;
404   end generate_report;
405   -- *************************************************************************
406   --
407   -- Name            : launch_report
408   -- Parameters      : p_report_name
409   --                   (This is the report name selected from the LOV)
410   --                   p_param_1
411   --                   (This is the value of the first parameter on the
412   --                   screen).
413   --                   p_param_2
414   --                   (This is the value of the second parameter on the
415   --                   screen).
416   --                   p_param_3
417   --                   (This is the value of the third parameter on the
418   --                   screen).
419   --                   p_param_4
420   --                   (This is the value of the fourth parameter on the
421   --                   screen).
422   --                   p_param_5
423   --                   (This is the value of the fifth parameter on the
424   --                   screen).
425   --                   p_param_6
426   --                   (This is the value of the sixth parameter on the
427   --                   screen).
428   --                   p_param_7
429   --                   (This is the value of the seventh parameter on the
430   --                   screen).
431   --                   p_param_8
432   --                   (This is the value of the eighth parameter on the
433   --                   screen).
434   --                   p_param_9
435   --                   (This is the value of the nineth parameter on the
436   --                   screen).
437   --                   p_param_10
438   --                   (This is the value of the tenth parameter on the
439   --                   screen).
440   --                   p_param_11
441   --                   (This is the value of the eleventh parameter on the
442   --                   screen).
443   --                   p_param_12
444   --                   (This is the value of the twelvth parameter on the
445   --                   screen).
446   -- Values Returned : boolean (depending on whether validation check
447   --                   succeeded, in this case we check if a vacancy exists).
448   -- Description     : This procedure is used as an initial validation check
449   --                   before attemptng to submit the report to the
450   --                   concurrent program manager.
451   --
452   -- *************************************************************************
453   function launch_report(p_report_name varchar2,
454                          p_param_1     varchar2,
455                          p_param_2     varchar2,
456                          p_param_3     varchar2,
457                          p_param_4     varchar2,
458                          p_param_5     varchar2,
459                          p_param_6     varchar2,
460                          p_param_7     varchar2,
461                          p_param_8     varchar2,
462                          p_param_9     varchar2,
463                          p_param_10    varchar2,
464                          p_param_11    varchar2,
465                          p_param_12    varchar2)
466 			 return boolean is
467     --
468     -- Declare local variables
469     --
470     l_success       boolean := FALSE;
471     l_vacancy_name  per_vacancies.name%type;
472     l_report_number number;
473     --
474     -- The l_proc variable is used for handling errors that may occur during
475     -- program execution.
476     --
477     l_proc          varchar2(72) := g_package || 'launch_report';
478     --
479     -- This cursor is used as an example to show what sort or prior
480     -- to submitting validation checks a customer could do. In this
481     -- case a cursor is used to check if a vacancy exists.
482     --
483     cursor c1 is
484       select name
485       from   per_vacancies
486       where  name = p_param_1;
487   begin
488     hr_utility.set_location('Entering:' || l_proc,5);
489     --
490     -- This cursor checks whether a fetch was successful, in other words
491     -- does a vacancy exist. If not then a variable is set and an
492     -- appropriate error message will be displayed.
493     --
494     open c1;
495       fetch c1 into l_vacancy_name;
496       --
497       -- Check if vacancy exists by seeing if fetch succeeded
498       --
499       if c1%found then
500         --
501         -- Vacancy found
502         --
503         l_success := true;
504       else
505         --
506         -- Vacancy not found
507         --
508         l_success := false;
509       end if;
510       --
511       -- Close cursor c1
512       --
513       hr_utility.set_location(l_proc,15);
514     close c1;
515     --
516     -- Return control back to the form if vacancy has not been found.
517     -- Display error message if vacancy not found.
518     --
519     if not l_success then
520       --
521       hr_utility.set_message(801,'HR_51001_THE_VAC_NOT_FOUND');
522       hr_utility.raise_error;
523     end if;
524     --
525     -- ***********************************************************************
526     -- DO NOT REMOVE THE NEXT LINE :  l_report_number := ........
527     -- ***********************************************************************
528     --
529     -- Make a request to the concurrent program manager. This returns a
530     -- number depending on whether a successful request or unsuccessful
531     -- request was made. The number 0 indicates an unsuccessful request.
532     --
533     l_report_number := fnd_request.submit_request('PER',
534                                                   'PERGENRP',
535                                                   NULL,
536                                                   NULL,
537                                                   NULL,
538                                                   p_report_name,
539                                                   p_param_1,
540                                                   p_param_2,
541                                                   p_param_3,
542                                                   p_param_4,
543                                                   p_param_5,
544                                                   p_param_6,
545                                                   p_param_7,
546                                                   p_param_8,
547                                                   p_param_9,
548                                                   p_param_10,
549                                                   p_param_11,
550                                                   p_param_12
551                                                  );
552     -- ***********************************************************************
553     -- DO NOT REMOVE THE NEXT IF..END IF STATEMENT :  if l_report_number ...
554     -- ***********************************************************************
555     --
556     -- Check to see if the request was successful otherwise display an error
557     -- message.
558     --
559     if l_report_number = 0 then
560       hr_utility.set_location(l_proc,35);
561       hr_utility.set_message(801,'HR_51002_REPORT_CANT_SUBMITTED');
562       hr_utility.raise_error;
563     end if;
564     --
565     -- return true if all checks have been successful
566     --
567     return true;
568   end launch_report;
569 END PER_GENERIC_REPORT_PKG;