DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_K_HISTORY_PUB

Source


1 PACKAGE BODY OKC_K_HISTORY_PUB AS
2 /* $Header: OKCPHSTB.pls 120.0 2005/05/25 19:38:39 appldev noship $ */
3 	l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
4 
5   g_api_type            CONSTANT VARCHAR2(4) := '_PUB';
6 
7   PROCEDURE create_k_history(
8     p_api_version                  IN NUMBER,
9     p_init_msg_list                IN VARCHAR2 ,
10     x_return_status                OUT NOCOPY VARCHAR2,
11     x_msg_count                    OUT NOCOPY NUMBER,
12     x_msg_data                     OUT NOCOPY VARCHAR2,
13     p_hstv_rec                     IN  hstv_rec_type,
14     x_hstv_rec                     OUT NOCOPY  hstv_rec_type) IS
15 
16     l_hstv_rec          hstv_rec_type;
17     l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_K_HISTORY';
18     l_api_version       CONSTANT NUMBER   := 1.0;
19     l_return_status     VARCHAR2(1)               := OKC_API.G_RET_STS_SUCCESS;
20   BEGIN
21     -- call START_ACTIVITY to create savepoint, check compatibility
22     -- and initialize message list
23     l_return_status := OKC_API.START_ACTIVITY(
24                                         p_api_name      => l_api_name,
25                                         p_pkg_name      => g_pkg_name,
26                                         p_init_msg_list => p_init_msg_list,
27                                         l_api_version   => l_api_version,
28                                         p_api_version   => p_api_version,
29                                         p_api_type      => g_api_type,
30                                         x_return_status => x_return_status);
31 
32     -- check if activity started successfully
33     If (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
34        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
35     Elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
36        raise OKC_API.G_EXCEPTION_ERROR;
37     End If;
38 
39     -- call BEFORE user hook
40     l_hstv_rec := p_hstv_rec;
41     g_hstv_rec := l_hstv_rec;
42 
43     OKC_UTIL.call_user_hook(x_return_status     => x_return_status,
44                                          p_package_name => g_pkg_name,
45                                          p_procedure_name       => l_api_name,
46                                          p_before_after => 'B');
47 
48     -- check return status of user hook call
49     If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
50           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
51     Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
52           raise OKC_API.G_EXCEPTION_ERROR;
53     End If;
54 
55     -- get values back from user hook call
56     l_hstv_rec          := g_hstv_rec;
57     l_hstv_rec.id       := p_hstv_rec.id;
58     l_hstv_rec.object_version_number    := p_hstv_rec.object_version_number;
59 
60     -- call procedure in complex API
61     OKC_K_HISTORY_PVT.create_k_history(
62          p_api_version          => p_api_version,
63          p_init_msg_list        => p_init_msg_list,
64       x_return_status   => x_return_status,
65       x_msg_count       => x_msg_count,
66       x_msg_data        => x_msg_data,
67       p_hstv_rec                => l_hstv_rec,
68       x_hstv_rec                => x_hstv_rec);
69 
70     -- check return status
71     If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
72           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
73     Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
74           raise OKC_API.G_EXCEPTION_ERROR;
75     End If;
76 
77     -- call AFTER user hook
78     g_hstv_rec := x_hstv_rec;
79 
80     OKC_UTIL.call_user_hook(x_return_status     => x_return_status,
81                                          p_package_name => g_pkg_name,
82                                          p_procedure_name       => l_api_name,
83                                          p_before_after => 'A');
84 
85     -- check return status of the user hook call
86     If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
87           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
88     Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
89           raise OKC_API.G_EXCEPTION_ERROR;
90     End If;
91 
92     -- end activity
96     when OKC_API.G_EXCEPTION_ERROR then
93     OKC_API.END_ACTIVITY(       x_msg_count             => x_msg_count,
94                                                 x_msg_data              => x_msg_data);
95   EXCEPTION
97       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
98                                                 p_api_name  => l_api_name,
99                                                 p_pkg_name  => g_pkg_name,
100                                                 p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
101                                                 x_msg_count => x_msg_count,
102                                                 x_msg_data  => x_msg_data,
103                                                 p_api_type  => g_api_type);
104 
105     when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
106       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
107                                                 p_api_name  => l_api_name,
108                                                 p_pkg_name  => g_pkg_name,
109                                                 p_exc_name  =>
110 'OKC_API.G_RET_STS_UNEXP_ERROR',
111                                                 x_msg_count => x_msg_count,
112                                                 x_msg_data  => x_msg_data,
113                                                 p_api_type  => g_api_type);
114 
115     when OTHERS then
116       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
117                                                 p_api_name  => l_api_name,
118                                                 p_pkg_name  => g_pkg_name,
119                                                 p_exc_name  => 'OTHERS',
120                                                 x_msg_count => x_msg_count,
121                                                 x_msg_data  => x_msg_data,
122                                                 p_api_type  => g_api_type);
123 
124   END create_k_history;
125 
126   PROCEDURE create_k_history(
127     p_api_version                  IN NUMBER,
128     p_init_msg_list                IN VARCHAR2 ,
129     x_return_status                OUT NOCOPY VARCHAR2,
130     x_msg_count                    OUT NOCOPY NUMBER,
131     x_msg_data                     OUT NOCOPY VARCHAR2,
132     p_hstv_tbl                     IN  hstv_tbl_type,
133     x_hstv_tbl                     OUT NOCOPY  hstv_tbl_type) IS
134 
135     l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_K_HISTORY';
136     l_api_version       CONSTANT NUMBER   := 1.0;
137     l_return_status     VARCHAR2(1)               := OKC_API.G_RET_STS_SUCCESS;
138     l_overall_status VARCHAR2(1)                  := OKC_API.G_RET_STS_SUCCESS;
139     i                   NUMBER;
140   BEGIN
141     -- call START_ACTIVITY to create savepoint, check compatibility
142     -- and initialize message list
143     l_return_status := OKC_API.START_ACTIVITY(
144                                         p_api_name      => l_api_name,
145                                         p_pkg_name      => g_pkg_name,
146                                         p_init_msg_list => p_init_msg_list,
147                                         l_api_version   => l_api_version,
148                                         p_api_version   => p_api_version,
149                                         p_api_type      => g_api_type,
150                                         x_return_status => x_return_status);
151 
152     -- check if activity started successfully
153     If (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
154        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
155     Elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
156        raise OKC_API.G_EXCEPTION_ERROR;
157     End If;
158 
159     If (p_hstv_tbl.COUNT > 0) Then
160            i := p_hstv_tbl.FIRST;
161            LOOP
162                 -- call procedure in public API for a record
163                 OKC_K_HISTORY_PVT.create_k_history(
164                         p_api_version           => p_api_version,
165                         p_init_msg_list => p_init_msg_list,
166                         x_return_status         => x_return_status,
167                         x_msg_count             => x_msg_count,
168                         x_msg_data              => x_msg_data,
169                         p_hstv_rec              => p_hstv_tbl(i),
170                         x_hstv_rec              => x_hstv_tbl(i));
171 
172                 -- store the highest degree of error
173                 If x_return_status <> OKC_API.G_RET_STS_SUCCESS Then
174                    If l_overall_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
175                          l_overall_status := x_return_status;
176                    End If;
177                 End If;
178         EXIT WHEN (i = p_hstv_tbl.LAST);
179                 i := p_hstv_tbl.NEXT(i);
180            END LOOP;
181            -- return overall status
182            x_return_status := l_overall_status;
183     End If;
184 
185     If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
186           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
187     Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
188           raise OKC_API.G_EXCEPTION_ERROR;
189     End If;
190 
191     -- end activity
192     OKC_API.END_ACTIVITY(       x_msg_count             => x_msg_count,
193                                                 x_msg_data              => x_msg_data);
194   EXCEPTION
195     when OKC_API.G_EXCEPTION_ERROR then
196       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
197                                                 p_api_name  => l_api_name,
198                                                 p_pkg_name  => g_pkg_name,
199                                                 p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
200                                                 x_msg_count => x_msg_count,
201                                                 x_msg_data  => x_msg_data,
205       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
202                                                 p_api_type  => g_api_type);
203 
204     when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
206                                                 p_api_name  => l_api_name,
207                                                 p_pkg_name  => g_pkg_name,
208                                                 p_exc_name  =>
209 'OKC_API.G_RET_STS_UNEXP_ERROR',
210                                                 x_msg_count => x_msg_count,
211                                                 x_msg_data  => x_msg_data,
212                                                 p_api_type  => g_api_type);
213 
214     when OTHERS then
215       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
216                                                 p_api_name  => l_api_name,
217                                                 p_pkg_name  => g_pkg_name,
218                                                 p_exc_name  => 'OTHERS',
219                                                 x_msg_count => x_msg_count,
220                                                 x_msg_data  => x_msg_data,
221                                                 p_api_type  => g_api_type);
222 
223   END create_k_history;
224 
225 
226   PROCEDURE delete_k_history(
227     p_api_version                  IN NUMBER,
228     p_init_msg_list                IN VARCHAR2 ,
229     x_return_status                OUT NOCOPY VARCHAR2,
230     x_msg_count                    OUT NOCOPY NUMBER,
231     x_msg_data                     OUT NOCOPY VARCHAR2,
232     p_hstv_rec                     IN hstv_rec_type) IS
233 
234     l_hstv_rec          hstv_rec_type;
235     l_api_name          CONSTANT VARCHAR2(30) := 'DELETE_K_HISTORY';
236     l_api_version       CONSTANT NUMBER   := 1.0;
237     l_return_status     VARCHAR2(1)               := OKC_API.G_RET_STS_SUCCESS;
238   BEGIN
239     -- call START_ACTIVITY to create savepoint, check compatibility
240     -- and initialize message list
241     l_return_status := OKC_API.START_ACTIVITY(
242                                         p_api_name      => l_api_name,
243                                         p_pkg_name      => g_pkg_name,
244                                         p_init_msg_list => p_init_msg_list,
245                                         l_api_version   => l_api_version,
246                                         p_api_version   => p_api_version,
247                                         p_api_type      => g_api_type,
248                                         x_return_status => x_return_status);
249 
250     -- check if activity started successfully
251     If (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
252        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
253     Elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
254        raise OKC_API.G_EXCEPTION_ERROR;
255     End If;
256 
257     -- call BEFORE user hook
258     l_hstv_rec := p_hstv_rec;
259     g_hstv_rec := l_hstv_rec;
260 
261     OKC_UTIL.call_user_hook(x_return_status     => x_return_status,
262                                            p_package_name       => g_pkg_name,
263                                            p_procedure_name     => l_api_name,
264                                            p_before_after       => 'B');
265 
266     -- check return status of user hook call
267     If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
268           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
269     Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
270           raise OKC_API.G_EXCEPTION_ERROR;
271     End If;
272 
273     -- get values back from user hook call
274     l_hstv_rec          := g_hstv_rec;
275     l_hstv_rec.id       := p_hstv_rec.id;
276     l_hstv_rec.object_version_number    := p_hstv_rec.object_version_number;
277 
278     -- call procedure in complex API
279     OKC_K_HISTORY_PVT.delete_k_history(
280          p_api_version          => p_api_version,
281          p_init_msg_list        => p_init_msg_list,
282       x_return_status   => x_return_status,
283       x_msg_count       => x_msg_count,
284       x_msg_data        => x_msg_data,
285       p_hstv_rec                => l_hstv_rec);
286 
287     -- check return status
288     If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
289           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
290     Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
291           raise OKC_API.G_EXCEPTION_ERROR;
292     End If;
293 
294     OKC_UTIL.call_user_hook(x_return_status     => x_return_status,
295                                            p_package_name       => g_pkg_name,
296                                            p_procedure_name     => l_api_name,
297                                            p_before_after       => 'A');
298 
299     -- check return status of the user hook call
300     If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
301           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
302     Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
303           raise OKC_API.G_EXCEPTION_ERROR;
304     End If;
305 
306     -- end activity
307     OKC_API.END_ACTIVITY(       x_msg_count             => x_msg_count,
308                                                 x_msg_data              => x_msg_data);
309   EXCEPTION
310     when OKC_API.G_EXCEPTION_ERROR then
311       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
312                                                 p_api_name  => l_api_name,
313                                                 p_pkg_name  => g_pkg_name,
314                                                 p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
315                                                 x_msg_count => x_msg_count,
316                                                 x_msg_data  => x_msg_data,
317                                                 p_api_type  => g_api_type);
318 
322                                                 p_pkg_name  => g_pkg_name,
319     when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
320       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
321                                                 p_api_name  => l_api_name,
323                                                 p_exc_name  =>
324 'OKC_API.G_RET_STS_UNEXP_ERROR',
325                                                 x_msg_count => x_msg_count,
326                                                 x_msg_data  => x_msg_data,
327                                                 p_api_type  => g_api_type);
328 
329     when OTHERS then
330       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
331                                                 p_api_name  => l_api_name,
332                                                 p_pkg_name  => g_pkg_name,
333                                                 p_exc_name  => 'OTHERS',
334                                                 x_msg_count => x_msg_count,
335                                                 x_msg_data  => x_msg_data,
336                                                 p_api_type  => g_api_type);
337 
338   END delete_k_history;
339 
340   PROCEDURE delete_k_history(
341     p_api_version                  IN NUMBER,
342     p_init_msg_list                IN VARCHAR2 ,
343     x_return_status                OUT NOCOPY VARCHAR2,
344     x_msg_count                    OUT NOCOPY NUMBER,
345     x_msg_data                     OUT NOCOPY VARCHAR2,
346     p_hstv_tbl                     IN hstv_tbl_type) IS
347 
348     l_api_name          CONSTANT VARCHAR2(30) := 'DELETE_K_HISTORY';
349     l_api_version       CONSTANT NUMBER   := 1.0;
350     l_return_status     VARCHAR2(1)               := OKC_API.G_RET_STS_SUCCESS;
351     l_overall_status VARCHAR2(1)                  := OKC_API.G_RET_STS_SUCCESS;
352     i                   NUMBER;
353   BEGIN
354     -- call START_ACTIVITY to create savepoint, check compatibility
355     -- and initialize message list
356     l_return_status := OKC_API.START_ACTIVITY(
357                                         p_api_name      => l_api_name,
358                                         p_pkg_name      => g_pkg_name,
359                                         p_init_msg_list => p_init_msg_list,
360                                         l_api_version   => l_api_version,
361                                         p_api_version   => p_api_version,
362                                         p_api_type      => g_api_type,
363                                         x_return_status => x_return_status);
364 
365     -- check if activity started successfully
366     If (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
367        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
368     Elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
369        raise OKC_API.G_EXCEPTION_ERROR;
370     End If;
371 
372     If (p_hstv_tbl.COUNT > 0) Then
373            i := p_hstv_tbl.FIRST;
374            LOOP
375                 -- call procedure in complex API
376                 OKC_K_HISTORY_PVT.delete_k_history(
377                         p_api_version           => p_api_version,
378                         p_init_msg_list => p_init_msg_list,
379                         x_return_status         => x_return_status,
380                         x_msg_count             => x_msg_count,
381                         x_msg_data              => x_msg_data,
382                         p_hstv_rec              => p_hstv_tbl(i));
383 
384                 -- store the highest degree of error
385                 If x_return_status <> OKC_API.G_RET_STS_SUCCESS Then
386                    If l_overall_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
387                          l_overall_status := x_return_status;
388                    End If;
389                 End If;
390         EXIT WHEN (i = p_hstv_tbl.LAST);
391                 i := p_hstv_tbl.NEXT(i);
392            END LOOP;
393            -- return overall status
394            x_return_status := l_overall_status;
395     End If;
396 
397     If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
398           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
399     Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
400           raise OKC_API.G_EXCEPTION_ERROR;
401     End If;
402 
403     -- end activity
404     OKC_API.END_ACTIVITY(       x_msg_count             => x_msg_count,
405                                                 x_msg_data              => x_msg_data);
406   EXCEPTION
407     when OKC_API.G_EXCEPTION_ERROR then
408       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
409                                                 p_api_name  => l_api_name,
410                                                 p_pkg_name  => g_pkg_name,
411                                                 p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
412                                                 x_msg_count => x_msg_count,
413                                                 x_msg_data  => x_msg_data,
414                                                 p_api_type  => g_api_type);
415 
416     when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
417       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
418                                                 p_api_name  => l_api_name,
419                                                 p_pkg_name  => g_pkg_name,
420                                                 p_exc_name  =>
421 'OKC_API.G_RET_STS_UNEXP_ERROR',
422                                                 x_msg_count => x_msg_count,
423                                                 x_msg_data  => x_msg_data,
424                                                 p_api_type  => g_api_type);
425 
426     when OTHERS then
427       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
428                                                 p_api_name  => l_api_name,
429                                                 p_pkg_name  => g_pkg_name,
433                                                 p_api_type  => g_api_type);
430                                                 p_exc_name  => 'OTHERS',
431                                                 x_msg_count => x_msg_count,
432                                                 x_msg_data  => x_msg_data,
434 
435   END delete_k_history;
436 
437  PROCEDURE delete_all_rows(
438     p_api_version                  IN NUMBER,
439     p_init_msg_list                IN VARCHAR2 ,
440     x_return_status                OUT NOCOPY VARCHAR2,
441     x_msg_count                    OUT NOCOPY NUMBER,
442     x_msg_data                     OUT NOCOPY VARCHAR2,
443     p_chr_id                       IN NUMBER) IS
444 
445     l_api_name          CONSTANT VARCHAR2(30) := 'DELETE_ALL_ROWS';
446     l_api_version       CONSTANT NUMBER   := 1.0;
447     l_return_status     VARCHAR2(1)               := OKC_API.G_RET_STS_SUCCESS;
448   BEGIN
449     -- call procedure in complex API
450     OKC_K_HISTORY_PVT.delete_all_rows(
451          p_api_version          => p_api_version,
452          p_init_msg_list        => p_init_msg_list,
453       x_return_status   => x_return_status,
454       x_msg_count       => x_msg_count,
455       x_msg_data        => x_msg_data,
456       p_chr_id                => p_chr_id);
457 
458     -- check return status
459     If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
460           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
461     Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
462           raise OKC_API.G_EXCEPTION_ERROR;
463     End If;
464 
465   EXCEPTION
466     when OKC_API.G_EXCEPTION_ERROR then
467       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
468                                                 p_api_name  => l_api_name,
469                                                 p_pkg_name  => g_pkg_name,
470                                                 p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
471                                                 x_msg_count => x_msg_count,
472                                                 x_msg_data  => x_msg_data,
473                                                 p_api_type  => g_api_type);
474 
475     when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
476       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
477                                                 p_api_name  => l_api_name,
478                                                 p_pkg_name  => g_pkg_name,
479                                                 p_exc_name  =>
480 'OKC_API.G_RET_STS_UNEXP_ERROR',
481                                                 x_msg_count => x_msg_count,
482                                                 x_msg_data  => x_msg_data,
483                                                 p_api_type  => g_api_type);
484 
485     when OTHERS then
486       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
487                                                 p_api_name  => l_api_name,
488                                                 p_pkg_name  => g_pkg_name,
489                                                 p_exc_name  => 'OTHERS',
490                                                 x_msg_count => x_msg_count,
491                                                 x_msg_data  => x_msg_data,
492                                                 p_api_type  => g_api_type);
493 
494   END delete_all_rows;
495 
496   PROCEDURE validate_k_history(
497     p_api_version                  IN NUMBER,
498     p_init_msg_list                IN VARCHAR2 ,
499     x_return_status                OUT NOCOPY VARCHAR2,
500     x_msg_count                    OUT NOCOPY NUMBER,
501     x_msg_data                     OUT NOCOPY VARCHAR2,
502     p_hstv_rec                     IN hstv_rec_type) IS
503 
504     l_hstv_rec          hstv_rec_type;
505     l_api_name          CONSTANT VARCHAR2(30) := 'VALIDATE_K_HISTORY';
506     l_api_version       CONSTANT NUMBER   := 1.0;
507     l_return_status     VARCHAR2(1)               := OKC_API.G_RET_STS_SUCCESS;
508   BEGIN
509     -- call START_ACTIVITY to create savepoint, check compatibility
510     -- and initialize message list
511     l_return_status := OKC_API.START_ACTIVITY(
512                                         p_api_name      => l_api_name,
513                                         p_pkg_name      => g_pkg_name,
514                                         p_init_msg_list => p_init_msg_list,
515                                         l_api_version   => l_api_version,
516                                         p_api_version   => p_api_version,
517                                         p_api_type      => g_api_type,
518                                         x_return_status => x_return_status);
519 
520     -- check if activity started successfully
521     If (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
522        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
523     Elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
524        raise OKC_API.G_EXCEPTION_ERROR;
525     End If;
526 
527     -- call BEFORE user hook
528     l_hstv_rec := p_hstv_rec;
529     g_hstv_rec := l_hstv_rec;
530 
531     OKC_UTIL.call_user_hook(x_return_status     => x_return_status,
532                                            p_package_name       => g_pkg_name,
533                                            p_procedure_name     => l_api_name,
534                                            p_before_after       => 'B');
535 
536     -- check return status of user hook call
537     If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
538           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
539     Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
540           raise OKC_API.G_EXCEPTION_ERROR;
541     End If;
542 
543     -- get values back from user hook call
544     l_hstv_rec          := g_hstv_rec;
545     l_hstv_rec.id       := p_hstv_rec.id;
549     OKC_K_HISTORY_PVT.validate_k_history(
546     l_hstv_rec.object_version_number    := p_hstv_rec.object_version_number;
547 
548     -- call procedure in complex API
550          p_api_version          => p_api_version,
551          p_init_msg_list        => p_init_msg_list,
552       x_return_status   => x_return_status,
553       x_msg_count       => x_msg_count,
554       x_msg_data        => x_msg_data,
555       p_hstv_rec                => l_hstv_rec);
556 
557     -- check return status
558     If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
559           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
560     Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
561           raise OKC_API.G_EXCEPTION_ERROR;
562     End If;
563 
564     OKC_UTIL.call_user_hook(x_return_status     => x_return_status,
565                                            p_package_name       => g_pkg_name,
566                                            p_procedure_name     => l_api_name,
567                                            p_before_after       => 'A');
568 
569     -- check return status of the user hook call
570     If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
571           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
572     Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
573           raise OKC_API.G_EXCEPTION_ERROR;
574     End If;
575 
576     -- end activity
577     OKC_API.END_ACTIVITY(       x_msg_count             => x_msg_count,
578                                                 x_msg_data              => x_msg_data);
579   EXCEPTION
580     when OKC_API.G_EXCEPTION_ERROR then
581       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
582                                                 p_api_name  => l_api_name,
583                                                 p_pkg_name  => g_pkg_name,
584                                                 p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
585                                                 x_msg_count => x_msg_count,
586                                                 x_msg_data  => x_msg_data,
587                                                 p_api_type  => g_api_type);
588 
589     when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
590       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
591                                                 p_api_name  => l_api_name,
592                                                 p_pkg_name  => g_pkg_name,
593                                                 p_exc_name  =>
594 'OKC_API.G_RET_STS_UNEXP_ERROR',
595                                                 x_msg_count => x_msg_count,
596                                                 x_msg_data  => x_msg_data,
597                                                 p_api_type  => g_api_type);
598 
599     when OTHERS then
600       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
601                                                 p_api_name  => l_api_name,
602                                                 p_pkg_name  => g_pkg_name,
603                                                 p_exc_name  => 'OTHERS',
604                                                 x_msg_count => x_msg_count,
605                                                 x_msg_data  => x_msg_data,
606                                                 p_api_type  => g_api_type);
607 
608   END validate_k_history;
609 
610   PROCEDURE validate_k_history(
611     p_api_version                  IN NUMBER,
612     p_init_msg_list                IN VARCHAR2 ,
613     x_return_status                OUT NOCOPY VARCHAR2,
614     x_msg_count                    OUT NOCOPY NUMBER,
615     x_msg_data                     OUT NOCOPY VARCHAR2,
616     p_hstv_tbl                     IN hstv_tbl_type) IS
617 
618     l_api_name          CONSTANT VARCHAR2(30) := 'VALIDATE_K_HISTORY';
619     l_api_version       CONSTANT NUMBER   := 1.0;
620     l_return_status     VARCHAR2(1)               := OKC_API.G_RET_STS_SUCCESS;
621     l_overall_status VARCHAR2(1)                  := OKC_API.G_RET_STS_SUCCESS;
622     i                   NUMBER;
623   BEGIN
624     -- call START_ACTIVITY to create savepoint, check compatibility
625     -- and initialize message list
626     l_return_status := OKC_API.START_ACTIVITY(
627                                         p_api_name      => l_api_name,
628                                         p_pkg_name      => g_pkg_name,
629                                         p_init_msg_list => p_init_msg_list,
630                                         l_api_version   => l_api_version,
631                                         p_api_version   => p_api_version,
632                                         p_api_type      => g_api_type,
633                                         x_return_status => x_return_status);
634 
635     -- check if activity started successfully
636     If (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
637        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
638     Elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
639        raise OKC_API.G_EXCEPTION_ERROR;
640     End If;
641 
642     If (p_hstv_tbl.COUNT > 0) Then
643            i := p_hstv_tbl.FIRST;
644            LOOP
645                 -- call procedure in complex API
646                 OKC_K_HISTORY_PVT.validate_k_history(
647                         p_api_version           => p_api_version,
648                         p_init_msg_list => p_init_msg_list,
649                         x_return_status         => x_return_status,
650                         x_msg_count             => x_msg_count,
651                         x_msg_data              => x_msg_data,
652                         p_hstv_rec              => p_hstv_tbl(i));
653 
654                 -- store the highest degree of error
655                 If x_return_status <> OKC_API.G_RET_STS_SUCCESS Then
656                    If l_overall_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
657                          l_overall_status := x_return_status;
658                    End If;
659                 End If;
660         EXIT WHEN (i = p_hstv_tbl.LAST);
661                 i := p_hstv_tbl.NEXT(i);
662            END LOOP;
663            -- return overall status
664            x_return_status := l_overall_status;
665     End If;
666 
667     If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
668           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
669     Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
670           raise OKC_API.G_EXCEPTION_ERROR;
671     End If;
672 
673     -- end activity
674     OKC_API.END_ACTIVITY(       x_msg_count             => x_msg_count,
675                                                 x_msg_data              => x_msg_data);
676   EXCEPTION
677     when OKC_API.G_EXCEPTION_ERROR then
678       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
679                                                 p_api_name  => l_api_name,
680                                                 p_pkg_name  => g_pkg_name,
681                                                 p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
682                                                 x_msg_count => x_msg_count,
683                                                 x_msg_data  => x_msg_data,
684                                                 p_api_type  => g_api_type);
685 
686     when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
687       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
688                                                 p_api_name  => l_api_name,
689                                                 p_pkg_name  => g_pkg_name,
690                                                 p_exc_name  =>
691 'OKC_API.G_RET_STS_UNEXP_ERROR',
692                                                 x_msg_count => x_msg_count,
693                                                 x_msg_data  => x_msg_data,
694                                                 p_api_type  => g_api_type);
695 
696     when OTHERS then
697       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
698                                                 p_api_name  => l_api_name,
699                                                 p_pkg_name  => g_pkg_name,
700                                                 p_exc_name  => 'OTHERS',
701                                                 x_msg_count => x_msg_count,
702                                                 x_msg_data  => x_msg_data,
703                                                 p_api_type  => g_api_type);
704 
705   END validate_k_history;
706 
707   PROCEDURE add_language IS
708     l_api_name          CONSTANT VARCHAR2(30) := 'ADD_LANGUAGE';
709     l_api_version       CONSTANT NUMBER   := 1.0;
710     l_return_status     VARCHAR2(1)               := OKC_API.G_RET_STS_SUCCESS;
711     x_return_status     VARCHAR2(1)               := OKC_API.G_RET_STS_SUCCESS;
712   BEGIN
713 
714     -- call procedure in complex API
715     OKC_K_HISTORY_PVT.add_language;
716 
717   END add_language;
718 
719 END OKC_K_HISTORY_PUB;