DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_STD_ARTICLE_PUB

Source


1 package body okc_std_article_pub as
2 /* $Header: OKCPSAEB.pls 120.0 2005/05/25 18:32:21 appldev noship $ */
3 
4 	l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
5 
6 --migration procedures
7 --migrate std article
8 FUNCTION migrate_saev(p_saev_rec1 IN saev_rec_type,
9                         p_saev_rec2 IN saev_rec_type)
10     RETURN saev_rec_type IS
11     l_saev_rec saev_rec_type;
12   BEGIN
13     l_saev_rec.id                    := p_saev_rec1.id;
14     l_saev_rec.object_version_number := p_saev_rec1.object_version_number;
15     l_saev_rec.created_by            := p_saev_rec1.created_by;
16     l_saev_rec.creation_date         := p_saev_rec1.creation_date;
17     l_saev_rec.last_updated_by       := p_saev_rec1.last_updated_by;
18     l_saev_rec.last_update_date      := p_saev_rec1.last_update_date;
19     l_saev_rec.last_update_login     := p_saev_rec1.last_update_login;
20     l_saev_rec.sfwt_flag             := p_saev_rec2.sfwt_flag;
21     l_saev_rec.name                  := p_saev_rec2.name;
22     l_saev_rec.sbt_code              := p_saev_rec2.sbt_code;
23     l_saev_rec.attribute_category    := p_saev_rec2.attribute_category;
24     l_saev_rec.attribute1            := p_saev_rec2.attribute1;
25     l_saev_rec.attribute2            := p_saev_rec2.attribute2;
26     l_saev_rec.attribute3            := p_saev_rec2.attribute3;
27     l_saev_rec.attribute4            := p_saev_rec2.attribute4;
28     l_saev_rec.attribute5            := p_saev_rec2.attribute5;
29     l_saev_rec.attribute6            := p_saev_rec2.attribute6;
30     l_saev_rec.attribute7            := p_saev_rec2.attribute7;
31     l_saev_rec.attribute8            := p_saev_rec2.attribute8;
32     l_saev_rec.attribute9            := p_saev_rec2.attribute9;
33     l_saev_rec.attribute10           := p_saev_rec2.attribute10;
34     l_saev_rec.attribute11           := p_saev_rec2.attribute11;
35     l_saev_rec.attribute12           := p_saev_rec2.attribute12;
36     l_saev_rec.attribute13           := p_saev_rec2.attribute13;
37     l_saev_rec.attribute14           := p_saev_rec2.attribute14;
38     l_saev_rec.attribute15           := p_saev_rec2.attribute15;
39     RETURN (l_saev_rec);
40   END migrate_saev;
41 
42 --migrate std art classings
43 FUNCTION migrate_sacv(p_sacv_rec1 IN sacv_rec_type,
44                         p_sacv_rec2 IN sacv_rec_type)
45     RETURN sacv_rec_type IS
46     l_sacv_rec sacv_rec_type;
47   BEGIN
48     l_sacv_rec.id                    := p_sacv_rec1.id;
49     l_sacv_rec.object_version_number := p_sacv_rec1.object_version_number;
50     l_sacv_rec.created_by            := p_sacv_rec1.created_by;
51     l_sacv_rec.creation_date         := p_sacv_rec1.creation_date;
52     l_sacv_rec.last_updated_by       := p_sacv_rec1.last_updated_by;
53     l_sacv_rec.last_update_date      := p_sacv_rec1.last_update_date;
54     l_sacv_rec.last_update_login     := p_sacv_rec1.last_update_login;
55     l_sacv_rec.sat_code	             := p_sacv_rec2.sat_code;
56     l_sacv_rec.price_type            := p_sacv_rec2.price_type;
57     l_sacv_rec.scs_code              := p_sacv_rec2.scs_code;
58     RETURN (l_sacv_rec);
59   END migrate_sacv;
60 
61 --migrate std art incmpts
62 FUNCTION migrate_saiv(p_saiv_rec1 IN saiv_rec_type,
63                         p_saiv_rec2 IN saiv_rec_type)
64     RETURN saiv_rec_type IS
65     l_saiv_rec saiv_rec_type;
66   BEGIN
67     l_saiv_rec.object_version_number := p_saiv_rec1.object_version_number;
68     l_saiv_rec.created_by            := p_saiv_rec1.created_by;
69     l_saiv_rec.creation_date         := p_saiv_rec1.creation_date;
70     l_saiv_rec.last_updated_by       := p_saiv_rec1.last_updated_by;
71     l_saiv_rec.last_update_date      := p_saiv_rec1.last_update_date;
72     l_saiv_rec.last_update_login     := p_saiv_rec1.last_update_login;
73     l_saiv_rec.sae_id	             := p_saiv_rec2.sae_id;
74     l_saiv_rec.sae_id_for            := p_saiv_rec2.sae_id_for;
75     RETURN (l_saiv_rec);
76   END migrate_saiv;
77 
78 --migrate std article version
79 FUNCTION migrate_savv(p_savv_rec1 IN savv_rec_type,
80                         p_savv_rec2 IN savv_rec_type)
81     RETURN savv_rec_type IS
82     l_savv_rec savv_rec_type;
83   BEGIN
84     l_savv_rec.object_version_number := p_savv_rec1.object_version_number;
85     l_savv_rec.created_by            := p_savv_rec1.created_by;
86     l_savv_rec.creation_date         := p_savv_rec1.creation_date;
87     l_savv_rec.last_updated_by       := p_savv_rec1.last_updated_by;
88     l_savv_rec.last_update_date      := p_savv_rec1.last_update_date;
89     l_savv_rec.last_update_login     := p_savv_rec1.last_update_login;
90     l_savv_rec.sfwt_flag             := p_savv_rec2.sfwt_flag;
91     l_savv_rec.sae_id                := p_savv_rec2.sae_id;
92     l_savv_rec.sav_release           := p_savv_rec2.sav_release;
93     l_savv_rec.date_active           := p_savv_rec2.date_active;
94     l_savv_rec.text                  := p_savv_rec2.text;
95     l_savv_rec.short_description     := p_savv_rec2.short_description;
96     l_savv_rec.attribute_category    := p_savv_rec2.attribute_category;
97     l_savv_rec.attribute1            := p_savv_rec2.attribute1;
98     l_savv_rec.attribute2            := p_savv_rec2.attribute2;
99     l_savv_rec.attribute3            := p_savv_rec2.attribute3;
100     l_savv_rec.attribute4            := p_savv_rec2.attribute4;
101     l_savv_rec.attribute5            := p_savv_rec2.attribute5;
102     l_savv_rec.attribute6            := p_savv_rec2.attribute6;
103     l_savv_rec.attribute7            := p_savv_rec2.attribute7;
104     l_savv_rec.attribute8            := p_savv_rec2.attribute8;
105     l_savv_rec.attribute9            := p_savv_rec2.attribute9;
106     l_savv_rec.attribute10           := p_savv_rec2.attribute10;
107     l_savv_rec.attribute11           := p_savv_rec2.attribute11;
108     l_savv_rec.attribute12           := p_savv_rec2.attribute12;
109     l_savv_rec.attribute13           := p_savv_rec2.attribute13;
110     l_savv_rec.attribute14           := p_savv_rec2.attribute14;
111     l_savv_rec.attribute15           := p_savv_rec2.attribute15;
112     RETURN (l_savv_rec);
113   END migrate_savv;
114 
115 
116 --migrate std art set mems
117 FUNCTION migrate_samv(p_samv_rec1 IN samv_rec_type,
118                         p_samv_rec2 IN samv_rec_type)
119     RETURN samv_rec_type IS
120     l_samv_rec samv_rec_type;
121   BEGIN
122     l_samv_rec.object_version_number := p_samv_rec1.object_version_number;
123     l_samv_rec.created_by            := p_samv_rec1.created_by;
124     l_samv_rec.creation_date         := p_samv_rec1.creation_date;
125     l_samv_rec.last_updated_by       := p_samv_rec1.last_updated_by;
126     l_samv_rec.last_update_date      := p_samv_rec1.last_update_date;
127     l_samv_rec.last_update_login     := p_samv_rec1.last_update_login;
128     l_samv_rec.sae_id	             := p_samv_rec2.sae_id;
129     l_samv_rec.sat_code                := p_samv_rec2.sat_code;
130     RETURN (l_samv_rec);
131   END migrate_samv;
132 --Procedures pertaining to Setting up of a standard Article
133 
134  PROCEDURE add_language IS
135  BEGIN
136     OKC_STD_ARTICLE_PVT.add_language;
137  END add_language;
138 
139 --Procedures pertaining to Std Article Objects
140 
141  PROCEDURE Create_std_article(
142 	p_api_version 		IN NUMBER,
143 	p_init_msg_list 	IN VARCHAR2 ,
144 	x_return_status		OUT NOCOPY VARCHAR2,
145 	x_msg_count		OUT NOCOPY NUMBER,
146 	x_msg_data		OUT NOCOPY VARCHAR2,
147 	p_saev_rec		IN saev_rec_type,
148 	p_savv_tbl		IN savv_tbl_type,
149 	p_saiv_tbl		IN saiv_tbl_type,
150 	p_samv_tbl		IN samv_tbl_type,
151 	x_saev_rec		OUT NOCOPY saev_rec_type,
152 	x_savv_tbl		OUT NOCOPY savv_tbl_type,
153 	x_saiv_tbl		OUT NOCOPY saiv_tbl_type,
154 	x_samv_tbl		OUT NOCOPY samv_tbl_type) IS
155  BEGIN
156          x_return_status := OKC_API.G_RET_STS_SUCCESS;
157    	 OKC_STD_ARTICLE_PVT.create_std_article(
158             p_api_version         => p_api_version,
159             p_init_msg_list       => p_init_msg_list,
160             x_return_status       => x_return_status,
161             x_msg_count           => x_msg_count,
162             x_msg_data            => x_msg_data,
163 	    p_saev_rec	=>	 p_saev_rec,
164 	    p_savv_tbl	=>	 p_savv_tbl,
165 	    p_saiv_tbl	=>	 p_saiv_tbl,
166 	    p_samv_tbl	=>	 p_samv_tbl,
167 	    x_saev_rec	=>	 x_saev_rec,
168 	    x_savv_tbl	=>	 x_savv_tbl,
169 	    x_saiv_tbl	=>	 x_saiv_tbl,
170 	    x_samv_tbl	=>	 x_samv_tbl);
171 
172   EXCEPTION
173     WHEN OTHERS THEN
174       OKC_API.set_message(p_app_name      => g_app_name,
175                           p_msg_name      => g_unexpected_error,
176                           p_token1        => g_sqlcode_token,
177                           p_token1_value  => sqlcode,
178                           p_token2        => g_sqlerrm_token,
179                           p_token2_value  => sqlerrm);
180       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
181  END Create_std_article;
182 
183 
184 
185  PROCEDURE Update_std_article(
186 	p_api_version 		IN NUMBER,
187 	p_init_msg_list 	IN VARCHAR2 ,
188 	x_return_status		OUT NOCOPY VARCHAR2,
189 	x_msg_count		OUT NOCOPY NUMBER,
190 	x_msg_data		OUT NOCOPY VARCHAR2,
191 	p_saev_rec		IN saev_rec_type,
192 	p_savv_tbl		IN savv_tbl_type,
193 	p_saiv_tbl		IN saiv_tbl_type,
194 	p_samv_tbl		IN samv_tbl_type,
195 	x_saev_rec		OUT NOCOPY saev_rec_type,
196 	x_savv_tbl		OUT NOCOPY savv_tbl_type,
197 	x_saiv_tbl		OUT NOCOPY saiv_tbl_type,
198 	x_samv_tbl		OUT NOCOPY samv_tbl_type) IS
199  BEGIN
200          x_return_status := OKC_API.G_RET_STS_SUCCESS;
201    	 OKC_STD_ARTICLE_PVT.update_std_article(
202             p_api_version         => p_api_version,
203             p_init_msg_list       => p_init_msg_list,
204             x_return_status       => x_return_status,
205             x_msg_count           => x_msg_count,
206             x_msg_data            => x_msg_data,
207 	    p_saev_rec	=>	 p_saev_rec,
208 	    p_savv_tbl	=>	 p_savv_tbl,
209 	    p_saiv_tbl	=>	 p_saiv_tbl,
210 	    p_samv_tbl	=>	 p_samv_tbl,
211 	    x_saev_rec	=>	 x_saev_rec,
212 	    x_savv_tbl	=>	 x_savv_tbl,
213 	    x_saiv_tbl	=>	 x_saiv_tbl,
214 	    x_samv_tbl	=>	 x_samv_tbl);
215 
216   EXCEPTION
217     WHEN OTHERS THEN
218       OKC_API.set_message(p_app_name      => g_app_name,
219                           p_msg_name      => g_unexpected_error,
220                           p_token1        => g_sqlcode_token,
221                           p_token1_value  => sqlcode,
222                           p_token2        => g_sqlerrm_token,
223                           p_token2_value  => sqlerrm);
224       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
225  END Update_std_article;
226 
227 
228 
229  PROCEDURE Validate_std_article(
230 	p_api_version 		IN NUMBER,
231 	p_init_msg_list 		IN VARCHAR2 ,
232 	x_return_status		OUT NOCOPY VARCHAR2,
233 	x_msg_count		OUT NOCOPY NUMBER,
234 	x_msg_data		OUT NOCOPY VARCHAR2,
235 	p_saev_rec		IN saev_rec_type,
236 	p_savv_tbl		IN savv_tbl_type,
237 	p_saiv_tbl		IN saiv_tbl_type,
238 	p_samv_tbl		IN samv_tbl_type) IS
239   BEGIN
240          x_return_status := OKC_API.G_RET_STS_SUCCESS;
241    	 OKC_STD_ARTICLE_PVT.validate_std_article(
242             p_api_version         => p_api_version,
243             p_init_msg_list       => p_init_msg_list,
244             x_return_status       => x_return_status,
245             x_msg_count           => x_msg_count,
246             x_msg_data            => x_msg_data,
247 	    p_saev_rec	=>	 p_saev_rec,
248 	    p_savv_tbl	=>	 p_savv_tbl,
249 	    p_saiv_tbl	=>	 p_saiv_tbl,
250 	    p_samv_tbl	=>	 p_samv_tbl);
251 
252   EXCEPTION
253     WHEN OTHERS THEN
254       OKC_API.set_message(p_app_name      => g_app_name,
255                           p_msg_name      => g_unexpected_error,
256                           p_token1        => g_sqlcode_token,
257                           p_token1_value  => sqlcode,
258                           p_token2        => g_sqlerrm_token,
259                           p_token2_value  => sqlerrm);
260       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
261 
262  END Validate_std_article;
263 
264 
265 
266 PROCEDURE Create_std_article(
267 	p_api_version 		IN NUMBER,
268 	p_init_msg_list 		IN VARCHAR2 ,
269 	x_return_status		OUT NOCOPY VARCHAR2,
270 	x_msg_count		OUT NOCOPY NUMBER,
271 	x_msg_data		OUT NOCOPY VARCHAR2,
272 	p_saev_rec		IN saev_rec_type,
273 	x_saev_rec		OUT NOCOPY saev_rec_type) IS
274      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
275      l_api_name                     CONSTANT VARCHAR2(30) := 'CREATE_STD_ARTICLE';
276      l_saev_rec                     saev_rec_type := p_saev_rec;
277  BEGIN
278      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
279 	 				      p_init_msg_list,
280 		 			      '_PUB',
281                                               x_return_status);
282      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
283        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
284      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
285        raise OKC_API.G_EXCEPTION_ERROR;
286      END IF;
287      -- Call user hook for BEFORE
288      g_saev_rec := l_saev_rec;
289      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
290      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
291        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
292      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
293        raise OKC_API.G_EXCEPTION_ERROR;
294      END IF;
295      l_saev_rec := migrate_saev(l_saev_rec, g_saev_rec);
296 
297      OKC_STD_ARTICLE_PVT.create_std_article(
298                          p_api_version         => p_api_version,
299                          p_init_msg_list       => p_init_msg_list,
300                          x_return_status       => x_return_status,
301                          x_msg_count           => x_msg_count,
302                          x_msg_data            => x_msg_data,
303                          p_saev_rec            => l_saev_rec,
304                          x_saev_rec            => x_saev_rec);
305 
306      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
307        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
308      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
309        raise OKC_API.G_EXCEPTION_ERROR;
310      END IF;
311 
312      -- Call user hook for AFTER
313      g_saev_rec := x_saev_rec;
314      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
315      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
316        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
317      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
318        raise OKC_API.G_EXCEPTION_ERROR;
319      END IF;
320      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
321    EXCEPTION
322      WHEN OKC_API.G_EXCEPTION_ERROR THEN
323        x_return_status := OKC_API.HANDLE_EXCEPTIONS
324        (l_api_name,
325         G_PKG_NAME,
326         'OKC_API.G_RET_STS_ERROR',
327         x_msg_count,
328         x_msg_data,
329         '_PUB');
330      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
331        x_return_status := OKC_API.HANDLE_EXCEPTIONS
332        (l_api_name,
333         G_PKG_NAME,
334         'OKC_API.G_RET_STS_UNEXP_ERROR',
335         x_msg_count,
336         x_msg_data,
337         '_PUB');
338      WHEN OTHERS THEN
339        x_return_status := OKC_API.HANDLE_EXCEPTIONS
340        (l_api_name,
341         G_PKG_NAME,
342         'OTHERS',
343         x_msg_count,
344         x_msg_data,
345         '_PUB');
346  END Create_std_article;
347 
348 PROCEDURE Create_std_article(
349 	p_api_version 		IN NUMBER,
350 	p_init_msg_list 	IN VARCHAR2 ,
351 	x_return_status		OUT NOCOPY VARCHAR2,
352 	x_msg_count		OUT NOCOPY NUMBER,
353 	x_msg_data		OUT NOCOPY VARCHAR2,
354 	p_saev_tbl		IN saev_tbl_type,
355 	x_saev_tbl		OUT NOCOPY saev_tbl_type) IS
356      i				    NUMBER := 0;
357      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
358 
359  BEGIN
360      x_return_status := OKC_API.G_RET_STS_SUCCESS;
361      IF p_saev_tbl.COUNT > 0 THEN
362        i := p_saev_tbl.FIRST;
363        LOOP
364        		create_std_article(
365                          p_api_version         => p_api_version,
366                          p_init_msg_list       => p_init_msg_list,
367                          x_return_status       => x_return_status,
368                          x_msg_count           => x_msg_count,
369                          x_msg_data            => x_msg_data,
370                          p_saev_rec            => p_saev_tbl(i),
371                          x_saev_rec            => x_saev_tbl(i));
372        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
373          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
374            			x_return_status := l_return_status;
375            			raise G_EXCEPTION_HALT_PROCESSING;
376          		ELSE
377            			x_return_status := l_return_status;
378          		END IF;
379        		END IF;
380        		EXIT WHEN (i = p_saev_tbl.LAST);
381        		i := p_saev_tbl.NEXT(i);
382        END LOOP;
383      END IF;
384    EXCEPTION
385      WHEN G_EXCEPTION_HALT_PROCESSING THEN
386        NULL;
387      WHEN OTHERS THEN
388        OKC_API.set_message(p_app_name      => g_app_name,
389                            p_msg_name      => g_unexpected_error,
390                            p_token1        => g_sqlcode_token,
391                            p_token1_value  => sqlcode,
392                            p_token2        => g_sqlerrm_token,
393                            p_token2_value  => sqlerrm);
394        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
395 END Create_std_article;
396 
397 
398 PROCEDURE update_std_article(
399 	p_api_version 		IN NUMBER,
400 	p_init_msg_list 		IN VARCHAR2 ,
401 	x_return_status		OUT NOCOPY VARCHAR2,
402 	x_msg_count		OUT NOCOPY NUMBER,
403 	x_msg_data		OUT NOCOPY VARCHAR2,
404 	p_saev_rec		IN saev_rec_type,
405 	x_saev_rec		OUT NOCOPY saev_rec_type) IS
406      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
407      l_api_name                     CONSTANT VARCHAR2(30) := 'UPDATE_STD_ARTICLE';
408      l_saev_rec                     saev_rec_type := p_saev_rec;
409  BEGIN
410      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
411 	 				      p_init_msg_list,
412 		 			      '_PUB',
413                                               x_return_status);
414      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
415        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
416      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
417        raise OKC_API.G_EXCEPTION_ERROR;
418      END IF;
419      -- Call user hook for BEFORE
420      g_saev_rec := l_saev_rec;
421      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
422      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
423        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
424      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
425        raise OKC_API.G_EXCEPTION_ERROR;
426      END IF;
427      l_saev_rec := migrate_saev(l_saev_rec, g_saev_rec);
428 
429      OKC_STD_ARTICLE_PVT.update_std_article(
430                          p_api_version         => p_api_version,
431                          p_init_msg_list       => p_init_msg_list,
432                          x_return_status       => x_return_status,
433                          x_msg_count           => x_msg_count,
434                          x_msg_data            => x_msg_data,
435                          p_saev_rec            => l_saev_rec,
436                          x_saev_rec            => x_saev_rec);
437 
438      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
439        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
440      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
441        raise OKC_API.G_EXCEPTION_ERROR;
442      END IF;
443 
444      -- Call user hook for AFTER
445      g_saev_rec := x_saev_rec;
446      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
447      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
448        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
449      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
450        raise OKC_API.G_EXCEPTION_ERROR;
451      END IF;
452      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
453    EXCEPTION
454      WHEN OKC_API.G_EXCEPTION_ERROR THEN
455        x_return_status := OKC_API.HANDLE_EXCEPTIONS
456        (l_api_name,
457         G_PKG_NAME,
458         'OKC_API.G_RET_STS_ERROR',
459         x_msg_count,
460         x_msg_data,
461         '_PUB');
462      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
463        x_return_status := OKC_API.HANDLE_EXCEPTIONS
464        (l_api_name,
465         G_PKG_NAME,
466         'OKC_API.G_RET_STS_UNEXP_ERROR',
467         x_msg_count,
468         x_msg_data,
469         '_PUB');
470      WHEN OTHERS THEN
471        x_return_status := OKC_API.HANDLE_EXCEPTIONS
472        (l_api_name,
473         G_PKG_NAME,
474         'OTHERS',
475         x_msg_count,
476         x_msg_data,
477         '_PUB');
478  END update_std_article;
479 
480 
481 PROCEDURE update_std_article(
482 	p_api_version 		IN NUMBER,
483 	p_init_msg_list 		IN VARCHAR2 ,
484 	x_return_status		OUT NOCOPY VARCHAR2,
485 	x_msg_count		OUT NOCOPY NUMBER,
486 	x_msg_data		OUT NOCOPY VARCHAR2,
487 	p_saev_tbl		IN saev_tbl_type,
488 	x_saev_tbl		OUT NOCOPY saev_tbl_type) IS
489      i				    NUMBER := 0;
490      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
491 
492  BEGIN
493      x_return_status := OKC_API.G_RET_STS_SUCCESS;
494      IF p_saev_tbl.COUNT > 0 THEN
495        i := p_saev_tbl.FIRST;
496        LOOP
497        		update_std_article(
498                          p_api_version         => p_api_version,
499                          p_init_msg_list       => p_init_msg_list,
500                          x_return_status       => l_return_status,
501                          x_msg_count           => x_msg_count,
502                          x_msg_data            => x_msg_data,
503                          p_saev_rec            => p_saev_tbl(i),
504                          x_saev_rec            => x_saev_tbl(i));
505        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
506          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
507            			x_return_status := l_return_status;
508            			raise G_EXCEPTION_HALT_PROCESSING;
509          		ELSE
510            			x_return_status := l_return_status;
511          		END IF;
512        		END IF;
513        		EXIT WHEN (i = p_saev_tbl.LAST);
514        		i := p_saev_tbl.NEXT(i);
515        END LOOP;
516      END IF;
517    EXCEPTION
518      WHEN G_EXCEPTION_HALT_PROCESSING THEN
519        NULL;
520      WHEN OTHERS THEN
521        OKC_API.set_message(p_app_name      => g_app_name,
522                            p_msg_name      => g_unexpected_error,
523                            p_token1        => g_sqlcode_token,
524                            p_token1_value  => sqlcode,
525                            p_token2        => g_sqlerrm_token,
526                            p_token2_value  => sqlerrm);
527        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
528 END update_std_article;
529 
530 
531 
532 PROCEDURE delete_std_article(
533 	p_api_version 		IN NUMBER,
534 	p_init_msg_list 		IN VARCHAR2 ,
535 	x_return_status		OUT NOCOPY VARCHAR2,
536 	x_msg_count		OUT NOCOPY NUMBER,
537 	x_msg_data		OUT NOCOPY VARCHAR2,
538 	p_saev_rec		IN saev_rec_type) IS
539      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
540      l_api_name                     CONSTANT VARCHAR2(30) := 'DELETE_STD_ARTICLE';
541      l_saev_rec                     saev_rec_type := p_saev_rec;
542  BEGIN
543      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
544 	 				      p_init_msg_list,
545 		 			      '_PUB',
546                                               x_return_status);
547      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
548        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
549      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
550        raise OKC_API.G_EXCEPTION_ERROR;
551      END IF;
552      -- Call user hook for BEFORE
553      g_saev_rec := l_saev_rec;
554      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
555      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
556        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
557      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
558        raise OKC_API.G_EXCEPTION_ERROR;
559      END IF;
560      OKC_STD_ARTICLE_PVT.delete_std_article(
561                          p_api_version         => p_api_version,
562                          p_init_msg_list       => p_init_msg_list,
563                          x_return_status       => x_return_status,
564                          x_msg_count           => x_msg_count,
565                          x_msg_data            => x_msg_data,
566                          p_saev_rec            => l_saev_rec);
567 
568      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
569        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
570      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
571        raise OKC_API.G_EXCEPTION_ERROR;
572      END IF;
573 
574      -- Call user hook for AFTER
575      g_saev_rec := l_saev_rec;
576      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
577      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
578        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
579      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
580        raise OKC_API.G_EXCEPTION_ERROR;
581      END IF;
582      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
583    EXCEPTION
584      WHEN OKC_API.G_EXCEPTION_ERROR THEN
585        x_return_status := OKC_API.HANDLE_EXCEPTIONS
586        (l_api_name,
587         G_PKG_NAME,
588         'OKC_API.G_RET_STS_ERROR',
589         x_msg_count,
590         x_msg_data,
591         '_PUB');
592      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
593        x_return_status := OKC_API.HANDLE_EXCEPTIONS
594        (l_api_name,
595         G_PKG_NAME,
596         'OKC_API.G_RET_STS_UNEXP_ERROR',
597         x_msg_count,
598         x_msg_data,
599         '_PUB');
600      WHEN OTHERS THEN
601        x_return_status := OKC_API.HANDLE_EXCEPTIONS
602        (l_api_name,
603         G_PKG_NAME,
604         'OTHERS',
605         x_msg_count,
606         x_msg_data,
607         '_PUB');
608 END delete_std_article;
609 
610 PROCEDURE delete_std_article(
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_saev_tbl		IN saev_tbl_type) IS
617      i				    NUMBER := 0;
618      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
619 
620  BEGIN
621      x_return_status := OKC_API.G_RET_STS_SUCCESS;
622      IF p_saev_tbl.COUNT > 0 THEN
623        i := p_saev_tbl.FIRST;
624        LOOP
625        		delete_std_article(
626                          p_api_version         => p_api_version,
627                          p_init_msg_list       => p_init_msg_list,
628                          x_return_status       => l_return_status,
629                          x_msg_count           => x_msg_count,
630                          x_msg_data            => x_msg_data,
631                          p_saev_rec            => p_saev_tbl(i));
632        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
633          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
634            			x_return_status := l_return_status;
635            			raise G_EXCEPTION_HALT_PROCESSING;
636          		ELSE
637            			x_return_status := l_return_status;
638          		END IF;
639        		END IF;
640        		EXIT WHEN (i = p_saev_tbl.LAST);
641        		i := p_saev_tbl.NEXT(i);
642        END LOOP;
643      END IF;
644    EXCEPTION
645      WHEN G_EXCEPTION_HALT_PROCESSING THEN
646        NULL;
647      WHEN OTHERS THEN
648        OKC_API.set_message(p_app_name      => g_app_name,
649                            p_msg_name      => g_unexpected_error,
650                            p_token1        => g_sqlcode_token,
651                            p_token1_value  => sqlcode,
652                            p_token2        => g_sqlerrm_token,
653                            p_token2_value  => sqlerrm);
654        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
655  END delete_std_article;
656 
657 
658 PROCEDURE validate_std_article(
659 	p_api_version 		IN NUMBER,
660 	p_init_msg_list 		IN VARCHAR2 ,
661 	x_return_status		OUT NOCOPY VARCHAR2,
662 	x_msg_count		OUT NOCOPY NUMBER,
663 	x_msg_data		OUT NOCOPY VARCHAR2,
664 	p_saev_rec		IN saev_rec_type) IS
665  BEGIN
666 
667      OKC_STD_ARTICLE_PVT.validate_std_article(
668                          p_api_version         => p_api_version,
669                          p_init_msg_list       => p_init_msg_list,
670                          x_return_status       => x_return_status,
671                          x_msg_count           => x_msg_count,
672                          x_msg_data            => x_msg_data,
673                          p_saev_rec            => p_saev_rec);
674 
675 
676  END validate_std_article;
677 
678 PROCEDURE validate_std_article(
679 	p_api_version 		IN NUMBER,
680 	p_init_msg_list 		IN VARCHAR2 ,
681 	x_return_status		OUT NOCOPY VARCHAR2,
682 	x_msg_count		OUT NOCOPY NUMBER,
683 	x_msg_data		OUT NOCOPY VARCHAR2,
684 	p_saev_tbl		IN saev_tbl_type) IS
685      i				    NUMBER := 0;
686      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
687 
688  BEGIN
689      x_return_status := OKC_API.G_RET_STS_SUCCESS;
690      IF p_saev_tbl.COUNT > 0 THEN
691        i := p_saev_tbl.FIRST;
692        LOOP
693        		validate_std_article(
694                          p_api_version         => p_api_version,
695                          p_init_msg_list       => p_init_msg_list,
696                          x_return_status       => l_return_status,
697                          x_msg_count           => x_msg_count,
698                          x_msg_data            => x_msg_data,
699                          p_saev_rec            => p_saev_tbl(i));
700        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
701          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
702            			x_return_status := l_return_status;
703            			raise G_EXCEPTION_HALT_PROCESSING;
704          		ELSE
705            			x_return_status := l_return_status;
706          		END IF;
707        		END IF;
708        		EXIT WHEN (i = p_saev_tbl.LAST);
709        		i := p_saev_tbl.NEXT(i);
710        END LOOP;
711      END IF;
712    EXCEPTION
713      WHEN G_EXCEPTION_HALT_PROCESSING THEN
714        NULL;
715      WHEN OTHERS THEN
716        OKC_API.set_message(p_app_name      => g_app_name,
717                            p_msg_name      => g_unexpected_error,
718                            p_token1        => g_sqlcode_token,
719                            p_token1_value  => sqlcode,
720                            p_token2        => g_sqlerrm_token,
721                            p_token2_value  => sqlerrm);
722        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
723  END validate_std_article;
724 
725 
726 PROCEDURE lock_std_article(
727 	p_api_version 		IN NUMBER,
728 	p_init_msg_list 		IN VARCHAR2 ,
729 	x_return_status		OUT NOCOPY VARCHAR2,
730 	x_msg_count		OUT NOCOPY NUMBER,
731 	x_msg_data		OUT NOCOPY VARCHAR2,
732 	p_saev_rec		IN saev_rec_type) IS
733  BEGIN
734    	OKC_STD_ARTICLE_PVT.lock_std_article(
735                          p_api_version         => p_api_version,
736                          p_init_msg_list       => p_init_msg_list,
737                          x_return_status       => x_return_status,
738                          x_msg_count           => x_msg_count,
739                          x_msg_data            => x_msg_data,
740                          p_saev_rec            => p_saev_rec);
741 
742  END lock_std_article;
743 
744 
745 PROCEDURE lock_std_article(
746 	p_api_version 		IN NUMBER,
747 	p_init_msg_list 		IN VARCHAR2 ,
748 	x_return_status		OUT NOCOPY VARCHAR2,
749 	x_msg_count		OUT NOCOPY NUMBER,
750 	x_msg_data		OUT NOCOPY VARCHAR2,
751 	p_saev_tbl		IN saev_tbl_type) IS
752      i				    NUMBER := 0;
753      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
754 
755  BEGIN
756      x_return_status := OKC_API.G_RET_STS_SUCCESS;
757      IF p_saev_tbl.COUNT > 0 THEN
758        i := p_saev_tbl.FIRST;
759        LOOP
760        		lock_std_article(
761                          p_api_version         => p_api_version,
762                          p_init_msg_list       => p_init_msg_list,
763                          x_return_status       => l_return_status,
764                          x_msg_count           => x_msg_count,
765                          x_msg_data            => x_msg_data,
766                          p_saev_rec            => p_saev_tbl(i));
767        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
768          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
769            			x_return_status := l_return_status;
770            			raise G_EXCEPTION_HALT_PROCESSING;
771          		ELSE
772            			x_return_status := l_return_status;
773          		END IF;
774        		END IF;
775        		EXIT WHEN (i = p_saev_tbl.LAST);
776        		i := p_saev_tbl.NEXT(i);
777        END LOOP;
778      END IF;
779    EXCEPTION
780      WHEN G_EXCEPTION_HALT_PROCESSING THEN
781        NULL;
782      WHEN OTHERS THEN
783        OKC_API.set_message(p_app_name      => g_app_name,
784                            p_msg_name      => g_unexpected_error,
785                            p_token1        => g_sqlcode_token,
786                            p_token1_value  => sqlcode,
787                            p_token2        => g_sqlerrm_token,
788                            p_token2_value  => sqlerrm);
789        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
790  END lock_std_article;
791 
792 
793 PROCEDURE validate_name(
794 	p_api_version 		IN NUMBER,
795 	p_init_msg_list 	IN VARCHAR2 ,
796 	x_return_status		OUT NOCOPY VARCHAR2,
797 	x_msg_count		OUT NOCOPY NUMBER,
798 	x_msg_data		OUT NOCOPY VARCHAR2,
799 	p_saev_rec		IN saev_rec_type) IS
800 BEGIN
801 	OKC_STD_ARTICLE_PVT.Validate_Name(p_api_version         => p_api_version,
802                          		p_init_msg_list       => p_init_msg_list,
803                          		x_return_status       => x_return_status,
804                          		x_msg_count           => x_msg_count,
805                          		x_msg_data            => x_msg_data,
806                          		p_saev_rec            => p_saev_rec);
807 
808 End Validate_name;
809 
810 PROCEDURE validate_name(
811 	p_api_version 		IN NUMBER,
812 	p_init_msg_list         IN VARCHAR2 ,
813 	x_return_status		OUT NOCOPY VARCHAR2,
814 	x_msg_count		OUT NOCOPY NUMBER,
815 	x_msg_data		OUT NOCOPY VARCHAR2,
816 	p_saev_tbl		IN saev_tbl_type) IS
817 
818      i				    NUMBER := 0;
819      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
820 
821  BEGIN
822      x_return_status := OKC_API.G_RET_STS_SUCCESS;
823      IF p_saev_tbl.COUNT > 0 THEN
824        i := p_saev_tbl.FIRST;
825        LOOP
826        	      Validate_Name(p_api_version         => p_api_version,
827                          p_init_msg_list       => p_init_msg_list,
828                          x_return_status       => l_return_status,
829                          x_msg_count           => x_msg_count,
830                          x_msg_data            => x_msg_data,
831                          p_saev_rec            => p_saev_tbl(i));
832 
833        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
834          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
835            			x_return_status := l_return_status;
836            			raise G_EXCEPTION_HALT_PROCESSING;
837          		ELSE
838            			x_return_status := l_return_status;
839          		END IF;
840        		END IF;
841        		EXIT WHEN (i = p_saev_tbl.LAST);
842        		i := p_saev_tbl.NEXT(i);
843        END LOOP;
844      END IF;
845    EXCEPTION
846      WHEN G_EXCEPTION_HALT_PROCESSING THEN
847        NULL;
848      WHEN OTHERS THEN
849        OKC_API.set_message(p_app_name      => g_app_name,
850                            p_msg_name      => g_unexpected_error,
851                            p_token1        => g_sqlcode_token,
852                            p_token1_value  => sqlcode,
853                            p_token2        => g_sqlerrm_token,
854                            p_token2_value  => sqlerrm);
855        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
856 End Validate_name;
857 
858 PROCEDURE validate_no_k_attached(
859         p_saev_rec                     IN saev_rec_type,
860         x_return_status                OUT NOCOPY VARCHAR2) IS
861 BEGIN
862 	OKC_STD_ARTICLE_PVT.Validate_no_k_attached(
863                          		x_return_status       => x_return_status,
864                          		p_saev_rec            => p_saev_rec);
865 
866 End Validate_no_k_attached;
867 
868 PROCEDURE validate_no_k_attached(
869         p_saev_tbl	              IN saev_tbl_type,
870         x_return_status                OUT NOCOPY VARCHAR2) IS
871 
872      i				    NUMBER := 0;
873      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
874 
875  BEGIN
876      x_return_status := OKC_API.G_RET_STS_SUCCESS;
877      IF p_saev_tbl.COUNT > 0 THEN
878        i := p_saev_tbl.FIRST;
879        LOOP
880        	      Validate_no_k_attached(
881                          x_return_status       => l_return_status,
882                          p_saev_rec            => p_saev_tbl(i));
883 
884        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
885          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
886            			x_return_status := l_return_status;
887            			raise G_EXCEPTION_HALT_PROCESSING;
888          		ELSE
889            			x_return_status := l_return_status;
890          		END IF;
891        		END IF;
892        		EXIT WHEN (i = p_saev_tbl.LAST);
893        		i := p_saev_tbl.NEXT(i);
894        END LOOP;
895      END IF;
896    EXCEPTION
897      WHEN G_EXCEPTION_HALT_PROCESSING THEN
898        NULL;
899      WHEN OTHERS THEN
900        OKC_API.set_message(p_app_name      => g_app_name,
901                            p_msg_name      => g_unexpected_error,
902                            p_token1        => g_sqlcode_token,
903                            p_token1_value  => sqlcode,
904                            p_token2        => g_sqlerrm_token,
905                            p_token2_value  => sqlerrm);
906        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
907 
908 End Validate_no_k_attached;
909 
910 PROCEDURE Create_std_art_version(
911 	p_api_version 		IN NUMBER,
912 	p_init_msg_list 		IN VARCHAR2 ,
913 	x_return_status		OUT NOCOPY VARCHAR2,
914 	x_msg_count		OUT NOCOPY NUMBER,
915 	x_msg_data		OUT NOCOPY VARCHAR2,
916 	p_savv_rec		IN savv_rec_type,
917 	x_savv_rec		OUT NOCOPY savv_rec_type) IS
918       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
919      l_api_name                     CONSTANT VARCHAR2(30) := 'CREATE_STD_ART_VERSION';
920      l_savv_rec                     savv_rec_type := p_savv_rec;
921  BEGIN
922      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
923 	 				      p_init_msg_list,
924 		 			      '_PUB',
925                                               x_return_status);
926      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
927        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
928      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
929        raise OKC_API.G_EXCEPTION_ERROR;
930      END IF;
931      -- Call user hook for BEFORE
932      g_savv_rec := l_savv_rec;
933      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
934      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
935        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
936      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
937        raise OKC_API.G_EXCEPTION_ERROR;
938      END IF;
939      l_savv_rec := migrate_savv(l_savv_rec, g_savv_rec);
940 
941      OKC_STD_ARTICLE_PVT.create_std_art_version(
942                          p_api_version         => p_api_version,
943                          p_init_msg_list       => p_init_msg_list,
944                          x_return_status       => x_return_status,
945                          x_msg_count           => x_msg_count,
946                          x_msg_data            => x_msg_data,
947                          p_savv_rec            => l_savv_rec,
948                          x_savv_rec            => x_savv_rec);
949 
950      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
951        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
952      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
953        raise OKC_API.G_EXCEPTION_ERROR;
954      END IF;
955 
956      -- Call user hook for AFTER
957      g_savv_rec := x_savv_rec;
958      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
959      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
960        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
961      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
962        raise OKC_API.G_EXCEPTION_ERROR;
963      END IF;
964      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
965    EXCEPTION
966      WHEN OKC_API.G_EXCEPTION_ERROR THEN
967        x_return_status := OKC_API.HANDLE_EXCEPTIONS
968        (l_api_name,
969         G_PKG_NAME,
970         'OKC_API.G_RET_STS_ERROR',
971         x_msg_count,
972         x_msg_data,
973         '_PUB');
974      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
975        x_return_status := OKC_API.HANDLE_EXCEPTIONS
976        (l_api_name,
977         G_PKG_NAME,
978         'OKC_API.G_RET_STS_UNEXP_ERROR',
979         x_msg_count,
980         x_msg_data,
981         '_PUB');
982      WHEN OTHERS THEN
983        x_return_status := OKC_API.HANDLE_EXCEPTIONS
984        (l_api_name,
985         G_PKG_NAME,
986         'OTHERS',
987         x_msg_count,
988         x_msg_data,
989         '_PUB');
990  END Create_std_art_version;
991 
992 
993 PROCEDURE Create_std_art_version(
994 	p_api_version 		IN NUMBER,
995 	p_init_msg_list 		IN VARCHAR2 ,
996 	x_return_status		OUT NOCOPY VARCHAR2,
997 	x_msg_count		OUT NOCOPY NUMBER,
998 	x_msg_data		OUT NOCOPY VARCHAR2,
999 	p_savv_tbl		IN savv_tbl_type,
1000 	x_savv_tbl		OUT NOCOPY savv_tbl_type) IS
1001      i				    NUMBER := 0;
1002      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1003 
1004  BEGIN
1005      x_return_status := OKC_API.G_RET_STS_SUCCESS;
1006      IF p_savv_tbl.COUNT > 0 THEN
1007        i := p_savv_tbl.FIRST;
1008        LOOP
1009        		create_std_art_version(
1010                          p_api_version         => p_api_version,
1011                          p_init_msg_list       => p_init_msg_list,
1012                          x_return_status       => l_return_status,
1013                          x_msg_count           => x_msg_count,
1014                          x_msg_data            => x_msg_data,
1015                          p_savv_rec            => p_savv_tbl(i),
1016                          x_savv_rec            => x_savv_tbl(i));
1017        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1018          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1019            			x_return_status := l_return_status;
1020            			raise G_EXCEPTION_HALT_PROCESSING;
1021          		ELSE
1022            			x_return_status := l_return_status;
1023          		END IF;
1024        		END IF;
1025        		EXIT WHEN (i = p_savv_tbl.LAST);
1026        		i := p_savv_tbl.NEXT(i);
1027        END LOOP;
1028      END IF;
1029    EXCEPTION
1030      WHEN G_EXCEPTION_HALT_PROCESSING THEN
1031        NULL;
1032      WHEN OTHERS THEN
1033        OKC_API.set_message(p_app_name      => g_app_name,
1034                            p_msg_name      => g_unexpected_error,
1035                            p_token1        => g_sqlcode_token,
1036                            p_token1_value  => sqlcode,
1037                            p_token2        => g_sqlerrm_token,
1038                            p_token2_value  => sqlerrm);
1039        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1040 END Create_std_art_version;
1041 
1042 
1043 
1044 PROCEDURE update_std_art_version(
1045 	p_api_version 		IN NUMBER,
1046 	p_init_msg_list 		IN VARCHAR2 ,
1047 	x_return_status		OUT NOCOPY VARCHAR2,
1048 	x_msg_count		OUT NOCOPY NUMBER,
1049 	x_msg_data		OUT NOCOPY VARCHAR2,
1050 	p_savv_rec		IN savv_rec_type,
1051 	x_savv_rec		OUT NOCOPY savv_rec_type) IS
1052      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1053      l_api_name                     CONSTANT VARCHAR2(30) := 'UPDATE_STD_ART_VERSION';
1054      l_savv_rec                     savv_rec_type := p_savv_rec;
1055  BEGIN
1056      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1057 	 				      p_init_msg_list,
1058 		 			      '_PUB',
1059                                               x_return_status);
1060      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1061        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1062      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1063        raise OKC_API.G_EXCEPTION_ERROR;
1064      END IF;
1065      -- Call user hook for BEFORE
1066      g_savv_rec := l_savv_rec;
1067      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1068      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1069        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1070      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1071        raise OKC_API.G_EXCEPTION_ERROR;
1072      END IF;
1073      l_savv_rec := migrate_savv(l_savv_rec, g_savv_rec);
1074 
1075      OKC_STD_ARTICLE_PVT.update_std_art_version(
1076                          p_api_version         => p_api_version,
1077                          p_init_msg_list       => p_init_msg_list,
1078                          x_return_status       => x_return_status,
1079                          x_msg_count           => x_msg_count,
1080                          x_msg_data            => x_msg_data,
1081                          p_savv_rec            => l_savv_rec,
1082                          x_savv_rec            => x_savv_rec);
1083 
1084      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1085        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1086      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1087        raise OKC_API.G_EXCEPTION_ERROR;
1088      END IF;
1089 
1090      -- Call user hook for AFTER
1091      g_savv_rec := x_savv_rec;
1092      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1093      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1094        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1095      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1096        raise OKC_API.G_EXCEPTION_ERROR;
1097      END IF;
1098      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1099    EXCEPTION
1100      WHEN OKC_API.G_EXCEPTION_ERROR THEN
1101        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1102        (l_api_name,
1103         G_PKG_NAME,
1104         'OKC_API.G_RET_STS_ERROR',
1105         x_msg_count,
1106         x_msg_data,
1107         '_PUB');
1108      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1109        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1110        (l_api_name,
1111         G_PKG_NAME,
1112         'OKC_API.G_RET_STS_UNEXP_ERROR',
1113         x_msg_count,
1114         x_msg_data,
1115         '_PUB');
1116      WHEN OTHERS THEN
1117        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1118        (l_api_name,
1119         G_PKG_NAME,
1120         'OTHERS',
1121         x_msg_count,
1122         x_msg_data,
1123         '_PUB');
1124  END update_std_art_version;
1125 
1126 PROCEDURE update_std_art_version(
1127 	p_api_version 		IN NUMBER,
1128 	p_init_msg_list 		IN VARCHAR2 ,
1129 	x_return_status		OUT NOCOPY VARCHAR2,
1130 	x_msg_count		OUT NOCOPY NUMBER,
1131 	x_msg_data		OUT NOCOPY VARCHAR2,
1132 	p_savv_tbl		IN savv_tbl_type,
1133 	x_savv_tbl		OUT NOCOPY savv_tbl_type) IS
1134      i				    NUMBER := 0;
1135      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1136 
1137  BEGIN
1138      x_return_status := OKC_API.G_RET_STS_SUCCESS;
1139      IF p_savv_tbl.COUNT > 0 THEN
1140        i := p_savv_tbl.FIRST;
1141        LOOP
1142        		update_std_art_version(
1143                          p_api_version         => p_api_version,
1144                          p_init_msg_list       => p_init_msg_list,
1145                          x_return_status       => l_return_status,
1146                          x_msg_count           => x_msg_count,
1147                          x_msg_data            => x_msg_data,
1148                          p_savv_rec            => p_savv_tbl(i),
1149                          x_savv_rec            => x_savv_tbl(i));
1150        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1151          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1152            			x_return_status := l_return_status;
1153            			raise G_EXCEPTION_HALT_PROCESSING;
1154          		ELSE
1155            			x_return_status := l_return_status;
1156          		END IF;
1157        		END IF;
1158        		EXIT WHEN (i = p_savv_tbl.LAST);
1159        		i := p_savv_tbl.NEXT(i);
1160        END LOOP;
1161      END IF;
1162    EXCEPTION
1163      WHEN G_EXCEPTION_HALT_PROCESSING THEN
1164        NULL;
1165      WHEN OTHERS THEN
1166        OKC_API.set_message(p_app_name      => g_app_name,
1167                            p_msg_name      => g_unexpected_error,
1168                            p_token1        => g_sqlcode_token,
1169                            p_token1_value  => sqlcode,
1170                            p_token2        => g_sqlerrm_token,
1171                            p_token2_value  => sqlerrm);
1172        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1173  END update_std_art_version;
1174 
1175 
1176 PROCEDURE  lock_std_art_version(
1177 	p_api_version 		IN NUMBER,
1178 	p_init_msg_list 		IN VARCHAR2 ,
1179 	x_return_status		OUT NOCOPY VARCHAR2,
1180 	x_msg_count		OUT NOCOPY NUMBER,
1181 	x_msg_data		OUT NOCOPY VARCHAR2,
1182 	p_savv_rec		IN savv_rec_type) IS
1183  BEGIN
1184    	OKC_STD_ARTICLE_PVT.lock_std_art_version(
1185                          p_api_version         => p_api_version,
1186                          p_init_msg_list       => p_init_msg_list,
1187                          x_return_status       => x_return_status,
1188                          x_msg_count           => x_msg_count,
1189                          x_msg_data            => x_msg_data,
1190                          p_savv_rec            => p_savv_rec);
1191 
1192  END lock_std_art_version;
1193 
1194 PROCEDURE lock_std_art_version(
1195 	p_api_version 		IN NUMBER,
1196 	p_init_msg_list 		IN VARCHAR2 ,
1197 	x_return_status		OUT NOCOPY VARCHAR2,
1198 	x_msg_count		OUT NOCOPY NUMBER,
1199 	x_msg_data		OUT NOCOPY VARCHAR2,
1200 	p_savv_tbl		IN savv_tbl_type) IS
1201      i				    NUMBER := 0;
1202      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1203 
1204  BEGIN
1205      x_return_status := OKC_API.G_RET_STS_SUCCESS;
1206      IF p_savv_tbl.COUNT > 0 THEN
1207        i := p_savv_tbl.FIRST;
1208        LOOP
1209        		lock_std_art_version(
1210                          p_api_version         => p_api_version,
1211                          p_init_msg_list       => p_init_msg_list,
1212                          x_return_status       => l_return_status,
1213                          x_msg_count           => x_msg_count,
1214                          x_msg_data            => x_msg_data,
1215                          p_savv_rec            => p_savv_tbl(i));
1216        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1217          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1218            			x_return_status := l_return_status;
1219            			raise G_EXCEPTION_HALT_PROCESSING;
1220          		ELSE
1221            			x_return_status := l_return_status;
1222          		END IF;
1223        		END IF;
1224        		EXIT WHEN (i = p_savv_tbl.LAST);
1225        		i := p_savv_tbl.NEXT(i);
1226        END LOOP;
1227      END IF;
1228    EXCEPTION
1229      WHEN G_EXCEPTION_HALT_PROCESSING THEN
1230        NULL;
1231      WHEN OTHERS THEN
1232        OKC_API.set_message(p_app_name      => g_app_name,
1233                            p_msg_name      => g_unexpected_error,
1234                            p_token1        => g_sqlcode_token,
1235                            p_token1_value  => sqlcode,
1236                            p_token2        => g_sqlerrm_token,
1237                            p_token2_value  => sqlerrm);
1238        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1239  END lock_std_art_version;
1240 
1241 PROCEDURE delete_std_art_version(
1242 	p_api_version 		IN NUMBER,
1243 	p_init_msg_list 		IN VARCHAR2 ,
1244 	x_return_status		OUT NOCOPY VARCHAR2,
1245 	x_msg_count		OUT NOCOPY NUMBER,
1246 	x_msg_data		OUT NOCOPY VARCHAR2,
1247 	p_savv_rec		IN savv_rec_type) IS
1248      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1249      l_api_name                     CONSTANT VARCHAR2(30) := 'DELETE_STD_ART_VERSION';
1250      l_savv_rec                     savv_rec_type := p_savv_rec;
1251  BEGIN
1252      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1253 	 				      p_init_msg_list,
1254 		 			      '_PUB',
1255                                               x_return_status);
1256      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1257        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1258      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1259        raise OKC_API.G_EXCEPTION_ERROR;
1260      END IF;
1261      -- Call user hook for BEFORE
1262      g_savv_rec := l_savv_rec;
1263      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1264      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1265        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1266      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1267        raise OKC_API.G_EXCEPTION_ERROR;
1268      END IF;
1269      l_savv_rec := migrate_savv(l_savv_rec, g_savv_rec);
1270 
1271      OKC_STD_ARTICLE_PVT.delete_std_art_version(
1272                          p_api_version         => p_api_version,
1273                          p_init_msg_list       => p_init_msg_list,
1274                          x_return_status       => x_return_status,
1275                          x_msg_count           => x_msg_count,
1276                          x_msg_data            => x_msg_data,
1277                          p_savv_rec            => l_savv_rec);
1278 
1279      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1280        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1281      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1282        raise OKC_API.G_EXCEPTION_ERROR;
1283      END IF;
1284 
1285      -- Call user hook for AFTER
1286      g_savv_rec := l_savv_rec;
1287      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1288      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1289        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1290      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1291        raise OKC_API.G_EXCEPTION_ERROR;
1292      END IF;
1293      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1294    EXCEPTION
1295      WHEN OKC_API.G_EXCEPTION_ERROR THEN
1296        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1297        (l_api_name,
1298         G_PKG_NAME,
1299         'OKC_API.G_RET_STS_ERROR',
1300         x_msg_count,
1301         x_msg_data,
1302         '_PUB');
1303      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1304        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1305        (l_api_name,
1306         G_PKG_NAME,
1307         'OKC_API.G_RET_STS_UNEXP_ERROR',
1308         x_msg_count,
1309         x_msg_data,
1310         '_PUB');
1311      WHEN OTHERS THEN
1312        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1313        (l_api_name,
1314         G_PKG_NAME,
1315         'OTHERS',
1316         x_msg_count,
1317         x_msg_data,
1318         '_PUB');
1319  END delete_std_art_version;
1320 
1321 PROCEDURE delete_std_art_version(
1322 	p_api_version 		IN NUMBER,
1323 	p_init_msg_list 		IN VARCHAR2 ,
1324 	x_return_status		OUT NOCOPY VARCHAR2,
1325 	x_msg_count		OUT NOCOPY NUMBER,
1326 	x_msg_data		OUT NOCOPY VARCHAR2,
1327 	p_savv_tbl		IN savv_tbl_type) IS
1328      i				    NUMBER := 0;
1329      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1330 
1331  BEGIN
1332      x_return_status := OKC_API.G_RET_STS_SUCCESS;
1333      IF p_savv_tbl.COUNT > 0 THEN
1334        i := p_savv_tbl.FIRST;
1335        LOOP
1336        		delete_std_art_version(
1337                          p_api_version         => p_api_version,
1338                          p_init_msg_list       => p_init_msg_list,
1339                          x_return_status       => l_return_status,
1340                          x_msg_count           => x_msg_count,
1341                          x_msg_data            => x_msg_data,
1342                          p_savv_rec            => p_savv_tbl(i));
1343        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1344          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1345            			x_return_status := l_return_status;
1346            			raise G_EXCEPTION_HALT_PROCESSING;
1347          		ELSE
1348            			x_return_status := l_return_status;
1349          		END IF;
1350        		END IF;
1351        		EXIT WHEN (i = p_savv_tbl.LAST);
1352        		i := p_savv_tbl.NEXT(i);
1353        END LOOP;
1354      END IF;
1355    EXCEPTION
1356      WHEN G_EXCEPTION_HALT_PROCESSING THEN
1357        NULL;
1358      WHEN OTHERS THEN
1359        OKC_API.set_message(p_app_name      => g_app_name,
1360                            p_msg_name      => g_unexpected_error,
1361                            p_token1        => g_sqlcode_token,
1362                            p_token1_value  => sqlcode,
1363                            p_token2        => g_sqlerrm_token,
1364                            p_token2_value  => sqlerrm);
1365        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1366  END delete_std_art_version;
1367 
1368 PROCEDURE validate_std_art_version(
1369 	p_api_version 		IN NUMBER,
1370 	p_init_msg_list 		IN VARCHAR2 ,
1371 	x_return_status		OUT NOCOPY VARCHAR2,
1372 	x_msg_count		OUT NOCOPY NUMBER,
1373 	x_msg_data		OUT NOCOPY VARCHAR2,
1374 	p_savv_rec		IN savv_rec_type) IS
1375  BEGIN
1376 
1377      OKC_STD_ARTICLE_PVT.validate_std_art_version(
1378                          p_api_version         => p_api_version,
1379                          p_init_msg_list       => p_init_msg_list,
1380                          x_return_status       => x_return_status,
1381                          x_msg_count           => x_msg_count,
1382                          x_msg_data            => x_msg_data,
1383                          p_savv_rec            => p_savv_rec);
1384 
1385 
1386  END validate_std_art_version;
1387 
1388 PROCEDURE validate_std_art_version(
1389 	p_api_version 		IN NUMBER,
1390 	p_init_msg_list 		IN VARCHAR2 ,
1391 	x_return_status		OUT NOCOPY VARCHAR2,
1392 	x_msg_count		OUT NOCOPY NUMBER,
1393 	x_msg_data		OUT NOCOPY VARCHAR2,
1394 	p_savv_tbl		IN savv_tbl_type) IS
1395       i				    NUMBER := 0;
1396      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1397 
1398  BEGIN
1399      x_return_status := OKC_API.G_RET_STS_SUCCESS;
1400      IF p_savv_tbl.COUNT > 0 THEN
1401        i := p_savv_tbl.FIRST;
1402        LOOP
1403        		validate_std_art_version(
1404                          p_api_version         => p_api_version,
1405                          p_init_msg_list       => p_init_msg_list,
1406                          x_return_status       => l_return_status,
1407                          x_msg_count           => x_msg_count,
1408                          x_msg_data            => x_msg_data,
1409                          p_savv_rec            => p_savv_tbl(i));
1410        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1411          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1412            			x_return_status := l_return_status;
1413            			raise G_EXCEPTION_HALT_PROCESSING;
1414          		ELSE
1415            			x_return_status := l_return_status;
1416          		END IF;
1417        		END IF;
1418        		EXIT WHEN (i = p_savv_tbl.LAST);
1419        		i := p_savv_tbl.NEXT(i);
1420        END LOOP;
1421      END IF;
1422    EXCEPTION
1423      WHEN G_EXCEPTION_HALT_PROCESSING THEN
1424        NULL;
1425      WHEN OTHERS THEN
1426        OKC_API.set_message(p_app_name      => g_app_name,
1427                            p_msg_name      => g_unexpected_error,
1428                            p_token1        => g_sqlcode_token,
1429                            p_token1_value  => sqlcode,
1430                            p_token2        => g_sqlerrm_token,
1431                            p_token2_value  => sqlerrm);
1432        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1433  END validate_std_art_version;
1434 
1435 PROCEDURE validate_sav_release(
1436 	p_api_version 		IN NUMBER,
1437 	p_init_msg_list 	IN VARCHAR2 ,
1438 	x_return_status		OUT NOCOPY VARCHAR2,
1439 	x_msg_count		OUT NOCOPY NUMBER,
1440 	x_msg_data		OUT NOCOPY VARCHAR2,
1441 	p_savv_rec		IN savv_rec_type) IS
1442 BEGIN
1443 	OKC_STD_ARTICLE_PVT.Validate_sav_release(p_api_version         => p_api_version,
1444                          		p_init_msg_list       => p_init_msg_list,
1445                          		x_return_status       => x_return_status,
1446                          		x_msg_count           => x_msg_count,
1447                          		x_msg_data            => x_msg_data,
1448                          		p_savv_rec            => p_savv_rec);
1449 
1450 End Validate_sav_release;
1451 
1452 PROCEDURE validate_sav_release(
1453 	p_api_version 		IN NUMBER,
1454 	p_init_msg_list         IN VARCHAR2 ,
1455 	x_return_status		OUT NOCOPY VARCHAR2,
1456 	x_msg_count		OUT NOCOPY NUMBER,
1457 	x_msg_data		OUT NOCOPY VARCHAR2,
1458 	p_savv_tbl		IN savv_tbl_type) IS
1459 
1460      i				    NUMBER := 0;
1461      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1462 
1463  BEGIN
1464      x_return_status := OKC_API.G_RET_STS_SUCCESS;
1465      IF p_savv_tbl.COUNT > 0 THEN
1466        i := p_savv_tbl.FIRST;
1467        LOOP
1468        	      Validate_sav_release(p_api_version         => p_api_version,
1469                          p_init_msg_list       => p_init_msg_list,
1470                          x_return_status       => l_return_status,
1471                          x_msg_count           => x_msg_count,
1472                          x_msg_data            => x_msg_data,
1473                          p_savv_rec            => p_savv_tbl(i));
1474 
1475        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1476          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1477            			x_return_status := l_return_status;
1478            			raise G_EXCEPTION_HALT_PROCESSING;
1479          		ELSE
1480            			x_return_status := l_return_status;
1481          		END IF;
1482        		END IF;
1483        		EXIT WHEN (i = p_savv_tbl.LAST);
1484        		i := p_savv_tbl.NEXT(i);
1485        END LOOP;
1486      END IF;
1487    EXCEPTION
1488      WHEN G_EXCEPTION_HALT_PROCESSING THEN
1489        NULL;
1490      WHEN OTHERS THEN
1491        OKC_API.set_message(p_app_name      => g_app_name,
1492                            p_msg_name      => g_unexpected_error,
1493                            p_token1        => g_sqlcode_token,
1494                            p_token1_value  => sqlcode,
1495                            p_token2        => g_sqlerrm_token,
1496                            p_token2_value  => sqlerrm);
1497        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1498 End Validate_sav_release;
1499 
1500 
1501 PROCEDURE validate_date_active(
1502 	p_api_version 		IN NUMBER,
1503 	p_init_msg_list 	IN VARCHAR2 ,
1504 	x_return_status		OUT NOCOPY VARCHAR2,
1505 	x_msg_count		OUT NOCOPY NUMBER,
1506 	x_msg_data		OUT NOCOPY VARCHAR2,
1507 	p_savv_rec		IN savv_rec_type) IS
1508 BEGIN
1509 	OKC_STD_ARTICLE_PVT.Validate_date_active(p_api_version         => p_api_version,
1510                          		p_init_msg_list       => p_init_msg_list,
1511                          		x_return_status       => x_return_status,
1512                          		x_msg_count           => x_msg_count,
1513                          		x_msg_data            => x_msg_data,
1514                          		p_savv_rec            => p_savv_rec);
1515 
1516 End Validate_date_active;
1517 
1518 PROCEDURE validate_date_active(
1519 	p_api_version 		IN NUMBER,
1520 	p_init_msg_list         IN VARCHAR2 ,
1521 	x_return_status		OUT NOCOPY VARCHAR2,
1522 	x_msg_count		OUT NOCOPY NUMBER,
1523 	x_msg_data		OUT NOCOPY VARCHAR2,
1524 	p_savv_tbl		IN savv_tbl_type) IS
1525 
1526      i				    NUMBER := 0;
1527      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1528 
1529  BEGIN
1530      x_return_status := OKC_API.G_RET_STS_SUCCESS;
1531      IF p_savv_tbl.COUNT > 0 THEN
1532        i := p_savv_tbl.FIRST;
1533        LOOP
1534        	      Validate_date_active(p_api_version   => p_api_version,
1535                          p_init_msg_list       => p_init_msg_list,
1536                          x_return_status       => l_return_status,
1537                          x_msg_count           => x_msg_count,
1538                          x_msg_data            => x_msg_data,
1539                          p_savv_rec            => p_savv_tbl(i));
1540 
1541        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1542          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1543            			x_return_status := l_return_status;
1544            			raise G_EXCEPTION_HALT_PROCESSING;
1545          		ELSE
1546            			x_return_status := l_return_status;
1547          		END IF;
1548        		END IF;
1549        		EXIT WHEN (i = p_savv_tbl.LAST);
1550        		i := p_savv_tbl.NEXT(i);
1551        END LOOP;
1552      END IF;
1553    EXCEPTION
1554      WHEN G_EXCEPTION_HALT_PROCESSING THEN
1555        NULL;
1556      WHEN OTHERS THEN
1557        OKC_API.set_message(p_app_name      => g_app_name,
1558                            p_msg_name      => g_unexpected_error,
1559                            p_token1        => g_sqlcode_token,
1560                            p_token1_value  => sqlcode,
1561                            p_token2        => g_sqlerrm_token,
1562                            p_token2_value  => sqlerrm);
1563        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1564 End Validate_date_active;
1565 
1566 
1567 PROCEDURE validate_updatable(
1568 	p_api_version 		IN NUMBER,
1569 	p_init_msg_list 	IN VARCHAR2 ,
1570 	x_return_status		OUT NOCOPY VARCHAR2,
1571 	x_msg_count		OUT NOCOPY NUMBER,
1572 	x_msg_data		OUT NOCOPY VARCHAR2,
1573 	p_savv_rec		IN savv_rec_type) IS
1574 BEGIN
1575 	OKC_STD_ARTICLE_PVT.Validate_updatable(p_api_version         => p_api_version,
1576                          		p_init_msg_list       => p_init_msg_list,
1577                          		x_return_status       => x_return_status,
1578                          		x_msg_count           => x_msg_count,
1579                          		x_msg_data            => x_msg_data,
1580                          		p_savv_rec            => p_savv_rec);
1581 
1582 End Validate_Updatable;
1583 
1584 PROCEDURE validate_Updatable(
1585 	p_api_version 		IN NUMBER,
1586 	p_init_msg_list         IN VARCHAR2 ,
1587 	x_return_status		OUT NOCOPY VARCHAR2,
1588 	x_msg_count		OUT NOCOPY NUMBER,
1589 	x_msg_data		OUT NOCOPY VARCHAR2,
1590 	p_savv_tbl		IN savv_tbl_type) IS
1591 
1592      i				    NUMBER := 0;
1593      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1594 
1595  BEGIN
1596      x_return_status := OKC_API.G_RET_STS_SUCCESS;
1597      IF p_savv_tbl.COUNT > 0 THEN
1598        i := p_savv_tbl.FIRST;
1599        LOOP
1600        	      Validate_Updatable(p_api_version         => p_api_version,
1601                          p_init_msg_list       => p_init_msg_list,
1602                          x_return_status       => l_return_status,
1603                          x_msg_count           => x_msg_count,
1604                          x_msg_data            => x_msg_data,
1605                          p_savv_rec            => p_savv_tbl(i));
1606 
1607        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1608          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1609            			x_return_status := l_return_status;
1610            			raise G_EXCEPTION_HALT_PROCESSING;
1611          		ELSE
1612            			x_return_status := l_return_status;
1613          		END IF;
1614        		END IF;
1615        		EXIT WHEN (i = p_savv_tbl.LAST);
1616        		i := p_savv_tbl.NEXT(i);
1617        END LOOP;
1618      END IF;
1619    EXCEPTION
1620      WHEN G_EXCEPTION_HALT_PROCESSING THEN
1621        NULL;
1622      WHEN OTHERS THEN
1623        OKC_API.set_message(p_app_name      => g_app_name,
1624                            p_msg_name      => g_unexpected_error,
1625                            p_token1        => g_sqlcode_token,
1626                            p_token1_value  => sqlcode,
1627                            p_token2        => g_sqlerrm_token,
1628                            p_token2_value  => sqlerrm);
1629        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1630 
1631 End Validate_Updatable;
1632 
1633 PROCEDURE validate_no_k_attached(
1634         p_savv_rec                     IN savv_rec_type,
1635         x_return_status                OUT NOCOPY VARCHAR2) IS
1636 BEGIN
1637 	OKC_STD_ARTICLE_PVT.Validate_no_k_attached(
1638                          		x_return_status       => x_return_status,
1639                          		p_savv_rec            => p_savv_rec);
1640 
1641 End Validate_no_k_attached;
1642 
1643 PROCEDURE validate_no_k_attached(
1644         p_savv_tbl	              IN savv_tbl_type,
1645         x_return_status                OUT NOCOPY VARCHAR2) IS
1646 
1647      i				    NUMBER := 0;
1648      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1649 
1650  BEGIN
1651      x_return_status := OKC_API.G_RET_STS_SUCCESS;
1652      IF p_savv_tbl.COUNT > 0 THEN
1653        i := p_savv_tbl.FIRST;
1654        LOOP
1655        	      Validate_no_k_attached(
1656                          x_return_status       => l_return_status,
1657                          p_savv_rec            => p_savv_tbl(i));
1658 
1659        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1660          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1661            			x_return_status := l_return_status;
1662            			raise G_EXCEPTION_HALT_PROCESSING;
1663          		ELSE
1664            			x_return_status := l_return_status;
1665          		END IF;
1666        		END IF;
1667        		EXIT WHEN (i = p_savv_tbl.LAST);
1668        		i := p_savv_tbl.NEXT(i);
1669        END LOOP;
1670      END IF;
1671    EXCEPTION
1672      WHEN G_EXCEPTION_HALT_PROCESSING THEN
1673        NULL;
1674      WHEN OTHERS THEN
1675        OKC_API.set_message(p_app_name      => g_app_name,
1676                            p_msg_name      => g_unexpected_error,
1677                            p_token1        => g_sqlcode_token,
1678                            p_token1_value  => sqlcode,
1679                            p_token2        => g_sqlerrm_token,
1680                            p_token2_value  => sqlerrm);
1681        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1682 
1683 End Validate_no_k_attached;
1684 
1685 PROCEDURE validate_latest(
1686         p_savv_rec                     IN savv_rec_type,
1687         x_return_status                OUT NOCOPY VARCHAR2) IS
1688 BEGIN
1689 	OKC_STD_ARTICLE_PVT.Validate_latest(
1690                          		x_return_status       => x_return_status,
1691                          		p_savv_rec            => p_savv_rec);
1692 
1693 End Validate_latest;
1694 
1695 PROCEDURE validate_latest(
1696         p_savv_tbl	              IN savv_tbl_type,
1697         x_return_status                OUT NOCOPY VARCHAR2) IS
1698 
1699      i				    NUMBER := 0;
1700      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1701 
1702  BEGIN
1703      x_return_status := OKC_API.G_RET_STS_SUCCESS;
1704      IF p_savv_tbl.COUNT > 0 THEN
1705        i := p_savv_tbl.FIRST;
1706        LOOP
1707        	      Validate_latest(
1708                          x_return_status       => l_return_status,
1709                          p_savv_rec            => p_savv_tbl(i));
1710 
1711        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1712          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1713            			x_return_status := l_return_status;
1714            			raise G_EXCEPTION_HALT_PROCESSING;
1715          		ELSE
1716            			x_return_status := l_return_status;
1717          		END IF;
1718        		END IF;
1719        		EXIT WHEN (i = p_savv_tbl.LAST);
1720        		i := p_savv_tbl.NEXT(i);
1721        END LOOP;
1722      END IF;
1723    EXCEPTION
1724      WHEN G_EXCEPTION_HALT_PROCESSING THEN
1725        NULL;
1726      WHEN OTHERS THEN
1727        OKC_API.set_message(p_app_name      => g_app_name,
1728                            p_msg_name      => g_unexpected_error,
1729                            p_token1        => g_sqlcode_token,
1730                            p_token1_value  => sqlcode,
1731                            p_token2        => g_sqlerrm_token,
1732                            p_token2_value  => sqlerrm);
1733        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1734 
1735 End Validate_latest;
1736 
1737 /*
1738 PROCEDURE validate_short_description(
1739 	p_api_version 		IN NUMBER,
1740 	p_init_msg_list 	IN VARCHAR2 ,
1741 	x_return_status		OUT NOCOPY VARCHAR2,
1742 	x_msg_count		OUT NOCOPY NUMBER,
1743 	x_msg_data		OUT NOCOPY VARCHAR2,
1744 	p_savv_rec		IN savv_rec_type) IS
1745 BEGIN
1746 	OKC_STD_ARTICLE_PVT.Validate_short_description(p_api_version         => p_api_version,
1747                          		p_init_msg_list       => p_init_msg_list,
1748                          		x_return_status       => x_return_status,
1749                          		x_msg_count           => x_msg_count,
1750                          		x_msg_data            => x_msg_data,
1751                          		p_savv_rec            => p_savv_rec);
1752 
1753 End Validate_short_description;
1754 
1755 PROCEDURE validate_short_description(
1756 	p_api_version 		IN NUMBER,
1757 	p_init_msg_list         IN VARCHAR2 ,
1758 	x_return_status		OUT NOCOPY VARCHAR2,
1759 	x_msg_count		OUT NOCOPY NUMBER,
1760 	x_msg_data		OUT NOCOPY VARCHAR2,
1761 	p_savv_tbl		IN savv_tbl_type) IS
1762 
1763      i				    NUMBER := 0;
1764      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1765 
1766  BEGIN
1767      x_return_status := OKC_API.G_RET_STS_SUCCESS;
1768      IF p_savv_tbl.COUNT > 0 THEN
1769        i := p_savv_tbl.FIRST;
1770        LOOP
1771        	      Validate_short_description(p_api_version         => p_api_version,
1772                          p_init_msg_list       => p_init_msg_list,
1773                          x_return_status       => l_return_status,
1774                          x_msg_count           => x_msg_count,
1775                          x_msg_data            => x_msg_data,
1776                          p_savv_rec            => p_savv_tbl(i));
1777 
1778        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1779          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1780            			x_return_status := l_return_status;
1781            			raise G_EXCEPTION_HALT_PROCESSING;
1782          		ELSE
1783            			x_return_status := l_return_status;
1784          		END IF;
1785        		END IF;
1786        		EXIT WHEN (i = p_savv_tbl.LAST);
1787        		i := p_savv_tbl.NEXT(i);
1788        END LOOP;
1789      END IF;
1790    EXCEPTION
1791      WHEN G_EXCEPTION_HALT_PROCESSING THEN
1792        NULL;
1793      WHEN OTHERS THEN
1794        OKC_API.set_message(p_app_name      => g_app_name,
1795                            p_msg_name      => g_unexpected_error,
1796                            p_token1        => g_sqlcode_token,
1797                            p_token1_value  => sqlcode,
1798                            p_token2        => g_sqlerrm_token,
1799                            p_token2_value  => sqlerrm);
1800        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1801 End Validate_short_description;
1802 */
1803 
1804 PROCEDURE Create_std_art_incmpt(
1805 	p_api_version 		IN NUMBER,
1806 	p_init_msg_list 		IN VARCHAR2 ,
1807 	x_return_status		OUT NOCOPY VARCHAR2,
1808 	x_msg_count		OUT NOCOPY NUMBER,
1809 	x_msg_data		OUT NOCOPY VARCHAR2,
1810 	p_saiv_rec		IN saiv_rec_type,
1811 	x_saiv_rec		OUT NOCOPY saiv_rec_type) IS
1812      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1813      l_api_name                     CONSTANT VARCHAR2(30) := 'CREATE_STD_ART_INCMPT';
1814      l_saiv_rec                     saiv_rec_type := p_saiv_rec;
1815  BEGIN
1816      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1817 	 				      p_init_msg_list,
1818 		 			      '_PUB',
1819                                               x_return_status);
1820      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1821        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1822      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1823        raise OKC_API.G_EXCEPTION_ERROR;
1824      END IF;
1825      -- Call user hook for BEFORE
1826      g_saiv_rec := l_saiv_rec;
1827      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1828      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1829        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1830      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1831        raise OKC_API.G_EXCEPTION_ERROR;
1832      END IF;
1833      l_saiv_rec := migrate_saiv(l_saiv_rec, g_saiv_rec);
1834 
1835      OKC_STD_ARTICLE_PVT.create_std_art_incmpt(
1836                          p_api_version         => p_api_version,
1837                          p_init_msg_list       => p_init_msg_list,
1838                          x_return_status       => x_return_status,
1839                          x_msg_count           => x_msg_count,
1840                          x_msg_data            => x_msg_data,
1841                          p_saiv_rec            => l_saiv_rec,
1842                          x_saiv_rec            => x_saiv_rec);
1843 
1844      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1845        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1846      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1847        raise OKC_API.G_EXCEPTION_ERROR;
1848      END IF;
1849 
1850      -- Call user hook for AFTER
1851      g_saiv_rec := x_saiv_rec;
1852      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1853      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1854        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1855      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1856        raise OKC_API.G_EXCEPTION_ERROR;
1857      END IF;
1858      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1859    EXCEPTION
1860      WHEN OKC_API.G_EXCEPTION_ERROR THEN
1861        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1862        (l_api_name,
1863         G_PKG_NAME,
1864         'OKC_API.G_RET_STS_ERROR',
1865         x_msg_count,
1866         x_msg_data,
1867         '_PUB');
1868      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1869        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1870        (l_api_name,
1871         G_PKG_NAME,
1872         'OKC_API.G_RET_STS_UNEXP_ERROR',
1873         x_msg_count,
1874         x_msg_data,
1875         '_PUB');
1876      WHEN OTHERS THEN
1877        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1878        (l_api_name,
1879         G_PKG_NAME,
1880         'OTHERS',
1881         x_msg_count,
1882         x_msg_data,
1883         '_PUB');
1884  END Create_std_art_incmpt;
1885 
1886 
1887 PROCEDURE Create_std_art_incmpt(
1888 	p_api_version 		IN NUMBER,
1889 	p_init_msg_list 		IN VARCHAR2 ,
1890 	x_return_status		OUT NOCOPY VARCHAR2,
1891 	x_msg_count		OUT NOCOPY NUMBER,
1892 	x_msg_data		OUT NOCOPY VARCHAR2,
1893 	p_saiv_tbl		IN saiv_tbl_type,
1894 	x_saiv_tbl		OUT NOCOPY saiv_tbl_type) IS
1895      i				    NUMBER := 0;
1896      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1897 
1898  BEGIN
1899      x_return_status := OKC_API.G_RET_STS_SUCCESS;
1900      IF p_saiv_tbl.COUNT > 0 THEN
1901        i := p_saiv_tbl.FIRST;
1902        LOOP
1903        		create_std_art_incmpt(
1904                          p_api_version         => p_api_version,
1905                          p_init_msg_list       => p_init_msg_list,
1906                          x_return_status       => l_return_status,
1907                          x_msg_count           => x_msg_count,
1908                          x_msg_data            => x_msg_data,
1909                          p_saiv_rec            => p_saiv_tbl(i),
1910                          x_saiv_rec            => x_saiv_tbl(i));
1911        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1912          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1913            			x_return_status := l_return_status;
1914            			raise G_EXCEPTION_HALT_PROCESSING;
1915          		ELSE
1916            			x_return_status := l_return_status;
1917          		END IF;
1918        		END IF;
1919        		EXIT WHEN (i = p_saiv_tbl.LAST);
1920        		i := p_saiv_tbl.NEXT(i);
1921        END LOOP;
1922      END IF;
1923    EXCEPTION
1924      WHEN G_EXCEPTION_HALT_PROCESSING THEN
1925        NULL;
1926      WHEN OTHERS THEN
1927        OKC_API.set_message(p_app_name      => g_app_name,
1928                            p_msg_name      => g_unexpected_error,
1929                            p_token1        => g_sqlcode_token,
1930                            p_token1_value  => sqlcode,
1931                            p_token2        => g_sqlerrm_token,
1932                            p_token2_value  => sqlerrm);
1933        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1934  END Create_std_art_incmpt;
1935 
1936 PROCEDURE update_std_art_incmpt(
1937 	p_api_version 		IN NUMBER,
1938 	p_init_msg_list 		IN VARCHAR2 ,
1939 	x_return_status		OUT NOCOPY VARCHAR2,
1940 	x_msg_count		OUT NOCOPY NUMBER,
1941 	x_msg_data		OUT NOCOPY VARCHAR2,
1942 	p_saiv_rec		IN saiv_rec_type,
1943 	x_saiv_rec		OUT NOCOPY saiv_rec_type) IS
1944      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1945      l_api_name                     CONSTANT VARCHAR2(30) := 'UPDATE_STD_ART_INCMPT';
1946      l_saiv_rec                     saiv_rec_type := p_saiv_rec;
1947  BEGIN
1948      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1949 	 				      p_init_msg_list,
1950 		 			      '_PUB',
1951                                               x_return_status);
1952      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1953        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1954      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1955        raise OKC_API.G_EXCEPTION_ERROR;
1956      END IF;
1957      -- Call user hook for BEFORE
1958      g_saiv_rec := l_saiv_rec;
1959      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1960      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1961        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1962      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1963        raise OKC_API.G_EXCEPTION_ERROR;
1964      END IF;
1965      l_saiv_rec := migrate_saiv(l_saiv_rec, g_saiv_rec);
1966 
1967      OKC_STD_ARTICLE_PVT.update_std_art_incmpt(
1968                          p_api_version         => p_api_version,
1969                          p_init_msg_list       => p_init_msg_list,
1970                          x_return_status       => x_return_status,
1971                          x_msg_count           => x_msg_count,
1972                          x_msg_data            => x_msg_data,
1973                          p_saiv_rec            => l_saiv_rec,
1974                          x_saiv_rec            => x_saiv_rec);
1975 
1976      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1977        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1978      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1979        raise OKC_API.G_EXCEPTION_ERROR;
1980      END IF;
1981 
1982      -- Call user hook for AFTER
1983      g_saiv_rec := x_saiv_rec;
1984      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1985      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1986        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1987      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1988        raise OKC_API.G_EXCEPTION_ERROR;
1989      END IF;
1990      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1991    EXCEPTION
1992      WHEN OKC_API.G_EXCEPTION_ERROR THEN
1993        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1994        (l_api_name,
1995         G_PKG_NAME,
1996         'OKC_API.G_RET_STS_ERROR',
1997         x_msg_count,
1998         x_msg_data,
1999         '_PUB');
2000      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2001        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2002        (l_api_name,
2003         G_PKG_NAME,
2004         'OKC_API.G_RET_STS_UNEXP_ERROR',
2005         x_msg_count,
2006         x_msg_data,
2007         '_PUB');
2008      WHEN OTHERS THEN
2009        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2010        (l_api_name,
2011         G_PKG_NAME,
2012         'OTHERS',
2013         x_msg_count,
2014         x_msg_data,
2015         '_PUB');
2016  END update_std_art_incmpt;
2017 
2018 PROCEDURE update_std_art_incmpt(
2019 	p_api_version 		IN NUMBER,
2020 	p_init_msg_list 		IN VARCHAR2 ,
2021 	x_return_status		OUT NOCOPY VARCHAR2,
2022 	x_msg_count		OUT NOCOPY NUMBER,
2023 	x_msg_data		OUT NOCOPY VARCHAR2,
2024 	p_saiv_tbl		IN saiv_tbl_type,
2025 	x_saiv_tbl		OUT NOCOPY saiv_tbl_type) IS
2026      i				    NUMBER := 0;
2027      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2028 
2029  BEGIN
2030      x_return_status := OKC_API.G_RET_STS_SUCCESS;
2031      IF p_saiv_tbl.COUNT > 0 THEN
2032        i := p_saiv_tbl.FIRST;
2033        LOOP
2034        		update_std_art_incmpt(
2035                          p_api_version         => p_api_version,
2036                          p_init_msg_list       => p_init_msg_list,
2037                          x_return_status       => l_return_status,
2038                          x_msg_count           => x_msg_count,
2039                          x_msg_data            => x_msg_data,
2040                          p_saiv_rec            => p_saiv_tbl(i),
2041                          x_saiv_rec            => x_saiv_tbl(i));
2042        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2043          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2044            			x_return_status := l_return_status;
2045            			raise G_EXCEPTION_HALT_PROCESSING;
2046          		ELSE
2047            			x_return_status := l_return_status;
2048          		END IF;
2049        		END IF;
2050        		EXIT WHEN (i = p_saiv_tbl.LAST);
2051        		i := p_saiv_tbl.NEXT(i);
2052        END LOOP;
2053      END IF;
2054    EXCEPTION
2055      WHEN G_EXCEPTION_HALT_PROCESSING THEN
2056        NULL;
2057      WHEN OTHERS THEN
2058        OKC_API.set_message(p_app_name      => g_app_name,
2059                            p_msg_name      => g_unexpected_error,
2060                            p_token1        => g_sqlcode_token,
2061                            p_token1_value  => sqlcode,
2062                            p_token2        => g_sqlerrm_token,
2063                            p_token2_value  => sqlerrm);
2064        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2065  END update_std_art_incmpt;
2066 
2067 PROCEDURE lock_std_art_incmpt(
2068 	p_api_version 		IN NUMBER,
2069 	p_init_msg_list 		IN VARCHAR2 ,
2070 	x_return_status		OUT NOCOPY VARCHAR2,
2071 	x_msg_count		OUT NOCOPY NUMBER,
2072 	x_msg_data		OUT NOCOPY VARCHAR2,
2073 	p_saiv_rec		IN saiv_rec_type) IS
2074  BEGIN
2075    	OKC_STD_ARTICLE_PVT.lock_std_art_incmpt(
2076                          p_api_version         => p_api_version,
2077                          p_init_msg_list       => p_init_msg_list,
2078                          x_return_status       => x_return_status,
2079                          x_msg_count           => x_msg_count,
2080                          x_msg_data            => x_msg_data,
2081                          p_saiv_rec            => p_saiv_rec);
2082 
2083  END lock_std_art_incmpt;
2084 
2085 PROCEDURE lock_std_art_incmpt(
2086 	p_api_version 		IN NUMBER,
2087 	p_init_msg_list 		IN VARCHAR2 ,
2088 	x_return_status		OUT NOCOPY VARCHAR2,
2089 	x_msg_count		OUT NOCOPY NUMBER,
2090 	x_msg_data		OUT NOCOPY VARCHAR2,
2091 	p_saiv_tbl		IN saiv_tbl_type) IS
2092      i				    NUMBER := 0;
2093      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2094 
2095  BEGIN
2096      x_return_status := OKC_API.G_RET_STS_SUCCESS;
2097      IF p_saiv_tbl.COUNT > 0 THEN
2098        i := p_saiv_tbl.FIRST;
2099        LOOP
2100        		lock_std_art_incmpt(
2101                          p_api_version         => p_api_version,
2102                          p_init_msg_list       => p_init_msg_list,
2103                          x_return_status       => l_return_status,
2104                          x_msg_count           => x_msg_count,
2105                          x_msg_data            => x_msg_data,
2106                          p_saiv_rec            => p_saiv_tbl(i));
2107        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2108          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2109            			x_return_status := l_return_status;
2110            			raise G_EXCEPTION_HALT_PROCESSING;
2111          		ELSE
2112            			x_return_status := l_return_status;
2113          		END IF;
2114        		END IF;
2115        		EXIT WHEN (i = p_saiv_tbl.LAST);
2116        		i := p_saiv_tbl.NEXT(i);
2117        END LOOP;
2118      END IF;
2119    EXCEPTION
2120      WHEN G_EXCEPTION_HALT_PROCESSING THEN
2121        NULL;
2122      WHEN OTHERS THEN
2123        OKC_API.set_message(p_app_name      => g_app_name,
2124                            p_msg_name      => g_unexpected_error,
2125                            p_token1        => g_sqlcode_token,
2126                            p_token1_value  => sqlcode,
2127                            p_token2        => g_sqlerrm_token,
2128                            p_token2_value  => sqlerrm);
2129        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2130  END lock_std_art_incmpt;
2131 
2132 PROCEDURE delete_std_art_incmpt(
2133 	p_api_version 		IN NUMBER,
2134 	p_init_msg_list 		IN VARCHAR2 ,
2135 	x_return_status		OUT NOCOPY VARCHAR2,
2136 	x_msg_count		OUT NOCOPY NUMBER,
2137 	x_msg_data		OUT NOCOPY VARCHAR2,
2138 	p_saiv_rec		IN saiv_rec_type) IS
2139      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2140      l_api_name                     CONSTANT VARCHAR2(30) := 'DELETE_STD_ART_INCMPT';
2141      l_saiv_rec                     saiv_rec_type := p_saiv_rec;
2142  BEGIN
2143      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2144 	 				      p_init_msg_list,
2145 		 			      '_PUB',
2146                                               x_return_status);
2147      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2148        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2149      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2150        raise OKC_API.G_EXCEPTION_ERROR;
2151      END IF;
2152      -- Call user hook for BEFORE
2153      g_saiv_rec := l_saiv_rec;
2154      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2155      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2156        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2157      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2158        raise OKC_API.G_EXCEPTION_ERROR;
2159      END IF;
2160      l_saiv_rec := migrate_saiv(l_saiv_rec, g_saiv_rec);
2161 
2162      OKC_STD_ARTICLE_PVT.delete_std_art_incmpt(
2163                          p_api_version         => p_api_version,
2164                          p_init_msg_list       => p_init_msg_list,
2165                          x_return_status       => x_return_status,
2166                          x_msg_count           => x_msg_count,
2167                          x_msg_data            => x_msg_data,
2168                          p_saiv_rec            => l_saiv_rec);
2169 
2170      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2171        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2172      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2173        raise OKC_API.G_EXCEPTION_ERROR;
2174      END IF;
2175 
2176      -- Call user hook for AFTER
2177      g_saiv_rec := l_saiv_rec;
2178      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2179      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2180        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2181      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2182        raise OKC_API.G_EXCEPTION_ERROR;
2183      END IF;
2184      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2185    EXCEPTION
2186      WHEN OKC_API.G_EXCEPTION_ERROR THEN
2187        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2188        (l_api_name,
2189         G_PKG_NAME,
2190         'OKC_API.G_RET_STS_ERROR',
2191         x_msg_count,
2192         x_msg_data,
2193         '_PUB');
2194      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2195        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2196        (l_api_name,
2197         G_PKG_NAME,
2198         'OKC_API.G_RET_STS_UNEXP_ERROR',
2199         x_msg_count,
2200         x_msg_data,
2201         '_PUB');
2202      WHEN OTHERS THEN
2203        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2204        (l_api_name,
2205         G_PKG_NAME,
2206         'OTHERS',
2207         x_msg_count,
2208         x_msg_data,
2209         '_PUB');
2210  END delete_std_art_incmpt;
2211 
2212 PROCEDURE delete_std_art_incmpt(
2213 	p_api_version 		IN NUMBER,
2214 	p_init_msg_list 		IN VARCHAR2 ,
2215 	x_return_status		OUT NOCOPY VARCHAR2,
2216 	x_msg_count		OUT NOCOPY NUMBER,
2217 	x_msg_data		OUT NOCOPY VARCHAR2,
2218 	p_saiv_tbl		IN saiv_tbl_type) IS
2219       i				    NUMBER := 0;
2220      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2221 
2222  BEGIN
2223      x_return_status := OKC_API.G_RET_STS_SUCCESS;
2224      IF p_saiv_tbl.COUNT > 0 THEN
2225        i := p_saiv_tbl.FIRST;
2226        LOOP
2227        		delete_std_art_incmpt(
2228                          p_api_version         => p_api_version,
2229                          p_init_msg_list       => p_init_msg_list,
2230                          x_return_status       => l_return_status,
2231                          x_msg_count           => x_msg_count,
2232                          x_msg_data            => x_msg_data,
2233                          p_saiv_rec            => p_saiv_tbl(i));
2234        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2235          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2236            			x_return_status := l_return_status;
2237            			raise G_EXCEPTION_HALT_PROCESSING;
2238          		ELSE
2239            			x_return_status := l_return_status;
2240          		END IF;
2241        		END IF;
2242        		EXIT WHEN (i = p_saiv_tbl.LAST);
2243        		i := p_saiv_tbl.NEXT(i);
2244        END LOOP;
2245      END IF;
2246    EXCEPTION
2247      WHEN G_EXCEPTION_HALT_PROCESSING THEN
2248        NULL;
2249      WHEN OTHERS THEN
2250        OKC_API.set_message(p_app_name      => g_app_name,
2251                            p_msg_name      => g_unexpected_error,
2252                            p_token1        => g_sqlcode_token,
2253                            p_token1_value  => sqlcode,
2254                            p_token2        => g_sqlerrm_token,
2255                            p_token2_value  => sqlerrm);
2256        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2257  END delete_std_art_incmpt;
2258 
2259 PROCEDURE validate_std_art_incmpt(
2260 	p_api_version 		IN NUMBER,
2261 	p_init_msg_list 		IN VARCHAR2 ,
2262 	x_return_status		OUT NOCOPY VARCHAR2,
2263 	x_msg_count		OUT NOCOPY NUMBER,
2264 	x_msg_data		OUT NOCOPY VARCHAR2,
2265 	p_saiv_rec		IN saiv_rec_type) IS
2266  BEGIN
2267 
2268      OKC_STD_ARTICLE_PVT.validate_std_art_incmpt(
2269                          p_api_version         => p_api_version,
2270                          p_init_msg_list       => p_init_msg_list,
2271                          x_return_status       => x_return_status,
2272                          x_msg_count           => x_msg_count,
2273                          x_msg_data            => x_msg_data,
2274                          p_saiv_rec            => p_saiv_rec);
2275 
2276  END validate_std_art_incmpt;
2277 
2278 
2279 PROCEDURE validate_std_art_incmpt(
2280 	p_api_version 		IN NUMBER,
2281 	p_init_msg_list 		IN VARCHAR2 ,
2282 	x_return_status		OUT NOCOPY VARCHAR2,
2283 	x_msg_count		OUT NOCOPY NUMBER,
2284 	x_msg_data		OUT NOCOPY VARCHAR2,
2285 	p_saiv_tbl		IN saiv_tbl_type) IS
2286      i				    NUMBER := 0;
2287      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2288 
2289  BEGIN
2290      x_return_status := OKC_API.G_RET_STS_SUCCESS;
2291      IF p_saiv_tbl.COUNT > 0 THEN
2292        i := p_saiv_tbl.FIRST;
2293        LOOP
2294        		validate_std_art_incmpt(
2295                          p_api_version         => p_api_version,
2296                          p_init_msg_list       => p_init_msg_list,
2297                          x_return_status       => l_return_status,
2298                          x_msg_count           => x_msg_count,
2299                          x_msg_data            => x_msg_data,
2300                          p_saiv_rec            => p_saiv_tbl(i));
2301        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2302          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2303            			x_return_status := l_return_status;
2304            			raise G_EXCEPTION_HALT_PROCESSING;
2305          		ELSE
2306            			x_return_status := l_return_status;
2307          		END IF;
2308        		END IF;
2309        		EXIT WHEN (i = p_saiv_tbl.LAST);
2310        		i := p_saiv_tbl.NEXT(i);
2311        END LOOP;
2312      END IF;
2313    EXCEPTION
2314      WHEN G_EXCEPTION_HALT_PROCESSING THEN
2315        NULL;
2316      WHEN OTHERS THEN
2317        OKC_API.set_message(p_app_name      => g_app_name,
2318                            p_msg_name      => g_unexpected_error,
2319                            p_token1        => g_sqlcode_token,
2320                            p_token1_value  => sqlcode,
2321                            p_token2        => g_sqlerrm_token,
2322                            p_token2_value  => sqlerrm);
2323        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2324  END validate_std_art_incmpt;
2325 
2326 
2327 PROCEDURE validate_unique(
2328 	p_api_version 		IN NUMBER,
2329 	p_init_msg_list 	IN VARCHAR2 ,
2330 	x_return_status		OUT NOCOPY VARCHAR2,
2331 	x_msg_count		OUT NOCOPY NUMBER,
2332 	x_msg_data		OUT NOCOPY VARCHAR2,
2333 	p_saiv_rec		IN saiv_rec_type) IS
2334 BEGIN
2335 	OKC_STD_ARTICLE_PVT.Validate_Unique(p_api_version         => p_api_version,
2336                          		p_init_msg_list       => p_init_msg_list,
2337                          		x_return_status       => x_return_status,
2338                          		x_msg_count           => x_msg_count,
2339                          		x_msg_data            => x_msg_data,
2340                          		p_saiv_rec            => p_saiv_rec);
2341 
2342 End Validate_unique;
2343 
2344 PROCEDURE validate_unique(
2345 	p_api_version 		IN NUMBER,
2346 	p_init_msg_list         IN VARCHAR2 ,
2347 	x_return_status		OUT NOCOPY VARCHAR2,
2348 	x_msg_count		OUT NOCOPY NUMBER,
2349 	x_msg_data		OUT NOCOPY VARCHAR2,
2350 	p_saiv_tbl		IN saiv_tbl_type) IS
2351 
2352      i				    NUMBER := 0;
2353      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2354 
2355  BEGIN
2356      x_return_status := OKC_API.G_RET_STS_SUCCESS;
2357      IF p_saiv_tbl.COUNT > 0 THEN
2358        i := p_saiv_tbl.FIRST;
2359        LOOP
2360        	      Validate_unique(p_api_version   => p_api_version,
2361                          p_init_msg_list       => p_init_msg_list,
2362                          x_return_status       => l_return_status,
2363                          x_msg_count           => x_msg_count,
2364                          x_msg_data            => x_msg_data,
2365                          p_saiv_rec            => p_saiv_tbl(i));
2366 
2367        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2368          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2369            			x_return_status := l_return_status;
2370            			raise G_EXCEPTION_HALT_PROCESSING;
2371          		ELSE
2372            			x_return_status := l_return_status;
2373          		END IF;
2374        		END IF;
2375        		EXIT WHEN (i = p_saiv_tbl.LAST);
2376        		i := p_saiv_tbl.NEXT(i);
2377        END LOOP;
2378      END IF;
2379    EXCEPTION
2380      WHEN G_EXCEPTION_HALT_PROCESSING THEN
2381        NULL;
2382      WHEN OTHERS THEN
2383        OKC_API.set_message(p_app_name      => g_app_name,
2384                            p_msg_name      => g_unexpected_error,
2385                            p_token1        => g_sqlcode_token,
2386                            p_token1_value  => sqlcode,
2387                            p_token2        => g_sqlerrm_token,
2388                            p_token2_value  => sqlerrm);
2389        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2390 End Validate_unique;
2391 
2392 
2393 PROCEDURE create_std_art_classing(
2394 	p_api_version 		IN NUMBER,
2395 	p_init_msg_list 		IN VARCHAR2 ,
2396 	x_return_status		OUT NOCOPY VARCHAR2,
2397 	x_msg_count		OUT NOCOPY NUMBER,
2398 	x_msg_data		OUT NOCOPY VARCHAR2,
2399 	p_sacv_rec		IN sacv_rec_type,
2400 	x_sacv_rec		OUT NOCOPY sacv_rec_type) IS
2401      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2402      l_api_name                     CONSTANT VARCHAR2(30) := 'CREATE_STD_ART_CLASSING';
2403      l_sacv_rec                     sacv_rec_type := p_sacv_rec;
2404  BEGIN
2405      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2406 	 				      p_init_msg_list,
2407 		 			      '_PUB',
2408                                               x_return_status);
2409      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2410        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2411      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2412        raise OKC_API.G_EXCEPTION_ERROR;
2413      END IF;
2414      -- Call user hook for BEFORE
2415      g_sacv_rec := l_sacv_rec;
2416      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2417      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2418        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2419      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2420        raise OKC_API.G_EXCEPTION_ERROR;
2421      END IF;
2422      l_sacv_rec := migrate_sacv(l_sacv_rec, g_sacv_rec);
2423 
2424      OKC_STD_ARTICLE_PVT.create_std_art_classing(
2425                          p_api_version         => p_api_version,
2426                          p_init_msg_list       => p_init_msg_list,
2427                          x_return_status       => x_return_status,
2428                          x_msg_count           => x_msg_count,
2429                          x_msg_data            => x_msg_data,
2430                          p_sacv_rec            => l_sacv_rec,
2431                          x_sacv_rec            => x_sacv_rec);
2432 
2433      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2434        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2435      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2436        raise OKC_API.G_EXCEPTION_ERROR;
2437      END IF;
2438 
2439      -- Call user hook for AFTER
2440      g_sacv_rec := x_sacv_rec;
2441      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2442      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2443        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2444      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2445        raise OKC_API.G_EXCEPTION_ERROR;
2446      END IF;
2447      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2448    EXCEPTION
2449      WHEN OKC_API.G_EXCEPTION_ERROR THEN
2450        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2451        (l_api_name,
2452         G_PKG_NAME,
2453         'OKC_API.G_RET_STS_ERROR',
2454         x_msg_count,
2455         x_msg_data,
2456         '_PUB');
2457      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2458        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2459        (l_api_name,
2460         G_PKG_NAME,
2461         'OKC_API.G_RET_STS_UNEXP_ERROR',
2462         x_msg_count,
2463         x_msg_data,
2464         '_PUB');
2465      WHEN OTHERS THEN
2466        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2467        (l_api_name,
2468         G_PKG_NAME,
2469         'OTHERS',
2470         x_msg_count,
2471         x_msg_data,
2472         '_PUB');
2473  END create_std_art_classing;
2474 
2475 PROCEDURE create_std_art_classing(
2476 	p_api_version 		IN NUMBER,
2477 	p_init_msg_list 		IN VARCHAR2 ,
2478 	x_return_status		OUT NOCOPY VARCHAR2,
2479 	x_msg_count		OUT NOCOPY NUMBER,
2480 	x_msg_data		OUT NOCOPY VARCHAR2,
2481 	p_sacv_tbl		IN sacv_tbl_type,
2482 	x_sacv_tbl		OUT NOCOPY sacv_tbl_type) IS
2483      i				    NUMBER := 0;
2484      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2485 
2486  BEGIN
2487      x_return_status := OKC_API.G_RET_STS_SUCCESS;
2488      IF p_sacv_tbl.COUNT > 0 THEN
2489        i := p_sacv_tbl.FIRST;
2490        LOOP
2491        		create_std_art_classing(
2492                          p_api_version         => p_api_version,
2493                          p_init_msg_list       => p_init_msg_list,
2494                          x_return_status       => l_return_status,
2495                          x_msg_count           => x_msg_count,
2496                          x_msg_data            => x_msg_data,
2497                          p_sacv_rec            => p_sacv_tbl(i),
2498                          x_sacv_rec            => x_sacv_tbl(i));
2499        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2500          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2501            			x_return_status := l_return_status;
2502            			raise G_EXCEPTION_HALT_PROCESSING;
2503          		ELSE
2504            			x_return_status := l_return_status;
2505          		END IF;
2506        		END IF;
2507        		EXIT WHEN (i = p_sacv_tbl.LAST);
2508        		i := p_sacv_tbl.NEXT(i);
2509        END LOOP;
2510      END IF;
2511    EXCEPTION
2512      WHEN G_EXCEPTION_HALT_PROCESSING THEN
2513        NULL;
2514      WHEN OTHERS THEN
2515        OKC_API.set_message(p_app_name      => g_app_name,
2516                            p_msg_name      => g_unexpected_error,
2517                            p_token1        => g_sqlcode_token,
2518                            p_token1_value  => sqlcode,
2519                            p_token2        => g_sqlerrm_token,
2520                            p_token2_value  => sqlerrm);
2521        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2522  END create_std_art_classing;
2523 
2524 PROCEDURE update_std_art_classing(
2525 	p_api_version 		IN NUMBER,
2526 	p_init_msg_list 		IN VARCHAR2 ,
2527 	x_return_status		OUT NOCOPY VARCHAR2,
2528 	x_msg_count		OUT NOCOPY NUMBER,
2529 	x_msg_data		OUT NOCOPY VARCHAR2,
2530 	p_sacv_rec		IN sacv_rec_type,
2531 	x_sacv_rec		OUT NOCOPY sacv_rec_type) IS
2532      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2533      l_api_name                     CONSTANT VARCHAR2(30) := 'UPDATE_STD_ART_CLASSING';
2534      l_sacv_rec                     sacv_rec_type := p_sacv_rec;
2535  BEGIN
2536      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2537 	 				      p_init_msg_list,
2538 		 			      '_PUB',
2539                                               x_return_status);
2540      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2541        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2542      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2543        raise OKC_API.G_EXCEPTION_ERROR;
2544      END IF;
2545      -- Call user hook for BEFORE
2546      g_sacv_rec := l_sacv_rec;
2547      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2548      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2549        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2550      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2551        raise OKC_API.G_EXCEPTION_ERROR;
2552      END IF;
2553      l_sacv_rec := migrate_sacv(l_sacv_rec, g_sacv_rec);
2554 
2555      OKC_STD_ARTICLE_PVT.update_std_art_classing(
2556                          p_api_version         => p_api_version,
2557                          p_init_msg_list       => p_init_msg_list,
2558                          x_return_status       => x_return_status,
2559                          x_msg_count           => x_msg_count,
2560                          x_msg_data            => x_msg_data,
2561                          p_sacv_rec            => l_sacv_rec,
2562                          x_sacv_rec            => x_sacv_rec);
2563 
2564      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2565        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2566      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2567        raise OKC_API.G_EXCEPTION_ERROR;
2568      END IF;
2569 
2570      -- Call user hook for AFTER
2571      g_sacv_rec := x_sacv_rec;
2572      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2573      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2574        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2575      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2576        raise OKC_API.G_EXCEPTION_ERROR;
2577      END IF;
2578      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2579    EXCEPTION
2580      WHEN OKC_API.G_EXCEPTION_ERROR THEN
2581        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2582        (l_api_name,
2583         G_PKG_NAME,
2584         'OKC_API.G_RET_STS_ERROR',
2585         x_msg_count,
2586         x_msg_data,
2587         '_PUB');
2588      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2589        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2590        (l_api_name,
2591         G_PKG_NAME,
2592         'OKC_API.G_RET_STS_UNEXP_ERROR',
2593         x_msg_count,
2594         x_msg_data,
2595         '_PUB');
2596      WHEN OTHERS THEN
2597        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2598        (l_api_name,
2599         G_PKG_NAME,
2600         'OTHERS',
2601         x_msg_count,
2602         x_msg_data,
2603         '_PUB');
2604  END update_std_art_classing;
2605 
2606 
2607 
2608 PROCEDURE update_std_art_classing(
2609 	p_api_version 		IN NUMBER,
2610 	p_init_msg_list 		IN VARCHAR2 ,
2611 	x_return_status		OUT NOCOPY VARCHAR2,
2612 	x_msg_count		OUT NOCOPY NUMBER,
2613 	x_msg_data		OUT NOCOPY VARCHAR2,
2614 	p_sacv_tbl		IN sacv_tbl_type,
2615 	x_sacv_tbl		OUT NOCOPY sacv_tbl_type) IS
2616      i				    NUMBER := 0;
2617      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2618 
2619  BEGIN
2620      x_return_status := OKC_API.G_RET_STS_SUCCESS;
2621      IF p_sacv_tbl.COUNT > 0 THEN
2622        i := p_sacv_tbl.FIRST;
2623        LOOP
2624        		update_std_art_classing(
2625                          p_api_version         => p_api_version,
2626                          p_init_msg_list       => p_init_msg_list,
2627                          x_return_status       => l_return_status,
2628                          x_msg_count           => x_msg_count,
2629                          x_msg_data            => x_msg_data,
2630                          p_sacv_rec            => p_sacv_tbl(i),
2631                          x_sacv_rec            => x_sacv_tbl(i));
2632        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2633          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2634            			x_return_status := l_return_status;
2635            			raise G_EXCEPTION_HALT_PROCESSING;
2636          		ELSE
2637            			x_return_status := l_return_status;
2638          		END IF;
2639        		END IF;
2640        		EXIT WHEN (i = p_sacv_tbl.LAST);
2641        		i := p_sacv_tbl.NEXT(i);
2642        END LOOP;
2643      END IF;
2644    EXCEPTION
2645      WHEN G_EXCEPTION_HALT_PROCESSING THEN
2646        NULL;
2647      WHEN OTHERS THEN
2648        OKC_API.set_message(p_app_name      => g_app_name,
2649                            p_msg_name      => g_unexpected_error,
2650                            p_token1        => g_sqlcode_token,
2651                            p_token1_value  => sqlcode,
2652                            p_token2        => g_sqlerrm_token,
2653                            p_token2_value  => sqlerrm);
2654        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2655  END update_std_art_classing;
2656 
2657 
2658 PROCEDURE lock_std_art_classing(
2659 	p_api_version 		IN NUMBER,
2660 	p_init_msg_list 		IN VARCHAR2 ,
2661 	x_return_status		OUT NOCOPY VARCHAR2,
2662 	x_msg_count		OUT NOCOPY NUMBER,
2663 	x_msg_data		OUT NOCOPY VARCHAR2,
2664 	p_sacv_rec		IN sacv_rec_type) IS
2665  BEGIN
2666    	OKC_STD_ARTICLE_PVT.lock_std_art_classing(
2667                          p_api_version         => p_api_version,
2668                          p_init_msg_list       => p_init_msg_list,
2669                          x_return_status       => x_return_status,
2670                          x_msg_count           => x_msg_count,
2671                          x_msg_data            => x_msg_data,
2672                          p_sacv_rec            => p_sacv_rec);
2673 
2674  END lock_std_art_classing;
2675 
2676 PROCEDURE lock_std_art_classing(
2677 	p_api_version 		IN NUMBER,
2678 	p_init_msg_list 		IN VARCHAR2 ,
2679 	x_return_status		OUT NOCOPY VARCHAR2,
2680 	x_msg_count		OUT NOCOPY NUMBER,
2681 	x_msg_data		OUT NOCOPY VARCHAR2,
2682 	p_sacv_tbl		IN sacv_tbl_type)IS
2683      i				    NUMBER := 0;
2684      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2685 
2686  BEGIN
2687      x_return_status := OKC_API.G_RET_STS_SUCCESS;
2688      IF p_sacv_tbl.COUNT > 0 THEN
2689        i := p_sacv_tbl.FIRST;
2690        LOOP
2691        		lock_std_art_classing(
2692                          p_api_version         => p_api_version,
2693                          p_init_msg_list       => p_init_msg_list,
2694                          x_return_status       => l_return_status,
2695                          x_msg_count           => x_msg_count,
2696                          x_msg_data            => x_msg_data,
2697                          p_sacv_rec            => p_sacv_tbl(i));
2698        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2699          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2700            			x_return_status := l_return_status;
2701            			raise G_EXCEPTION_HALT_PROCESSING;
2702          		ELSE
2703            			x_return_status := l_return_status;
2704          		END IF;
2705        		END IF;
2706        		EXIT WHEN (i = p_sacv_tbl.LAST);
2707        		i := p_sacv_tbl.NEXT(i);
2708        END LOOP;
2709      END IF;
2710    EXCEPTION
2711      WHEN G_EXCEPTION_HALT_PROCESSING THEN
2712        NULL;
2713      WHEN OTHERS THEN
2714        OKC_API.set_message(p_app_name      => g_app_name,
2715                            p_msg_name      => g_unexpected_error,
2716                            p_token1        => g_sqlcode_token,
2717                            p_token1_value  => sqlcode,
2718                            p_token2        => g_sqlerrm_token,
2719                            p_token2_value  => sqlerrm);
2720        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2721  END lock_std_art_classing;
2722 
2723 
2724 PROCEDURE delete_std_art_classing(
2725 	p_api_version 		IN NUMBER,
2726 	p_init_msg_list 		IN VARCHAR2 ,
2727 	x_return_status		OUT NOCOPY VARCHAR2,
2728 	x_msg_count		OUT NOCOPY NUMBER,
2729 	x_msg_data		OUT NOCOPY VARCHAR2,
2730 	p_sacv_rec		IN sacv_rec_type) IS
2731      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2732      l_api_name                     CONSTANT VARCHAR2(30) := 'DELETE_STD_ART_CLASSING';
2733      l_sacv_rec                     sacv_rec_type := p_sacv_rec;
2734  BEGIN
2735      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2736 	 				      p_init_msg_list,
2737 		 			      '_PUB',
2738                                               x_return_status);
2739      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2740        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2741      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2742        raise OKC_API.G_EXCEPTION_ERROR;
2743      END IF;
2744      -- Call user hook for BEFORE
2745      g_sacv_rec := l_sacv_rec;
2746      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2747      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2748        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2749      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2750        raise OKC_API.G_EXCEPTION_ERROR;
2751      END IF;
2752      l_sacv_rec := migrate_sacv(l_sacv_rec, g_sacv_rec);
2753 
2754      OKC_STD_ARTICLE_PVT.delete_std_art_classing(
2755                          p_api_version         => p_api_version,
2756                          p_init_msg_list       => p_init_msg_list,
2757                          x_return_status       => x_return_status,
2758                          x_msg_count           => x_msg_count,
2759                          x_msg_data            => x_msg_data,
2760                          p_sacv_rec            => l_sacv_rec);
2761 
2762      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2763        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2764      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2765        raise OKC_API.G_EXCEPTION_ERROR;
2766      END IF;
2767 
2768      -- Call user hook for AFTER
2769      g_sacv_rec := l_sacv_rec;
2770      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2771      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2772        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2773      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2774        raise OKC_API.G_EXCEPTION_ERROR;
2775      END IF;
2776      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2777    EXCEPTION
2778      WHEN OKC_API.G_EXCEPTION_ERROR THEN
2779        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2780        (l_api_name,
2781         G_PKG_NAME,
2782         'OKC_API.G_RET_STS_ERROR',
2783         x_msg_count,
2784         x_msg_data,
2785         '_PUB');
2786      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2787        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2788        (l_api_name,
2789         G_PKG_NAME,
2790         'OKC_API.G_RET_STS_UNEXP_ERROR',
2791         x_msg_count,
2792         x_msg_data,
2793         '_PUB');
2794      WHEN OTHERS THEN
2795        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2796        (l_api_name,
2797         G_PKG_NAME,
2798         'OTHERS',
2799         x_msg_count,
2800         x_msg_data,
2801         '_PUB');
2802  END delete_std_art_classing;
2803 
2804 PROCEDURE delete_std_art_classing(
2805 	p_api_version 		IN NUMBER,
2806 	p_init_msg_list 		IN VARCHAR2 ,
2807 	x_return_status		OUT NOCOPY VARCHAR2,
2808 	x_msg_count		OUT NOCOPY NUMBER,
2809 	x_msg_data		OUT NOCOPY VARCHAR2,
2810 	p_sacv_tbl		IN sacv_tbl_type) IS
2811      i				    NUMBER := 0;
2812      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2813 
2814  BEGIN
2815      x_return_status := OKC_API.G_RET_STS_SUCCESS;
2816      IF p_sacv_tbl.COUNT > 0 THEN
2817        i := p_sacv_tbl.FIRST;
2818        LOOP
2819        		delete_std_art_classing(
2820                          p_api_version         => p_api_version,
2821                          p_init_msg_list       => p_init_msg_list,
2822                          x_return_status       => l_return_status,
2823                          x_msg_count           => x_msg_count,
2824                          x_msg_data            => x_msg_data,
2825                          p_sacv_rec            => p_sacv_tbl(i));
2826        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2827          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2828            			x_return_status := l_return_status;
2829            			raise G_EXCEPTION_HALT_PROCESSING;
2830          		ELSE
2831            			x_return_status := l_return_status;
2832          		END IF;
2833        		END IF;
2834        		EXIT WHEN (i = p_sacv_tbl.LAST);
2835        		i := p_sacv_tbl.NEXT(i);
2836        END LOOP;
2837      END IF;
2838    EXCEPTION
2839      WHEN G_EXCEPTION_HALT_PROCESSING THEN
2840        NULL;
2841      WHEN OTHERS THEN
2842        OKC_API.set_message(p_app_name      => g_app_name,
2843                            p_msg_name      => g_unexpected_error,
2844                            p_token1        => g_sqlcode_token,
2845                            p_token1_value  => sqlcode,
2846                            p_token2        => g_sqlerrm_token,
2847                            p_token2_value  => sqlerrm);
2848        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2849  END delete_std_art_classing;
2850 
2851 
2852 PROCEDURE validate_std_art_classing(
2853 	p_api_version 		IN NUMBER,
2854 	p_init_msg_list 		IN VARCHAR2 ,
2855 	x_return_status		OUT NOCOPY VARCHAR2,
2856 	x_msg_count		OUT NOCOPY NUMBER,
2857 	x_msg_data		OUT NOCOPY VARCHAR2,
2858 	p_sacv_rec		IN sacv_rec_type) IS
2859  BEGIN
2860    OKC_STD_ARTICLE_PVT.validate_std_art_classing(
2861                          p_api_version         => p_api_version,
2862                          p_init_msg_list       => p_init_msg_list,
2863                          x_return_status       => x_return_status,
2864                          x_msg_count           => x_msg_count,
2865                          x_msg_data            => x_msg_data,
2866                          p_sacv_rec            => p_sacv_rec);
2867 
2868  END validate_std_art_classing;
2869 
2870 
2871 PROCEDURE validate_std_art_classing(
2872 	p_api_version 		IN NUMBER,
2873 	p_init_msg_list 		IN VARCHAR2 ,
2874 	x_return_status		OUT NOCOPY VARCHAR2,
2875 	x_msg_count		OUT NOCOPY NUMBER,
2876 	x_msg_data		OUT NOCOPY VARCHAR2,
2877 	p_sacv_tbl		IN sacv_tbl_type) IS
2878      i				    NUMBER := 0;
2879      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2880 
2881  BEGIN
2882      x_return_status := OKC_API.G_RET_STS_SUCCESS;
2883      IF p_sacv_tbl.COUNT > 0 THEN
2884        i := p_sacv_tbl.FIRST;
2885        LOOP
2886        		validate_std_art_classing(
2887                          p_api_version         => p_api_version,
2888                          p_init_msg_list       => p_init_msg_list,
2889                          x_return_status       => l_return_status,
2890                          x_msg_count           => x_msg_count,
2891                          x_msg_data            => x_msg_data,
2892                          p_sacv_rec            => p_sacv_tbl(i));
2893        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2894          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2895            			x_return_status := l_return_status;
2896            			raise G_EXCEPTION_HALT_PROCESSING;
2897          		ELSE
2898            			x_return_status := l_return_status;
2899          		END IF;
2900        		END IF;
2901        		EXIT WHEN (i = p_sacv_tbl.LAST);
2902        		i := p_sacv_tbl.NEXT(i);
2903        END LOOP;
2904      END IF;
2905    EXCEPTION
2906      WHEN G_EXCEPTION_HALT_PROCESSING THEN
2907        NULL;
2908      WHEN OTHERS THEN
2909        OKC_API.set_message(p_app_name      => g_app_name,
2910                            p_msg_name      => g_unexpected_error,
2911                            p_token1        => g_sqlcode_token,
2912                            p_token1_value  => sqlcode,
2913                            p_token2        => g_sqlerrm_token,
2914                            p_token2_value  => sqlerrm);
2915        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2916  END validate_std_art_classing;
2917 
2918 PROCEDURE validate_price_type(
2919 	p_api_version 		IN NUMBER,
2920 	p_init_msg_list 	IN VARCHAR2 ,
2921 	x_return_status		OUT NOCOPY VARCHAR2,
2922 	x_msg_count		OUT NOCOPY NUMBER,
2923 	x_msg_data		OUT NOCOPY VARCHAR2,
2924 	p_sacv_rec		IN sacv_rec_type) IS
2925 BEGIN
2926 	OKC_STD_ARTICLE_PVT.Validate_price_type(p_api_version         => p_api_version,
2927                          		p_init_msg_list       => p_init_msg_list,
2928                          		x_return_status       => x_return_status,
2929                          		x_msg_count           => x_msg_count,
2930                          		x_msg_data            => x_msg_data,
2931                          		p_sacv_rec            => p_sacv_rec);
2932 
2933 End Validate_price_type;
2934 
2935 PROCEDURE validate_price_type(
2936 	p_api_version 		IN NUMBER,
2937 	p_init_msg_list         IN VARCHAR2 ,
2938 	x_return_status		OUT NOCOPY VARCHAR2,
2939 	x_msg_count		OUT NOCOPY NUMBER,
2940 	x_msg_data		OUT NOCOPY VARCHAR2,
2941 	p_sacv_tbl		IN sacv_tbl_type) IS
2942 
2943      i				    NUMBER := 0;
2944      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2945 
2946  BEGIN
2947      x_return_status := OKC_API.G_RET_STS_SUCCESS;
2948      IF p_sacv_tbl.COUNT > 0 THEN
2949        i := p_sacv_tbl.FIRST;
2950        LOOP
2951        	      Validate_price_type(p_api_version         => p_api_version,
2952                          p_init_msg_list       => p_init_msg_list,
2953                          x_return_status       => l_return_status,
2954                          x_msg_count           => x_msg_count,
2955                          x_msg_data            => x_msg_data,
2956                          p_sacv_rec            => p_sacv_tbl(i));
2957 
2958        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2959          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2960            			x_return_status := l_return_status;
2961            			raise G_EXCEPTION_HALT_PROCESSING;
2962          		ELSE
2963            			x_return_status := l_return_status;
2964          		END IF;
2965        		END IF;
2966        		EXIT WHEN (i = p_sacv_tbl.LAST);
2967        		i := p_sacv_tbl.NEXT(i);
2968        END LOOP;
2969      END IF;
2970    EXCEPTION
2971      WHEN G_EXCEPTION_HALT_PROCESSING THEN
2972        NULL;
2973      WHEN OTHERS THEN
2974        OKC_API.set_message(p_app_name      => g_app_name,
2975                            p_msg_name      => g_unexpected_error,
2976                            p_token1        => g_sqlcode_token,
2977                            p_token1_value  => sqlcode,
2978                            p_token2        => g_sqlerrm_token,
2979                            p_token2_value  => sqlerrm);
2980        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2981 End Validate_price_type;
2982 
2983 PROCEDURE validate_scs_code(
2984 	p_api_version 		IN NUMBER,
2985 	p_init_msg_list 	IN VARCHAR2 ,
2986 	x_return_status		OUT NOCOPY VARCHAR2,
2987 	x_msg_count		OUT NOCOPY NUMBER,
2988 	x_msg_data		OUT NOCOPY VARCHAR2,
2989 	p_sacv_rec		IN sacv_rec_type) IS
2990 BEGIN
2991 	OKC_STD_ARTICLE_PVT.Validate_scs_code(p_api_version         => p_api_version,
2992                          		p_init_msg_list       => p_init_msg_list,
2993                          		x_return_status       => x_return_status,
2994                          		x_msg_count           => x_msg_count,
2995                          		x_msg_data            => x_msg_data,
2996                          		p_sacv_rec            => p_sacv_rec);
2997 
2998 End Validate_scs_code;
2999 
3000 PROCEDURE validate_scs_code(
3001 	p_api_version 		IN NUMBER,
3002 	p_init_msg_list         IN VARCHAR2 ,
3003 	x_return_status		OUT NOCOPY VARCHAR2,
3004 	x_msg_count		OUT NOCOPY NUMBER,
3005 	x_msg_data		OUT NOCOPY VARCHAR2,
3006 	p_sacv_tbl		IN sacv_tbl_type) IS
3007 
3008      i				    NUMBER := 0;
3009      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3010 
3011  BEGIN
3012      x_return_status := OKC_API.G_RET_STS_SUCCESS;
3013      IF p_sacv_tbl.COUNT > 0 THEN
3014        i := p_sacv_tbl.FIRST;
3015        LOOP
3016        	      Validate_scs_code(p_api_version         => p_api_version,
3017                          p_init_msg_list       => p_init_msg_list,
3018                          x_return_status       => l_return_status,
3019                          x_msg_count           => x_msg_count,
3020                          x_msg_data            => x_msg_data,
3021                          p_sacv_rec            => p_sacv_tbl(i));
3022 
3023        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3024          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3025            			x_return_status := l_return_status;
3026            			raise G_EXCEPTION_HALT_PROCESSING;
3027          		ELSE
3028            			x_return_status := l_return_status;
3029          		END IF;
3030        		END IF;
3031        		EXIT WHEN (i = p_sacv_tbl.LAST);
3032        		i := p_sacv_tbl.NEXT(i);
3033        END LOOP;
3034      END IF;
3035    EXCEPTION
3036      WHEN G_EXCEPTION_HALT_PROCESSING THEN
3037        NULL;
3038      WHEN OTHERS THEN
3039        OKC_API.set_message(p_app_name      => g_app_name,
3040                            p_msg_name      => g_unexpected_error,
3041                            p_token1        => g_sqlcode_token,
3042                            p_token1_value  => sqlcode,
3043                            p_token2        => g_sqlerrm_token,
3044                            p_token2_value  => sqlerrm);
3045        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3046 End Validate_scs_code;
3047 
3048 PROCEDURE create_std_art_set_mem(
3049 	p_api_version 		IN NUMBER,
3050 	p_init_msg_list 		IN VARCHAR2 ,
3051 	x_return_status		OUT NOCOPY VARCHAR2,
3052 	x_msg_count		OUT NOCOPY NUMBER,
3053 	x_msg_data		OUT NOCOPY VARCHAR2,
3054 	p_samv_rec		IN samv_rec_type,
3055 	x_samv_rec		OUT NOCOPY samv_rec_type) IS
3056      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3057      l_api_name                     CONSTANT VARCHAR2(30) := 'CREATE_STD_ART_SET_MEM';
3058      l_samv_rec                     samv_rec_type := p_samv_rec;
3059  BEGIN
3060      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3061 	 				      p_init_msg_list,
3062 		 			      '_PUB',
3063                                               x_return_status);
3064      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3065        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3066      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3067        raise OKC_API.G_EXCEPTION_ERROR;
3068      END IF;
3069      -- Call user hook for BEFORE
3070      g_samv_rec := l_samv_rec;
3071      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3072      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3073        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3074      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3075        raise OKC_API.G_EXCEPTION_ERROR;
3076      END IF;
3077      l_samv_rec := migrate_samv(l_samv_rec, g_samv_rec);
3078 
3079      OKC_STD_ARTICLE_PVT.create_std_art_set_mem(
3080                          p_api_version         => p_api_version,
3081                          p_init_msg_list       => p_init_msg_list,
3082                          x_return_status       => x_return_status,
3083                          x_msg_count           => x_msg_count,
3084                          x_msg_data            => x_msg_data,
3085                          p_samv_rec            => l_samv_rec,
3086                          x_samv_rec            => x_samv_rec);
3087 
3088      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3089        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3090      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3091        raise OKC_API.G_EXCEPTION_ERROR;
3092      END IF;
3093 
3094      -- Call user hook for AFTER
3095      g_samv_rec := x_samv_rec;
3096      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3097      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3098        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3099      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3100        raise OKC_API.G_EXCEPTION_ERROR;
3101      END IF;
3102      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3103    EXCEPTION
3104      WHEN OKC_API.G_EXCEPTION_ERROR THEN
3105        x_return_status := OKC_API.HANDLE_EXCEPTIONS
3106        (l_api_name,
3107         G_PKG_NAME,
3108         'OKC_API.G_RET_STS_ERROR',
3109         x_msg_count,
3110         x_msg_data,
3111         '_PUB');
3112      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3113        x_return_status := OKC_API.HANDLE_EXCEPTIONS
3114        (l_api_name,
3115         G_PKG_NAME,
3116         'OKC_API.G_RET_STS_UNEXP_ERROR',
3117         x_msg_count,
3118         x_msg_data,
3119         '_PUB');
3120      WHEN OTHERS THEN
3121        x_return_status := OKC_API.HANDLE_EXCEPTIONS
3122        (l_api_name,
3123         G_PKG_NAME,
3124         'OTHERS',
3125         x_msg_count,
3126         x_msg_data,
3127         '_PUB');
3128  END create_std_art_set_mem;
3129 
3130 
3131 PROCEDURE create_std_art_set_mem(
3132 	p_api_version 		IN NUMBER,
3133 	p_init_msg_list 		IN VARCHAR2 ,
3134 	x_return_status		OUT NOCOPY VARCHAR2,
3135 	x_msg_count		OUT NOCOPY NUMBER,
3136 	x_msg_data		OUT NOCOPY VARCHAR2,
3137 	p_samv_tbl		IN samv_tbl_type,
3138 	x_samv_tbl		OUT NOCOPY samv_tbl_type) IS
3139      i				    NUMBER := 0;
3140      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3141 
3142  BEGIN
3143      x_return_status := OKC_API.G_RET_STS_SUCCESS;
3144      IF p_samv_tbl.COUNT > 0 THEN
3145        i := p_samv_tbl.FIRST;
3146        LOOP
3147        		create_std_art_set_mem(
3148                          p_api_version         => p_api_version,
3149                          p_init_msg_list       => p_init_msg_list,
3150                          x_return_status       => l_return_status,
3151                          x_msg_count           => x_msg_count,
3152                          x_msg_data            => x_msg_data,
3153                          p_samv_rec            => p_samv_tbl(i),
3154                          x_samv_rec            => x_samv_tbl(i));
3155        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3156          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3157            			x_return_status := l_return_status;
3158            			raise G_EXCEPTION_HALT_PROCESSING;
3159          		ELSE
3160            			x_return_status := l_return_status;
3161          		END IF;
3162        		END IF;
3163        		EXIT WHEN (i = p_samv_tbl.LAST);
3164        		i := p_samv_tbl.NEXT(i);
3165        END LOOP;
3166      END IF;
3167    EXCEPTION
3168      WHEN G_EXCEPTION_HALT_PROCESSING THEN
3169        NULL;
3170      WHEN OTHERS THEN
3171        OKC_API.set_message(p_app_name      => g_app_name,
3172                            p_msg_name      => g_unexpected_error,
3173                            p_token1        => g_sqlcode_token,
3174                            p_token1_value  => sqlcode,
3175                            p_token2        => g_sqlerrm_token,
3176                            p_token2_value  => sqlerrm);
3177        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3178  END create_std_art_set_mem;
3179 
3180 PROCEDURE update_std_art_set_mem(
3181 	p_api_version 		IN NUMBER,
3182 	p_init_msg_list 		IN VARCHAR2 ,
3183 	x_return_status		OUT NOCOPY VARCHAR2,
3184 	x_msg_count		OUT NOCOPY NUMBER,
3185 	x_msg_data		OUT NOCOPY VARCHAR2,
3186 	p_samv_rec		IN samv_rec_type,
3187 	x_samv_rec		OUT NOCOPY samv_rec_type) IS
3188      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3189      l_api_name                     CONSTANT VARCHAR2(30) := 'UPDATE_STD_ART_SET_MEM';
3190      l_samv_rec                     samv_rec_type := p_samv_rec;
3191  BEGIN
3192      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3193 	 				      p_init_msg_list,
3194 		 			      '_PUB',
3195                                               x_return_status);
3196      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3197        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3198      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3199        raise OKC_API.G_EXCEPTION_ERROR;
3200      END IF;
3201      -- Call user hook for BEFORE
3202      g_samv_rec := l_samv_rec;
3203      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3204      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3205        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3206      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3207        raise OKC_API.G_EXCEPTION_ERROR;
3208      END IF;
3209      l_samv_rec := migrate_samv(l_samv_rec, g_samv_rec);
3210 
3211      OKC_STD_ARTICLE_PVT.update_std_art_set_mem(
3212                          p_api_version         => p_api_version,
3213                          p_init_msg_list       => p_init_msg_list,
3214                          x_return_status       => x_return_status,
3215                          x_msg_count           => x_msg_count,
3216                          x_msg_data            => x_msg_data,
3217                          p_samv_rec            => l_samv_rec,
3218                          x_samv_rec            => x_samv_rec);
3219 
3220      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3221        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3222      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3223        raise OKC_API.G_EXCEPTION_ERROR;
3224      END IF;
3225 
3226      -- Call user hook for AFTER
3227      g_samv_rec := x_samv_rec;
3228      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3229      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3230        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3231      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3232        raise OKC_API.G_EXCEPTION_ERROR;
3233      END IF;
3234      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3235    EXCEPTION
3236      WHEN OKC_API.G_EXCEPTION_ERROR THEN
3237        x_return_status := OKC_API.HANDLE_EXCEPTIONS
3238        (l_api_name,
3239         G_PKG_NAME,
3240         'OKC_API.G_RET_STS_ERROR',
3241         x_msg_count,
3242         x_msg_data,
3243         '_PUB');
3244      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3245        x_return_status := OKC_API.HANDLE_EXCEPTIONS
3246        (l_api_name,
3247         G_PKG_NAME,
3248         'OKC_API.G_RET_STS_UNEXP_ERROR',
3249         x_msg_count,
3250         x_msg_data,
3251         '_PUB');
3252      WHEN OTHERS THEN
3253        x_return_status := OKC_API.HANDLE_EXCEPTIONS
3254        (l_api_name,
3255         G_PKG_NAME,
3256         'OTHERS',
3257         x_msg_count,
3258         x_msg_data,
3259         '_PUB');
3260 END update_std_art_set_mem;
3261 
3262 PROCEDURE update_std_art_set_mem(
3263 	p_api_version 		IN NUMBER,
3264 	p_init_msg_list 		IN VARCHAR2 ,
3265 	x_return_status		OUT NOCOPY VARCHAR2,
3266 	x_msg_count		OUT NOCOPY NUMBER,
3267 	x_msg_data		OUT NOCOPY VARCHAR2,
3268 	p_samv_tbl		IN samv_tbl_type,
3269 	x_samv_tbl		OUT NOCOPY samv_tbl_type) IS
3270      i				    NUMBER := 0;
3271      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3272 
3273  BEGIN
3274      x_return_status := OKC_API.G_RET_STS_SUCCESS;
3275      IF p_samv_tbl.COUNT > 0 THEN
3276        i := p_samv_tbl.FIRST;
3277        LOOP
3278        		update_std_art_set_mem(
3279                          p_api_version         => p_api_version,
3280                          p_init_msg_list       => p_init_msg_list,
3281                          x_return_status       => l_return_status,
3282                          x_msg_count           => x_msg_count,
3283                          x_msg_data            => x_msg_data,
3284                          p_samv_rec            => p_samv_tbl(i),
3285                          x_samv_rec            => x_samv_tbl(i));
3286        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3287          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3288            			x_return_status := l_return_status;
3289            			raise G_EXCEPTION_HALT_PROCESSING;
3290          		ELSE
3291            			x_return_status := l_return_status;
3292          		END IF;
3293        		END IF;
3294        		EXIT WHEN (i = p_samv_tbl.LAST);
3295        		i := p_samv_tbl.NEXT(i);
3296        END LOOP;
3297      END IF;
3298    EXCEPTION
3299      WHEN G_EXCEPTION_HALT_PROCESSING THEN
3300        NULL;
3301      WHEN OTHERS THEN
3302        OKC_API.set_message(p_app_name      => g_app_name,
3303                            p_msg_name      => g_unexpected_error,
3304                            p_token1        => g_sqlcode_token,
3305                            p_token1_value  => sqlcode,
3306                            p_token2        => g_sqlerrm_token,
3307                            p_token2_value  => sqlerrm);
3308        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3309  END update_std_art_set_mem;
3310 
3311 PROCEDURE lock_std_art_set_mem(
3312 	p_api_version 		IN NUMBER,
3313 	p_init_msg_list 		IN VARCHAR2 ,
3314 	x_return_status		OUT NOCOPY VARCHAR2,
3315 	x_msg_count		OUT NOCOPY NUMBER,
3316 	x_msg_data		OUT NOCOPY VARCHAR2,
3317 	p_samv_rec		IN samv_rec_type) IS
3318  BEGIN
3319    	OKC_STD_ARTICLE_PVT.lock_std_art_set_mem(
3320                          p_api_version         => p_api_version,
3321                          p_init_msg_list       => p_init_msg_list,
3322                          x_return_status       => x_return_status,
3323                          x_msg_count           => x_msg_count,
3324                          x_msg_data            => x_msg_data,
3325                          p_samv_rec            => p_samv_rec);
3326 
3327 END lock_std_art_set_mem;
3328 
3329 PROCEDURE lock_std_art_set_mem(
3330 	p_api_version 		IN NUMBER,
3331 	p_init_msg_list 		IN VARCHAR2 ,
3332 	x_return_status		OUT NOCOPY VARCHAR2,
3333 	x_msg_count		OUT NOCOPY NUMBER,
3334 	x_msg_data		OUT NOCOPY VARCHAR2,
3335 	p_samv_tbl		IN samv_tbl_type) IS
3336      i				    NUMBER := 0;
3337      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3338 
3339  BEGIN
3340      x_return_status := OKC_API.G_RET_STS_SUCCESS;
3341      IF p_samv_tbl.COUNT > 0 THEN
3342        i := p_samv_tbl.FIRST;
3343        LOOP
3344        		lock_std_art_set_mem(
3345                          p_api_version         => p_api_version,
3346                          p_init_msg_list       => p_init_msg_list,
3347                          x_return_status       => l_return_status,
3348                          x_msg_count           => x_msg_count,
3349                          x_msg_data            => x_msg_data,
3350                          p_samv_rec            => p_samv_tbl(i));
3351        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3352          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3353            			x_return_status := l_return_status;
3354            			raise G_EXCEPTION_HALT_PROCESSING;
3355          		ELSE
3356            			x_return_status := l_return_status;
3357          		END IF;
3358        		END IF;
3359        		EXIT WHEN (i = p_samv_tbl.LAST);
3360        		i := p_samv_tbl.NEXT(i);
3361        END LOOP;
3362      END IF;
3363    EXCEPTION
3364      WHEN G_EXCEPTION_HALT_PROCESSING THEN
3365        NULL;
3366      WHEN OTHERS THEN
3367        OKC_API.set_message(p_app_name      => g_app_name,
3368                            p_msg_name      => g_unexpected_error,
3369                            p_token1        => g_sqlcode_token,
3370                            p_token1_value  => sqlcode,
3371                            p_token2        => g_sqlerrm_token,
3372                            p_token2_value  => sqlerrm);
3373        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3374  END lock_std_art_set_mem;
3375 
3376 
3377 PROCEDURE delete_std_art_set_mem(
3378 	p_api_version 		IN NUMBER,
3379 	p_init_msg_list 		IN VARCHAR2 ,
3380 	x_return_status		OUT NOCOPY VARCHAR2,
3381 	x_msg_count		OUT NOCOPY NUMBER,
3382 	x_msg_data		OUT NOCOPY VARCHAR2,
3383 	p_samv_rec		IN samv_rec_type) IS
3384      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3385      l_api_name                     CONSTANT VARCHAR2(30) := 'DELETE_STD_ART_SET_MEM';
3386      l_samv_rec                     samv_rec_type := p_samv_rec;
3387  BEGIN
3388      l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3389 	 				      p_init_msg_list,
3390 		 			      '_PUB',
3391                                               x_return_status);
3392      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3393        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3394      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3395        raise OKC_API.G_EXCEPTION_ERROR;
3396      END IF;
3397      -- Call user hook for BEFORE
3398      g_samv_rec := l_samv_rec;
3399      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3400      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3401        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3402      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3403        raise OKC_API.G_EXCEPTION_ERROR;
3404      END IF;
3405      l_samv_rec := migrate_samv(l_samv_rec, g_samv_rec);
3406 
3407      OKC_STD_ARTICLE_PVT.delete_std_art_set_mem(
3408                          p_api_version         => p_api_version,
3409                          p_init_msg_list       => p_init_msg_list,
3410                          x_return_status       => x_return_status,
3411                          x_msg_count           => x_msg_count,
3412                          x_msg_data            => x_msg_data,
3413                          p_samv_rec            => l_samv_rec);
3414 
3415      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3416        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3417      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3418        raise OKC_API.G_EXCEPTION_ERROR;
3419      END IF;
3420 
3421      -- Call user hook for AFTER
3422      g_samv_rec := l_samv_rec;
3423      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3424      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3425        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3426      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3427        raise OKC_API.G_EXCEPTION_ERROR;
3428      END IF;
3429      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3430    EXCEPTION
3431      WHEN OKC_API.G_EXCEPTION_ERROR THEN
3432        x_return_status := OKC_API.HANDLE_EXCEPTIONS
3433        (l_api_name,
3434         G_PKG_NAME,
3435         'OKC_API.G_RET_STS_ERROR',
3436         x_msg_count,
3437         x_msg_data,
3438         '_PUB');
3439      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3440        x_return_status := OKC_API.HANDLE_EXCEPTIONS
3441        (l_api_name,
3442         G_PKG_NAME,
3443         'OKC_API.G_RET_STS_UNEXP_ERROR',
3444         x_msg_count,
3445         x_msg_data,
3446         '_PUB');
3447      WHEN OTHERS THEN
3448        x_return_status := OKC_API.HANDLE_EXCEPTIONS
3449        (l_api_name,
3450         G_PKG_NAME,
3451         'OTHERS',
3452         x_msg_count,
3453         x_msg_data,
3454         '_PUB');
3455  END delete_std_art_set_mem;
3456 
3457 PROCEDURE delete_std_art_set_mem(
3458 	p_api_version 		IN NUMBER,
3459 	p_init_msg_list 		IN VARCHAR2 ,
3460 	x_return_status		OUT NOCOPY VARCHAR2,
3461 	x_msg_count		OUT NOCOPY NUMBER,
3462 	x_msg_data		OUT NOCOPY VARCHAR2,
3463 	p_samv_tbl		IN samv_tbl_type) IS
3464      i				    NUMBER := 0;
3465      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3466 
3467  BEGIN
3468      x_return_status := OKC_API.G_RET_STS_SUCCESS;
3469      IF p_samv_tbl.COUNT > 0 THEN
3470        i := p_samv_tbl.FIRST;
3471        LOOP
3472        		delete_std_art_set_mem(
3473                          p_api_version         => p_api_version,
3474                          p_init_msg_list       => p_init_msg_list,
3475                          x_return_status       => l_return_status,
3476                          x_msg_count           => x_msg_count,
3477                          x_msg_data            => x_msg_data,
3478                          p_samv_rec            => p_samv_tbl(i));
3479        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3480          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3481            			x_return_status := l_return_status;
3482            			raise G_EXCEPTION_HALT_PROCESSING;
3483          		ELSE
3484            			x_return_status := l_return_status;
3485          		END IF;
3486        		END IF;
3487        		EXIT WHEN (i = p_samv_tbl.LAST);
3488        		i := p_samv_tbl.NEXT(i);
3489        END LOOP;
3490      END IF;
3491    EXCEPTION
3492      WHEN G_EXCEPTION_HALT_PROCESSING THEN
3493        NULL;
3494      WHEN OTHERS THEN
3495        OKC_API.set_message(p_app_name      => g_app_name,
3496                            p_msg_name      => g_unexpected_error,
3497                            p_token1        => g_sqlcode_token,
3498                            p_token1_value  => sqlcode,
3499                            p_token2        => g_sqlerrm_token,
3500                            p_token2_value  => sqlerrm);
3501        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3502  END delete_std_art_set_mem;
3503 
3504 
3505 PROCEDURE validate_std_art_set_mem(
3506 	p_api_version 		IN NUMBER,
3507 	p_init_msg_list 		IN VARCHAR2 ,
3508 	x_return_status		OUT NOCOPY VARCHAR2,
3509 	x_msg_count		OUT NOCOPY NUMBER,
3510 	x_msg_data		OUT NOCOPY VARCHAR2,
3511 	p_samv_rec		IN samv_rec_type) IS
3512   BEGIN
3513 
3514      OKC_STD_ARTICLE_PVT.validate_std_art_set_mem(
3515                          p_api_version         => p_api_version,
3516                          p_init_msg_list       => p_init_msg_list,
3517                          x_return_status       => x_return_status,
3518                          x_msg_count           => x_msg_count,
3519                          x_msg_data            => x_msg_data,
3520                          p_samv_rec            => p_samv_rec);
3521 
3522 END validate_std_art_set_mem;
3523 
3524 PROCEDURE validate_std_art_set_mem(
3525 	p_api_version 		IN NUMBER,
3526 	p_init_msg_list 		IN VARCHAR2 ,
3527 	x_return_status		OUT NOCOPY VARCHAR2,
3528 	x_msg_count		OUT NOCOPY NUMBER,
3529 	x_msg_data		OUT NOCOPY VARCHAR2,
3530 	p_samv_tbl		IN samv_tbl_type) IS
3531      i				    NUMBER := 0;
3532      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3533 
3534  BEGIN
3535      x_return_status := OKC_API.G_RET_STS_SUCCESS;
3536      IF p_samv_tbl.COUNT > 0 THEN
3537        i := p_samv_tbl.FIRST;
3538        LOOP
3539        		validate_std_art_set_mem(
3540                          p_api_version         => p_api_version,
3541                          p_init_msg_list       => p_init_msg_list,
3542                          x_return_status       => l_return_status,
3543                          x_msg_count           => x_msg_count,
3544                          x_msg_data            => x_msg_data,
3545                          p_samv_rec            => p_samv_tbl(i));
3546        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3547          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3548            			x_return_status := l_return_status;
3549            			raise G_EXCEPTION_HALT_PROCESSING;
3550          		ELSE
3551            			x_return_status := l_return_status;
3552          		END IF;
3553        		END IF;
3554        		EXIT WHEN (i = p_samv_tbl.LAST);
3555        		i := p_samv_tbl.NEXT(i);
3556        END LOOP;
3557      END IF;
3558    EXCEPTION
3559      WHEN G_EXCEPTION_HALT_PROCESSING THEN
3560        NULL;
3561      WHEN OTHERS THEN
3562        OKC_API.set_message(p_app_name      => g_app_name,
3563                            p_msg_name      => g_unexpected_error,
3564                            p_token1        => g_sqlcode_token,
3565                            p_token1_value  => sqlcode,
3566                            p_token2        => g_sqlerrm_token,
3567                            p_token2_value  => sqlerrm);
3568        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3569  END validate_std_art_set_mem;
3570 
3571 PROCEDURE validate_unique(
3572 	p_api_version 		IN NUMBER,
3573 	p_init_msg_list 	IN VARCHAR2 ,
3574 	x_return_status		OUT NOCOPY VARCHAR2,
3575 	x_msg_count		OUT NOCOPY NUMBER,
3576 	x_msg_data		OUT NOCOPY VARCHAR2,
3577 	p_samv_rec		IN samv_rec_type) IS
3578 BEGIN
3579 	OKC_STD_ARTICLE_PVT.Validate_Unique(p_api_version         => p_api_version,
3580                          		p_init_msg_list       => p_init_msg_list,
3581                          		x_return_status       => x_return_status,
3582                          		x_msg_count           => x_msg_count,
3583                          		x_msg_data            => x_msg_data,
3584                          		p_samv_rec            => p_samv_rec);
3585 
3586 End Validate_unique;
3587 
3588 PROCEDURE validate_unique(
3589 	p_api_version 		IN NUMBER,
3590 	p_init_msg_list         IN VARCHAR2 ,
3591 	x_return_status		OUT NOCOPY VARCHAR2,
3592 	x_msg_count		OUT NOCOPY NUMBER,
3593 	x_msg_data		OUT NOCOPY VARCHAR2,
3594 	p_samv_tbl		IN samv_tbl_type) IS
3595 
3596      i				    NUMBER := 0;
3597      l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3598 
3599  BEGIN
3600      x_return_status := OKC_API.G_RET_STS_SUCCESS;
3601      IF p_samv_tbl.COUNT > 0 THEN
3602        i := p_samv_tbl.FIRST;
3603        LOOP
3604        	      Validate_unique(p_api_version   => p_api_version,
3605                          p_init_msg_list       => p_init_msg_list,
3606                          x_return_status       => l_return_status,
3607                          x_msg_count           => x_msg_count,
3608                          x_msg_data            => x_msg_data,
3609                          p_samv_rec            => p_samv_tbl(i));
3610 
3611        		IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3612          		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3613            			x_return_status := l_return_status;
3614            			raise G_EXCEPTION_HALT_PROCESSING;
3615          		ELSE
3616            			x_return_status := l_return_status;
3617          		END IF;
3618        		END IF;
3619        		EXIT WHEN (i = p_samv_tbl.LAST);
3620        		i := p_samv_tbl.NEXT(i);
3621        END LOOP;
3622      END IF;
3623    EXCEPTION
3624      WHEN G_EXCEPTION_HALT_PROCESSING THEN
3625        NULL;
3626      WHEN OTHERS THEN
3627        OKC_API.set_message(p_app_name      => g_app_name,
3628                            p_msg_name      => g_unexpected_error,
3629                            p_token1        => g_sqlcode_token,
3630                            p_token1_value  => sqlcode,
3631                            p_token2        => g_sqlerrm_token,
3632                            p_token2_value  => sqlerrm);
3633        x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3634 End Validate_unique;
3635 
3636 -- BUG 3188215 - KOL: BACKWARD COMPATIBILITY CHANGES
3637 -- modified the function to call the new api function
3638 -- art_used_in_contracts
3639 FUNCTION used_in_contracts
3640 (
3641   p_sav_sae_id               IN   okc_k_articles_b.sav_sae_id%TYPE,
3642   p_sav_sav_release          IN   okc_k_articles_b.sav_sav_release%TYPE
3643 )
3644 RETURN VARCHAR2 IS
3645 
3646 BEGIN
3647 
3648   RETURN okc_std_article_pvt.art_used_in_contracts(p_sav_sae_id,p_sav_sav_release);
3649 
3650 END used_in_contracts;
3651 
3652 FUNCTION empclob
3653 RETURN CLOB IS
3654 
3655 BEGIN
3656    RETURN okc_std_article_pvt.empclob;
3657 
3658 END empclob;
3659 
3660 FUNCTION latest_release
3661 (
3662   p_sav_sae_id               IN   okc_k_articles_b.sav_sae_id%TYPE
3663 )
3664 RETURN VARCHAR2 IS
3665 
3666 BEGIN
3667 
3668   RETURN okc_std_article_pvt.latest_release(p_sav_sae_id);
3669 
3670 END latest_release;
3671 
3672 --BUG 3188215 - KOL: BACKWARD COMPATIBILITY CHANGES
3673 -- modified the function to call the new api function
3674 -- latest_art_release
3675 FUNCTION latest_release
3676 (
3677   p_sav_sae_id               IN   okc_k_articles_b.sav_sae_id%TYPE,
3678   p_article_version_number   IN   okc_article_versions.article_version_number%TYPE
3679 )
3680 RETURN VARCHAR2 IS
3681 
3682 BEGIN
3683 
3684   RETURN okc_std_article_pvt.latest_art_release(p_sav_sae_id,p_article_version_number);
3685 
3686 END latest_release;
3687 
3688 -- BUG 3188215 - KOL: BACKWARD COMPATIBILITY CHANGES
3689 -- modified the function to call the new api function
3690 -- latest_or_future_art_release
3691 FUNCTION latest_or_future_release
3692 (
3693   p_sav_sae_id               IN   okc_k_articles_b.sav_sae_id%TYPE,
3694   p_article_version_number   IN   okc_article_versions.article_version_number%TYPE,
3695   p_date_active              IN   okc_article_versions.start_date%TYPE
3696 )
3697 RETURN VARCHAR2 IS
3698 
3699 BEGIN
3700 
3701   RETURN okc_std_article_pvt.latest_or_future_art_release(p_sav_sae_id,p_article_version_number,p_date_active);
3702 
3703 END latest_or_future_release;
3704 
3705 
3706 END okc_std_article_pub;