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