DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_TASK_TEMP_GROUP_PVT

Source


1 PACKAGE BODY jtf_task_temp_group_pvt AS
2 /* $Header: jtfvtkgb.pls 115.23 2002/12/05 00:03:37 cjang ship $ */
3    v_select   VARCHAR2(6000);
4    v_tbl      jtf_task_temp_group_pub.task_temp_group_tbl;
5 
6    PROCEDURE create_task_template_group (
7       p_commit                    IN       VARCHAR2,
8       p_template_group_name       IN       VARCHAR2,
9       p_source_object_type_code   IN       VARCHAR2,
10       p_start_date_active         IN       DATE,
11       p_end_date_active           IN       DATE,
12       p_description               IN       VARCHAR2,
13       p_attribute1                IN       VARCHAR2,
14       p_attribute2                IN       VARCHAR2,
15       p_attribute3                IN       VARCHAR2,
16       p_attribute4                IN       VARCHAR2,
17       p_attribute5                IN       VARCHAR2,
18       p_attribute6                IN       VARCHAR2,
19       p_attribute7                IN       VARCHAR2,
20       p_attribute8                IN       VARCHAR2,
21       p_attribute9                IN       VARCHAR2,
22       p_attribute10               IN       VARCHAR2,
23       p_attribute11               IN       VARCHAR2,
24       p_attribute12               IN       VARCHAR2,
25       p_attribute13               IN       VARCHAR2,
26       p_attribute14               IN       VARCHAR2,
27       p_attribute15               IN       VARCHAR2,
28       p_attribute_category        IN       VARCHAR2,
29       x_return_status             OUT NOCOPY      VARCHAR2,
30       x_msg_count                 OUT NOCOPY      NUMBER,
31       x_msg_data                  OUT NOCOPY      VARCHAR2,
32       x_task_template_group_id    OUT NOCOPY      NUMBER,
33       p_application_id            IN       NUMBER DEFAULT NULL
34    )
35    IS
36       l_api_name                 VARCHAR2(30)
37                := 'CREATE_TASK_TEMPLATE_GROUP';
38       v_rowid                    VARCHAR2(24);
39       v_task_template_group_id   jtf_task_temp_groups_b.task_template_group_id%TYPE;
40    BEGIN
41       x_return_status := fnd_api.g_ret_sts_success;
42       SAVEPOINT create_template_group_pvt;
43       SELECT jtf_task_temp_groups_s.nextval
44         INTO v_task_template_group_id
45         FROM dual;
46       -- call table handler to insert into jtf_tasks_temp_groups
47       jtf_task_temp_groups_pkg.insert_row (
48          v_rowid,
49          v_task_template_group_id,
50          p_source_object_type_code,
51          p_start_date_active,
52          p_end_date_active,
53          p_attribute1,
54          p_attribute2,
55          p_attribute3,
56          p_attribute4,
57          p_attribute5,
58          p_attribute6,
59          p_attribute7,
60          p_attribute8,
61          p_attribute9,
62          p_attribute10,
63          p_attribute11,
64          p_attribute12,
65          p_attribute13,
66          p_attribute14,
67          p_attribute15,
68          p_attribute_category,
69          p_template_group_name,
70          p_description,
71          SYSDATE,
72          fnd_global.user_id,
73          SYSDATE,
74          fnd_global.user_id,
75          fnd_global.login_id,
76          p_application_id
77       );
78 
79       -- standard check of p_commit
80       IF (fnd_api.to_boolean (p_commit))
81       THEN
82          COMMIT WORK;
83       END IF;
84 
85       x_task_template_group_id := v_task_template_group_id;
86    EXCEPTION
87       WHEN fnd_api.g_exc_error
88       THEN
89          ROLLBACK TO create_template_group_pvt;
90          x_return_status := fnd_api.g_ret_sts_error;
91          fnd_msg_pub.count_and_get (
92             p_count => x_msg_count,
93             p_data => x_msg_data
94          );
95       WHEN fnd_api.g_exc_unexpected_error
96       THEN
97          ROLLBACK TO create_template_group_pvt;
98          x_return_status := fnd_api.g_ret_sts_unexp_error;
99          fnd_msg_pub.count_and_get (
100             p_count => x_msg_count,
101             p_data => x_msg_data
102          );
103       WHEN OTHERS
104       THEN
105          ROLLBACK TO create_template_group_pvt;
106          x_return_status := fnd_api.g_ret_sts_unexp_error;
107 
108          IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_unexp_error)
109          THEN
110             fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
111          END IF;
112 
113          fnd_msg_pub.count_and_get (
114             p_count => x_msg_count,
115             p_data => x_msg_data
116          );
117    END create_task_template_group;
118 
119    PROCEDURE update_task_template_group (
120       p_commit                    IN       VARCHAR2,
121       p_task_template_group_id    IN       NUMBER,
122       p_template_group_name       IN       VARCHAR2,
123       p_source_object_type_code   IN       VARCHAR2,
124       p_start_date_active         IN       DATE,
125       p_end_date_active           IN       DATE,
126       p_description               IN       VARCHAR2,
127       p_attribute1                IN       VARCHAR2,
128       p_attribute2                IN       VARCHAR2,
129       p_attribute3                IN       VARCHAR2,
130       p_attribute4                IN       VARCHAR2,
131       p_attribute5                IN       VARCHAR2,
132       p_attribute6                IN       VARCHAR2,
133       p_attribute7                IN       VARCHAR2,
134       p_attribute8                IN       VARCHAR2,
135       p_attribute9                IN       VARCHAR2,
136       p_attribute10               IN       VARCHAR2,
137       p_attribute11               IN       VARCHAR2,
138       p_attribute12               IN       VARCHAR2,
139       p_attribute13               IN       VARCHAR2,
140       p_attribute14               IN       VARCHAR2,
141       p_attribute15               IN       VARCHAR2,
142       p_attribute_category        IN       VARCHAR2,
143       x_return_status             OUT NOCOPY      VARCHAR2,
144       x_msg_count                 OUT NOCOPY      NUMBER,
145       x_msg_data                  OUT NOCOPY      VARCHAR2,
146       x_object_version_number     IN OUT NOCOPY   NUMBER,
147       p_application_id            IN       NUMBER DEFAULT NULL
148    )
149    IS
150       l_api_name   VARCHAR2(30) := 'UPDATE_TASK_TEMPLATE_GROUP';
151    BEGIN
152       x_return_status := fnd_api.g_ret_sts_success;
153       SAVEPOINT update_template_group_pvt;
154       -- call locking table handler
155       jtf_task_temp_groups_pkg.lock_row (
156          p_task_template_group_id,
157          x_object_version_number
158       );
159       -- call table handler to insert into jtf_tasks_temp_groups
160       jtf_task_temp_groups_pkg.update_row (
161          p_task_template_group_id,
162          x_object_version_number + 1,
163          p_source_object_type_code,
164          p_start_date_active,
165          p_end_date_active,
166          p_attribute1,
167          p_attribute2,
168          p_attribute3,
169          p_attribute4,
170          p_attribute5,
171          p_attribute6,
172          p_attribute7,
173          p_attribute8,
174          p_attribute9,
175          p_attribute10,
176          p_attribute11,
177          p_attribute12,
178          p_attribute13,
179          p_attribute14,
180          p_attribute15,
181          p_attribute_category,
182          p_template_group_name,
183          p_description,
184          SYSDATE,
185          fnd_global.user_id,
186          fnd_global.login_id,
187          p_application_id
188       );
189 
190       -- standard check of p_commit
191       IF (fnd_api.to_boolean (p_commit))
192       THEN
193          COMMIT WORK;
194       END IF;
195 
196       x_object_version_number := x_object_version_number + 1;
197 
198    EXCEPTION
199       WHEN fnd_api.g_exc_error
200       THEN
201          ROLLBACK TO update_template_group_pvt;
202          x_return_status := fnd_api.g_ret_sts_error;
203          fnd_msg_pub.count_and_get (
204             p_count => x_msg_count,
205             p_data => x_msg_data
206          );
207       WHEN fnd_api.g_exc_unexpected_error
208       THEN
209          ROLLBACK TO update_template_group_pvt;
210          x_return_status := fnd_api.g_ret_sts_unexp_error;
211          fnd_msg_pub.count_and_get (
212             p_count => x_msg_count,
213             p_data => x_msg_data
214          );
215       WHEN OTHERS
216       THEN
217          ROLLBACK TO update_template_group_pvt;
218          x_return_status := fnd_api.g_ret_sts_unexp_error;
219 
220          IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_unexp_error)
221          THEN
222             fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
223          END IF;
224 
225          fnd_msg_pub.count_and_get (
226             p_count => x_msg_count,
227             p_data => x_msg_data
228          );
229    END update_task_template_group;
230 
231    PROCEDURE delete_task_template_group (
232       p_commit                   IN       VARCHAR2,
233       p_task_template_group_id   IN       NUMBER,
234       x_return_status            OUT NOCOPY      VARCHAR2,
235       x_msg_count                OUT NOCOPY      NUMBER,
236       x_msg_data                 OUT NOCOPY      VARCHAR2
237    )
238    IS
239       l_api_name   VARCHAR2(30) := 'DELETE_TASK_TEMPLATE_GROUP';
240    BEGIN
241       x_return_status := fnd_api.g_ret_sts_success;
242       SAVEPOINT delete_template_group_pvt;
243       -- call table handler to insert into jtf_tasks_temp_groups
244       jtf_task_temp_groups_pkg.delete_row (p_task_template_group_id);
245 
246       -- standard check of p_commit
247       IF (fnd_api.to_boolean (p_commit))
248       THEN
249          COMMIT WORK;
250       END IF;
251    EXCEPTION
252       WHEN fnd_api.g_exc_error
253       THEN
254          ROLLBACK TO delete_template_group_pvt;
255          x_return_status := fnd_api.g_ret_sts_error;
256          fnd_msg_pub.count_and_get (
257             p_count => x_msg_count,
258             p_data => x_msg_data
259          );
260       WHEN fnd_api.g_exc_unexpected_error
261       THEN
262          ROLLBACK TO delete_template_group_pvt;
263          x_return_status := fnd_api.g_ret_sts_unexp_error;
264          fnd_msg_pub.count_and_get (
265             p_count => x_msg_count,
266             p_data => x_msg_data
267          );
268       WHEN OTHERS
269       THEN
270          ROLLBACK TO delete_template_group_pvt;
271          x_return_status := fnd_api.g_ret_sts_unexp_error;
272 
273          IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_unexp_error)
274          THEN
275             fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
276          END IF;
277 
278          fnd_msg_pub.count_and_get (
279             p_count => x_msg_count,
280             p_data => x_msg_data
281          );
282    END delete_task_template_group;
283 
284    PROCEDURE dump_long_line (txt IN VARCHAR2, v_str IN VARCHAR2)
285    IS
286       LN   INTEGER := LENGTH (v_str);
287       st   INTEGER := 1;
288    BEGIN
289       NULL;
290    --loop
291 
292    --st := st + 72;
293    --exit when (st >= ln);
294    --end loop;
295 
296    END dump_long_line;
297 
298    PROCEDURE get_task_template_group (
299       p_commit                    IN       VARCHAR2
300             DEFAULT fnd_api.g_false,
301       p_task_template_group_id    IN       NUMBER,
302       p_template_group_name       IN       VARCHAR2,
303       p_source_object_type_code   IN       VARCHAR2,
304       p_start_date_active         IN       DATE,
305       p_end_date_active           IN       DATE,
306       p_sort_data                 IN       jtf_task_temp_group_pub.sort_data,
307       p_query_or_next_code        IN       VARCHAR2
308             DEFAULT 'Q',
309       p_start_pointer             IN       NUMBER,
310       p_rec_wanted                IN       NUMBER,
311       p_show_all                  IN       VARCHAR2
312             DEFAULT 'Y',
313       x_return_status             OUT NOCOPY      VARCHAR2,
314       x_msg_count                 OUT NOCOPY      NUMBER,
315       x_msg_data                  OUT NOCOPY      VARCHAR2,
316       x_task_template_group       OUT NOCOPY      jtf_task_temp_group_pub.task_temp_group_tbl,
317       x_total_retrieved           OUT NOCOPY      NUMBER,
318       x_total_returned            OUT NOCOPY      NUMBER,
319       p_application_id            IN       NUMBER
320             DEFAULT NULL
321    )
322    IS
323       -- declare variables
324       l_api_name    VARCHAR2(30)
325                := 'GET_TASK_TEMPLATE_GROUP';
326       v_cursor_id   INTEGER;
327       v_dummy       INTEGER;
328       v_cnt         INTEGER;
329       v_end         INTEGER;
330       v_start       INTEGER;
331       v_type        jtf_task_temp_group_pub.task_template_group_rec;
332 
333       PROCEDURE create_sql_statement
334       IS
335          v_index   INTEGER;
336          v_first   INTEGER;
337          v_comma   VARCHAR2(5);
338          v_where   VARCHAR2(2000);
339          v_and     CHAR(1)        := 'N';
340 
341          PROCEDURE add_to_sql (
342             p_in      VARCHAR2,   --value in parameter
343             p_bind    VARCHAR2,   --bind variable to use
344             p_field   VARCHAR2   --field associated with parameter
345          )
346          IS
347             v_str   VARCHAR2(10);
348          BEGIN   -- add_to_sql
349             IF (p_in IS NOT NULL)
350             THEN
351                IF (v_and = 'N')
352                THEN
353                   v_str := ' ';
354                   v_and := 'Y';
355                ELSE
356                   v_str := ' and ';
357                END IF;
358 
359                v_where := v_where || v_str || p_field || ' = :' || p_bind;
360             END IF;
361          END add_to_sql;
362       BEGIN   --create_sql_statement
363          v_select := 'select TASK_TEMPLATE_GROUP_ID,' ||
364                      'TEMPLATE_GROUP_NAME,' ||
365                      'SOURCE_OBJECT_TYPE_CODE,' ||
366                      'START_DATE_ACTIVE,' ||
367                      'END_DATE_ACTIVE,' ||
368                      'DESCRIPTION,' ||
369                      'ATTRIBUTE1,' ||
370                      'ATTRIBUTE2,' ||
371                      'ATTRIBUTE3,' ||
372                      'ATTRIBUTE4,' ||
373                      'ATTRIBUTE5,' ||
374                      'ATTRIBUTE6,' ||
375                      'ATTRIBUTE7,' ||
376                      'ATTRIBUTE8,' ||
377                      'ATTRIBUTE9,' ||
378                      'ATTRIBUTE10,' ||
379                      'ATTRIBUTE11,' ||
380                      'ATTRIBUTE12,' ||
381                      'ATTRIBUTE13,' ||
382                      'ATTRIBUTE14,' ||
383                      'ATTRIBUTE15,' ||
384                      'ATTRIBUTE_CATEGORY,' ||
385                      'object_version_number ,' ||
386                      'APPLICATION_ID ' ||
387                      'from jtf_task_temp_groups_vl ';
388          add_to_sql (
389             TO_CHAR (p_task_template_group_id),
390             'b1',
391             'task_template_group_id'
392          );
393          add_to_sql (p_template_group_name, 'b2', 'template_group_name');
394          add_to_sql (
395             p_source_object_type_code,
396             'b3',
397             'source_object_type_code'
398          );
399          add_to_sql (
400             TO_CHAR (p_start_date_active, 'dd-mon-rrrr'),
401             'b4',
402             'start_date_active'
403          );
404          add_to_sql (
405             TO_CHAR (p_end_date_active, 'dd-mon-rrrr'),
406             'b5',
407             'end_date_active'
408          );
409          add_to_sql (TO_CHAR (p_application_id), 'b6', 'application_id');
410 
411          IF (v_where IS NOT NULL)
412          THEN
413             v_select := v_select || ' where ' || v_where;
414          END IF;
415 
416          IF (p_sort_data.COUNT > 0)
417          THEN   --there is a sort preference
418             v_select := v_select || ' order by ';
419             v_index := p_sort_data.FIRST;
420             v_first := v_index;
421 
422             LOOP
423                IF (v_first = v_index)
424                THEN
425                   v_comma := ' ';
426                ELSE
427                   v_comma := ', ';
428                END IF;
429 
430                v_select := v_select ||
431                            v_comma ||
432                            p_sort_data (v_index).field_name ||
433                            ' ';
434 
435                -- ascending or descending order
436                IF (p_sort_data (v_index).asc_dsc_flag = 'A')
437                THEN
438                   v_select := v_select || 'asc ';
439                ELSIF (p_sort_data (v_index).asc_dsc_flag = 'D')
440                THEN
441                   v_select := v_select || 'desc ';
442                END IF;
443 
444                EXIT WHEN v_index = p_sort_data.LAST;
445                v_index := p_sort_data.NEXT (v_index);
446             END LOOP;
447          END IF;
448       END create_sql_statement;
449    BEGIN
450       x_return_status := fnd_api.g_ret_sts_success;
451       x_task_template_group.DELETE;
452 
453       IF (p_query_or_next_code = 'Q')
454       THEN
455          v_tbl.DELETE;
456          create_sql_statement;
457          dump_long_line ('v_sel:', v_select);
458          v_cursor_id := DBMS_SQL.open_cursor;
459          DBMS_SQL.parse (v_cursor_id, v_select, DBMS_SQL.v7);
460 
461          -- bind variables only if they added to the sql statement
462          IF (p_task_template_group_id IS NOT NULL)
463          THEN
464             DBMS_SQL.bind_variable (
465                v_cursor_id,
466                ':b1',
467                p_task_template_group_id
468             );
469          END IF;
470 
471          IF (p_template_group_name IS NOT NULL)
472          THEN
473             DBMS_SQL.bind_variable (v_cursor_id, ':b2', p_template_group_name);
474          END IF;
475 
476          IF (p_source_object_type_code IS NOT NULL)
477          THEN
478             DBMS_SQL.bind_variable (
479                v_cursor_id,
480                ':b3',
481                p_source_object_type_code
482             );
483          END IF;
484 
485          IF (p_start_date_active IS NOT NULL)
486          THEN
487             DBMS_SQL.bind_variable (v_cursor_id, ':b4', p_start_date_active);
488          END IF;
489 
490          IF (p_end_date_active IS NOT NULL)
491          THEN
492             DBMS_SQL.bind_variable (v_cursor_id, ':b5', p_end_date_active);
493          END IF;
494 
495          IF (p_application_id IS NOT NULL)
496          THEN
497             DBMS_SQL.bind_variable (v_cursor_id, ':b6', p_application_id);
498          END IF;
499 
500          -- define the output columns
501          DBMS_SQL.define_column (
502             v_cursor_id,
503             1,
504             v_type.task_template_group_id
505          );
506          DBMS_SQL.define_column (
507             v_cursor_id,
508             2,
509             v_type.template_group_name,
510             80
511          );
512          DBMS_SQL.define_column (
513             v_cursor_id,
514             3,
515             v_type.source_object_type_code,
516             80
517          );
518          DBMS_SQL.define_column (v_cursor_id, 4, v_type.start_date_active);
519          DBMS_SQL.define_column (v_cursor_id, 5, v_type.end_date_active);
520          DBMS_SQL.define_column (v_cursor_id, 6, v_type.description, 4000);
521          DBMS_SQL.define_column (v_cursor_id, 7, v_type.attribute1, 240);
522          DBMS_SQL.define_column (v_cursor_id, 8, v_type.attribute2, 150);
523          DBMS_SQL.define_column (v_cursor_id, 9, v_type.attribute3, 150);
524          DBMS_SQL.define_column (v_cursor_id, 10, v_type.attribute4, 150);
525          DBMS_SQL.define_column (v_cursor_id, 11, v_type.attribute5, 150);
526          DBMS_SQL.define_column (v_cursor_id, 12, v_type.attribute6, 150);
527          DBMS_SQL.define_column (v_cursor_id, 13, v_type.attribute7, 150);
528          DBMS_SQL.define_column (v_cursor_id, 14, v_type.attribute8, 150);
529          DBMS_SQL.define_column (v_cursor_id, 15, v_type.attribute9, 150);
530          DBMS_SQL.define_column (v_cursor_id, 16, v_type.attribute10, 150);
531          DBMS_SQL.define_column (v_cursor_id, 17, v_type.attribute11, 150);
532          DBMS_SQL.define_column (v_cursor_id, 18, v_type.attribute12, 150);
533          DBMS_SQL.define_column (v_cursor_id, 19, v_type.attribute13, 150);
534          DBMS_SQL.define_column (v_cursor_id, 20, v_type.attribute14, 150);
535          DBMS_SQL.define_column (v_cursor_id, 21, v_type.attribute15, 150);
536          DBMS_SQL.define_column (
537             v_cursor_id,
538             22,
539             v_type.attribute_category,
540             30
541          );
542          DBMS_SQL.define_column (
543             v_cursor_id,
544             23,
545             v_type.object_version_number
546          );
547          DBMS_SQL.define_column (v_cursor_id, 24, v_type.application_id);
548          v_dummy := DBMS_SQL.execute (v_cursor_id);
549          v_cnt := 0;
550 
551          LOOP
552             EXIT WHEN (DBMS_SQL.fetch_rows (v_cursor_id) = 0);
553             v_cnt := v_cnt + 1;
554             -- retrieve the rows from the buffer
555             DBMS_SQL.column_value (
556                v_cursor_id,
557                1,
558                v_type.task_template_group_id
559             );
560             DBMS_SQL.column_value (v_cursor_id, 2, v_type.template_group_name);
561             DBMS_SQL.column_value (
562                v_cursor_id,
563                3,
564                v_type.source_object_type_code
565             );
566             DBMS_SQL.column_value (v_cursor_id, 4, v_type.start_date_active);
567             DBMS_SQL.column_value (v_cursor_id, 5, v_type.end_date_active);
568             DBMS_SQL.column_value (v_cursor_id, 6, v_type.description);
569             DBMS_SQL.column_value (v_cursor_id, 7, v_type.attribute1);
570             DBMS_SQL.column_value (v_cursor_id, 8, v_type.attribute2);
571             DBMS_SQL.column_value (v_cursor_id, 9, v_type.attribute3);
572             DBMS_SQL.column_value (v_cursor_id, 10, v_type.attribute4);
573             DBMS_SQL.column_value (v_cursor_id, 11, v_type.attribute5);
574             DBMS_SQL.column_value (v_cursor_id, 12, v_type.attribute6);
575             DBMS_SQL.column_value (v_cursor_id, 13, v_type.attribute7);
576             DBMS_SQL.column_value (v_cursor_id, 14, v_type.attribute8);
577             DBMS_SQL.column_value (v_cursor_id, 15, v_type.attribute9);
578             DBMS_SQL.column_value (v_cursor_id, 16, v_type.attribute10);
579             DBMS_SQL.column_value (v_cursor_id, 17, v_type.attribute11);
580             DBMS_SQL.column_value (v_cursor_id, 18, v_type.attribute12);
581             DBMS_SQL.column_value (v_cursor_id, 19, v_type.attribute13);
582             DBMS_SQL.column_value (v_cursor_id, 20, v_type.attribute14);
583             DBMS_SQL.column_value (v_cursor_id, 21, v_type.attribute15);
584             DBMS_SQL.column_value (v_cursor_id, 22, v_type.attribute_category);
585             DBMS_SQL.column_value (
586                v_cursor_id,
587                23,
588                v_type.object_version_number
589             );
590             DBMS_SQL.column_value (v_cursor_id, 24, v_type.application_id);
591             --                     'v_type.task_template_group_id:'||
592             --                     to_char(v_type.task_template_group_id));
593             v_tbl (v_cnt) := v_type;
594          END LOOP;
595 
596          DBMS_SQL.close_cursor (v_cursor_id);
597       END IF;   --p_query_or_next_code;
598 
599       -- copy records to be returned back
600       x_total_retrieved := v_tbl.COUNT;
601 
602       -- if table is empty do nothing
603       IF (x_total_retrieved > 0)
604       THEN
605          IF (p_show_all = 'Y')
606          THEN   -- return all the rows
607             v_start := v_tbl.FIRST;
608             v_end := v_tbl.LAST;
609          ELSE
610             v_start := p_start_pointer;
611             v_end := p_start_pointer + p_rec_wanted - 1;
612 
613             IF (v_end > v_tbl.LAST)
614             THEN
615                v_end := v_tbl.LAST;
616             END IF;
617          END IF;
618 
619          FOR v_cnt IN v_start .. v_end
620          LOOP
621             x_task_template_group (v_cnt) := v_tbl (v_cnt);
622          END LOOP;
623       END IF;
624 
625       x_total_returned := x_task_template_group.COUNT;
626    EXCEPTION
627       WHEN fnd_api.g_exc_error
628       THEN
629          x_return_status := fnd_api.g_ret_sts_error;
630          fnd_msg_pub.count_and_get (
631             p_count => x_msg_count,
632             p_data => x_msg_data
633          );
634       WHEN fnd_api.g_exc_unexpected_error
635       THEN
636          x_return_status := fnd_api.g_ret_sts_unexp_error;
637          fnd_msg_pub.count_and_get (
638             p_count => x_msg_count,
639             p_data => x_msg_data
640          );
641       WHEN OTHERS
642       THEN
643          x_return_status := fnd_api.g_ret_sts_unexp_error;
644 
645          IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_unexp_error)
646          THEN
647             fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
648          END IF;
649 
650          fnd_msg_pub.count_and_get (
651             p_count => x_msg_count,
652             p_data => x_msg_data
653          );
654    END get_task_template_group;
655 END;