DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_K_ARTICLE_PUB

Source


1 package body OKC_K_ARTICLE_PUB as
2 /* $Header: OKCPCATB.pls 120.0 2005/05/25 19:11:14 appldev noship $ */
3 	l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
4 
5   G_APP_NAME			CONSTANT VARCHAR2(3)   :=  OKC_API.G_APP_NAME;
6   G_PKG_NAME			CONSTANT VARCHAR2(200) := 'OKC_K_ARTICLE_PUB';
7   G_API_VERSION               CONSTANT NUMBER := 1;
8   G_SCOPE				CONSTANT varchar2(4) := '_PUB';
9   ------------------------------------------------------------------------------
10   -- GLOBAL CONSTANTS
11   ------------------------------------------------------------------------------
12   G_FALSE                      CONSTANT   VARCHAR2(1) := FND_API.G_FALSE;
13   G_TRUE                       CONSTANT   VARCHAR2(1) := FND_API.G_TRUE;
14   G_MISS_NUM                   CONSTANT   NUMBER      := FND_API.G_MISS_NUM;
15   G_MISS_CHAR                  CONSTANT   VARCHAR2(1) := FND_API.G_MISS_CHAR;
16   G_MISS_DATE                  CONSTANT   DATE        := FND_API.G_MISS_DATE;
17   G_RET_STS_SUCCESS            CONSTANT   VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
18   G_RET_STS_ERROR              CONSTANT   VARCHAR2(1) := FND_API.G_RET_STS_ERROR;
19   G_RET_STS_UNEXP_ERROR        CONSTANT   VARCHAR2(1) := FND_API.G_RET_STS_UNEXP_ERROR;
20   G_UNEXPECTED_ERROR           CONSTANT   VARCHAR2(200) := 'OKC_UNEXPECTED_ERROR';
21   G_SQLERRM_TOKEN              CONSTANT   VARCHAR2(200) := 'ERROR_MESSAGE';
22   G_SQLCODE_TOKEN              CONSTANT   VARCHAR2(200) := 'ERROR_CODE';
23   -- ??? should be moved to OKC_TERMS_UTIL_PVT
24   G_UNASSIGNED_SECTION_CODE    CONSTANT   VARCHAR2(30)  := 'UNASSIGNED';
25 
26   TYPE catv_11510_rec_type IS RECORD (
27     id                             NUMBER,
28     chr_id                         NUMBER,
29     cle_id                         NUMBER,
30     cat_id                         NUMBER,
31     object_version_number          NUMBER,
32     sfwt_flag                      OKC_K_ARTICLES_V.SFWT_FLAG%TYPE,
33     sav_sae_id                     NUMBER,
34     sav_sav_release                OKC_K_ARTICLES_V.SAV_SAV_RELEASE%TYPE,
35     sbt_code                       OKC_K_ARTICLES_V.SBT_CODE%TYPE,
36     dnz_chr_id                     NUMBER,
37     comments                       OKC_K_ARTICLES_V.COMMENTS%TYPE,
38     fulltext_yn                    OKC_K_ARTICLES_V.FULLTEXT_YN%TYPE,
39     variation_description          OKC_K_ARTICLES_V.VARIATION_DESCRIPTION%TYPE,
40     name                           OKC_K_ARTICLES_V.NAME%TYPE,
41 -- text ... commented out to treat empty CLOB as an of empty content:
42 -- if need to nullify it then nullify contents, not the pointer
43 --  text                           OKC_K_ARTICLES_V.TEXT%TYPE := OKC_API.G_MISS_CHAR,
44 --+Hand code start
45     text                           OKC_K_ARTICLES_V.TEXT%TYPE,
46 --+Hand code end
47     attribute_category             OKC_K_ARTICLES_V.ATTRIBUTE_CATEGORY%TYPE,
48     attribute1                     OKC_K_ARTICLES_V.ATTRIBUTE1%TYPE,
49     attribute2                     OKC_K_ARTICLES_V.ATTRIBUTE2%TYPE,
50     attribute3                     OKC_K_ARTICLES_V.ATTRIBUTE3%TYPE,
51     attribute4                     OKC_K_ARTICLES_V.ATTRIBUTE4%TYPE,
52     attribute5                     OKC_K_ARTICLES_V.ATTRIBUTE5%TYPE,
53     attribute6                     OKC_K_ARTICLES_V.ATTRIBUTE6%TYPE,
54     attribute7                     OKC_K_ARTICLES_V.ATTRIBUTE7%TYPE,
55     attribute8                     OKC_K_ARTICLES_V.ATTRIBUTE8%TYPE,
56     attribute9                     OKC_K_ARTICLES_V.ATTRIBUTE9%TYPE,
57     attribute10                    OKC_K_ARTICLES_V.ATTRIBUTE10%TYPE,
58     attribute11                    OKC_K_ARTICLES_V.ATTRIBUTE11%TYPE,
59     attribute12                    OKC_K_ARTICLES_V.ATTRIBUTE12%TYPE,
60     attribute13                    OKC_K_ARTICLES_V.ATTRIBUTE13%TYPE,
61     attribute14                    OKC_K_ARTICLES_V.ATTRIBUTE14%TYPE,
62     attribute15                    OKC_K_ARTICLES_V.ATTRIBUTE15%TYPE,
63     cat_type                       OKC_K_ARTICLES_V.CAT_TYPE%TYPE,
64     created_by                     NUMBER,
65     creation_date                  OKC_K_ARTICLES_V.CREATION_DATE%TYPE,
66     last_updated_by                NUMBER,
67     last_update_date               OKC_K_ARTICLES_V.LAST_UPDATE_DATE%TYPE,
68     last_update_login              NUMBER,
69   -- new 11i10 columns
70     -- defaulted during insert based on App_Id
71     document_type                  OKC_K_ARTICLES_B.DOCUMENT_TYPE%TYPE,
72     document_id                    NUMBER ,
73 
74     source_flag                    VARCHAR2(1) ,
75     mandatory_yn                   OKC_K_ARTICLES_B.mandatory_yn%TYPE ,
76     scn_id                         NUMBER ,
77     label                          OKC_K_ARTICLES_B.label%TYPE ,
78     amendment_description          OKC_K_ARTICLES_B.amendment_description%TYPE ,
79     amendment_operation_code       OKC_K_ARTICLES_B.amendment_operation_code%TYPE ,
80     article_version_id             NUMBER ,
81     change_nonstd_yn               OKC_K_ARTICLES_B.change_nonstd_yn%TYPE ,
82     orig_system_reference_code     OKC_K_ARTICLES_B.orig_system_reference_code%TYPE ,
83     orig_system_reference_id1      NUMBER ,
84     orig_system_reference_id2      NUMBER ,
85     display_sequence               NUMBER ,
86     print_text_yn                  OKC_K_ARTICLES_B.print_text_yn%TYPE ,
87     summary_amend_operation_code   OKC_K_ARTICLES_B.summary_amend_operation_code%TYPE ,
88     ref_article_id                 NUMBER ,
89     ref_article_version_id         NUMBER,
90     b_sav_sae_id                   NUMBER,
91     last_amended_by            OKC_K_ARTICLES_B.LAST_AMENDED_BY%TYPE,
92     last_amendment_date        OKC_K_ARTICLES_B.LAST_AMENDMENT_DATE%TYPE
93   );
94   gi_catv_rec 			catv_11510_rec_type;
95 
96 /*
97 --
98 --	reset some columns procedures after "before user hooks"
99 --
100 procedure reset(p_catv_rec IN catv_rec_type) is
101 begin
102     gi_catv_rec.id                    := p_catv_rec.id;
103     gi_catv_rec.object_version_number := p_catv_rec.object_version_number;
104     gi_catv_rec.created_by            := p_catv_rec.created_by;
105     gi_catv_rec.creation_date         := p_catv_rec.creation_date;
106     gi_catv_rec.last_updated_by       := p_catv_rec.last_updated_by;
107     gi_catv_rec.last_update_date      := p_catv_rec.last_update_date;
108     gi_catv_rec.last_update_login     := p_catv_rec.last_update_login;
109 end reset;
110 procedure reset(p_atnv_rec IN atnv_rec_type) is
111 begin
112     g_atnv_rec.id                    := p_atnv_rec.id;
113     g_atnv_rec.object_version_number := p_atnv_rec.object_version_number;
114     g_atnv_rec.created_by            := p_atnv_rec.created_by;
115     g_atnv_rec.creation_date         := p_atnv_rec.creation_date;
116     g_atnv_rec.last_updated_by       := p_atnv_rec.last_updated_by;
117     g_atnv_rec.last_update_date      := p_atnv_rec.last_update_date;
118     g_atnv_rec.last_update_login     := p_atnv_rec.last_update_login;
119 end reset;
120 */
121   PROCEDURE Flip_GMISS_Record ;
122 
123   PROCEDURE Dump_Rec( p_catv_rec catv_11510_rec_type ) IS
124     PROCEDURE Print( str VARCHAR2 ) IS
125      BEGIN
126       okc_debug.log( str, 2 );
127 --      Dbms_Output.Put_line( str );
128     END;
129    BEGIN
130     Print( '-----------------------------------------------------------------');
131     Print( 'Dump of CATV_REC structure:');
132     Print( ' id=['||p_catv_rec.id||']');
133     Print( ' chr_id=['||p_catv_rec.chr_id||']');
134     Print( ' cle_id=['||p_catv_rec.cle_id||']');
135     Print( ' cat_id=['||p_catv_rec.cat_id||']');
136     Print( ' object_version_number=['||p_catv_rec.object_version_number||']');
137     Print( ' sfwt_flag=['||p_catv_rec.sfwt_flag||']');
138     Print( ' sav_sae_id=['||p_catv_rec.sav_sae_id||']');
139     Print( ' sav_sav_release=['||p_catv_rec.sav_sav_release||']');
140     Print( ' sbt_code=['||p_catv_rec.sbt_code||']');
141     Print( ' dnz_chr_id=['||p_catv_rec.dnz_chr_id||']');
142     Print( ' comments=['||p_catv_rec.comments||']');
143     Print( ' fulltext_yn=['||p_catv_rec.fulltext_yn||']');
144     Print( ' variation_description=['||p_catv_rec.variation_description||']');
145     Print( ' name=['||p_catv_rec.name||']');
146     Print( ' text=['||Dbms_Lob.Substr(p_catv_rec.text,80,1)||'...]');
147     Print( ' cat_type=['||p_catv_rec.cat_type||']');
148     Print( ' document_type=['||p_catv_rec.document_type||']');
149     Print( ' document_id=['||p_catv_rec.document_id||']');
150     Print( ' source_flag=['||p_catv_rec.source_flag||']');
151     Print( ' mandatory_yn=['||p_catv_rec.mandatory_yn||']');
152     Print( ' scn_id=['||p_catv_rec.scn_id||']');
153     Print( ' label=['||p_catv_rec.label||']');
154     Print( ' amendment_description=['||p_catv_rec.amendment_description||']');
155     Print( ' amendment_operation_code=['||p_catv_rec.amendment_operation_code||']');
156     Print( ' article_version_id=['||p_catv_rec.article_version_id||']');
157     Print( ' change_nonstd_yn=['||p_catv_rec.change_nonstd_yn||']');
158     Print( ' orig_system_reference_code=['||p_catv_rec.orig_system_reference_code||']');
159     Print( ' orig_system_reference_id1=['||p_catv_rec.orig_system_reference_id1||']');
160     Print( ' orig_system_reference_id2=['||p_catv_rec.orig_system_reference_id2||']');
161     Print( ' display_sequence=['||p_catv_rec.display_sequence||']');
162     Print( ' print_text_yn=['||p_catv_rec.print_text_yn||']');
163     Print( ' summary_amend_operation_code=['||p_catv_rec.summary_amend_operation_code||']');
164     Print( ' ref_article_id=['||p_catv_rec.ref_article_id||']');
165     Print( ' ref_article_version_id=['||p_catv_rec.ref_article_version_id||']');
166     Print( ' b_sav_sae_id=['||p_catv_rec.b_sav_sae_id||']');
167   END;
168 
169   PROCEDURE Dump_Rec( p_catv_rec catv_rec_type ) IS
170     PROCEDURE Print( str VARCHAR2 ) IS
171      BEGIN
172       okc_debug.log( str, 2 );
173 --      Dbms_Output.Put_line( str );
174     END;
175    BEGIN
176     Print( '-----------------------------------------------------------------');
177     Print( 'Dump of CATV_REC structure:');
178     Print( ' id=['||p_catv_rec.id||']');
179     Print( ' chr_id=['||p_catv_rec.chr_id||']');
180     Print( ' cle_id=['||p_catv_rec.cle_id||']');
181     Print( ' cat_id=['||p_catv_rec.cat_id||']');
182     Print( ' object_version_number=['||p_catv_rec.object_version_number||']');
183     Print( ' sfwt_flag=['||p_catv_rec.sfwt_flag||']');
184     Print( ' sav_sae_id=['||p_catv_rec.sav_sae_id||']');
185     Print( ' sav_sav_release=['||p_catv_rec.sav_sav_release||']');
186     Print( ' sbt_code=['||p_catv_rec.sbt_code||']');
187     Print( ' dnz_chr_id=['||p_catv_rec.dnz_chr_id||']');
188     Print( ' comments=['||p_catv_rec.comments||']');
189     Print( ' fulltext_yn=['||p_catv_rec.fulltext_yn||']');
190     Print( ' variation_description=['||p_catv_rec.variation_description||']');
191     Print( ' name=['||p_catv_rec.name||']');
192     Print( ' text=['||Dbms_Lob.Substr(p_catv_rec.text,80,1)||'...]');
193     Print( ' cat_type=['||p_catv_rec.cat_type||']');
194   END;
195 
196   ---------------------------------------------------------------------------
197   -- FUNCTION get_rec for: OKC_K_ARTICLES_V
198   ---------------------------------------------------------------------------
199   FUNCTION get_rec (
200     p_id                     IN NUMBER,
201     p_major_version          IN NUMBER := NULL,
202     x_no_data_found          OUT NOCOPY BOOLEAN
203   ) RETURN catv_rec_type IS
204     CURSOR okc_catv_pk_csr (p_id IN NUMBER) IS
205     SELECT
206             ID,
207             CHR_ID,
208             CLE_ID,
209             CAT_ID,
210             OBJECT_VERSION_NUMBER,
211             SFWT_FLAG,
212             SAV_SAE_ID,
213             SAV_SAV_RELEASE,
214             SBT_CODE,
215             DNZ_CHR_ID,
216             COMMENTS,
217             FULLTEXT_YN,
218             VARIATION_DESCRIPTION,
219             NAME,
220             TEXT,
221             ATTRIBUTE_CATEGORY,
222             ATTRIBUTE1,
223             ATTRIBUTE2,
224             ATTRIBUTE3,
225             ATTRIBUTE4,
226             ATTRIBUTE5,
227             ATTRIBUTE6,
228             ATTRIBUTE7,
229             ATTRIBUTE8,
230             ATTRIBUTE9,
231             ATTRIBUTE10,
232             ATTRIBUTE11,
233             ATTRIBUTE12,
234             ATTRIBUTE13,
235             ATTRIBUTE14,
236             ATTRIBUTE15,
237             CAT_TYPE,
238             CREATED_BY,
239             CREATION_DATE,
240             LAST_UPDATED_BY,
241             LAST_UPDATE_DATE,
242             LAST_UPDATE_LOGIN
243       FROM Okc_K_Articles_V
244      WHERE id  = p_id;
245     CURSOR okc_catv_h_pk_csr (p_id IN NUMBER, p_major_version NUMBER) IS
246     SELECT
247             ID,
248             CHR_ID,
249             CLE_ID,
250             CAT_ID,
251             OBJECT_VERSION_NUMBER,
252             SFWT_FLAG,
253             SAV_SAE_ID,
254             SAV_SAV_RELEASE,
255             SBT_CODE,
256             DNZ_CHR_ID,
257             COMMENTS,
258             FULLTEXT_YN,
259             VARIATION_DESCRIPTION,
260             NAME,
261             TEXT,
262             ATTRIBUTE_CATEGORY,
263             ATTRIBUTE1,
264             ATTRIBUTE2,
265             ATTRIBUTE3,
266             ATTRIBUTE4,
267             ATTRIBUTE5,
268             ATTRIBUTE6,
269             ATTRIBUTE7,
270             ATTRIBUTE8,
271             ATTRIBUTE9,
272             ATTRIBUTE10,
273             ATTRIBUTE11,
274             ATTRIBUTE12,
275             ATTRIBUTE13,
276             ATTRIBUTE14,
277             ATTRIBUTE15,
278             CAT_TYPE,
279             CREATED_BY,
280             CREATION_DATE,
281             LAST_UPDATED_BY,
282             LAST_UPDATE_DATE,
283             LAST_UPDATE_LOGIN
284       FROM Okc_K_Articles_HV
285      WHERE id = p_id AND major_version=p_major_version;
286     l_catv_rec catv_rec_type;
287   BEGIN
288 
289     IF (l_debug = 'Y') THEN
290        okc_debug.Set_Indentation('KART');
291        okc_debug.log('1000: Entered get_rec', 2);
292     END IF;
293 
294     x_no_data_found := TRUE;
295     -- Get current database values
296     IF p_major_version IS NULL THEN
297       OPEN okc_catv_pk_csr (p_id);
298       FETCH okc_catv_pk_csr INTO
299               l_catv_rec.ID,
300               l_catv_rec.CHR_ID,
301               l_catv_rec.CLE_ID,
302               l_catv_rec.CAT_ID,
303               l_catv_rec.OBJECT_VERSION_NUMBER,
304               l_catv_rec.SFWT_FLAG,
305               l_catv_rec.SAV_SAE_ID,
306               l_catv_rec.SAV_SAV_RELEASE,
307               l_catv_rec.SBT_CODE,
308               l_catv_rec.DNZ_CHR_ID,
309               l_catv_rec.COMMENTS,
310               l_catv_rec.FULLTEXT_YN,
311               l_catv_rec.VARIATION_DESCRIPTION,
312               l_catv_rec.NAME,
313               l_catv_rec.TEXT,
314               l_catv_rec.ATTRIBUTE_CATEGORY,
315               l_catv_rec.ATTRIBUTE1,
316               l_catv_rec.ATTRIBUTE2,
317               l_catv_rec.ATTRIBUTE3,
318               l_catv_rec.ATTRIBUTE4,
319               l_catv_rec.ATTRIBUTE5,
320               l_catv_rec.ATTRIBUTE6,
321               l_catv_rec.ATTRIBUTE7,
322               l_catv_rec.ATTRIBUTE8,
323               l_catv_rec.ATTRIBUTE9,
324               l_catv_rec.ATTRIBUTE10,
325               l_catv_rec.ATTRIBUTE11,
326               l_catv_rec.ATTRIBUTE12,
327               l_catv_rec.ATTRIBUTE13,
328               l_catv_rec.ATTRIBUTE14,
329               l_catv_rec.ATTRIBUTE15,
330               l_catv_rec.CAT_TYPE,
331               l_catv_rec.CREATED_BY,
332               l_catv_rec.CREATION_DATE,
333               l_catv_rec.LAST_UPDATED_BY,
334               l_catv_rec.LAST_UPDATE_DATE,
335               l_catv_rec.LAST_UPDATE_LOGIN;
336       x_no_data_found := okc_catv_pk_csr%NOTFOUND;
337       CLOSE okc_catv_pk_csr;
338      ELSE
339       OPEN okc_catv_h_pk_csr (p_id, p_major_version);
340       FETCH okc_catv_h_pk_csr INTO
341               l_catv_rec.ID,
342               l_catv_rec.CHR_ID,
343               l_catv_rec.CLE_ID,
344               l_catv_rec.CAT_ID,
345               l_catv_rec.OBJECT_VERSION_NUMBER,
349               l_catv_rec.SBT_CODE,
346               l_catv_rec.SFWT_FLAG,
347               l_catv_rec.SAV_SAE_ID,
348               l_catv_rec.SAV_SAV_RELEASE,
350               l_catv_rec.DNZ_CHR_ID,
351               l_catv_rec.COMMENTS,
352               l_catv_rec.FULLTEXT_YN,
353               l_catv_rec.VARIATION_DESCRIPTION,
354               l_catv_rec.NAME,
355               l_catv_rec.TEXT,
356               l_catv_rec.ATTRIBUTE_CATEGORY,
357               l_catv_rec.ATTRIBUTE1,
358               l_catv_rec.ATTRIBUTE2,
359               l_catv_rec.ATTRIBUTE3,
360               l_catv_rec.ATTRIBUTE4,
361               l_catv_rec.ATTRIBUTE5,
362               l_catv_rec.ATTRIBUTE6,
363               l_catv_rec.ATTRIBUTE7,
364               l_catv_rec.ATTRIBUTE8,
365               l_catv_rec.ATTRIBUTE9,
366               l_catv_rec.ATTRIBUTE10,
367               l_catv_rec.ATTRIBUTE11,
368               l_catv_rec.ATTRIBUTE12,
369               l_catv_rec.ATTRIBUTE13,
370               l_catv_rec.ATTRIBUTE14,
371               l_catv_rec.ATTRIBUTE15,
372               l_catv_rec.CAT_TYPE,
373               l_catv_rec.CREATED_BY,
374               l_catv_rec.CREATION_DATE,
375               l_catv_rec.LAST_UPDATED_BY,
376               l_catv_rec.LAST_UPDATE_DATE,
377               l_catv_rec.LAST_UPDATE_LOGIN;
378       x_no_data_found := okc_catv_h_pk_csr%NOTFOUND;
379       CLOSE okc_catv_h_pk_csr;
380     END IF;
381 
382     IF (l_debug = 'Y') THEN
383       okc_debug.log('1000: Leaving  Get_Rec ', 2);
384       okc_debug.Reset_Indentation;
385     END IF;
386 
387     RETURN(l_catv_rec);
388 
389   END get_rec;
390 
391   FUNCTION get_rec (
392     p_id                     IN NUMBER,
393     p_major_version          IN NUMBER := NULL
394   ) RETURN catv_rec_type IS
395     l_row_notfound                 BOOLEAN := TRUE;
396   BEGIN
397     RETURN( get_rec(p_id, p_major_version, l_row_notfound) );
398   END get_rec;
399 
400   FUNCTION migrate(
401     p_catv_rec	IN	catv_rec_type,
402     p_major_version          IN NUMBER := NULL
403    ) RETURN catv_11510_rec_type IS
404     x_catv_rec catv_11510_rec_type;
405     l_return_status VARCHAR2(1) := G_RET_STS_SUCCESS;
406    BEGIN
407     IF (l_debug = 'Y') THEN
408        okc_debug.Set_Indentation('KART');
409        okc_debug.log('1000: Entered migrate1', 2);
410     END IF;
411 
412     IF p_catv_rec.ID IS NOT NULL AND p_catv_rec.id <> G_MISS_NUM THEN
413       IF (l_debug = 'Y') THEN
414         okc_debug.log('1000: cat_id IS NOT NULL('||p_catv_rec.ID||')', 2);
415       END IF;
416       -- Get current database values
417       l_return_status := OKC_K_ARTICLES_PVT.Get_Rec(
418         p_id                         => p_catv_rec.id,
419         p_major_version              => p_major_version,
420         x_document_type              => x_catv_rec.document_type,
421         x_document_id                => x_catv_rec.document_id,
422         x_source_flag                => x_catv_rec.source_flag,
423         x_mandatory_yn               => x_catv_rec.mandatory_yn,
424         x_scn_id                     => x_catv_rec.scn_id,
425         x_label                      => x_catv_rec.label,
426         x_amendment_description      => x_catv_rec.amendment_description,
427         x_amendment_operation_code   => x_catv_rec.amendment_operation_code,
428         x_article_version_id         => x_catv_rec.article_version_id,
429         x_change_nonstd_yn           => x_catv_rec.change_nonstd_yn,
430         x_orig_system_reference_code => x_catv_rec.orig_system_reference_code,
431         x_orig_system_reference_id1  => x_catv_rec.orig_system_reference_id1,
432         x_orig_system_reference_id2  => x_catv_rec.orig_system_reference_id2,
433         x_display_sequence           => x_catv_rec.display_sequence,
434         x_print_text_yn              => x_catv_rec.print_text_yn,
435         x_summary_amend_operation_code => x_catv_rec.summary_amend_operation_code,
436         x_ref_article_id               => x_catv_rec.ref_article_id,
437         x_ref_article_version_id       => x_catv_rec.ref_article_version_id,
438   -- setting rest of attributes to the same record - but they will be overwritten below
439         x_cle_id                     => x_catv_rec.cle_id,
440         x_sav_sae_id                 => x_catv_rec.b_sav_sae_id,
441         x_attribute_category         => x_catv_rec.attribute_category,
442         x_attribute1                 => x_catv_rec.attribute1,
443         x_attribute2                 => x_catv_rec.attribute2,
444         x_attribute3                 => x_catv_rec.attribute3,
445         x_attribute4                 => x_catv_rec.attribute4,
446         x_attribute5                 => x_catv_rec.attribute5,
447         x_attribute6                 => x_catv_rec.attribute6,
448         x_attribute7                 => x_catv_rec.attribute7,
449         x_attribute8                 => x_catv_rec.attribute8,
450         x_attribute9                 => x_catv_rec.attribute9,
451         x_attribute10                => x_catv_rec.attribute10,
452         x_attribute11                => x_catv_rec.attribute11,
453         x_attribute12                => x_catv_rec.attribute12,
454         x_attribute13                => x_catv_rec.attribute13,
455         x_attribute14                => x_catv_rec.attribute14,
456         x_attribute15                => x_catv_rec.attribute15,
457         x_object_version_number      => x_catv_rec.object_version_number,
458         x_created_by                 => x_catv_rec.created_by,
459         x_creation_date              => x_catv_rec.creation_date,
463         x_last_amended_by            => x_catv_rec.last_amended_by,
460         x_last_updated_by            => x_catv_rec.last_updated_by,
461         x_last_update_login          => x_catv_rec.last_update_login,
462         x_last_update_date           => x_catv_rec.last_update_date,
464         x_last_amendment_date        => x_catv_rec.last_amendment_date
465       );
466     END IF;
467     x_catv_rec.ID := p_catv_rec.ID;
468     x_catv_rec.CHR_ID := p_catv_rec.CHR_ID;
469     x_catv_rec.CLE_ID := p_catv_rec.CLE_ID;
470     x_catv_rec.CAT_ID := p_catv_rec.CAT_ID;
471     x_catv_rec.object_version_number := p_catv_rec.object_version_number;
472     x_catv_rec.SFWT_FLAG := p_catv_rec.SFWT_FLAG;
473     x_catv_rec.SAV_SAE_ID := p_catv_rec.SAV_SAE_ID;
474     x_catv_rec.SAV_SAV_RELEASE := p_catv_rec.SAV_SAV_RELEASE;
475     x_catv_rec.SBT_CODE := p_catv_rec.SBT_CODE;
476     x_catv_rec.DNZ_CHR_ID := p_catv_rec.DNZ_CHR_ID;
477     x_catv_rec.COMMENTS := p_catv_rec.COMMENTS;
478     x_catv_rec.FULLTEXT_YN := p_catv_rec.FULLTEXT_YN;
479     x_catv_rec.VARIATION_DESCRIPTION := p_catv_rec.VARIATION_DESCRIPTION;
480     x_catv_rec.NAME := p_catv_rec.NAME;
481     x_catv_rec.TEXT := p_catv_rec.TEXT;
482     x_catv_rec.ATTRIBUTE_CATEGORY := p_catv_rec.ATTRIBUTE_CATEGORY;
483     x_catv_rec.ATTRIBUTE1 := p_catv_rec.ATTRIBUTE1;
484     x_catv_rec.ATTRIBUTE2 := p_catv_rec.ATTRIBUTE2;
485     x_catv_rec.ATTRIBUTE3 := p_catv_rec.ATTRIBUTE3;
486     x_catv_rec.ATTRIBUTE4 := p_catv_rec.ATTRIBUTE4;
487     x_catv_rec.ATTRIBUTE5 := p_catv_rec.ATTRIBUTE5;
488     x_catv_rec.ATTRIBUTE6 := p_catv_rec.ATTRIBUTE6;
489     x_catv_rec.ATTRIBUTE7 := p_catv_rec.ATTRIBUTE7;
490     x_catv_rec.ATTRIBUTE8 := p_catv_rec.ATTRIBUTE8;
491     x_catv_rec.ATTRIBUTE9 := p_catv_rec.ATTRIBUTE9;
492     x_catv_rec.ATTRIBUTE10 := p_catv_rec.ATTRIBUTE10;
493     x_catv_rec.ATTRIBUTE11 := p_catv_rec.ATTRIBUTE11;
494     x_catv_rec.ATTRIBUTE12 := p_catv_rec.ATTRIBUTE12;
495     x_catv_rec.ATTRIBUTE13 := p_catv_rec.ATTRIBUTE13;
496     x_catv_rec.ATTRIBUTE14 := p_catv_rec.ATTRIBUTE14;
497     x_catv_rec.ATTRIBUTE15 := p_catv_rec.ATTRIBUTE15;
498     x_catv_rec.CAT_TYPE := p_catv_rec.CAT_TYPE;
499     x_catv_rec.CREATED_BY := p_catv_rec.CREATED_BY;
500     x_catv_rec.CREATION_DATE := p_catv_rec.CREATION_DATE;
501     x_catv_rec.LAST_UPDATED_BY := p_catv_rec.LAST_UPDATED_BY;
502     x_catv_rec.LAST_UPDATE_DATE := p_catv_rec.LAST_UPDATE_DATE;
503     x_catv_rec.LAST_UPDATE_LOGIN := p_catv_rec.LAST_UPDATE_LOGIN;
504 
505     IF (l_debug = 'Y') THEN
506       okc_debug.log('1000: Leaving  migrate1', 2);
507       okc_debug.Reset_Indentation;
508     END IF;
509 
510     RETURN x_catv_rec;
511   END migrate;
512 
513   FUNCTION migrate(p_catv_rec	IN	catv_11510_rec_type) RETURN catv_rec_type IS
514     x_catv_rec catv_rec_type;
515    BEGIN
516     IF (l_debug = 'Y') THEN
517        okc_debug.Set_Indentation('KART');
518        okc_debug.log('1000: Entered migrate2', 2);
519     END IF;
520     x_catv_rec.ID := p_catv_rec.ID;
521     x_catv_rec.CHR_ID := p_catv_rec.CHR_ID;
522     x_catv_rec.CLE_ID := p_catv_rec.CLE_ID;
523     x_catv_rec.CAT_ID := p_catv_rec.CAT_ID;
524     x_catv_rec.object_version_number := p_catv_rec.object_version_number;
525     x_catv_rec.SFWT_FLAG := p_catv_rec.SFWT_FLAG;
526     x_catv_rec.SAV_SAE_ID := p_catv_rec.SAV_SAE_ID;
527     x_catv_rec.SAV_SAV_RELEASE := p_catv_rec.SAV_SAV_RELEASE;
528     x_catv_rec.SBT_CODE := p_catv_rec.SBT_CODE;
529     x_catv_rec.DNZ_CHR_ID := p_catv_rec.DNZ_CHR_ID;
530     x_catv_rec.COMMENTS := p_catv_rec.COMMENTS;
531     x_catv_rec.FULLTEXT_YN := p_catv_rec.FULLTEXT_YN;
532     x_catv_rec.VARIATION_DESCRIPTION := p_catv_rec.VARIATION_DESCRIPTION;
533     x_catv_rec.NAME := p_catv_rec.NAME;
534     x_catv_rec.TEXT := p_catv_rec.TEXT;
535     x_catv_rec.ATTRIBUTE_CATEGORY := p_catv_rec.ATTRIBUTE_CATEGORY;
536     x_catv_rec.ATTRIBUTE1 := p_catv_rec.ATTRIBUTE1;
537     x_catv_rec.ATTRIBUTE2 := p_catv_rec.ATTRIBUTE2;
538     x_catv_rec.ATTRIBUTE3 := p_catv_rec.ATTRIBUTE3;
539     x_catv_rec.ATTRIBUTE4 := p_catv_rec.ATTRIBUTE4;
540     x_catv_rec.ATTRIBUTE5 := p_catv_rec.ATTRIBUTE5;
541     x_catv_rec.ATTRIBUTE6 := p_catv_rec.ATTRIBUTE6;
542     x_catv_rec.ATTRIBUTE7 := p_catv_rec.ATTRIBUTE7;
543     x_catv_rec.ATTRIBUTE8 := p_catv_rec.ATTRIBUTE8;
544     x_catv_rec.ATTRIBUTE9 := p_catv_rec.ATTRIBUTE9;
545     x_catv_rec.ATTRIBUTE10 := p_catv_rec.ATTRIBUTE10;
546     x_catv_rec.ATTRIBUTE11 := p_catv_rec.ATTRIBUTE11;
547     x_catv_rec.ATTRIBUTE12 := p_catv_rec.ATTRIBUTE12;
548     x_catv_rec.ATTRIBUTE13 := p_catv_rec.ATTRIBUTE13;
549     x_catv_rec.ATTRIBUTE14 := p_catv_rec.ATTRIBUTE14;
550     x_catv_rec.ATTRIBUTE15 := p_catv_rec.ATTRIBUTE15;
551     x_catv_rec.CAT_TYPE := p_catv_rec.CAT_TYPE;
552     x_catv_rec.CREATED_BY := p_catv_rec.CREATED_BY;
553     x_catv_rec.CREATION_DATE := p_catv_rec.CREATION_DATE;
554     x_catv_rec.LAST_UPDATED_BY := p_catv_rec.LAST_UPDATED_BY;
555     x_catv_rec.LAST_UPDATE_DATE := p_catv_rec.LAST_UPDATE_DATE;
556     x_catv_rec.LAST_UPDATE_LOGIN := p_catv_rec.LAST_UPDATE_LOGIN;
557     IF (l_debug = 'Y') THEN
558       okc_debug.log('1000: Leaving  migrate2', 2);
559       okc_debug.Reset_Indentation;
560     END IF;
561 
562     RETURN x_catv_rec;
563   END migrate;
564 
565   -- Start of comments
566   --
567   -- Procedure Name  : add_language
568   -- Description     :
569   -- Business Rules  :
570   -- Parameters      :
571   -- Version         : 1.0
575     NULL;
572   -- End of comments
573   PROCEDURE add_language is
574   BEGIN
576 --    OKC_K_ARTICLE_PVT.add_language_k_article;
577   END add_language;
578 
579   FUNCTION Get_Unassign_Section_ID(
580     p_api_version     IN  NUMBER,
581     x_return_status   OUT NOCOPY VARCHAR2,
582     x_msg_count       OUT NOCOPY NUMBER,
583     x_msg_data        OUT NOCOPY VARCHAR2,
584     p_doc_id          IN NUMBER,
585     p_doc_type        IN VARCHAR2
586   ) RETURN NUMBER IS
587     l_doc_type VARCHAR2(20);
588     l_doc_id NUMBER;
589     l_scn_id NUMBER;
590     l_tmpl_id NUMBER;
591     l_tmpl_name  VARCHAR2(100);
592     l_org_id     NUMBER;
593     CURSOR org_id_crs IS
594       SELECT authoring_org_id
595         FROM OKC_K_HEADERS_B WHERE document_id=p_doc_id;
596     CURSOR get_unasgn_scn_id_crs IS
597       SELECT ID FROM OKC_SECTIONS_B
598        WHERE document_type = p_doc_type AND document_id = p_doc_id
599          AND scn_code = G_UNASSIGNED_SECTION_CODE;
600     CURSOR get_doc_usage_crs IS
601       SELECT TEMPLATE_ID FROM okc_template_usages_v
602        WHERE document_type = p_doc_type AND document_id = p_doc_id ;
603     CURSOR get_apps_upg_tmpl_id_crs IS
604       SELECT TEMPLATE_ID FROM okc_terms_templates_all
605        WHERE template_name = l_tmpl_name and nvl(org_id,-99)=nvl(l_org_id,-99);
606   BEGIN
607     IF (l_debug = 'Y') THEN
608        okc_debug.Set_Indentation(G_PKG_NAME);
609        okc_debug.log('1000: Entered Get_Unassign_Section_ID', 2);
610     END IF;
611 
612     x_return_status	:= G_RET_STS_SUCCESS;
613 
614     OPEN get_unasgn_scn_id_crs;
615     FETCH get_unasgn_scn_id_crs INTO l_scn_id;
616     CLOSE get_unasgn_scn_id_crs;
617     IF l_scn_id IS NULL THEN
618       OKC_TERMS_UTIL_PVT.create_unassigned_section(
619         p_api_version   => p_api_version,
620         p_init_msg_list => FND_API.G_FALSE,
621         p_commit        => FND_API.G_FALSE,
622         x_return_status => x_return_status,
623         x_msg_data      => x_msg_data,
624         x_msg_count     => x_msg_count,
625         p_doc_type      => p_doc_type,
626         p_doc_id        => p_doc_id,
627         x_scn_id        => l_scn_id
628       );
629       IF (x_return_status <> G_RET_STS_SUCCESS) then
630         IF (l_debug = 'Y') THEN
631           okc_debug.log('11400: Leaving Get_Unassign_Section_ID because of an exception in OKC_TERMS_UTIL_PVT.create_unassigned_section', 2);
632           okc_debug.Reset_Indentation;
633         END IF;
634         RETURN NULL;
635       END IF;
636     END IF;
637     OPEN get_doc_usage_crs;
638     FETCH get_doc_usage_crs INTO l_tmpl_id;
639     CLOSE get_doc_usage_crs;
640     IF l_tmpl_id IS NULL THEN
641       OPEN org_id_crs;
642       FETCH org_id_crs INTO l_org_id;
643       CLOSE org_id_crs;
644 
645       l_tmpl_name := p_doc_type || '_11510_UPG_TEMPLATE';
646 
647       OPEN get_apps_upg_tmpl_id_crs;
648       FETCH get_apps_upg_tmpl_id_crs INTO l_tmpl_id;
649       CLOSE get_apps_upg_tmpl_id_crs;
650       IF l_tmpl_id IS NULL THEN
651         SELECT OKC_TERMS_TEMPLATES_ALL_S.NEXTVAL
652           INTO l_tmpl_id FROM DUAL;
653         INSERT INTO OKC_TERMS_TEMPLATES_ALL(
654           TEMPLATE_NAME,
655           TEMPLATE_ID,
656           WORKING_COPY_FLAG,
657           INTENT,
658           STATUS_CODE,
659           START_DATE,
660           GLOBAL_FLAG,
661           CONTRACT_EXPERT_ENABLED,
662           DESCRIPTION,
663           ORG_ID,
664           ORIG_SYSTEM_REFERENCE_CODE,
665           HIDE_YN,
666           OBJECT_VERSION_NUMBER,
667           CREATED_BY,
668           CREATION_DATE,
669           LAST_UPDATED_BY,
670           LAST_UPDATE_LOGIN,
671           LAST_UPDATE_DATE)
672         VALUES (
673           l_tmpl_name,
674           l_tmpl_id,
675           'N',
676           Decode( p_doc_type,'OKC_BUY','B','OKE_BUY','B', 'S'),
677           'APPROVED',
678           to_date('01-01-1951','DD-MM-YYYY'),
679           'N',
680           'N',
681           'Dummy Template for 11.5.10 Upgrade',
682           l_org_id,
683           decode (p_doc_type,'OKE_SELL', 'OKC11510UPG:OKE', 'OKE_BUY', 'OKC11510UPG:OKE', 'OKC11510UPG'),
684           decode(p_doc_type,'OKS','N','Y'),
685           1,
686           Fnd_Global.User_Id,
687           trunc(sysdate),
688           Fnd_Global.User_Id,
689           Fnd_Global.Login_Id,
690           trunc(sysdate)
691         );
692 
693       INSERT INTO OKC_ALLOWED_TMPL_USAGES(
694         ALLOWED_TMPL_USAGES_ID,
695         TEMPLATE_ID,
696         DOCUMENT_TYPE,
697         DEFAULT_YN,
698         OBJECT_VERSION_NUMBER,
699         CREATED_BY,
700         CREATION_DATE,
701         LAST_UPDATED_BY,
702         LAST_UPDATE_LOGIN,
703         LAST_UPDATE_DATE)
704       VALUES (
705         OKC_ALLOWED_TMPL_USAGES_S.NEXTVAL,
706         l_tmpl_id,
707         p_doc_type,
708         'N',
709         1,
710         Fnd_Global.User_Id,
711         trunc(sysdate),
712         Fnd_Global.User_Id,
713         Fnd_Global.Login_Id,
714         trunc(sysdate)
715         );
716       END IF;
717       IF l_tmpl_id IS NOT NULL THEN
721           p_commit        => FND_API.G_FALSE,
718         OKC_TEMPLATE_USAGES_GRP.create_template_usages(
719           p_api_version   => p_api_version,
720           p_init_msg_list => FND_API.G_FALSE,
722           x_return_status => x_return_status,
723           x_msg_data      => x_msg_data,
724           x_msg_count     => x_msg_count,
725           p_document_type => p_doc_type,
726           p_document_id   => p_doc_id,
727           p_template_id   => l_tmpl_id,
728           p_doc_numbering_scheme => NULL,
729           p_document_number => NULL,
730           p_article_effective_date => sysdate,
731           p_config_header_id => NULL,
732           p_config_revision_number => NULL,
733           p_valid_config_yn => NULL,
734           x_document_type => l_doc_type,
735           x_document_id => l_doc_id
736         );
737         IF (x_return_status <> G_RET_STS_SUCCESS) then
738           IF (l_debug = 'Y') THEN
739             okc_debug.log('11400: Leaving Get_Unassign_Section_ID because of an exception in OKC_TEMPLATE_USAGES_GRP.create_template_usages', 2);
740             okc_debug.Reset_Indentation;
741           END IF;
742           RETURN NULL;
743         END IF;
744        ELSE
745         -- It shouldn't ever happend
746         IF (l_debug = 'Y') THEN
747           okc_debug.log('11400: Leaving Get_Unassign_Section_ID because there is no UPGRADE template for '||p_doc_type, 2);
748           okc_debug.Reset_Indentation;
749         END IF;
750         OKC_API.SET_MESSAGE('OKC', 'OKC_NOTDEFINED_11510_UPG_TMPL','DOC_TYPE', p_doc_type);
751         x_return_status := G_RET_STS_UNEXP_ERROR;
752         RETURN NULL;
753       END IF;
754     END IF;
755 
756     IF (l_debug = 'Y') THEN
757       okc_debug.log('1000: Leaving  Get_Unassign_Section_ID ', 2);
758       okc_debug.Reset_Indentation;
759     END IF;
760 
761     RETURN l_scn_id;
762   END Get_Unassign_Section_ID;
763 
764   FUNCTION get_art_ver_id(p_art_id NUMBER,p_ver_num VARCHAR2)
765    RETURN NUMBER IS
766     l_art_ver_id NUMBER;
767     CURSOR get_art_ver_id_crs IS
768       SELECT article_version_id
769        FROM okc_article_versions
770        WHERE article_id=p_art_id
771         AND (nvl(sav_release, To_Char(article_version_number))=p_ver_num
772           OR p_ver_num IS NULL AND SYSDATE BETWEEN Start_date AND nvl(end_date,sysdate)
773             )
774     ;
775    BEGIN
776     OPEN get_art_ver_id_crs;
777     FETCH get_art_ver_id_crs INTO l_art_ver_id;
778     CLOSE get_art_ver_id_crs;
779     RETURN l_art_ver_id;
780    EXCEPTION
781     WHEN OTHERS THEN RETURN NULL;
782   END;
783 
784   PROCEDURE Process_Non_Std_Article(
785         p_api_version	IN	NUMBER,
786         x_return_status	OUT NOCOPY	VARCHAR2,
787         x_msg_count	OUT NOCOPY	NUMBER,
788         x_msg_data	OUT NOCOPY	VARCHAR2,
789         p_catv_rec	IN	catv_11510_rec_type,
790         x_art_id     OUT NOCOPY	NUMBER,
791         x_art_ver_id OUT NOCOPY	NUMBER,
792         x_std_art_id     OUT NOCOPY	NUMBER,
793         x_std_art_ver_id OUT NOCOPY	NUMBER
794     ) IS
795      l_api_version CONSTANT NUMBER := 1;
796      l_api_name    CONSTANT VARCHAR2(30) := 'Process_Non_Std_Article';
797      l_art_id     NUMBER;
798      l_art_number VARCHAR2(240);
799      l_art_ver_id NUMBER;
800      l_std_yn     VARCHAR2(3) := 'Y';
801      l_intent     VARCHAR2(1);
802      l_txt        CLOB;
803      CURSOR art_id_crs (p_id NUMBER) IS
804       SELECT t.sav_sae_id, t.article_version_id, a.standard_yn
805         FROM okc_terms_articles_v t, okc_articles_all a
806         WHERE t.id=p_id AND t.sav_sae_id=a.article_id;
807      CURSOR l_get_intent_csr(p_doc_type VARCHAR2) IS
808       SELECT intent FROM OKC_BUS_DOC_TYPES_B
809         WHERE DOCUMENT_TYPE=p_doc_type;
810    BEGIN
811     IF (l_debug = 'Y') THEN
812       okc_debug.log('11400: Entering Process_Non_Std_Article', 2);
813     END IF;
814     x_return_status := OKC_API.G_RET_STS_SUCCESS;
815     IF (p_catv_rec.id IS NOT NULL ) THEN
816       -- 1. Check current db state (is there std or nonstd)
817       OPEN art_id_crs(p_catv_rec.id);
818       FETCH art_id_crs INTO l_art_id, l_art_ver_id, l_std_yn;
819       CLOSE art_id_crs;
820     END IF;
821     -- if the procedure is called - we have non-std article
822     IF p_catv_rec.b_sav_sae_id <> G_MISS_NUM THEN
823       l_art_id := p_catv_rec.b_sav_sae_id;
824     END IF;
825     IF p_catv_rec.article_version_id <> G_MISS_NUM THEN
826       l_art_ver_id := p_catv_rec.article_version_id;
827     END IF;
828     -- if current DB art type is std - create nonstd else update it.
829     IF ( p_catv_rec.id IS NULL OR l_std_yn='Y' /*OR l_art_id<>p_catv_rec.sav_sae_id*/) THEN
830       OPEN  l_get_intent_csr(p_catv_rec.document_type);
831       FETCH l_get_intent_csr INTO l_intent;
832       CLOSE l_get_intent_csr;
833 
834       IF l_art_ver_id IS NULL THEN
835         l_art_ver_id := Get_Art_Ver_Id(p_catv_rec.sav_sae_id,p_catv_rec.sav_sav_release);
836       END IF;
837 
838       IF (p_catv_rec.TEXT IS NULL) THEN
839         Dbms_Lob.createtemporary( l_txt, TRUE, Dbms_Lob.Session);
840         Dbms_Lob.writeappend( l_txt, 1, ' ');
841        ELSE
842         l_txt := p_catv_rec.TEXT;
843       END IF;
844 
845       IF (l_debug = 'Y') THEN
846         okc_debug.log('11400: non-std article is to be created.Version id of StdArt is '||l_art_ver_id, 2);
847       END IF;
848 
849       OKC_ARTICLES_GRP.create_article(
850          p_api_version                  => 1,
851          p_init_msg_list                => FND_API.G_FALSE,
852          p_validation_level	      => FND_API.G_VALID_LEVEL_FULL,
853          p_commit                       => FND_API.G_FALSE,
854          x_return_status                => x_return_status,
855          x_msg_count                    => x_msg_count,
856          x_msg_data                     => x_msg_data,
857 
858          p_article_title                => p_catv_rec.name,
859          p_article_number               => NULL,
860          p_standard_yn                  => 'N',
861          p_article_intent               => l_intent,
862          p_article_language             => USERENV('LANG'),
863          p_article_type                 => p_catv_rec.sbt_code,
864          p_orig_system_reference_code   => p_catv_rec.orig_system_reference_code,
865          p_orig_system_reference_id1    => NULL,
866          p_orig_system_reference_id2    => NULL,
867          p_cz_transfer_status_flag      => 'N',
868          x_article_id                   => x_art_id,
869          x_article_number               => l_art_number,
870          -- Article Version Attributes
871          p_article_text                 => l_txt,
872          p_provision_yn                 => 'N',
873          p_insert_by_reference          => 'N',
874          p_lock_text                    => 'N',
875          p_global_yn                    => 'N',
876          p_article_status               => NULL,
877          p_sav_release                  => p_catv_rec.sav_sav_release,
878          p_start_date                   => NULL,
879          p_end_date                     => NULL,
880          p_std_article_version_id       => l_art_ver_id,
881          p_display_name                 => p_catv_rec.name,
882          p_translated_yn                => 'N',
883          p_article_description          => p_catv_rec.comments,
884          p_date_approved                => NULL,
885          p_default_section              => NULL,
886          p_reference_source             => NULL,
887          p_reference_text               => NULL,
888          p_additional_instructions      => NULL,
889          p_variation_description        => p_catv_rec.variation_description,
890          p_v_orig_system_reference_code => p_catv_rec.orig_system_reference_code,
891          p_v_orig_system_reference_id1  => NULL,
892          p_v_orig_system_reference_id2  => NULL,
893          p_global_article_version_id    => NULL,
894          x_article_version_id           => x_art_ver_id
895       );
896       x_std_art_id := l_art_id;
897       x_std_art_ver_id := l_art_ver_id;
898       IF Dbms_Lob.istemporary( l_txt )=1 THEN
899         Dbms_Lob.freetemporary( l_txt );
900       END IF;
901       --------------------------------------------
902       IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
903         RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
904        ELSIF (x_return_status = G_RET_STS_ERROR) THEN
905         RAISE FND_API.G_EXC_ERROR ;
906       END IF;
907       --------------------------------------------
908 
909       IF (l_debug = 'Y') THEN
910           okc_debug.log('300: non-std article created.Version id is '||x_art_ver_id, 2);
911       END IF;
912 
913      ELSE
914       x_art_id := l_art_id;
915       x_art_ver_id := l_art_ver_id;
916 
917       IF (l_debug = 'Y') THEN
918         okc_debug.log('11400: non-std article is to be updated.Version id is '||l_art_ver_id, 2);
919       END IF;
920 
921       OKC_ARTICLES_GRP.update_article(
922          p_api_version                  => 1,
923          p_init_msg_list                => FND_API.G_FALSE,
924          p_validation_level	            => FND_API.G_VALID_LEVEL_FULL,
925          p_commit                       => FND_API.G_FALSE,
926          x_return_status                => x_return_status,
927          x_msg_count                    => x_msg_count,
928          x_msg_data                     => x_msg_data,
929          p_article_id                   => l_art_id,
930          p_article_title                => p_catv_rec.name,
931          p_article_number               => NULL,
932          p_standard_yn                  => NULL,
933          p_article_intent               => NULL,
934          p_article_language             => NULL,
935          p_article_type                 => p_catv_rec.sbt_code,
936          p_orig_system_reference_code   => NULL,
937          p_orig_system_reference_id1    => NULL,
938          p_orig_system_reference_id2    => NULL,
939          p_cz_transfer_status_flag      => NULL,
940          -- Article Version Attributes
941          p_article_version_id           => l_art_ver_id,
942          p_article_text                 => p_catv_rec.text,
943          p_provision_yn                 => NULL,
944          p_insert_by_reference          => NULL,
945          p_lock_text                    => NULL,
946          p_global_yn                    => NULL,
947          p_article_status               => NULL,
948          p_sav_release                  => NULL,
949          p_start_date                   => NULL,
950          p_end_date                     => NULL,
951          p_std_article_version_id       => NULL,
952          p_display_name                 => p_catv_rec.name,
953          p_translated_yn                => NULL,
954          p_article_description          => p_catv_rec.comments,
955          p_date_approved                => NULL,
956          p_default_section              => NULL,
957          p_reference_source             => NULL,
958          p_reference_text               => NULL,
959          p_additional_instructions      => NULL,
960          p_variation_description        => NULL,
961          p_v_orig_system_reference_code => NULL,
962          p_v_orig_system_reference_id1  => NULL,
963          p_v_orig_system_reference_id2  => NULL
964       );
965       x_std_art_id := p_catv_rec.ref_article_id;
966       x_std_art_ver_id := p_catv_rec.ref_article_version_id;
967       --------------------------------------------
968       IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
969         RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
970        ELSIF (x_return_status = G_RET_STS_ERROR) THEN
971         RAISE FND_API.G_EXC_ERROR ;
972       END IF;
973       --------------------------------------------
974 
975       IF (l_debug = 'Y') THEN
976           okc_debug.log('300: non-std article updated.', 2);
977       END IF;
978 
979     END IF;
980 
981     -- Standard call to get message count and if count is 1, get message info.
982     FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
983 
984     IF (l_debug = 'Y') THEN
985          okc_debug.log('900: Leaving Process_Non_Std_Article.', 2);
986     END IF;
987 
988   EXCEPTION
989    WHEN FND_API.G_EXC_ERROR THEN
990     IF (l_debug = 'Y') THEN
991         okc_debug.log('300: Leaving Process_Non_Std_Article: G_EXCEPTION_ERROR Exception', 2);
992     END IF;
993 
994     IF l_get_intent_csr%ISOPEN THEN
995        CLOSE l_get_intent_csr;
996     END IF;
997 
998     x_return_status := G_RET_STS_ERROR ;
999     FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1000 
1001  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1002     IF (l_debug = 'Y') THEN
1003          okc_debug.log('400: Leaving Process_Non_Std_Article: G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
1004     END IF;
1005 
1006     IF l_get_intent_csr%ISOPEN THEN
1007        CLOSE l_get_intent_csr;
1008     END IF;
1009 
1010     x_return_status := G_RET_STS_UNEXP_ERROR ;
1011     FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1012 
1013  WHEN OTHERS THEN
1014     IF (l_debug = 'Y') THEN
1015        okc_debug.log('500: Leaving Process_Non_Std_Article because of EXCEPTION: '||sqlerrm, 2);
1016     END IF;
1017 
1018     IF l_get_intent_csr%ISOPEN THEN
1019        CLOSE l_get_intent_csr;
1020     END IF;
1021 
1022     IF l_txt IS NOT NULL THEN
1023       IF Dbms_Lob.istemporary( l_txt )=1 THEN
1024         Dbms_Lob.freetemporary( l_txt );
1025       END IF;
1026     END IF;
1027     x_return_status := G_RET_STS_UNEXP_ERROR ;
1028     IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
1029         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
1030     END IF;
1031 
1032     FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1033 
1034   END Process_Non_Std_Article;
1035 
1036 
1037   -------------------------------------------------
1038   -- PROCEDURE Null_Out_Record - set default values -
1039   -------------------------------------------------
1040   PROCEDURE Null_Out_Record (
1041     p_api_version	IN	NUMBER,
1042     x_return_status	OUT NOCOPY	VARCHAR2,
1043     x_msg_count	OUT NOCOPY	NUMBER,
1044     x_msg_data	OUT NOCOPY	VARCHAR2
1045   ) IS
1046   BEGIN
1047     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1048 
1049     IF (l_debug = 'Y') THEN
1050       okc_debug.Set_Indentation(G_PKG_NAME);
1051       okc_debug.log('11300: Entered Null_Out_Record', 2);
1052     END IF;
1053 
1054     -- Primary key - Should be NULL
1055     gi_catv_rec.id := NULL;
1056 
1057     IF (gi_catv_rec.sav_sae_id = G_MISS_NUM) THEN
1058       gi_catv_rec.sav_sae_id := NULL;
1059     END IF;
1060 
1061     IF (gi_catv_rec.sav_sav_release = G_MISS_CHAR) THEN
1062       gi_catv_rec.sav_sav_release := NULL;
1063     END IF;
1064 
1065     IF (gi_catv_rec.comments = G_MISS_CHAR) THEN
1066       gi_catv_rec.comments := NULL;
1067     END IF;
1068 
1069     IF (gi_catv_rec.variation_description = G_MISS_CHAR) THEN
1070       gi_catv_rec.variation_description := NULL;
1071     END IF;
1072 
1073     IF (gi_catv_rec.name = G_MISS_CHAR) THEN
1074       gi_catv_rec.name := NULL;
1075     END IF;
1076 
1077     IF (gi_catv_rec.sbt_code = G_MISS_CHAR) THEN
1078       gi_catv_rec.sbt_code := NULL;
1079     END IF;
1080 
1081     IF (gi_catv_rec.cat_type = G_MISS_CHAR) THEN
1082       gi_catv_rec.cat_type := NULL;
1083     END IF;
1084 
1085     IF (gi_catv_rec.chr_id = G_MISS_NUM) THEN
1086       gi_catv_rec.chr_id := NULL;
1087     END IF;
1088 
1089     IF (gi_catv_rec.cle_id = G_MISS_NUM) THEN
1090       gi_catv_rec.cle_id := NULL;
1091     END IF;
1092 
1093     IF (gi_catv_rec.cat_id = G_MISS_NUM) THEN
1094       gi_catv_rec.cat_id := NULL;
1095     END IF;
1096 
1097     IF (gi_catv_rec.dnz_chr_id = G_MISS_NUM) THEN
1098       gi_catv_rec.dnz_chr_id := NULL;
1099     END IF;
1100 
1101     IF (gi_catv_rec.fulltext_yn = G_MISS_CHAR) THEN
1102       gi_catv_rec.fulltext_yn := NULL;
1103     END IF;
1104 
1105     IF (gi_catv_rec.document_type = G_MISS_CHAR) THEN
1106       gi_catv_rec.document_type := NULL;
1107     END IF;
1108 
1109     IF (gi_catv_rec.document_id = G_MISS_NUM) THEN
1110       gi_catv_rec.document_id := NULL;
1111     END IF;
1112 
1113     IF (gi_catv_rec.source_flag = G_MISS_CHAR) THEN
1114       gi_catv_rec.source_flag := NULL;
1115     END IF;
1116 
1117     IF (gi_catv_rec.mandatory_yn = G_MISS_CHAR) THEN
1118       gi_catv_rec.mandatory_yn := NULL;
1119     END IF;
1120 
1121     IF (gi_catv_rec.scn_id = G_MISS_NUM) THEN
1122       gi_catv_rec.scn_id := NULL;
1123     END IF;
1124 
1125     IF (gi_catv_rec.label = G_MISS_CHAR) THEN
1126       gi_catv_rec.label := NULL;
1127     END IF;
1128 
1129     IF (gi_catv_rec.amendment_description = G_MISS_CHAR) THEN
1130       gi_catv_rec.amendment_description := NULL;
1131     END IF;
1132 
1133     IF (gi_catv_rec.amendment_operation_code = G_MISS_CHAR) THEN
1134       gi_catv_rec.amendment_operation_code := NULL;
1135     END IF;
1136 
1137     IF (gi_catv_rec.article_version_id = G_MISS_NUM) THEN
1138       gi_catv_rec.article_version_id := NULL;
1139     END IF;
1140 
1141     IF (gi_catv_rec.change_nonstd_yn = G_MISS_CHAR) THEN
1142       gi_catv_rec.change_nonstd_yn := NULL;
1143     END IF;
1144 
1145     IF (gi_catv_rec.orig_system_reference_code = G_MISS_CHAR) THEN
1146       gi_catv_rec.orig_system_reference_code := NULL;
1147     END IF;
1148 
1149     IF (gi_catv_rec.orig_system_reference_id1 = G_MISS_NUM) THEN
1150       gi_catv_rec.orig_system_reference_id1 := NULL;
1151     END IF;
1152 
1153     IF (gi_catv_rec.orig_system_reference_id2 = G_MISS_NUM) THEN
1154       gi_catv_rec.orig_system_reference_id2 := NULL;
1155     END IF;
1156 
1157     IF (gi_catv_rec.display_sequence = G_MISS_NUM) THEN
1158       gi_catv_rec.display_sequence := NULL;
1159     END IF;
1160 
1161     IF (gi_catv_rec.print_text_yn = G_MISS_CHAR) THEN
1162       gi_catv_rec.print_text_yn := NULL;
1163     END IF;
1164 
1165     IF (gi_catv_rec.summary_amend_operation_code = G_MISS_CHAR) THEN
1166       gi_catv_rec.summary_amend_operation_code := NULL;
1167     END IF;
1168 
1169     IF (gi_catv_rec.ref_article_id = G_MISS_NUM) THEN
1170       gi_catv_rec.ref_article_id := NULL;
1171     END IF;
1172 
1173     IF (gi_catv_rec.ref_article_version_id = G_MISS_NUM) THEN
1174       gi_catv_rec.ref_article_version_id := NULL;
1175     END IF;
1176 
1177     IF (gi_catv_rec.attribute_category = G_MISS_CHAR) THEN
1178       gi_catv_rec.attribute_category := NULL;
1179     END IF;
1180 
1181     IF (gi_catv_rec.attribute1 = G_MISS_CHAR) THEN
1182       gi_catv_rec.attribute1 := NULL;
1183     END IF;
1184 
1185     IF (gi_catv_rec.attribute2 = G_MISS_CHAR) THEN
1186       gi_catv_rec.attribute2 := NULL;
1187     END IF;
1188 
1189     IF (gi_catv_rec.attribute3 = G_MISS_CHAR) THEN
1190       gi_catv_rec.attribute3 := NULL;
1191     END IF;
1192 
1193     IF (gi_catv_rec.attribute4 = G_MISS_CHAR) THEN
1194       gi_catv_rec.attribute4 := NULL;
1195     END IF;
1196 
1197     IF (gi_catv_rec.attribute5 = G_MISS_CHAR) THEN
1198       gi_catv_rec.attribute5 := NULL;
1199     END IF;
1200 
1201     IF (gi_catv_rec.attribute6 = G_MISS_CHAR) THEN
1202       gi_catv_rec.attribute6 := NULL;
1203     END IF;
1204 
1205     IF (gi_catv_rec.attribute7 = G_MISS_CHAR) THEN
1206       gi_catv_rec.attribute7 := NULL;
1207     END IF;
1208 
1209     IF (gi_catv_rec.attribute8 = G_MISS_CHAR) THEN
1210       gi_catv_rec.attribute8 := NULL;
1211     END IF;
1212 
1213     IF (gi_catv_rec.attribute9 = G_MISS_CHAR) THEN
1214       gi_catv_rec.attribute9 := NULL;
1215     END IF;
1216 
1217     IF (gi_catv_rec.attribute10 = G_MISS_CHAR) THEN
1218       gi_catv_rec.attribute10 := NULL;
1219     END IF;
1220 
1221     IF (gi_catv_rec.attribute11 = G_MISS_CHAR) THEN
1222       gi_catv_rec.attribute11 := NULL;
1223     END IF;
1224 
1225     IF (gi_catv_rec.attribute12 = G_MISS_CHAR) THEN
1226       gi_catv_rec.attribute12 := NULL;
1227     END IF;
1228 
1229     IF (gi_catv_rec.attribute13 = G_MISS_CHAR) THEN
1230       gi_catv_rec.attribute13 := NULL;
1231     END IF;
1232 
1233     IF (gi_catv_rec.attribute14 = G_MISS_CHAR) THEN
1234       gi_catv_rec.attribute14 := NULL;
1235     END IF;
1236 
1237     IF (gi_catv_rec.attribute15 = G_MISS_CHAR) THEN
1238       gi_catv_rec.attribute15 := NULL;
1239     END IF;
1240 
1241     IF (l_debug = 'Y') THEN
1242       okc_debug.log('11400: Leaving  Null_Out_Record ', 2);
1243       okc_debug.Reset_Indentation;
1244     END IF;
1245 
1246   END Null_Out_Record;
1247 
1248   -------------------------------------------------
1249   -- PROCEDURE Default_Record - set default values -
1250   -------------------------------------------------
1251   PROCEDURE Default_Record (
1252     p_api_version	IN	NUMBER,
1253     x_return_status	OUT NOCOPY	VARCHAR2,
1254     x_msg_count	OUT NOCOPY	NUMBER,
1255     x_msg_data	OUT NOCOPY	VARCHAR2
1256   ) IS
1257     Cursor l_get_max_seq_csr(p_doc_type VARCHAR2, p_doc_id NUMBER,p_scn_id NUMBER) IS
1258       SELECT nvl(max(display_sequence),0)+10
1259       FROM OKC_K_ARTICLES_B
1260       WHERE DOCUMENT_TYPE= p_doc_type
1261       AND   DOCUMENT_ID  = p_doc_id
1262       AND   SCN_ID = p_scn_id;
1263   BEGIN
1264     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1265 
1266     IF (l_debug = 'Y') THEN
1267       okc_debug.Set_Indentation(G_PKG_NAME);
1268       okc_debug.log('11300: Entered Default_Record', 2);
1269     END IF;
1270 
1271     -------------------------------------------------
1272     -- Populating/Defaulting new API attributes
1273     -------------------------------------------------
1274     IF (gi_catv_rec.document_type IS NULL) THEN
1275       OKC_TERMS_UTIL_GRP.Get_Contract_Document_Type_Id(
1276         p_api_version   => p_api_version,
1277         x_return_status => x_return_status,
1278         x_msg_data      => x_msg_data,
1279         x_msg_count     => x_msg_count,
1280         p_chr_id        => gi_catv_rec.dnz_chr_id,
1281         x_doc_id        => gi_catv_rec.document_id,
1282         x_doc_type      => gi_catv_rec.document_type
1283       );
1284       IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1285         IF (l_debug = 'Y') THEN
1286           okc_debug.log('11400: Leaving Default_Record because of an exception in Get_Contract_Document_Type', 2);
1287           okc_debug.Reset_Indentation;
1288         END IF;
1289         RETURN;
1290       END IF;
1291     END IF;
1292 
1293     IF (gi_catv_rec.document_id IS NULL) THEN
1294       gi_catv_rec.document_id := gi_catv_rec.dnz_chr_id;
1295     END IF;
1296 
1297     IF (gi_catv_rec.mandatory_yn IS NULL) THEN
1298       gi_catv_rec.mandatory_yn := 'N';
1299     END IF;
1300 
1301     -- if article is unassigned (it should be always for old API) it should
1302     -- be assigned to 'UNASSIGNED' section fo document
1303     IF ( gi_catv_rec.scn_id IS NULL ) THEN
1304       gi_catv_rec.scn_id := Get_Unassign_Section_ID(
1305         p_api_version   => p_api_version,
1306         x_return_status => x_return_status,
1307         x_msg_data      => x_msg_data,
1308         x_msg_count     => x_msg_count,
1309         p_doc_id        => gi_catv_rec.document_id,
1310         p_doc_type      => gi_catv_rec.document_type
1311       );
1312       IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1313         IF (l_debug = 'Y') THEN
1314           okc_debug.log('11400: Leaving Default_Record because of an exception in Get_Unassign_Section_ID', 2);
1315           okc_debug.Reset_Indentation;
1316         END IF;
1317         RETURN;
1318       END IF;
1319     END IF;
1320 
1321     IF (gi_catv_rec.DISPLAY_SEQUENCE IS NULL) THEN
1322       OPEN  l_get_max_seq_csr(gi_catv_rec.document_type,gi_catv_rec.document_id,gi_catv_rec.scn_id);
1323       FETCH l_get_max_seq_csr INTO gi_catv_rec.DISPLAY_SEQUENCE;
1324       CLOSE l_get_max_seq_csr;
1325     END IF;
1326 
1327     IF (gi_catv_rec.TEXT IS NOT NULL OR gi_catv_rec.sav_sae_id IS NULL
1328      OR gi_catv_rec.cat_type = 'NSD' OR gi_catv_rec.document_type LIKE 'OKE%') THEN
1329       IF (gi_catv_rec.name IS NULL) THEN
1330         gi_catv_rec.name := 'NONSTANDARD';
1331       END IF;
1332       IF (gi_catv_rec.cat_type = 'STA' and gi_catv_rec.document_type LIKE 'OKE%') THEN
1333         gi_catv_rec.orig_system_reference_code := 'OKE';
1334       END IF;
1335 
1336       Process_Non_Std_Article(
1337         p_api_version   => p_api_version,
1338         x_return_status => x_return_status,
1339         x_msg_data      => x_msg_data,
1340         x_msg_count     => x_msg_count,
1341         p_catv_rec      => gi_catv_rec,
1342         x_art_id        => gi_catv_rec.b_sav_sae_id,
1343         x_art_ver_id    => gi_catv_rec.article_version_id,
1344         x_std_art_id     => gi_catv_rec.ref_article_id,
1345         x_std_art_ver_id => gi_catv_rec.ref_article_version_id
1346       );
1347       IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1348         IF (l_debug = 'Y') THEN
1349           okc_debug.log('11400: Leaving Default_Record because of an exception in Process_Non_Std_Article', 2);
1350           okc_debug.Reset_Indentation;
1351         END IF;
1352         RETURN;
1353       END IF;
1354 
1355       gi_catv_rec.FULLTEXT_YN := NULL;
1356       gi_catv_rec.VARIATION_DESCRIPTION := NULL;
1357      ELSE
1358       IF gi_catv_rec.article_version_id IS NULL THEN
1359         gi_catv_rec.article_version_id := Get_Art_Ver_Id(gi_catv_rec.sav_sae_id,gi_catv_rec.sav_sav_release);
1360       END IF;
1361       IF gi_catv_rec.b_sav_sae_id IS NULL THEN
1362         gi_catv_rec.b_sav_sae_id := gi_catv_rec.sav_sae_id;
1363       END IF;
1364     END IF;
1365 
1366     -------------------------------------------------
1367 
1368     IF (l_debug = 'Y') THEN
1369       okc_debug.log('11400: Leaving Default_Record ', 2);
1370       okc_debug.Reset_Indentation;
1371     END IF;
1372 
1373   END Default_Record;
1374 
1375 -- Start of comments
1376 --
1377 -- Procedure Name  : create_k_article
1378 -- Description     :
1379 -- Business Rules  :
1380 -- Parameters      :
1381 -- Version         : 1.0
1382 -- End of comments
1383 procedure create_k_article(p_api_version	IN	NUMBER,
1384                               p_init_msg_list	IN	VARCHAR2 ,
1385                               x_return_status	OUT NOCOPY	VARCHAR2,
1386                               x_msg_count	OUT NOCOPY	NUMBER,
1387                               x_msg_data	OUT NOCOPY	VARCHAR2,
1388                               p_catv_rec	IN	catv_rec_type,
1389                               x_catv_rec	OUT NOCOPY	catv_rec_type) is
1390     l_api_name     CONSTANT VARCHAR2(30) := 'CREATE_K_ARTICLE';
1391     l_return_status         VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1392 --    l_clob 			clob;
1393   BEGIN
1394     l_return_status := OKC_API.START_ACTIVITY(substr(l_api_name,1,26),
1395                                               G_PKG_NAME,
1396                                               p_init_msg_list,
1397                                               G_API_VERSION,
1398                                               p_api_version,
1399                                               G_SCOPE,
1400                                               x_return_status);
1401     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1402       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1403     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1404       RAISE OKC_API.G_EXCEPTION_ERROR;
1405     END IF;
1406     --
1407     -- code for temporary clob ... start
1408     --
1409 --    if (dbms_lob.istemporary(p_catv_rec.TEXT) = 1) then
1410 --      DBMS_LOB.CREATETEMPORARY(gi_catv_rec.TEXT,FALSE,DBMS_LOB.CALL);
1411 --      l_clob := p_catv_rec.TEXT;
1412 --      DBMS_LOB.OPEN(l_clob, DBMS_LOB.LOB_READONLY);
1413 --      DBMS_LOB.OPEN(gi_catv_rec.TEXT, DBMS_LOB.LOB_READWRITE);
1414 --      DBMS_LOB.COPY(dest_lob => gi_catv_rec.TEXT,src_lob => l_clob,
1415 --    			amount => dbms_lob.getlength(l_clob));
1416 --      DBMS_LOB.CLOSE(gi_catv_rec.TEXT);
1417 --      DBMS_LOB.CLOSE(l_clob);
1418 --      DBMS_LOB.freetemporary(l_clob);
1419 --    end if;
1420     --
1421     -- code for temporary clob ... end
1422     --
1423 
1424     IF (l_debug = 'Y') THEN
1425        okc_debug.log('1000: Entered '||l_api_name, 2);
1426     END IF;
1427 
1428     gi_catv_rec := Migrate( p_catv_rec );
1429 
1430     IF (l_debug = 'Y') THEN
1431        Dump_Rec( gi_catv_rec );
1432     END IF;
1433     --
1434     -- Prepare record for Create article new group API
1435     --
1436     Null_Out_Record(
1437       p_api_version                => p_api_version,
1438       x_return_status              => l_return_status,
1439       x_msg_count                  => x_msg_count,
1440       x_msg_data                   => x_msg_data
1441     );
1442     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1443       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1444     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1445       RAISE OKC_API.G_EXCEPTION_ERROR;
1446     END IF;
1447 
1448     Default_Record(
1449       p_api_version                => p_api_version,
1450       x_return_status              => l_return_status,
1451       x_msg_count                  => x_msg_count,
1452       x_msg_data                   => x_msg_data
1453     );
1454     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1455       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1456     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1457       RAISE OKC_API.G_EXCEPTION_ERROR;
1458     END IF;
1459 
1460     IF (l_debug = 'Y') THEN
1461        Dump_Rec( gi_catv_rec );
1462     END IF;
1463     --------------------------------------------
1464     -- Call the INSERT_ROW for each child record
1465     --------------------------------------------
1466     --Bug 3341342 Included cat_type
1467     OKC_K_ARTICLES_GRP.create_article(
1468       p_api_version                => p_api_version,
1469       p_init_msg_list              => FND_API.G_FALSE,
1470       x_return_status              => x_return_status,
1471       x_msg_count                  => x_msg_count,
1472       x_msg_data                   => x_msg_data,
1473       p_id                         => gi_catv_rec.id,
1474       p_sav_sae_id                 => gi_catv_rec.b_sav_sae_id,
1475       p_cat_type                   => gi_catv_rec.cat_type,  --Bug 3341342
1476       p_document_type              => gi_catv_rec.document_type,
1477       p_document_id                => gi_catv_rec.document_id,
1478       p_source_flag                => gi_catv_rec.source_flag,
1479       p_mandatory_yn               => gi_catv_rec.mandatory_yn,
1480       p_scn_id                     => gi_catv_rec.scn_id,
1481       p_cle_id                     => gi_catv_rec.cle_id,
1482       p_label                      => gi_catv_rec.label,
1483       p_amendment_description      => gi_catv_rec.amendment_description,
1484       p_article_version_id         => gi_catv_rec.article_version_id,
1485       p_change_nonstd_yn           => gi_catv_rec.change_nonstd_yn,
1486       p_orig_system_reference_code => gi_catv_rec.orig_system_reference_code,
1487       p_orig_system_reference_id1  => gi_catv_rec.orig_system_reference_id1,
1488       p_orig_system_reference_id2  => gi_catv_rec.orig_system_reference_id2,
1489       p_display_sequence           => gi_catv_rec.display_sequence,
1490       p_attribute_category         => gi_catv_rec.attribute_category,
1491       p_attribute1                 => gi_catv_rec.attribute1,
1492       p_attribute2                 => gi_catv_rec.attribute2,
1493       p_attribute3                 => gi_catv_rec.attribute3,
1494       p_attribute4                 => gi_catv_rec.attribute4,
1495       p_attribute5                 => gi_catv_rec.attribute5,
1496       p_attribute6                 => gi_catv_rec.attribute6,
1497       p_attribute7                 => gi_catv_rec.attribute7,
1498       p_attribute8                 => gi_catv_rec.attribute8,
1499       p_attribute9                 => gi_catv_rec.attribute9,
1500       p_attribute10                => gi_catv_rec.attribute10,
1501       p_attribute11                => gi_catv_rec.attribute11,
1502       p_attribute12                => gi_catv_rec.attribute12,
1503       p_attribute13                => gi_catv_rec.attribute13,
1504       p_attribute14                => gi_catv_rec.attribute14,
1505       p_attribute15                => gi_catv_rec.attribute15,
1506       p_print_text_yn              => gi_catv_rec.print_text_yn,
1507       p_ref_article_id             => gi_catv_rec.ref_article_id,
1508       p_ref_article_version_id     => gi_catv_rec.ref_article_version_id,
1509       x_id                         => gi_catv_rec.id
1510     );
1511     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1512       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1513     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1514       RAISE OKC_API.G_EXCEPTION_ERROR;
1515     END IF;
1516 
1517     -- Set OUT values
1518     x_catv_rec := get_rec( gi_catv_rec.id );
1519     g_catv_rec := x_catv_rec;
1520 
1521     IF (l_debug = 'Y') THEN
1522       okc_debug.log('1000: Leaving '||l_api_name, 2);
1523       Dump_Rec( x_catv_rec );
1524     END IF;
1525 
1526     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1527    EXCEPTION
1528      WHEN OKC_API.G_EXCEPTION_ERROR THEN
1529        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1530        (substr(l_api_name,1,26),
1531         G_PKG_NAME,
1532         'OKC_API.G_RET_STS_ERROR',
1533         x_msg_count,
1534         x_msg_data,
1535         G_SCOPE);
1536      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1537        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1538        (substr(l_api_name,1,26),
1539         G_PKG_NAME,
1540         'OKC_API.G_RET_STS_UNEXP_ERROR',
1541         x_msg_count,
1542         x_msg_data,
1543         G_SCOPE);
1544      WHEN OTHERS THEN
1545        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1546        (substr(l_api_name,1,26),
1547         G_PKG_NAME,
1548         'OTHERS',
1549         x_msg_count,
1550         x_msg_data,
1551         G_SCOPE);
1552 end create_k_article;
1553 
1554 -- Start of comments
1555 --
1556 -- Procedure Name  : create_k_article
1557 -- Description     :
1558 -- Business Rules  :
1559 -- Parameters      :
1560 -- Version         : 1.0
1561 -- End of comments
1562 procedure create_k_article(p_api_version	IN	NUMBER,
1563                               p_init_msg_list	IN	VARCHAR2 ,
1564                               x_return_status	OUT NOCOPY	VARCHAR2,
1565                               x_msg_count	OUT NOCOPY	NUMBER,
1566                               x_msg_data	OUT NOCOPY	VARCHAR2,
1567                               p_catv_tbl	IN	catv_tbl_type,
1568                               x_catv_tbl	OUT NOCOPY	catv_tbl_type) is
1569   c 	NUMBER;
1570   i 	NUMBER;
1571   l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1572   BEGIN
1573     OKC_API.init_msg_list(p_init_msg_list);
1574     x_return_status:= OKC_API.G_RET_STS_SUCCESS;
1575     c:=p_catv_tbl.COUNT;
1576     if (c>0) then
1577       i := p_catv_tbl.FIRST;
1578       LOOP
1579 	  create_k_article
1580        (
1581 			p_api_version	=> p_api_version,
1582                   p_init_msg_list	=> OKC_API.G_FALSE,
1583                   x_return_status	=> l_return_status,
1584                   x_msg_count		=> x_msg_count,
1585                   x_msg_data		=> x_msg_data,
1586                   p_catv_rec		=> p_catv_tbl(i),
1587                   x_catv_rec		=> x_catv_tbl(i)
1588         );
1589         if (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
1590           x_return_status := l_return_status;
1591           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1592         elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
1593           x_return_status := l_return_status;
1594         end if;
1595         c:=c-1;
1596         EXIT WHEN (c=0);
1597         i := p_catv_tbl.NEXT(i);
1598       END LOOP;
1599     end if;
1600 exception
1601 when others then NULL;
1602 end create_k_article;
1603 
1604 -- Start of comments
1605 --
1606 -- Procedure Name  : lock_k_article
1607 -- Description     :
1608 -- Business Rules  :
1609 -- Parameters      :
1610 -- Version         : 1.0
1611 -- End of comments
1612 procedure lock_k_article(p_api_version	IN	NUMBER,
1613                               p_init_msg_list	IN	VARCHAR2 ,
1614                               x_return_status	OUT NOCOPY	VARCHAR2,
1615                               x_msg_count	OUT NOCOPY	NUMBER,
1616                               x_msg_data	OUT NOCOPY	VARCHAR2,
1617                               p_catv_rec	IN	catv_rec_type) is
1618     l_api_name                     CONSTANT VARCHAR2(30) := 'LOCK_K_ARTICLE';
1619     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1620   BEGIN
1621     l_return_status := OKC_API.START_ACTIVITY(substr(l_api_name,1,26),
1622                                               G_PKG_NAME,
1623                                               p_init_msg_list,
1624                                               G_API_VERSION,
1625                                               p_api_version,
1626                                               G_SCOPE,
1627                                               x_return_status);
1628     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1629       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1630     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1631       RAISE OKC_API.G_EXCEPTION_ERROR;
1632     END IF;
1633 
1634     OKC_K_ARTICLES_GRP.lock_row(
1635       p_api_version 	=> p_api_version,
1636       p_init_msg_list 	=> OKC_API.G_FALSE,
1637       x_return_status 	=> x_return_status,
1638       x_msg_count		=> x_msg_count,
1639       x_msg_data		=> x_msg_data,
1640       p_id          => p_catv_rec.id,
1641       p_object_version_number => p_catv_rec.object_version_number
1642   	);
1643     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1644       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1645     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1646       RAISE OKC_API.G_EXCEPTION_ERROR;
1647     END IF;
1648     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1649    EXCEPTION
1650      WHEN OKC_API.G_EXCEPTION_ERROR THEN
1651        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1652        (substr(l_api_name,1,26),
1653         G_PKG_NAME,
1654         'OKC_API.G_RET_STS_ERROR',
1655         x_msg_count,
1656         x_msg_data,
1657         G_SCOPE);
1658      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1659        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1660        (substr(l_api_name,1,26),
1661         G_PKG_NAME,
1662         'OKC_API.G_RET_STS_UNEXP_ERROR',
1663         x_msg_count,
1664         x_msg_data,
1665         G_SCOPE);
1666      WHEN OTHERS THEN
1667        x_return_status := OKC_API.HANDLE_EXCEPTIONS
1668        (substr(l_api_name,1,26),
1669         G_PKG_NAME,
1670         'OTHERS',
1671         x_msg_count,
1672         x_msg_data,
1673         G_SCOPE);
1674 end lock_k_article;
1675 
1676 -- Start of comments
1677 --
1678 -- Procedure Name  : lock_k_article
1679 -- Description     :
1680 -- Business Rules  :
1681 -- Parameters      :
1682 -- Version         : 1.0
1683 -- End of comments
1684 procedure lock_k_article(p_api_version	IN	NUMBER,
1685                               p_init_msg_list	IN	VARCHAR2 ,
1686                               x_return_status	OUT NOCOPY	VARCHAR2,
1687                               x_msg_count	OUT NOCOPY	NUMBER,
1688                               x_msg_data	OUT NOCOPY	VARCHAR2,
1689                               p_catv_tbl	IN	catv_tbl_type) is
1690 i NUMBER;
1691 l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1692 begin
1693   OKC_API.init_msg_list(p_init_msg_list);
1694   x_return_status:= OKC_API.G_RET_STS_SUCCESS;
1695   if (p_catv_tbl.COUNT>0) then
1696     i := p_catv_tbl.FIRST;
1697     LOOP
1698       lock_k_article(p_api_version=>p_api_version,
1699                               p_init_msg_list=>OKC_API.G_FALSE,
1700                               x_return_status=>l_return_status,
1701                               x_msg_count=>x_msg_count,
1702                               x_msg_data=>x_msg_data,
1703                               p_catv_rec=>p_catv_tbl(i));
1704       if (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
1705           x_return_status := l_return_status;
1706           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1707       elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
1708           x_return_status := l_return_status;
1709       end if;
1710       EXIT WHEN (i=p_catv_tbl.LAST);
1711       i := p_catv_tbl.NEXT(i);
1712     END LOOP;
1713   end if;
1714 exception
1715 when others then NULL;
1716 end lock_k_article;
1717 
1718   -------------------------------------------------
1719   -- PROCEDURE Flip_GMISS_Record - set default values -
1720   -------------------------------------------------
1721   PROCEDURE Flip_GMISS_Record IS
1722   BEGIN
1723 
1724     IF (l_debug = 'Y') THEN
1725       okc_debug.Set_Indentation(G_PKG_NAME);
1726       okc_debug.log('11300: Entered Flip_GMISS_Record', 2);
1727     END IF;
1728 
1729     ----------------------------------------------------------------
1730     -- Start of GMISS logic flipping
1731     ----------------------------------------------------------------
1732     IF (gi_catv_rec.chr_id = G_MISS_NUM) THEN
1733       gi_catv_rec.chr_id := NULL;
1734      ELSIF (gi_catv_rec.chr_id IS NULL) THEN
1735       gi_catv_rec.chr_id := G_MISS_NUM;
1736     END IF;
1737 
1738     IF (gi_catv_rec.cle_id = G_MISS_NUM) THEN
1739       gi_catv_rec.cle_id := NULL;
1740      ELSIF (gi_catv_rec.cle_id IS NULL) THEN
1741       gi_catv_rec.cle_id := G_MISS_NUM;
1742     END IF;
1743 
1744     IF (gi_catv_rec.cat_id = G_MISS_NUM) THEN
1745       gi_catv_rec.cat_id := NULL;
1746      ELSIF (gi_catv_rec.cat_id IS NULL) THEN
1747       gi_catv_rec.cat_id := G_MISS_NUM;
1748     END IF;
1749 
1750     IF (gi_catv_rec.sfwt_flag = G_MISS_CHAR) THEN
1751       gi_catv_rec.sfwt_flag := NULL;
1752      ELSIF (gi_catv_rec.sfwt_flag IS NULL) THEN
1753       gi_catv_rec.sfwt_flag := G_MISS_CHAR;
1754     END IF;
1755 
1756     IF (gi_catv_rec.sav_sae_id = G_MISS_NUM) THEN
1757       gi_catv_rec.sav_sae_id := NULL;
1758      ELSIF (gi_catv_rec.sav_sae_id IS NULL) THEN
1759       gi_catv_rec.sav_sae_id := G_MISS_NUM;
1760     END IF;
1761 
1762     IF (gi_catv_rec.sav_sav_release = G_MISS_CHAR) THEN
1763       gi_catv_rec.sav_sav_release := NULL;
1764      ELSIF (gi_catv_rec.sav_sav_release IS NULL) THEN
1765       gi_catv_rec.sav_sav_release := G_MISS_CHAR;
1766     END IF;
1767 
1768     IF (gi_catv_rec.sbt_code = G_MISS_CHAR) THEN
1769       gi_catv_rec.sbt_code := NULL;
1770      ELSIF (gi_catv_rec.sbt_code IS NULL) THEN
1771       gi_catv_rec.sbt_code := G_MISS_CHAR;
1772     END IF;
1773 
1774     IF (gi_catv_rec.dnz_chr_id = G_MISS_NUM) THEN
1775       gi_catv_rec.dnz_chr_id := NULL;
1776      ELSIF (gi_catv_rec.dnz_chr_id IS NULL) THEN
1777       gi_catv_rec.dnz_chr_id := G_MISS_NUM;
1778     END IF;
1779 
1780     IF (gi_catv_rec.comments = G_MISS_CHAR) THEN
1781       gi_catv_rec.comments := NULL;
1782      ELSIF (gi_catv_rec.comments IS NULL) THEN
1783       gi_catv_rec.comments := G_MISS_CHAR;
1784     END IF;
1785 
1786     IF (gi_catv_rec.fulltext_yn = G_MISS_CHAR) THEN
1787       gi_catv_rec.fulltext_yn := NULL;
1788      ELSIF (gi_catv_rec.fulltext_yn IS NULL) THEN
1789       gi_catv_rec.fulltext_yn := G_MISS_CHAR;
1790     END IF;
1791 
1792     IF (gi_catv_rec.variation_description = G_MISS_CHAR) THEN
1793       gi_catv_rec.variation_description := NULL;
1794      ELSIF (gi_catv_rec.variation_description IS NULL) THEN
1795       gi_catv_rec.variation_description := G_MISS_CHAR;
1796     END IF;
1797 
1798     IF (gi_catv_rec.name = G_MISS_CHAR) THEN
1799       gi_catv_rec.name := NULL;
1800      ELSIF (gi_catv_rec.name IS NULL) THEN
1801       gi_catv_rec.name := G_MISS_CHAR;
1802     END IF;
1803 
1804     IF (gi_catv_rec.cat_type = G_MISS_CHAR) THEN
1805       gi_catv_rec.cat_type := NULL;
1806      ELSIF (gi_catv_rec.cat_type IS NULL) THEN
1807       gi_catv_rec.cat_type := G_MISS_CHAR;
1808     END IF;
1809 
1810     IF (gi_catv_rec.document_type = G_MISS_CHAR) THEN
1811       gi_catv_rec.document_type := NULL;
1812      ELSIF (gi_catv_rec.document_type IS NULL) THEN
1813       gi_catv_rec.document_type := G_MISS_CHAR;
1814     END IF;
1815 
1816     IF (gi_catv_rec.document_id = G_MISS_NUM) THEN
1817       gi_catv_rec.document_id := NULL;
1818      ELSIF (gi_catv_rec.document_id IS NULL) THEN
1819       gi_catv_rec.document_id := G_MISS_NUM;
1820     END IF;
1821 
1822     IF (gi_catv_rec.source_flag = G_MISS_CHAR) THEN
1823       gi_catv_rec.source_flag := NULL;
1824      ELSIF (gi_catv_rec.source_flag IS NULL) THEN
1825       gi_catv_rec.source_flag := G_MISS_CHAR;
1826     END IF;
1827 
1828     IF (gi_catv_rec.mandatory_yn = G_MISS_CHAR) THEN
1829       gi_catv_rec.mandatory_yn := NULL;
1830      ELSIF (gi_catv_rec.mandatory_yn IS NULL) THEN
1831       gi_catv_rec.mandatory_yn := G_MISS_CHAR;
1832     END IF;
1833 
1834     IF (gi_catv_rec.scn_id = G_MISS_NUM) THEN
1835       gi_catv_rec.scn_id := NULL;
1836      ELSIF (gi_catv_rec.scn_id IS NULL) THEN
1837       gi_catv_rec.scn_id := G_MISS_NUM;
1838     END IF;
1839 
1840     IF (gi_catv_rec.label = G_MISS_CHAR) THEN
1841       gi_catv_rec.label := NULL;
1842      ELSIF (gi_catv_rec.label IS NULL) THEN
1843       gi_catv_rec.label := G_MISS_CHAR;
1844     END IF;
1845 
1846     IF (gi_catv_rec.amendment_description = G_MISS_CHAR) THEN
1847       gi_catv_rec.amendment_description := NULL;
1848      ELSIF (gi_catv_rec.amendment_description IS NULL) THEN
1849       gi_catv_rec.amendment_description := G_MISS_CHAR;
1850     END IF;
1851 
1852     IF (gi_catv_rec.amendment_operation_code = G_MISS_CHAR) THEN
1853       gi_catv_rec.amendment_operation_code := NULL;
1854      ELSIF (gi_catv_rec.amendment_operation_code IS NULL) THEN
1855       gi_catv_rec.amendment_operation_code := G_MISS_CHAR;
1856     END IF;
1857 
1858     IF (gi_catv_rec.article_version_id = G_MISS_NUM) THEN
1859       gi_catv_rec.article_version_id := NULL;
1860      ELSIF (gi_catv_rec.article_version_id IS NULL) THEN
1861       gi_catv_rec.article_version_id := G_MISS_NUM;
1862     END IF;
1863 
1864     IF (gi_catv_rec.change_nonstd_yn = G_MISS_CHAR) THEN
1865       gi_catv_rec.change_nonstd_yn := NULL;
1866      ELSIF (gi_catv_rec.change_nonstd_yn IS NULL) THEN
1867       gi_catv_rec.change_nonstd_yn := G_MISS_CHAR;
1868     END IF;
1869 
1870     IF (gi_catv_rec.orig_system_reference_code = G_MISS_CHAR) THEN
1871       gi_catv_rec.orig_system_reference_code := NULL;
1872      ELSIF (gi_catv_rec.orig_system_reference_code IS NULL) THEN
1873       gi_catv_rec.orig_system_reference_code := G_MISS_CHAR;
1874     END IF;
1875 
1876     IF (gi_catv_rec.orig_system_reference_id1 = G_MISS_NUM) THEN
1877       gi_catv_rec.orig_system_reference_id1 := NULL;
1878      ELSIF (gi_catv_rec.orig_system_reference_id1 IS NULL) THEN
1879       gi_catv_rec.orig_system_reference_id1 := G_MISS_NUM;
1880     END IF;
1881 
1882     IF (gi_catv_rec.orig_system_reference_id2 = G_MISS_NUM) THEN
1883       gi_catv_rec.orig_system_reference_id2 := NULL;
1884      ELSIF (gi_catv_rec.orig_system_reference_id2 IS NULL) THEN
1885       gi_catv_rec.orig_system_reference_id2 := G_MISS_NUM;
1886     END IF;
1887 
1888     IF (gi_catv_rec.display_sequence = G_MISS_NUM) THEN
1889       gi_catv_rec.display_sequence := NULL;
1890      ELSIF (gi_catv_rec.display_sequence IS NULL) THEN
1891       gi_catv_rec.display_sequence := G_MISS_NUM;
1892     END IF;
1893 
1894     IF (gi_catv_rec.print_text_yn = G_MISS_CHAR) THEN
1895       gi_catv_rec.print_text_yn := NULL;
1896      ELSIF (gi_catv_rec.print_text_yn IS NULL) THEN
1897       gi_catv_rec.print_text_yn := G_MISS_CHAR;
1898     END IF;
1899 
1900     IF (gi_catv_rec.summary_amend_operation_code = G_MISS_CHAR) THEN
1901       gi_catv_rec.summary_amend_operation_code := NULL;
1902      ELSIF (gi_catv_rec.summary_amend_operation_code IS NULL) THEN
1903       gi_catv_rec.summary_amend_operation_code := G_MISS_CHAR;
1904     END IF;
1905 
1906     IF (gi_catv_rec.ref_article_id = G_MISS_NUM) THEN
1907       gi_catv_rec.ref_article_id := NULL;
1908      ELSIF (gi_catv_rec.ref_article_id IS NULL) THEN
1909       gi_catv_rec.ref_article_id := G_MISS_NUM;
1910     END IF;
1911 
1912     IF (gi_catv_rec.ref_article_version_id = G_MISS_NUM) THEN
1913       gi_catv_rec.ref_article_version_id := NULL;
1914      ELSIF (gi_catv_rec.ref_article_version_id IS NULL) THEN
1915       gi_catv_rec.ref_article_version_id := G_MISS_NUM;
1916     END IF;
1917 
1918     IF (gi_catv_rec.attribute_category = G_MISS_CHAR) THEN
1919       gi_catv_rec.attribute_category := NULL;
1920      ELSIF (gi_catv_rec.attribute_category IS NULL) THEN
1921       gi_catv_rec.attribute_category := G_MISS_CHAR;
1922     END IF;
1923 
1924     IF (gi_catv_rec.attribute1 = G_MISS_CHAR) THEN
1925       gi_catv_rec.attribute1 := NULL;
1926      ELSIF (gi_catv_rec.attribute1 IS NULL) THEN
1927       gi_catv_rec.attribute1 := G_MISS_CHAR;
1928     END IF;
1929 
1930     IF (gi_catv_rec.attribute2 = G_MISS_CHAR) THEN
1931       gi_catv_rec.attribute2 := NULL;
1932      ELSIF (gi_catv_rec.attribute2 IS NULL) THEN
1933       gi_catv_rec.attribute2 := G_MISS_CHAR;
1934     END IF;
1935 
1936     IF (gi_catv_rec.attribute3 = G_MISS_CHAR) THEN
1937       gi_catv_rec.attribute3 := NULL;
1938      ELSIF (gi_catv_rec.attribute3 IS NULL) THEN
1939       gi_catv_rec.attribute3 := G_MISS_CHAR;
1940     END IF;
1941 
1942     IF (gi_catv_rec.attribute4 = G_MISS_CHAR) THEN
1943       gi_catv_rec.attribute4 := NULL;
1944      ELSIF (gi_catv_rec.attribute4 IS NULL) THEN
1945       gi_catv_rec.attribute4 := G_MISS_CHAR;
1946     END IF;
1947 
1948     IF (gi_catv_rec.attribute5 = G_MISS_CHAR) THEN
1949       gi_catv_rec.attribute5 := NULL;
1950      ELSIF (gi_catv_rec.attribute5 IS NULL) THEN
1951       gi_catv_rec.attribute5 := G_MISS_CHAR;
1952     END IF;
1953 
1954     IF (gi_catv_rec.attribute6 = G_MISS_CHAR) THEN
1955       gi_catv_rec.attribute6 := NULL;
1956      ELSIF (gi_catv_rec.attribute6 IS NULL) THEN
1957       gi_catv_rec.attribute6 := G_MISS_CHAR;
1958     END IF;
1959 
1960     IF (gi_catv_rec.attribute7 = G_MISS_CHAR) THEN
1961       gi_catv_rec.attribute7 := NULL;
1962      ELSIF (gi_catv_rec.attribute7 IS NULL) THEN
1963       gi_catv_rec.attribute7 := G_MISS_CHAR;
1964     END IF;
1965 
1966     IF (gi_catv_rec.attribute8 = G_MISS_CHAR) THEN
1967       gi_catv_rec.attribute8 := NULL;
1968      ELSIF (gi_catv_rec.attribute8 IS NULL) THEN
1969       gi_catv_rec.attribute8 := G_MISS_CHAR;
1970     END IF;
1971 
1972     IF (gi_catv_rec.attribute9 = G_MISS_CHAR) THEN
1973       gi_catv_rec.attribute9 := NULL;
1974      ELSIF (gi_catv_rec.attribute9 IS NULL) THEN
1975       gi_catv_rec.attribute9 := G_MISS_CHAR;
1976     END IF;
1977 
1978     IF (gi_catv_rec.attribute10 = G_MISS_CHAR) THEN
1979       gi_catv_rec.attribute10 := NULL;
1980      ELSIF (gi_catv_rec.attribute10 IS NULL) THEN
1981       gi_catv_rec.attribute10 := G_MISS_CHAR;
1982     END IF;
1983 
1984     IF (gi_catv_rec.attribute11 = G_MISS_CHAR) THEN
1985       gi_catv_rec.attribute11 := NULL;
1986      ELSIF (gi_catv_rec.attribute11 IS NULL) THEN
1987       gi_catv_rec.attribute11 := G_MISS_CHAR;
1988     END IF;
1989 
1990     IF (gi_catv_rec.attribute12 = G_MISS_CHAR) THEN
1991       gi_catv_rec.attribute12 := NULL;
1992      ELSIF (gi_catv_rec.attribute12 IS NULL) THEN
1993       gi_catv_rec.attribute12 := G_MISS_CHAR;
1994     END IF;
1995 
1996     IF (gi_catv_rec.attribute13 = G_MISS_CHAR) THEN
1997       gi_catv_rec.attribute13 := NULL;
1998      ELSIF (gi_catv_rec.attribute13 IS NULL) THEN
1999       gi_catv_rec.attribute13 := G_MISS_CHAR;
2000     END IF;
2001 
2002     IF (gi_catv_rec.attribute14 = G_MISS_CHAR) THEN
2003       gi_catv_rec.attribute14 := NULL;
2004      ELSIF (gi_catv_rec.attribute14 IS NULL) THEN
2005       gi_catv_rec.attribute14 := G_MISS_CHAR;
2006     END IF;
2007 
2008     IF (gi_catv_rec.attribute15 = G_MISS_CHAR) THEN
2009       gi_catv_rec.attribute15 := NULL;
2010      ELSIF (gi_catv_rec.attribute15 IS NULL) THEN
2011       gi_catv_rec.attribute15 := G_MISS_CHAR;
2012     END IF;
2013 
2014     IF (gi_catv_rec.object_version_number = G_MISS_NUM) THEN
2015       gi_catv_rec.object_version_number := NULL;
2016     END IF;
2017     ----------------------------------------------------------------
2018     -- End of GMISS logic flipping
2019     ----------------------------------------------------------------
2020 
2021     IF (l_debug = 'Y') THEN
2022       okc_debug.log('11400: Leaving  Flip_GMISS_Record ', 2);
2023       okc_debug.Reset_Indentation;
2024     END IF;
2025 
2026   END Flip_GMISS_Record;
2027 
2028 -- Start of comments
2029 --
2030 -- Procedure Name  : update_k_article
2031 -- Description     :
2032 -- Business Rules  :
2033 -- Parameters      :
2034 -- Version         : 1.0
2035 -- End of comments
2036 procedure update_k_article(p_api_version	IN	NUMBER,
2037                               p_init_msg_list	IN	VARCHAR2 ,
2038                               x_return_status	OUT NOCOPY	VARCHAR2,
2039                               x_msg_count	OUT NOCOPY	NUMBER,
2040                               x_msg_data	OUT NOCOPY	VARCHAR2,
2041                               p_catv_rec	IN	catv_rec_type,
2042                               x_catv_rec	OUT NOCOPY	catv_rec_type) is
2043     l_api_name                CONSTANT VARCHAR2(30) := 'UPDATE_K_ARTICLE';
2044     l_return_status           VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2045     l_catv_rec                catv_rec_type;
2046   begin
2047     l_return_status := OKC_API.START_ACTIVITY(substr(l_api_name,1,26),
2048                                                 G_PKG_NAME,
2049                                                 p_init_msg_list,
2050                                                 G_API_VERSION,
2051                                                 p_api_version,
2052                                                 G_SCOPE,
2053                                                 x_return_status);
2054     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2055       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2056     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2057       RAISE OKC_API.G_EXCEPTION_ERROR;
2058     END IF;
2059     --
2060     -- code for temporary clob ... start
2061     --
2062 --    if (dbms_lob.istemporary(p_catv_rec.TEXT) = 1) then
2063 --      DBMS_LOB.CREATETEMPORARY(gi_catv_rec.TEXT,FALSE,DBMS_LOB.CALL);
2064 --      l_clob := p_catv_rec.TEXT;
2065 --      DBMS_LOB.OPEN(l_clob, DBMS_LOB.LOB_READONLY);
2066 --      DBMS_LOB.OPEN(gi_catv_rec.TEXT, DBMS_LOB.LOB_READWRITE);
2067 --      DBMS_LOB.COPY(dest_lob => gi_catv_rec.TEXT,src_lob => l_clob,
2068 --    			amount => dbms_lob.getlength(l_clob));
2069 --      DBMS_LOB.CLOSE(gi_catv_rec.TEXT);
2070 --      DBMS_LOB.CLOSE(l_clob);
2071 --      DBMS_LOB.freetemporary(l_clob);
2072 --    end if;
2073     --
2074     -- code for temporary clob ... end
2075     --
2076     IF (l_debug = 'Y') THEN
2077        okc_debug.log('1000: Entered '||l_api_name, 2);
2078        Dump_Rec( p_catv_rec );
2079     END IF;
2080 
2081     g_catv_rec := p_catv_rec;
2082     gi_catv_rec := Migrate( p_catv_rec );
2083     --
2084     -- Prepare record for Create article new group API
2085     --
2086     Default_Record(
2087       p_api_version                => p_api_version,
2088       x_return_status              => l_return_status,
2089       x_msg_count                  => x_msg_count,
2090       x_msg_data                   => x_msg_data
2091     );
2092     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2093       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2094     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2095       RAISE OKC_API.G_EXCEPTION_ERROR;
2096     END IF;
2097 
2098     Flip_GMISS_Record;
2099 
2100     IF (l_debug = 'Y') THEN
2101        okc_debug.log('1000: before update_article', 2);
2102        Dump_Rec( gi_catv_rec );
2103     END IF;
2104 
2105     OKC_K_ARTICLES_GRP.update_article(
2106       p_api_version                => p_api_version,
2107       p_init_msg_list              => OKC_API.G_FALSE,
2108       x_return_status              => x_return_status,
2109       x_msg_count                  => x_msg_count,
2110       x_msg_data                   => x_msg_data,
2111       p_id                         => gi_catv_rec.id,
2112       p_sav_sae_id                 => gi_catv_rec.b_sav_sae_id,
2113       p_document_type              => gi_catv_rec.document_type,
2114       p_document_id                => gi_catv_rec.document_id,
2115       p_source_flag                => gi_catv_rec.source_flag,
2116       p_mandatory_yn               => gi_catv_rec.mandatory_yn,
2117       p_scn_id                     => gi_catv_rec.scn_id,
2118       p_label                      => gi_catv_rec.label,
2119       p_amendment_description      => gi_catv_rec.amendment_description,
2120       p_article_version_id         => gi_catv_rec.article_version_id,
2121       p_change_nonstd_yn           => gi_catv_rec.change_nonstd_yn,
2122       p_orig_system_reference_code => gi_catv_rec.orig_system_reference_code,
2123       p_orig_system_reference_id1  => gi_catv_rec.orig_system_reference_id1,
2124       p_orig_system_reference_id2  => gi_catv_rec.orig_system_reference_id2,
2125       p_display_sequence           => gi_catv_rec.display_sequence,
2126       p_attribute_category         => gi_catv_rec.attribute_category,
2127       p_attribute1                 => gi_catv_rec.attribute1,
2128       p_attribute2                 => gi_catv_rec.attribute2,
2129       p_attribute3                 => gi_catv_rec.attribute3,
2130       p_attribute4                 => gi_catv_rec.attribute4,
2131       p_attribute5                 => gi_catv_rec.attribute5,
2132       p_attribute6                 => gi_catv_rec.attribute6,
2133       p_attribute7                 => gi_catv_rec.attribute7,
2134       p_attribute8                 => gi_catv_rec.attribute8,
2135       p_attribute9                 => gi_catv_rec.attribute9,
2136       p_attribute10                => gi_catv_rec.attribute10,
2137       p_attribute11                => gi_catv_rec.attribute11,
2138       p_attribute12                => gi_catv_rec.attribute12,
2139       p_attribute13                => gi_catv_rec.attribute13,
2140       p_attribute14                => gi_catv_rec.attribute14,
2141       p_attribute15                => gi_catv_rec.attribute15,
2142       p_print_text_yn              => gi_catv_rec.print_text_yn,
2143       p_ref_article_id              => gi_catv_rec.ref_article_id,
2144       p_ref_article_version_id      => gi_catv_rec.ref_article_version_id,
2145       p_object_version_number      => gi_catv_rec.object_version_number
2146   	);
2147     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2148       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2149     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2150       RAISE OKC_API.G_EXCEPTION_ERROR;
2151     END IF;
2152 
2153     -- Set OUT values
2154     x_catv_rec := get_rec( gi_catv_rec.id );
2155     g_catv_rec := x_catv_rec;
2156 
2157     IF (l_debug = 'Y') THEN
2158       okc_debug.log('1000: Leaving '||l_api_name, 2);
2159       Dump_Rec( x_catv_rec );
2160     END IF;
2161 
2162     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2163    EXCEPTION
2164      WHEN OKC_API.G_EXCEPTION_ERROR THEN
2165        IF (l_debug = 'Y') THEN
2166          okc_debug.log('1000: Leaving '||l_api_name||' because of G_EXCEPTION_ERROR ', 2);
2167        END IF;
2168        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2169        (substr(l_api_name,1,26),
2170         G_PKG_NAME,
2171         'OKC_API.G_RET_STS_ERROR',
2172         x_msg_count,
2173         x_msg_data,
2174         G_SCOPE);
2175      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2176        IF (l_debug = 'Y') THEN
2177          okc_debug.log('1000: Leaving '||l_api_name||' because of G_EXCEPTION_UNEXPECTED_ERROR ', 2);
2178        END IF;
2179        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2180        (substr(l_api_name,1,26),
2181         G_PKG_NAME,
2182         'OKC_API.G_RET_STS_UNEXP_ERROR',
2183         x_msg_count,
2184         x_msg_data,
2185         G_SCOPE);
2186      WHEN OTHERS THEN
2187        IF (l_debug = 'Y') THEN
2188          okc_debug.log('500: Leaving '||l_api_name||' because of EXCEPTION: '||sqlerrm, 2);
2189        END IF;
2190        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2191        (substr(l_api_name,1,26),
2192         G_PKG_NAME,
2193         'OTHERS',
2194         x_msg_count,
2195         x_msg_data,
2196         G_SCOPE);
2197 end update_k_article;
2198 
2199 -- Start of comments
2200 --
2201 -- Procedure Name  : update_k_article
2202 -- Description     :
2203 -- Business Rules  :
2204 -- Parameters      :
2205 -- Version         : 1.0
2206 -- End of comments
2207 
2208 procedure update_k_article(p_api_version	IN	NUMBER,
2209                               p_init_msg_list	IN	VARCHAR2 ,
2210                               x_return_status	OUT NOCOPY	VARCHAR2,
2211                               x_msg_count	OUT NOCOPY	NUMBER,
2212                               x_msg_data	OUT NOCOPY	VARCHAR2,
2213                               p_catv_tbl	IN	catv_tbl_type,
2214                               x_catv_tbl	OUT NOCOPY	catv_tbl_type) is
2215 i NUMBER;
2216 l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2217 begin
2218      OKC_API.init_msg_list(p_init_msg_list);
2219       x_return_status:= OKC_API.G_RET_STS_SUCCESS;
2220       if (p_catv_tbl.COUNT>0) then
2221         i := p_catv_tbl.FIRST;
2222         LOOP
2223 
2224 	    update_k_article(p_api_version=>p_api_version,
2225                               p_init_msg_list=>OKC_API.G_FALSE,
2226                               x_return_status=>l_return_status,
2227                               x_msg_count=>x_msg_count,
2228                               x_msg_data=>x_msg_data,
2229                               p_catv_rec=> p_catv_tbl(i),
2230                               x_catv_rec=>x_catv_tbl(i));
2231           if (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
2232             x_return_status := l_return_status;
2233             raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2234           elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
2235             x_return_status := l_return_status;
2236           end if;
2237           EXIT WHEN (i=p_catv_tbl.LAST);
2238           i := p_catv_tbl.NEXT(i);
2239         END LOOP;
2240       end if;
2241 exception
2242 when others then NULL;
2243 end update_k_article;
2244 
2245 -- Start of comments
2246 --
2247 -- Procedure Name  : delete_k_article
2248 -- Description     :
2249 -- Business Rules  :
2250 -- Parameters      :
2251 -- Version         : 1.0
2252 -- End of comments
2253 procedure delete_k_article(p_api_version	IN	NUMBER,
2254                               p_init_msg_list	IN	VARCHAR2 ,
2255                               x_return_status	OUT NOCOPY	VARCHAR2,
2256                               x_msg_count	OUT NOCOPY	NUMBER,
2257                               x_msg_data	OUT NOCOPY	VARCHAR2,
2258                               p_catv_rec	IN	catv_rec_type) is
2259     l_api_name                     CONSTANT VARCHAR2(30) := 'DELETE_K_ARTICLE';
2260     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2261   begin
2262     l_return_status := OKC_API.START_ACTIVITY(substr(l_api_name,1,26),
2263                                                 G_PKG_NAME,
2264                                                 p_init_msg_list,
2265                                                 G_API_VERSION,
2266                                                 p_api_version,
2267                                                 G_SCOPE,
2268                                                 x_return_status);
2269     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2270       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2271     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2272       RAISE OKC_API.G_EXCEPTION_ERROR;
2273     END IF;
2274     OKC_K_ARTICLES_GRP.delete_article(
2275         p_api_version 	=> p_api_version,
2276         p_init_msg_list 	=> OKC_API.G_FALSE,
2277         x_return_status 	=> x_return_status,
2278         x_msg_count		=> x_msg_count,
2279         x_msg_data		=> x_msg_data,
2280         p_validation_string  => NULL,
2281         p_id          => p_catv_rec.id,
2282         p_object_version_number => p_catv_rec.object_version_number
2283     );
2284     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2285       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2286     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2287       RAISE OKC_API.G_EXCEPTION_ERROR;
2288     END IF;
2289     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2290    EXCEPTION
2291      WHEN OKC_API.G_EXCEPTION_ERROR THEN
2292        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2293        (substr(l_api_name,1,26),
2294         G_PKG_NAME,
2295         'OKC_API.G_RET_STS_ERROR',
2296         x_msg_count,
2297         x_msg_data,
2298         G_SCOPE);
2299      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2300        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2301        (substr(l_api_name,1,26),
2302         G_PKG_NAME,
2303         'OKC_API.G_RET_STS_UNEXP_ERROR',
2304         x_msg_count,
2305         x_msg_data,
2306         G_SCOPE);
2307      WHEN OTHERS THEN
2308        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2309        (substr(l_api_name,1,26),
2310         G_PKG_NAME,
2311         'OTHERS',
2312         x_msg_count,
2313         x_msg_data,
2314         G_SCOPE);
2315 end delete_k_article;
2316 
2317 -- Start of comments
2318 --
2319 -- Procedure Name  : delete_k_article
2320 -- Description     :
2321 -- Business Rules  :
2322 -- Parameters      :
2323 -- Version         : 1.0
2324 -- End of comments
2325 
2326 procedure delete_k_article(p_api_version	IN	NUMBER,
2327                               p_init_msg_list	IN	VARCHAR2 ,
2328                               x_return_status	OUT NOCOPY	VARCHAR2,
2329                               x_msg_count	OUT NOCOPY	NUMBER,
2330                               x_msg_data	OUT NOCOPY	VARCHAR2,
2331                               p_catv_tbl	IN	catv_tbl_type) is
2332 i NUMBER;
2333 l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2334 begin
2335   OKC_API.init_msg_list(p_init_msg_list);
2336   x_return_status:= OKC_API.G_RET_STS_SUCCESS;
2337   if (p_catv_tbl.COUNT>0) then
2338     i := p_catv_tbl.FIRST;
2339     LOOP
2340       delete_k_article(p_api_version=>p_api_version,
2341                               p_init_msg_list=>OKC_API.G_FALSE,
2342                               x_return_status=>l_return_status,
2343                               x_msg_count=>x_msg_count,
2344                               x_msg_data=>x_msg_data,
2345                               p_catv_rec=>p_catv_tbl(i));
2346       if (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
2347           x_return_status := l_return_status;
2348           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2349       elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
2350           x_return_status := l_return_status;
2351       end if;
2352       EXIT WHEN (i=p_catv_tbl.LAST);
2353       i := p_catv_tbl.NEXT(i);
2354     END LOOP;
2355   end if;
2356 exception
2357 when others then NULL;
2358 end delete_k_article;
2359 
2360 -- Start of comments
2361 --
2362 -- Procedure Name  : validate_k_article
2363 -- Description     :
2364 -- Business Rules  :
2365 -- Parameters      :
2366 -- Version         : 1.0
2367 -- End of comments
2368 procedure validate_k_article(p_api_version	IN	NUMBER,
2369                               p_init_msg_list	IN	VARCHAR2 ,
2370                               x_return_status	OUT NOCOPY	VARCHAR2,
2371                               x_msg_count	OUT NOCOPY	NUMBER,
2372                               x_msg_data	OUT NOCOPY	VARCHAR2,
2373                               p_catv_rec	IN	catv_rec_type) is
2374     l_api_name                     CONSTANT VARCHAR2(30) := 'VALIDATE_K_ARTICLE';
2375     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2376   begin
2377     l_return_status := OKC_API.START_ACTIVITY(substr(l_api_name,1,26),
2378                                                 G_PKG_NAME,
2379                                                 p_init_msg_list,
2380                                                 G_API_VERSION,
2381                                                 p_api_version,
2382                                                 G_SCOPE,
2383                                                 x_return_status);
2384     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2385       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2386     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2387       RAISE OKC_API.G_EXCEPTION_ERROR;
2388     END IF;
2389 
2390     gi_catv_rec := Migrate( p_catv_rec );
2391 
2392     OKC_K_ARTICLES_GRP.validate_row(
2393       p_api_version                => p_api_version,
2394       p_init_msg_list              => OKC_API.G_FALSE,
2395       x_return_status              => x_return_status,
2396       x_msg_count                  => x_msg_count,
2397       x_msg_data                   => x_msg_data,
2398       p_id                         => gi_catv_rec.id,
2399       p_sav_sae_id                 => gi_catv_rec.sav_sae_id,
2400       p_document_type              => gi_catv_rec.document_type,
2401       p_document_id                => gi_catv_rec.document_id,
2402       p_source_flag                => gi_catv_rec.source_flag,
2403       p_mandatory_yn               => gi_catv_rec.mandatory_yn,
2404       p_scn_id                     => gi_catv_rec.scn_id,
2405       p_label                      => gi_catv_rec.label,
2406       p_amendment_description      => gi_catv_rec.amendment_description,
2407       p_amendment_operation_code   => gi_catv_rec.amendment_operation_code,
2408       p_article_version_id         => gi_catv_rec.article_version_id,
2409       p_change_nonstd_yn           => gi_catv_rec.change_nonstd_yn,
2410       p_orig_system_reference_code => gi_catv_rec.orig_system_reference_code,
2411       p_orig_system_reference_id1  => gi_catv_rec.orig_system_reference_id1,
2412       p_orig_system_reference_id2  => gi_catv_rec.orig_system_reference_id2,
2413       p_display_sequence           => gi_catv_rec.display_sequence,
2414       p_attribute_category         => gi_catv_rec.attribute_category,
2415       p_attribute1                 => gi_catv_rec.attribute1,
2416       p_attribute2                 => gi_catv_rec.attribute2,
2417       p_attribute3                 => gi_catv_rec.attribute3,
2418       p_attribute4                 => gi_catv_rec.attribute4,
2419       p_attribute5                 => gi_catv_rec.attribute5,
2420       p_attribute6                 => gi_catv_rec.attribute6,
2421       p_attribute7                 => gi_catv_rec.attribute7,
2422       p_attribute8                 => gi_catv_rec.attribute8,
2423       p_attribute9                 => gi_catv_rec.attribute9,
2424       p_attribute10                => gi_catv_rec.attribute10,
2425       p_attribute11                => gi_catv_rec.attribute11,
2426       p_attribute12                => gi_catv_rec.attribute12,
2427       p_attribute13                => gi_catv_rec.attribute13,
2428       p_attribute14                => gi_catv_rec.attribute14,
2429       p_attribute15                => gi_catv_rec.attribute15,
2430       p_print_text_yn              => gi_catv_rec.print_text_yn,
2431       p_summary_amend_operation_code => gi_catv_rec.summary_amend_operation_code,
2432       p_ref_article_id              => gi_catv_rec.ref_article_id,
2433       p_ref_article_version_id      => gi_catv_rec.ref_article_version_id,
2434       p_object_version_number      => gi_catv_rec.object_version_number
2435   	);
2436     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2437       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2438     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2439       RAISE OKC_API.G_EXCEPTION_ERROR;
2440     END IF;
2441     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2442    EXCEPTION
2443      WHEN OKC_API.G_EXCEPTION_ERROR THEN
2444        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2445        (substr(l_api_name,1,26),
2446         G_PKG_NAME,
2447         'OKC_API.G_RET_STS_ERROR',
2448         x_msg_count,
2449         x_msg_data,
2450         G_SCOPE);
2451      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2452        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2453        (substr(l_api_name,1,26),
2454         G_PKG_NAME,
2455         'OKC_API.G_RET_STS_UNEXP_ERROR',
2456         x_msg_count,
2457         x_msg_data,
2458         G_SCOPE);
2459      WHEN OTHERS THEN
2460        x_return_status := OKC_API.HANDLE_EXCEPTIONS
2461        (substr(l_api_name,1,26),
2462         G_PKG_NAME,
2463         'OTHERS',
2464         x_msg_count,
2465         x_msg_data,
2466         G_SCOPE);
2467 end validate_k_article;
2468 
2469 -- Start of comments
2470 --
2471 -- Procedure Name  : validate_k_article
2472 -- Description     :
2473 -- Business Rules  :
2474 -- Parameters      :
2475 -- Version         : 1.0
2476 -- End of comments
2477 procedure validate_k_article(p_api_version	IN	NUMBER,
2478                               p_init_msg_list	IN	VARCHAR2 ,
2479                               x_return_status	OUT NOCOPY	VARCHAR2,
2480                               x_msg_count	OUT NOCOPY	NUMBER,
2481                               x_msg_data	OUT NOCOPY	VARCHAR2,
2482                               p_catv_tbl	IN	catv_tbl_type) is
2483   c 	NUMBER;
2484   i 	NUMBER;
2485   l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2486   BEGIN
2487     OKC_API.init_msg_list(p_init_msg_list);
2488     x_return_status:= OKC_API.G_RET_STS_SUCCESS;
2489     c:=p_catv_tbl.COUNT;
2490     if (c>0) then
2491       i := p_catv_tbl.FIRST;
2492       LOOP
2493 	  validate_k_article(p_api_version=>p_api_version,
2494                               p_init_msg_list=>OKC_API.G_FALSE,
2495                               x_return_status=>l_return_status,
2496                               x_msg_count=>x_msg_count,
2497                               x_msg_data=>x_msg_data,
2498                               p_catv_rec=>p_catv_tbl(i));
2499         if (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
2500           x_return_status := l_return_status;
2501           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2502         elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
2503           x_return_status := l_return_status;
2504         end if;
2505         c:=c-1;
2506         EXIT WHEN (c=0);
2507         i := p_catv_tbl.NEXT(i);
2508       END LOOP;
2509     end if;
2510 end validate_k_article;
2511 
2512 -- Start of comments
2513 --
2514 -- Procedure Name  : create_article_translation
2515 -- Description     :
2516 -- Business Rules  :
2517 -- Parameters      :
2518 -- Version         : 1.0
2519 -- End of comments
2520   procedure create_article_translation(p_api_version	 IN	NUMBER,
2521                          p_init_msg_list IN	VARCHAR2 ,
2522                          x_return_status OUT NOCOPY	VARCHAR2,
2523                          x_msg_count	 OUT NOCOPY	NUMBER,
2524                          x_msg_data	 OUT NOCOPY	VARCHAR2,
2525                          p_atnv_rec	 IN	atnv_rec_type,
2526                          x_atnv_rec	 OUT NOCOPY	atnv_rec_type) is
2527    begin
2528     OKC_API.init_msg_list(p_init_msg_list);
2529     IF (l_debug = 'Y') THEN
2530        Okc_Debug.Log('400: Entered create_article_translation - DUMMY procedure', 2);
2531     END IF;
2532 --    We won't create a record - keep g_atnv_rec empty
2533 --    g_atnv_rec := p_atnv_rec;
2534 --    x_atnv_rec := p_atnv_rec;
2535     x_msg_count := 0;
2536     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2537   end create_article_translation;
2538 
2539 -- Start of comments
2540 --
2541 -- Procedure Name  : create_article_translation
2542 -- Description     :
2543 -- Business Rules  :
2544 -- Parameters      :
2545 -- Version         : 1.0
2546 -- End of comments
2547   procedure create_article_translation(p_api_version	 IN	NUMBER,
2548                          p_init_msg_list IN	VARCHAR2 ,
2549                          x_return_status OUT NOCOPY	VARCHAR2,
2550                          x_msg_count	 OUT NOCOPY	NUMBER,
2551                          x_msg_data	 OUT NOCOPY	VARCHAR2,
2552                          p_atnv_tbl	 IN	atnv_tbl_type,
2553                          x_atnv_tbl	 OUT NOCOPY	atnv_tbl_type) is
2554    begin
2555     OKC_API.init_msg_list(p_init_msg_list);
2556     IF (l_debug = 'Y') THEN
2557        Okc_Debug.Log('400: Entered create_article_translation - DUMMY procedure', 2);
2558     END IF;
2559 --    We won't create a record - keep g_atnv_rec empty
2560 --    g_atnv_rec := p_atnv_rec;
2561 --    x_atnv_rec := p_atnv_rec;
2562     x_msg_count := 0;
2563     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2564   end create_article_translation;
2565 
2566 -- Start of comments
2567 --
2568 -- Procedure Name  : lock_article_translation
2569 -- Description     :
2570 -- Business Rules  :
2571 -- Parameters      :
2572 -- Version         : 1.0
2573 -- End of comments
2574   procedure lock_article_translation(p_api_version	IN	NUMBER,
2575                               p_init_msg_list	IN	VARCHAR2 ,
2576                               x_return_status	OUT NOCOPY	VARCHAR2,
2577                               x_msg_count	OUT NOCOPY	NUMBER,
2578                               x_msg_data	OUT NOCOPY	VARCHAR2,
2579                               p_atnv_rec	IN	atnv_rec_type) is
2580    begin
2581     OKC_API.init_msg_list(p_init_msg_list);
2582     IF (l_debug = 'Y') THEN
2583        Okc_Debug.Log('400: Entered lock_article_translation - DUMMY procedure', 2);
2584     END IF;
2585     x_msg_count := 0;
2586     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2587   end lock_article_translation;
2588 
2589 -- Start of comments
2590 --
2591 -- Procedure Name  : lock_article_translation
2592 -- Description     :
2593 -- Business Rules  :
2594 -- Parameters      :
2595 -- Version         : 1.0
2596 -- End of comments
2597   procedure lock_article_translation(p_api_version	IN	NUMBER,
2598                               p_init_msg_list	IN	VARCHAR2 ,
2599                               x_return_status	OUT NOCOPY	VARCHAR2,
2600                               x_msg_count	OUT NOCOPY	NUMBER,
2601                               x_msg_data	OUT NOCOPY	VARCHAR2,
2602                               p_atnv_tbl	IN	atnv_tbl_type) is
2603    begin
2604     OKC_API.init_msg_list(p_init_msg_list);
2605     IF (l_debug = 'Y') THEN
2606        Okc_Debug.Log('400: Entered lock_article_translation - DUMMY procedure', 2);
2607     END IF;
2608     x_msg_count := 0;
2609     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2610   end lock_article_translation;
2611 
2612 -- Start of comments
2613 --
2614 -- Procedure Name  : delete_article_translation
2615 -- Description     :
2616 -- Business Rules  :
2617 -- Parameters      :
2618 -- Version         : 1.0
2619 -- End of comments
2620   procedure delete_article_translation(p_api_version	 IN	NUMBER,
2621                          p_init_msg_list IN	VARCHAR2 ,
2622                          x_return_status OUT NOCOPY	VARCHAR2,
2623                          x_msg_count	 OUT NOCOPY	NUMBER,
2624                          x_msg_data	 OUT NOCOPY	VARCHAR2,
2625                          p_atnv_rec	 IN	atnv_rec_type) is
2626    begin
2627     OKC_API.init_msg_list(p_init_msg_list);
2628     IF (l_debug = 'Y') THEN
2629        Okc_Debug.Log('400: Entered delete_article_translation - DUMMY procedure', 2);
2630     END IF;
2631     x_msg_count := 0;
2632     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2633   end delete_article_translation;
2634 
2635 -- Start of comments
2636 --
2637 -- Procedure Name  : delete_article_translation
2638 -- Description     :
2639 -- Business Rules  :
2640 -- Parameters      :
2641 -- Version         : 1.0
2642 -- End of comments
2643   procedure delete_article_translation(p_api_version	 IN	NUMBER,
2644                          p_init_msg_list IN	VARCHAR2 ,
2645                          x_return_status OUT NOCOPY	VARCHAR2,
2646                          x_msg_count	 OUT NOCOPY	NUMBER,
2647                          x_msg_data	 OUT NOCOPY	VARCHAR2,
2648                          p_atnv_tbl	 IN	atnv_tbl_type) is
2649    begin
2650     OKC_API.init_msg_list(p_init_msg_list);
2651     IF (l_debug = 'Y') THEN
2652        Okc_Debug.Log('400: Entered delete_article_translation - DUMMY procedure', 2);
2653     END IF;
2654     x_msg_count := 0;
2655     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2656   end delete_article_translation;
2657 
2658 -- Start of comments
2659 --
2660 -- Procedure Name  : validate_article_translation
2661 -- Description     :
2662 -- Business Rules  :
2663 -- Parameters      :
2664 -- Version         : 1.0
2665 -- End of comments
2666   procedure validate_article_translation(p_api_version   IN	NUMBER,
2667                            p_init_msg_list IN	VARCHAR2 ,
2668                            x_return_status OUT NOCOPY	VARCHAR2,
2669                            x_msg_count	   OUT NOCOPY	NUMBER,
2670                            x_msg_data	   OUT NOCOPY	VARCHAR2,
2671                            p_atnv_rec	   IN	atnv_rec_type) is
2672    begin
2673     OKC_API.init_msg_list(p_init_msg_list);
2674     IF (l_debug = 'Y') THEN
2675        Okc_Debug.Log('400: Entered validate_article_translation - DUMMY procedure', 2);
2676     END IF;
2677     x_msg_count := 0;
2678     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2679   end validate_article_translation;
2680 
2681 -- Start of comments
2682 --
2683 -- Procedure Name  : validate_article_translation
2684 -- Description     :
2685 -- Business Rules  :
2686 -- Parameters      :
2687 -- Version         : 1.0
2688 -- End of comments
2689   procedure validate_article_translation(p_api_version   IN	NUMBER,
2690                            p_init_msg_list IN	VARCHAR2 ,
2691                            x_return_status OUT NOCOPY	VARCHAR2,
2692                            x_msg_count	   OUT NOCOPY	NUMBER,
2693                            x_msg_data	   OUT NOCOPY	VARCHAR2,
2694                            p_atnv_tbl	   IN	atnv_tbl_type) is
2695    begin
2696     OKC_API.init_msg_list(p_init_msg_list);
2697     IF (l_debug = 'Y') THEN
2698        Okc_Debug.Log('400: Entered validate_article_translation - DUMMY procedure', 2);
2699     END IF;
2700     x_msg_count := 0;
2701     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2702   end validate_article_translation;
2703 
2704 -- Start of comments
2705 --
2706 -- Procedure Name  : std_art_name
2707 -- Description     :
2708 -- Business Rules  :
2709 -- Parameters      :
2710 -- Version         : 1.0
2711 -- End of comments
2712 function std_art_name(p_sav_sae_id IN NUMBER) return varchar2 is
2713 l_name varchar2(150);
2714 cursor c1 is
2715   select name
2716   from OKC_STD_ARTICLES_V
2717   where ID = p_sav_sae_id;
2718 begin
2719   open c1;
2720   fetch c1 into l_name;
2721   close c1;
2722   return l_name;
2723 end std_art_name;
2724 
2725 end OKC_K_ARTICLE_PUB;