DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKS_MOD_PVT

Source


1 PACKAGE BODY OKS_MOD_PVT AS
2 /* $Header: OKSRMODB.pls 120.0 2005/05/25 18:11:48 appldev noship $ */
3   ---------------------------------------------------------------------------
4   -- PROCEDURE load_error_tbl
5   ---------------------------------------------------------------------------
6   PROCEDURE load_error_tbl (
7     px_error_rec                   IN OUT NOCOPY OKC_API.ERROR_REC_TYPE,
8     px_error_tbl                   IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
9 
10     j                              INTEGER := NVL(px_error_tbl.LAST, 0) + 1;
11     last_msg_idx                   INTEGER := FND_MSG_PUB.COUNT_MSG;
12     l_msg_idx                      INTEGER := FND_MSG_PUB.G_NEXT;
13   BEGIN
14     -- FND_MSG_PUB has a small error in it.  If we call FND_MSG_PUB.COUNT_AND_GET before
15     -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
16     -- message stack gets set to 1.  This makes sense until we call FND_MSG_PUB.GET which
17     -- automatically increments the index by 1, (making it 2), however, when the GET function
18     -- attempts to pull message 2, we get a NO_DATA_FOUND exception because there isn't any
19     -- message 2.  To circumvent this problem, check the amount of messages and compensate.
20     -- Again, this error only occurs when 1 message is on the stack because COUNT_AND_GET
21     -- will only update the index variable when 1 and only 1 message is on the stack.
22     IF (last_msg_idx = 1) THEN
23       l_msg_idx := FND_MSG_PUB.G_FIRST;
24     END IF;
25     LOOP
26       fnd_msg_pub.get(
27             p_msg_index     => l_msg_idx,
28             p_encoded       => fnd_api.g_false,
29             p_data          => px_error_rec.msg_data,
30             p_msg_index_out => px_error_rec.msg_count);
31       px_error_tbl(j) := px_error_rec;
32       j := j + 1;
33     EXIT WHEN (px_error_rec.msg_count = last_msg_idx);
34     END LOOP;
35   END load_error_tbl;
36   ---------------------------------------------------------------------------
37   -- FUNCTION find_highest_exception
38   ---------------------------------------------------------------------------
39   -- Finds the highest exception (G_RET_STS_UNEXP_ERROR)
40   -- in a OKC_API.ERROR_TBL_TYPE, and returns it.
41   FUNCTION find_highest_exception(
42     p_error_tbl                    IN OKC_API.ERROR_TBL_TYPE
43   ) RETURN VARCHAR2 IS
44     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
45     i                              INTEGER := 1;
46   BEGIN
47     IF (p_error_tbl.COUNT > 0) THEN
48       i := p_error_tbl.FIRST;
49       LOOP
50         IF (p_error_tbl(i).error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
51           IF (l_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
52             l_return_status := p_error_tbl(i).error_type;
53           END IF;
54         END IF;
55         EXIT WHEN (i = p_error_tbl.LAST);
56         i := p_error_tbl.NEXT(i);
57       END LOOP;
58     END IF;
59     RETURN(l_return_status);
60   END find_highest_exception;
61   ---------------------------------------------------------------------------
62   -- FUNCTION get_seq_id
63   ---------------------------------------------------------------------------
64   FUNCTION get_seq_id RETURN NUMBER IS
65   BEGIN
66     RETURN(okc_p_util.raw_to_number(sys_guid()));
67   END get_seq_id;
68 
69   ---------------------------------------------------------------------------
70   -- PROCEDURE qc
71   ---------------------------------------------------------------------------
72   PROCEDURE qc IS
73   BEGIN
74     null;
75   END qc;
76 
77   ---------------------------------------------------------------------------
78   -- PROCEDURE change_version
79   ---------------------------------------------------------------------------
80   PROCEDURE change_version IS
81   BEGIN
82     null;
83   END change_version;
84 
85   ---------------------------------------------------------------------------
86   -- PROCEDURE api_copy
87   ---------------------------------------------------------------------------
88   PROCEDURE api_copy IS
89   BEGIN
90     null;
91   END api_copy;
92 
93   ---------------------------------------------------------------------------
94   -- FUNCTION get_rec for: OKS_MSCHG_OPERATIONS_DTLS_V
95   ---------------------------------------------------------------------------
96   FUNCTION get_rec (
97     p_OksMschgOperationsDtlsVRec   IN OksMschgOperationsDtlsVRecType,
98     x_no_data_found                OUT NOCOPY BOOLEAN
99   ) RETURN OksMschgOperationsDtlsVRecType IS
100     CURSOR oks_modv_pk_csr (p_id IN NUMBER) IS
101     SELECT
102             ID,
103             MRD_ID,
104             OIE_ID,
105             OLE_ID,
106             MSCHG_TYPE,
107             ATTRIBUTE_LEVEL,
108             QA_CHECK_YN,
109             OBJECT_VERSION_NUMBER,
110             CREATED_BY,
111             CREATION_DATE,
112             LAST_UPDATED_BY,
113             LAST_UPDATE_DATE,
114             LAST_UPDATE_LOGIN,
115             SECURITY_GROUP_ID,
116             ATTRIBUTE1,
117             ATTRIBUTE2,
118             ATTRIBUTE3,
119             ATTRIBUTE4,
120             ATTRIBUTE5,
121             ATTRIBUTE6,
122             ATTRIBUTE7,
123             ATTRIBUTE8,
124             ATTRIBUTE9,
125             ATTRIBUTE10,
126             ATTRIBUTE11,
127             ATTRIBUTE12,
128             ATTRIBUTE13,
129             ATTRIBUTE14,
130             ATTRIBUTE15
131       FROM Oks_Mschg_Operations_Dtls_V
132      WHERE oks_mschg_operations_dtls_v.id = p_id;
133     l_oks_modv_pk                  oks_modv_pk_csr%ROWTYPE;
134     l_OksMschgOperationsDtlsVRec   OksMschgOperationsDtlsVRecType;
135   BEGIN
136     x_no_data_found := TRUE;
137     -- Get current database values
138     OPEN oks_modv_pk_csr (p_OksMschgOperationsDtlsVRec.id);
139     FETCH oks_modv_pk_csr INTO
140               l_OksMschgOperationsDtlsVRec.id,
141               l_OksMschgOperationsDtlsVRec.mrd_id,
142               l_OksMschgOperationsDtlsVRec.oie_id,
143               l_OksMschgOperationsDtlsVRec.ole_id,
144               l_OksMschgOperationsDtlsVRec.mschg_type,
145               l_OksMschgOperationsDtlsVRec.attribute_level,
146               l_OksMschgOperationsDtlsVRec.qa_check_yn,
147               l_OksMschgOperationsDtlsVRec.object_version_number,
148               l_OksMschgOperationsDtlsVRec.created_by,
149               l_OksMschgOperationsDtlsVRec.creation_date,
150               l_OksMschgOperationsDtlsVRec.last_updated_by,
151               l_OksMschgOperationsDtlsVRec.last_update_date,
152               l_OksMschgOperationsDtlsVRec.last_update_login,
153               l_OksMschgOperationsDtlsVRec.security_group_id,
154               l_OksMschgOperationsDtlsVRec.attribute1,
155               l_OksMschgOperationsDtlsVRec.attribute2,
156               l_OksMschgOperationsDtlsVRec.attribute3,
157               l_OksMschgOperationsDtlsVRec.attribute4,
158               l_OksMschgOperationsDtlsVRec.attribute5,
159               l_OksMschgOperationsDtlsVRec.attribute6,
160               l_OksMschgOperationsDtlsVRec.attribute7,
161               l_OksMschgOperationsDtlsVRec.attribute8,
162               l_OksMschgOperationsDtlsVRec.attribute9,
163               l_OksMschgOperationsDtlsVRec.attribute10,
164               l_OksMschgOperationsDtlsVRec.attribute11,
165               l_OksMschgOperationsDtlsVRec.attribute12,
166               l_OksMschgOperationsDtlsVRec.attribute13,
167               l_OksMschgOperationsDtlsVRec.attribute14,
168               l_OksMschgOperationsDtlsVRec.attribute15;
169     x_no_data_found := oks_modv_pk_csr%NOTFOUND;
170     CLOSE oks_modv_pk_csr;
171     RETURN(l_OksMschgOperationsDtlsVRec);
172   END get_rec;
173 
174   ------------------------------------------------------------------
175   -- This version of get_rec sets error messages if no data found --
176   ------------------------------------------------------------------
177   FUNCTION get_rec (
178     p_OksMschgOperationsDtlsVRec   IN OksMschgOperationsDtlsVRecType,
179     x_return_status                OUT NOCOPY VARCHAR2
180   ) RETURN OksMschgOperationsDtlsVRecType IS
181     l_OksMschgOperationsDtlsVRec   OksMschgOperationsDtlsVRecType;
182     l_row_notfound                 BOOLEAN := TRUE;
183   BEGIN
184     x_return_status := OKC_API.G_RET_STS_SUCCESS;
185     l_OksMschgOperationsDtlsVRec := get_rec(p_OksMschgOperationsDtlsVRec, l_row_notfound);
186     IF (l_row_notfound) THEN
187       OKC_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
188       x_return_status := OKC_API.G_RET_STS_ERROR;
189     END IF;
190     RETURN(l_OksMschgOperationsDtlsVRec);
191   END get_rec;
192   -----------------------------------------------------------
193   -- So we don't have to pass an "l_row_notfound" variable --
194   -----------------------------------------------------------
195   FUNCTION get_rec (
196     p_OksMschgOperationsDtlsVRec   IN OksMschgOperationsDtlsVRecType
197   ) RETURN OksMschgOperationsDtlsVRecType IS
198     l_row_not_found                BOOLEAN := TRUE;
199   BEGIN
200     RETURN(get_rec(p_OksMschgOperationsDtlsVRec, l_row_not_found));
201   END get_rec;
202   ---------------------------------------------------------------------------
203   -- FUNCTION get_rec for: OKS_MSCHG_OPERATIONS_DTLS
204   ---------------------------------------------------------------------------
205   FUNCTION get_rec (
206     p_oks_mschg_operati2           IN OksMschgOperationsDtlsRecType,
207     x_no_data_found                OUT NOCOPY BOOLEAN
208   ) RETURN OksMschgOperationsDtlsRecType IS
209     CURSOR oks_mschg_operation1 (p_id IN NUMBER) IS
210     SELECT
211             ID,
212             MRD_ID,
213             OIE_ID,
214             OLE_ID,
215             MSCHG_TYPE,
216             ATTRIBUTE_LEVEL,
217             QA_CHECK_YN,
218             OBJECT_VERSION_NUMBER,
219             CREATED_BY,
220             CREATION_DATE,
221             LAST_UPDATED_BY,
222             LAST_UPDATE_DATE,
223             LAST_UPDATE_LOGIN,
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       FROM Oks_Mschg_Operations_Dtls
240      WHERE oks_mschg_operations_dtls.id = p_id;
241     l_oks_mschg_operations_dtls_pk oks_mschg_operation1%ROWTYPE;
242     l_oks_mschg_operati3           OksMschgOperationsDtlsRecType;
243   BEGIN
244     x_no_data_found := TRUE;
245     -- Get current database values
246     OPEN oks_mschg_operation1 (p_oks_mschg_operati2.id);
247     FETCH oks_mschg_operation1 INTO
248               l_oks_mschg_operati3.id,
249               l_oks_mschg_operati3.mrd_id,
250               l_oks_mschg_operati3.oie_id,
251               l_oks_mschg_operati3.ole_id,
252               l_oks_mschg_operati3.mschg_type,
253               l_oks_mschg_operati3.attribute_level,
254               l_oks_mschg_operati3.qa_check_yn,
255               l_oks_mschg_operati3.object_version_number,
256               l_oks_mschg_operati3.created_by,
257               l_oks_mschg_operati3.creation_date,
258               l_oks_mschg_operati3.last_updated_by,
259               l_oks_mschg_operati3.last_update_date,
260               l_oks_mschg_operati3.last_update_login,
261               l_oks_mschg_operati3.attribute1,
262               l_oks_mschg_operati3.attribute2,
263               l_oks_mschg_operati3.attribute3,
264               l_oks_mschg_operati3.attribute4,
265               l_oks_mschg_operati3.attribute5,
266               l_oks_mschg_operati3.attribute6,
267               l_oks_mschg_operati3.attribute7,
268               l_oks_mschg_operati3.attribute8,
269               l_oks_mschg_operati3.attribute9,
270               l_oks_mschg_operati3.attribute10,
271               l_oks_mschg_operati3.attribute11,
272               l_oks_mschg_operati3.attribute12,
273               l_oks_mschg_operati3.attribute13,
274               l_oks_mschg_operati3.attribute14,
275               l_oks_mschg_operati3.attribute15;
276     x_no_data_found := oks_mschg_operation1%NOTFOUND;
277     CLOSE oks_mschg_operation1;
278     RETURN(l_oks_mschg_operati3);
279   END get_rec;
280 
281   ------------------------------------------------------------------
282   -- This version of get_rec sets error messages if no data found --
283   ------------------------------------------------------------------
284   FUNCTION get_rec (
285     p_oks_mschg_operati2           IN OksMschgOperationsDtlsRecType,
286     x_return_status                OUT NOCOPY VARCHAR2
287   ) RETURN OksMschgOperationsDtlsRecType IS
288     l_oks_mschg_operati3           OksMschgOperationsDtlsRecType;
289     l_row_notfound                 BOOLEAN := TRUE;
290   BEGIN
291     x_return_status := OKC_API.G_RET_STS_SUCCESS;
292     l_oks_mschg_operati3 := get_rec(p_oks_mschg_operati2, l_row_notfound);
293     IF (l_row_notfound) THEN
294       OKC_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
295       x_return_status := OKC_API.G_RET_STS_ERROR;
296     END IF;
297     RETURN(l_oks_mschg_operati3);
298   END get_rec;
299   -----------------------------------------------------------
300   -- So we don't have to pass an "l_row_notfound" variable --
301   -----------------------------------------------------------
302   FUNCTION get_rec (
303     p_oks_mschg_operati2           IN OksMschgOperationsDtlsRecType
304   ) RETURN OksMschgOperationsDtlsRecType IS
305     l_row_not_found                BOOLEAN := TRUE;
306   BEGIN
307     RETURN(get_rec(p_oks_mschg_operati2, l_row_not_found));
308   END get_rec;
309   ---------------------------------------------------------------------------
310   -- FUNCTION null_out_defaults for: OKS_MSCHG_OPERATIONS_DTLS_V
311   ---------------------------------------------------------------------------
312   FUNCTION null_out_defaults (
313     p_OksMschgOperationsDtlsVRec   IN OksMschgOperationsDtlsVRecType
314   ) RETURN OksMschgOperationsDtlsVRecType IS
315     l_OksMschgOperationsDtlsVRec   OksMschgOperationsDtlsVRecType := p_OksMschgOperationsDtlsVRec;
316   BEGIN
317     IF (l_OksMschgOperationsDtlsVRec.id IS NULL ) THEN
318       l_OksMschgOperationsDtlsVRec.id := NULL;
319     END IF;
320     IF (l_OksMschgOperationsDtlsVRec.mrd_id IS NULL ) THEN
321       l_OksMschgOperationsDtlsVRec.mrd_id := NULL;
322     END IF;
323     IF (l_OksMschgOperationsDtlsVRec.oie_id IS NULL ) THEN
324       l_OksMschgOperationsDtlsVRec.oie_id := NULL;
325     END IF;
326     IF (l_OksMschgOperationsDtlsVRec.ole_id IS NULL ) THEN
327       l_OksMschgOperationsDtlsVRec.ole_id := NULL;
328     END IF;
329     IF (l_OksMschgOperationsDtlsVRec.mschg_type IS NULL ) THEN
330       l_OksMschgOperationsDtlsVRec.mschg_type := NULL;
331     END IF;
332     IF (l_OksMschgOperationsDtlsVRec.attribute_level IS NULL ) THEN
333       l_OksMschgOperationsDtlsVRec.attribute_level := NULL;
334     END IF;
335     IF (l_OksMschgOperationsDtlsVRec.qa_check_yn IS NULL ) THEN
336       l_OksMschgOperationsDtlsVRec.qa_check_yn := NULL;
337     END IF;
338     IF (l_OksMschgOperationsDtlsVRec.object_version_number IS NULL ) THEN
339       l_OksMschgOperationsDtlsVRec.object_version_number := NULL;
340     END IF;
341     IF (l_OksMschgOperationsDtlsVRec.created_by IS NULL ) THEN
342       l_OksMschgOperationsDtlsVRec.created_by := NULL;
343     END IF;
344     IF (l_OksMschgOperationsDtlsVRec.creation_date IS NULL ) THEN
345       l_OksMschgOperationsDtlsVRec.creation_date := NULL;
346     END IF;
347     IF (l_OksMschgOperationsDtlsVRec.last_updated_by IS NULL ) THEN
348       l_OksMschgOperationsDtlsVRec.last_updated_by := NULL;
349     END IF;
350     IF (l_OksMschgOperationsDtlsVRec.last_update_date IS NULL ) THEN
351       l_OksMschgOperationsDtlsVRec.last_update_date := NULL;
352     END IF;
353     IF (l_OksMschgOperationsDtlsVRec.last_update_login IS NULL ) THEN
354       l_OksMschgOperationsDtlsVRec.last_update_login := NULL;
355     END IF;
356     IF (l_OksMschgOperationsDtlsVRec.security_group_id IS NULL ) THEN
357       l_OksMschgOperationsDtlsVRec.security_group_id := NULL;
358     END IF;
359     IF (l_OksMschgOperationsDtlsVRec.attribute1 IS NULL ) THEN
360       l_OksMschgOperationsDtlsVRec.attribute1 := NULL;
361     END IF;
362     IF (l_OksMschgOperationsDtlsVRec.attribute2 IS NULL ) THEN
363       l_OksMschgOperationsDtlsVRec.attribute2 := NULL;
364     END IF;
365     IF (l_OksMschgOperationsDtlsVRec.attribute3 IS NULL ) THEN
366       l_OksMschgOperationsDtlsVRec.attribute3 := NULL;
367     END IF;
368     IF (l_OksMschgOperationsDtlsVRec.attribute4 IS NULL ) THEN
369       l_OksMschgOperationsDtlsVRec.attribute4 := NULL;
370     END IF;
371     IF (l_OksMschgOperationsDtlsVRec.attribute5 IS NULL ) THEN
372       l_OksMschgOperationsDtlsVRec.attribute5 := NULL;
373     END IF;
374     IF (l_OksMschgOperationsDtlsVRec.attribute6 IS NULL ) THEN
375       l_OksMschgOperationsDtlsVRec.attribute6 := NULL;
376     END IF;
377     IF (l_OksMschgOperationsDtlsVRec.attribute7 IS NULL ) THEN
378       l_OksMschgOperationsDtlsVRec.attribute7 := NULL;
379     END IF;
380     IF (l_OksMschgOperationsDtlsVRec.attribute8 IS NULL ) THEN
381       l_OksMschgOperationsDtlsVRec.attribute8 := NULL;
382     END IF;
383     IF (l_OksMschgOperationsDtlsVRec.attribute9 IS NULL ) THEN
384       l_OksMschgOperationsDtlsVRec.attribute9 := NULL;
385     END IF;
386     IF (l_OksMschgOperationsDtlsVRec.attribute10 IS NULL ) THEN
387       l_OksMschgOperationsDtlsVRec.attribute10 := NULL;
388     END IF;
389     IF (l_OksMschgOperationsDtlsVRec.attribute11 IS NULL ) THEN
390       l_OksMschgOperationsDtlsVRec.attribute11 := NULL;
391     END IF;
392     IF (l_OksMschgOperationsDtlsVRec.attribute12 IS NULL ) THEN
393       l_OksMschgOperationsDtlsVRec.attribute12 := NULL;
394     END IF;
395     IF (l_OksMschgOperationsDtlsVRec.attribute13 IS NULL ) THEN
396       l_OksMschgOperationsDtlsVRec.attribute13 := NULL;
397     END IF;
398     IF (l_OksMschgOperationsDtlsVRec.attribute14 IS NULL ) THEN
399       l_OksMschgOperationsDtlsVRec.attribute14 := NULL;
400     END IF;
401     IF (l_OksMschgOperationsDtlsVRec.attribute15 IS NULL ) THEN
402       l_OksMschgOperationsDtlsVRec.attribute15 := NULL;
403     END IF;
404     RETURN(l_OksMschgOperationsDtlsVRec);
405   END null_out_defaults;
406   ---------------------------------
407   -- Validate_Attributes for: ID --
408   ---------------------------------
409   PROCEDURE validate_id(
410     x_return_status                OUT NOCOPY VARCHAR2,
411     p_id                           IN NUMBER) IS
412   BEGIN
413     x_return_status := OKC_API.G_RET_STS_SUCCESS;
414     IF (p_id IS NULL OR
415         p_id IS NULL)
416     THEN
417       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'id');
418       x_return_status := OKC_API.G_RET_STS_ERROR;
419       RAISE G_EXCEPTION_HALT_VALIDATION;
420     END IF;
421   EXCEPTION
422     WHEN G_EXCEPTION_HALT_VALIDATION THEN
423       null;
424     WHEN OTHERS THEN
425       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
426                           ,p_msg_name     => G_UNEXPECTED_ERROR
427                           ,p_token1       => G_SQLCODE_TOKEN
428                           ,p_token1_value => SQLCODE
429                           ,p_token2       => G_SQLERRM_TOKEN
430                           ,p_token2_value => SQLERRM);
431       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
432   END validate_id;
433   ---------------------------------------------------------------------------
434   -- FUNCTION Validate_Attributes
435   ---------------------------------------------------------------------------
436   ---------------------------------------------------------
437   -- Validate_Attributes for:OKS_MSCHG_OPERATIONS_DTLS_V --
438   ---------------------------------------------------------
439   FUNCTION Validate_Attributes (
440     p_OksMschgOperationsDtlsVRec   IN OksMschgOperationsDtlsVRecType
441   ) RETURN VARCHAR2 IS
442     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
443     x_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
444   BEGIN
445     -----------------------------
446     -- Column Level Validation --
447     -----------------------------
448     -- ***
449     -- id
450     -- ***
451     validate_id(x_return_status, p_OksMschgOperationsDtlsVRec.id);
452     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
453       l_return_status := x_return_status;
454       RAISE G_EXCEPTION_HALT_VALIDATION;
455     END IF;
456 
457     RETURN(l_return_status);
458   EXCEPTION
459     WHEN G_EXCEPTION_HALT_VALIDATION THEN
460       RETURN(l_return_status);
461     WHEN OTHERS THEN
462       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
463                           ,p_msg_name     => G_UNEXPECTED_ERROR
464                           ,p_token1       => G_SQLCODE_TOKEN
465                           ,p_token1_value => SQLCODE
466                           ,p_token2       => G_SQLERRM_TOKEN
467                           ,p_token2_value => SQLERRM);
468       l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
469       RETURN(l_return_status);
470   END Validate_Attributes;
471   ---------------------------------------------------------------------------
472   -- PROCEDURE Validate_Record
473   ---------------------------------------------------------------------------
474   -----------------------------------------------------
475   -- Validate Record for:OKS_MSCHG_OPERATIONS_DTLS_V --
476   -----------------------------------------------------
477   FUNCTION Validate_Record (
478     p_OksMschgOperationsDtlsVRec IN OksMschgOperationsDtlsVRecType,
479     p_db_OksMschgOperat41 IN OksMschgOperationsDtlsVRecType
480   ) RETURN VARCHAR2 IS
481     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
482   BEGIN
483     RETURN (l_return_status);
484   END Validate_Record;
485   FUNCTION Validate_Record (
486     p_OksMschgOperationsDtlsVRec IN OksMschgOperationsDtlsVRecType
487   ) RETURN VARCHAR2 IS
488     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
489     l_db_OksMschgOperat42          OksMschgOperationsDtlsVRecType := get_rec(p_OksMschgOperationsDtlsVRec);
490   BEGIN
491     l_return_status := Validate_Record(p_OksMschgOperationsDtlsVRec => p_OksMschgOperationsDtlsVRec,
492                                        p_db_OksMschgOperat41 => l_db_OksMschgOperat42);
493     RETURN (l_return_status);
494   END Validate_Record;
495 
496   ---------------------------------------------------------------------------
497   -- PROCEDURE Migrate
498   ---------------------------------------------------------------------------
499   PROCEDURE migrate (
500     p_from IN OksMschgOperationsDtlsVRecType,
501     p_to   IN OUT NOCOPY OksMschgOperationsDtlsRecType
502   ) IS
503   BEGIN
504     p_to.id := p_from.id;
505     p_to.mrd_id := p_from.mrd_id;
506     p_to.oie_id := p_from.oie_id;
507     p_to.ole_id := p_from.ole_id;
508     p_to.mschg_type := p_from.mschg_type;
509     p_to.attribute_level := p_from.attribute_level;
510     p_to.qa_check_yn := p_from.qa_check_yn;
511     p_to.object_version_number := p_from.object_version_number;
512     p_to.created_by := p_from.created_by;
513     p_to.creation_date := p_from.creation_date;
514     p_to.last_updated_by := p_from.last_updated_by;
515     p_to.last_update_date := p_from.last_update_date;
516     p_to.last_update_login := p_from.last_update_login;
517     p_to.attribute1 := p_from.attribute1;
518     p_to.attribute2 := p_from.attribute2;
519     p_to.attribute3 := p_from.attribute3;
520     p_to.attribute4 := p_from.attribute4;
521     p_to.attribute5 := p_from.attribute5;
522     p_to.attribute6 := p_from.attribute6;
523     p_to.attribute7 := p_from.attribute7;
524     p_to.attribute8 := p_from.attribute8;
525     p_to.attribute9 := p_from.attribute9;
526     p_to.attribute10 := p_from.attribute10;
527     p_to.attribute11 := p_from.attribute11;
528     p_to.attribute12 := p_from.attribute12;
529     p_to.attribute13 := p_from.attribute13;
530     p_to.attribute14 := p_from.attribute14;
531     p_to.attribute15 := p_from.attribute15;
532   END migrate;
533   PROCEDURE migrate (
534     p_from IN OksMschgOperationsDtlsRecType,
535     p_to   IN OUT NOCOPY OksMschgOperationsDtlsVRecType
536   ) IS
537   BEGIN
538     p_to.id := p_from.id;
539     p_to.mrd_id := p_from.mrd_id;
540     p_to.oie_id := p_from.oie_id;
541     p_to.ole_id := p_from.ole_id;
542     p_to.mschg_type := p_from.mschg_type;
543     p_to.attribute_level := p_from.attribute_level;
544     p_to.qa_check_yn := p_from.qa_check_yn;
545     p_to.object_version_number := p_from.object_version_number;
546     p_to.created_by := p_from.created_by;
547     p_to.creation_date := p_from.creation_date;
548     p_to.last_updated_by := p_from.last_updated_by;
549     p_to.last_update_date := p_from.last_update_date;
550     p_to.last_update_login := p_from.last_update_login;
551     p_to.attribute1 := p_from.attribute1;
552     p_to.attribute2 := p_from.attribute2;
553     p_to.attribute3 := p_from.attribute3;
554     p_to.attribute4 := p_from.attribute4;
555     p_to.attribute5 := p_from.attribute5;
556     p_to.attribute6 := p_from.attribute6;
557     p_to.attribute7 := p_from.attribute7;
558     p_to.attribute8 := p_from.attribute8;
559     p_to.attribute9 := p_from.attribute9;
560     p_to.attribute10 := p_from.attribute10;
561     p_to.attribute11 := p_from.attribute11;
562     p_to.attribute12 := p_from.attribute12;
563     p_to.attribute13 := p_from.attribute13;
564     p_to.attribute14 := p_from.attribute14;
565     p_to.attribute15 := p_from.attribute15;
566   END migrate;
567   ---------------------------------------------------------------------------
568   -- PROCEDURE validate_row
569   ---------------------------------------------------------------------------
570   --------------------------------------------------
571   -- validate_row for:OKS_MSCHG_OPERATIONS_DTLS_V --
572   --------------------------------------------------
573   PROCEDURE validate_row(
574     p_api_version                  IN NUMBER,
575     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
576     x_return_status                OUT NOCOPY VARCHAR2,
577     x_msg_count                    OUT NOCOPY NUMBER,
578     x_msg_data                     OUT NOCOPY VARCHAR2,
579     p_OksMschgOperationsDtlsVRec   IN OksMschgOperationsDtlsVRecType) IS
580 
581     l_api_version                  CONSTANT NUMBER := 1;
582     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
583     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
584     l_OksMschgOperationsDtlsVRec   OksMschgOperationsDtlsVRecType := p_OksMschgOperationsDtlsVRec;
585     l_oks_mschg_operati3           OksMschgOperationsDtlsRecType;
586     l_oks_mschg_operati3           OksMschgOperationsDtlsRecType;
587   BEGIN
588     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
589                                               G_PKG_NAME,
590                                               p_init_msg_list,
591                                               l_api_version,
592                                               p_api_version,
593                                               '',
594                                               x_return_status);
595     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
596       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
597     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
598       RAISE OKC_API.G_EXCEPTION_ERROR;
599     END IF;
600     --- Validate all non-missing attributes (Item Level Validation)
601     l_return_status := Validate_Attributes(l_OksMschgOperationsDtlsVRec);
602     --- If any errors happen abort API
603     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
604       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
605     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
606       RAISE OKC_API.G_EXCEPTION_ERROR;
607     END IF;
608     l_return_status := Validate_Record(l_OksMschgOperationsDtlsVRec);
609     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
610       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
611     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
612       RAISE OKC_API.G_EXCEPTION_ERROR;
613     END IF;
614     x_return_status := l_return_status;
615   EXCEPTION
616     WHEN OKC_API.G_EXCEPTION_ERROR THEN
617       x_return_status := OKC_API.HANDLE_EXCEPTIONS
618       (
619         l_api_name,
620         G_PKG_NAME,
621         'OKC_API.G_RET_STS_ERROR',
622         x_msg_count,
623         x_msg_data,
624         '_PVT'
625       );
626     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
627       x_return_status := OKC_API.HANDLE_EXCEPTIONS
628       (
629         l_api_name,
630         G_PKG_NAME,
631         'OKC_API.G_RET_STS_UNEXP_ERROR',
632         x_msg_count,
633         x_msg_data,
634         '_PVT'
635       );
636     WHEN OTHERS THEN
637       x_return_status := OKC_API.HANDLE_EXCEPTIONS
638       (
639         l_api_name,
640         G_PKG_NAME,
641         'OTHERS',
642         x_msg_count,
643         x_msg_data,
644         '_PVT'
645       );
646   END validate_row;
647   -------------------------------------------------------------
648   -- PL/SQL TBL validate_row for:OKS_MSCHG_OPERATIONS_DTLS_V --
649   -------------------------------------------------------------
650   PROCEDURE validate_row(
651     p_api_version                  IN NUMBER,
652     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
653     x_return_status                OUT NOCOPY VARCHAR2,
654     x_msg_count                    OUT NOCOPY NUMBER,
655     x_msg_data                     OUT NOCOPY VARCHAR2,
656     POksMschgOperationsDtlsVTbl    IN OksMschgOperationsDtlsVTblType,
657     px_error_tbl                   IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
658 
659     l_api_version                  CONSTANT NUMBER := 1;
660     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
661     i                              NUMBER := 0;
662   BEGIN
663     OKC_API.init_msg_list(p_init_msg_list);
664     -- Make sure PL/SQL table has records in it before passing
665     IF (POksMschgOperationsDtlsVTbl.COUNT > 0) THEN
666       i := POksMschgOperationsDtlsVTbl.FIRST;
667       LOOP
668         DECLARE
669           l_error_rec         OKC_API.ERROR_REC_TYPE;
670         BEGIN
671           l_error_rec.api_name := l_api_name;
672           l_error_rec.api_package := G_PKG_NAME;
673           l_error_rec.idx := i;
674           validate_row (
675             p_api_version                  => p_api_version,
676             p_init_msg_list                => OKC_API.G_FALSE,
677             x_return_status                => l_error_rec.error_type,
678             x_msg_count                    => l_error_rec.msg_count,
679             x_msg_data                     => l_error_rec.msg_data,
680             p_OksMschgOperationsDtlsVRec   => POksMschgOperationsDtlsVTbl(i));
681           IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
682             l_error_rec.sqlcode := SQLCODE;
683             load_error_tbl(l_error_rec, px_error_tbl);
684           ELSE
685             x_msg_count := l_error_rec.msg_count;
686             x_msg_data := l_error_rec.msg_data;
687           END IF;
688         EXCEPTION
689           WHEN OKC_API.G_EXCEPTION_ERROR THEN
690             l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
691             l_error_rec.sqlcode := SQLCODE;
692             load_error_tbl(l_error_rec, px_error_tbl);
693           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
694             l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
695             l_error_rec.sqlcode := SQLCODE;
696             load_error_tbl(l_error_rec, px_error_tbl);
697           WHEN OTHERS THEN
698             l_error_rec.error_type := 'OTHERS';
699             l_error_rec.sqlcode := SQLCODE;
700             load_error_tbl(l_error_rec, px_error_tbl);
701         END;
702         EXIT WHEN (i = POksMschgOperationsDtlsVTbl.LAST);
703         i := POksMschgOperationsDtlsVTbl.NEXT(i);
704       END LOOP;
705     END IF;
706     -- Loop through the error_tbl to find the error with the highest severity
707     -- and return it.
708     x_return_status := find_highest_exception(px_error_tbl);
709     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
710   EXCEPTION
711     WHEN OKC_API.G_EXCEPTION_ERROR THEN
712       x_return_status := OKC_API.HANDLE_EXCEPTIONS
713       (
714         l_api_name,
715         G_PKG_NAME,
716         'OKC_API.G_RET_STS_ERROR',
717         x_msg_count,
718         x_msg_data,
719         '_PVT'
720       );
721     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
722       x_return_status := OKC_API.HANDLE_EXCEPTIONS
723       (
724         l_api_name,
725         G_PKG_NAME,
726         'OKC_API.G_RET_STS_UNEXP_ERROR',
727         x_msg_count,
728         x_msg_data,
729         '_PVT'
730       );
731     WHEN OTHERS THEN
732       x_return_status := OKC_API.HANDLE_EXCEPTIONS
733       (
734         l_api_name,
735         G_PKG_NAME,
736         'OTHERS',
737         x_msg_count,
738         x_msg_data,
739         '_PVT'
740       );
741   END validate_row;
742 
743   -------------------------------------------------------------
744   -- PL/SQL TBL validate_row for:OKS_MSCHG_OPERATIONS_DTLS_V --
745   -------------------------------------------------------------
746   PROCEDURE validate_row(
747     p_api_version                  IN NUMBER,
748     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
749     x_return_status                OUT NOCOPY VARCHAR2,
750     x_msg_count                    OUT NOCOPY NUMBER,
751     x_msg_data                     OUT NOCOPY VARCHAR2,
752     POksMschgOperationsDtlsVTbl    IN OksMschgOperationsDtlsVTblType) IS
753 
754     l_api_version                  CONSTANT NUMBER := 1;
755     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
756     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
757     l_error_tbl                    OKC_API.ERROR_TBL_TYPE;
758   BEGIN
759     OKC_API.init_msg_list(p_init_msg_list);
760     -- Make sure PL/SQL table has records in it before passing
761     IF (POksMschgOperationsDtlsVTbl.COUNT > 0) THEN
762       validate_row (
763         p_api_version                  => p_api_version,
764         p_init_msg_list                => OKC_API.G_FALSE,
765         x_return_status                => x_return_status,
766         x_msg_count                    => x_msg_count,
767         x_msg_data                     => x_msg_data,
768         POksMschgOperationsDtlsVTbl    => POksMschgOperationsDtlsVTbl,
769         px_error_tbl                   => l_error_tbl);
770     END IF;
771     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
772   EXCEPTION
773     WHEN OKC_API.G_EXCEPTION_ERROR THEN
774       x_return_status := OKC_API.HANDLE_EXCEPTIONS
775       (
776         l_api_name,
777         G_PKG_NAME,
778         'OKC_API.G_RET_STS_ERROR',
779         x_msg_count,
780         x_msg_data,
781         '_PVT'
782       );
783     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
784       x_return_status := OKC_API.HANDLE_EXCEPTIONS
785       (
786         l_api_name,
787         G_PKG_NAME,
788         'OKC_API.G_RET_STS_UNEXP_ERROR',
789         x_msg_count,
790         x_msg_data,
791         '_PVT'
792       );
793     WHEN OTHERS THEN
794       x_return_status := OKC_API.HANDLE_EXCEPTIONS
795       (
796         l_api_name,
797         G_PKG_NAME,
798         'OTHERS',
799         x_msg_count,
800         x_msg_data,
801         '_PVT'
802       );
803   END validate_row;
804 
805   ---------------------------------------------------------------------------
806   -- PROCEDURE insert_row
807   ---------------------------------------------------------------------------
808   ----------------------------------------------
809   -- insert_row for:OKS_MSCHG_OPERATIONS_DTLS --
810   ----------------------------------------------
811   PROCEDURE insert_row(
812     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
813     x_return_status                OUT NOCOPY VARCHAR2,
814     x_msg_count                    OUT NOCOPY NUMBER,
815     x_msg_data                     OUT NOCOPY VARCHAR2,
816     p_oks_mschg_operati2           IN OksMschgOperationsDtlsRecType,
817     XOksMschgOperationsDtlsRec     OUT NOCOPY OksMschgOperationsDtlsRecType) IS
818 
819     l_api_version                  CONSTANT NUMBER := 1;
820     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
821     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
822     l_oks_mschg_operati3           OksMschgOperationsDtlsRecType := p_oks_mschg_operati2;
823     LDefOksMschgOperationsDtlsRec  OksMschgOperationsDtlsRecType;
824     --------------------------------------------------
825     -- Set_Attributes for:OKS_MSCHG_OPERATIONS_DTLS --
826     --------------------------------------------------
827     FUNCTION Set_Attributes (
828       p_oks_mschg_operati2 IN OksMschgOperationsDtlsRecType,
829       XOksMschgOperationsDtlsRec OUT NOCOPY OksMschgOperationsDtlsRecType
830     ) RETURN VARCHAR2 IS
831       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
832     BEGIN
833       XOksMschgOperationsDtlsRec := p_oks_mschg_operati2;
834       RETURN(l_return_status);
835     END Set_Attributes;
836   BEGIN
837     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
838                                               p_init_msg_list,
839                                               '',
840                                               x_return_status);
841     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
842       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
843     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
844       RAISE OKC_API.G_EXCEPTION_ERROR;
845     END IF;
846     --- Setting item atributes
847     l_return_status := Set_Attributes(
848       p_oks_mschg_operati2,              -- IN
849       l_oks_mschg_operati3);             -- OUT
850     --- If any errors happen abort API
851     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
852       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
853     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
854       RAISE OKC_API.G_EXCEPTION_ERROR;
855     END IF;
856     INSERT INTO OKS_MSCHG_OPERATIONS_DTLS(
857       id,
858       mrd_id,
859       oie_id,
860       ole_id,
861       mschg_type,
862       attribute_level,
863       qa_check_yn,
864       object_version_number,
865       created_by,
866       creation_date,
867       last_updated_by,
868       last_update_date,
869       last_update_login,
870       attribute1,
871       attribute2,
872       attribute3,
873       attribute4,
874       attribute5,
875       attribute6,
876       attribute7,
877       attribute8,
878       attribute9,
879       attribute10,
880       attribute11,
881       attribute12,
882       attribute13,
883       attribute14,
884       attribute15)
885     VALUES (
886       l_oks_mschg_operati3.id,
887       l_oks_mschg_operati3.mrd_id,
888       l_oks_mschg_operati3.oie_id,
889       l_oks_mschg_operati3.ole_id,
890       l_oks_mschg_operati3.mschg_type,
891       l_oks_mschg_operati3.attribute_level,
892       l_oks_mschg_operati3.qa_check_yn,
893       l_oks_mschg_operati3.object_version_number,
894       l_oks_mschg_operati3.created_by,
895       l_oks_mschg_operati3.creation_date,
896       l_oks_mschg_operati3.last_updated_by,
897       l_oks_mschg_operati3.last_update_date,
898       l_oks_mschg_operati3.last_update_login,
899       l_oks_mschg_operati3.attribute1,
900       l_oks_mschg_operati3.attribute2,
901       l_oks_mschg_operati3.attribute3,
902       l_oks_mschg_operati3.attribute4,
903       l_oks_mschg_operati3.attribute5,
904       l_oks_mschg_operati3.attribute6,
905       l_oks_mschg_operati3.attribute7,
906       l_oks_mschg_operati3.attribute8,
907       l_oks_mschg_operati3.attribute9,
908       l_oks_mschg_operati3.attribute10,
909       l_oks_mschg_operati3.attribute11,
910       l_oks_mschg_operati3.attribute12,
911       l_oks_mschg_operati3.attribute13,
912       l_oks_mschg_operati3.attribute14,
913       l_oks_mschg_operati3.attribute15);
914     -- Set OUT values
915     XOksMschgOperationsDtlsRec := l_oks_mschg_operati3;
916     x_return_status := l_return_status;
917     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
918   EXCEPTION
919     WHEN OKC_API.G_EXCEPTION_ERROR THEN
920 
921 
922 
923       x_return_status := OKC_API.HANDLE_EXCEPTIONS
924       (
925         l_api_name,
926         G_PKG_NAME,
927         'OKC_API.G_RET_STS_ERROR',
928         x_msg_count,
929         x_msg_data,
930         '_PVT'
931       );
932     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
933 
934 
935 
936       x_return_status := OKC_API.HANDLE_EXCEPTIONS
937       (
938         l_api_name,
939         G_PKG_NAME,
940         'OKC_API.G_RET_STS_UNEXP_ERROR',
941         x_msg_count,
942         x_msg_data,
943         '_PVT'
944       );
945     WHEN OTHERS THEN
946 
947 
948       x_return_status := OKC_API.HANDLE_EXCEPTIONS
949       (
950         l_api_name,
951         G_PKG_NAME,
952         'OTHERS',
953         x_msg_count,
954         x_msg_data,
955         '_PVT'
956       );
957   END insert_row;
958   -------------------------------------------------
959   -- insert_row for :OKS_MSCHG_OPERATIONS_DTLS_V --
960   -------------------------------------------------
961   PROCEDURE insert_row(
962     p_api_version                  IN NUMBER,
963     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
964     x_return_status                OUT NOCOPY VARCHAR2,
965     x_msg_count                    OUT NOCOPY NUMBER,
966     x_msg_data                     OUT NOCOPY VARCHAR2,
967     p_OksMschgOperationsDtlsVRec   IN OksMschgOperationsDtlsVRecType,
968     XOksMschgOperationsDtlsVRec    OUT NOCOPY OksMschgOperationsDtlsVRecType) IS
969 
970     l_api_version                  CONSTANT NUMBER := 1;
971     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
972     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
973     l_OksMschgOperationsDtlsVRec   OksMschgOperationsDtlsVRecType := p_OksMschgOperationsDtlsVRec;
974     LDefOksMschgOperationsDtlsVRec OksMschgOperationsDtlsVRecType;
975     l_oks_mschg_operati3           OksMschgOperationsDtlsRecType;
976     LxOksMschgOperationsDtlsRec    OksMschgOperationsDtlsRecType;
977     -------------------------------
978     -- FUNCTION fill_who_columns --
979     -------------------------------
980     FUNCTION fill_who_columns (
981       p_OksMschgOperationsDtlsVRec IN OksMschgOperationsDtlsVRecType
982     ) RETURN OksMschgOperationsDtlsVRecType IS
983       l_OksMschgOperationsDtlsVRec OksMschgOperationsDtlsVRecType := p_OksMschgOperationsDtlsVRec;
984     BEGIN
985       l_OksMschgOperationsDtlsVRec.CREATION_DATE := SYSDATE;
986       l_OksMschgOperationsDtlsVRec.CREATED_BY := FND_GLOBAL.USER_ID;
987       l_OksMschgOperationsDtlsVRec.LAST_UPDATE_DATE := l_OksMschgOperationsDtlsVRec.CREATION_DATE;
988       l_OksMschgOperationsDtlsVRec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
989       l_OksMschgOperationsDtlsVRec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
990       RETURN(l_OksMschgOperationsDtlsVRec);
991     END fill_who_columns;
992     ----------------------------------------------------
993     -- Set_Attributes for:OKS_MSCHG_OPERATIONS_DTLS_V --
994     ----------------------------------------------------
995     FUNCTION Set_Attributes (
996       p_OksMschgOperationsDtlsVRec IN OksMschgOperationsDtlsVRecType,
997       XOksMschgOperationsDtlsVRec OUT NOCOPY OksMschgOperationsDtlsVRecType
998     ) RETURN VARCHAR2 IS
999       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1000     BEGIN
1001       XOksMschgOperationsDtlsVRec := p_OksMschgOperationsDtlsVRec;
1002       XOksMschgOperationsDtlsVRec.OBJECT_VERSION_NUMBER := 1;
1003       RETURN(l_return_status);
1004     END Set_Attributes;
1005   BEGIN
1006     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1007                                               G_PKG_NAME,
1008                                               p_init_msg_list,
1009                                               l_api_version,
1010                                               p_api_version,
1011                                               '',
1012                                               x_return_status);
1013     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1014       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1015     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1016       RAISE OKC_API.G_EXCEPTION_ERROR;
1017     END IF;
1018     l_OksMschgOperationsDtlsVRec := null_out_defaults(p_OksMschgOperationsDtlsVRec);
1019     -- Set primary key value
1020     l_OksMschgOperationsDtlsVRec.ID := get_seq_id;
1021     -- Setting item attributes
1022     l_return_Status := Set_Attributes(
1023       l_OksMschgOperationsDtlsVRec,      -- IN
1024       LDefOksMschgOperationsDtlsVRec);   -- OUT
1025     --- If any errors happen abort API
1026     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1027       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1028     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1029       RAISE OKC_API.G_EXCEPTION_ERROR;
1030     END IF;
1031     LDefOksMschgOperationsDtlsVRec := fill_who_columns(LDefOksMschgOperationsDtlsVRec);
1032     --- Validate all non-missing attributes (Item Level Validation)
1033     l_return_status := Validate_Attributes(LDefOksMschgOperationsDtlsVRec);
1034     --- If any errors happen abort API
1035     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1036       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1037     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1038       RAISE OKC_API.G_EXCEPTION_ERROR;
1039     END IF;
1040     l_return_status := Validate_Record(LDefOksMschgOperationsDtlsVRec);
1041     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1042       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1043     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1044       RAISE OKC_API.G_EXCEPTION_ERROR;
1045     END IF;
1046     -----------------------------------------
1047     -- Move VIEW record to "Child" records --
1048     -----------------------------------------
1049     migrate(LDefOksMschgOperationsDtlsVRec, l_oks_mschg_operati3);
1050     -----------------------------------------------
1051     -- Call the INSERT_ROW for each child record --
1052     -----------------------------------------------
1053     insert_row(
1054       p_init_msg_list,
1055       l_return_status,
1056       x_msg_count,
1057       x_msg_data,
1058       l_oks_mschg_operati3,
1059       LxOksMschgOperationsDtlsRec
1060     );
1061     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1062       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1063     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1064       RAISE OKC_API.G_EXCEPTION_ERROR;
1065     END IF;
1066     migrate(LxOksMschgOperationsDtlsRec, LDefOksMschgOperationsDtlsVRec);
1067     -- Set OUT values
1068     XOksMschgOperationsDtlsVRec := LDefOksMschgOperationsDtlsVRec;
1069     x_return_status := l_return_status;
1070     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1071   EXCEPTION
1072     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1073       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1074       (
1075         l_api_name,
1076         G_PKG_NAME,
1077         'OKC_API.G_RET_STS_ERROR',
1078         x_msg_count,
1079         x_msg_data,
1080         '_PVT'
1081       );
1082     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1083       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1084       (
1085         l_api_name,
1086         G_PKG_NAME,
1087         'OKC_API.G_RET_STS_UNEXP_ERROR',
1088         x_msg_count,
1089         x_msg_data,
1090         '_PVT'
1091       );
1092     WHEN OTHERS THEN
1093       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1094       (
1095         l_api_name,
1096         G_PKG_NAME,
1097         'OTHERS',
1098         x_msg_count,
1099         x_msg_data,
1100         '_PVT'
1101       );
1102   END insert_row;
1103   ----------------------------------------------------------
1104   -- PL/SQL TBL insert_row for:OKSMSCHGOPERATIONSDTLSVTBL --
1105   ----------------------------------------------------------
1106   PROCEDURE insert_row(
1107     p_api_version                  IN NUMBER,
1108     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1109     x_return_status                OUT NOCOPY VARCHAR2,
1110     x_msg_count                    OUT NOCOPY NUMBER,
1111     x_msg_data                     OUT NOCOPY VARCHAR2,
1112     POksMschgOperationsDtlsVTbl    IN OksMschgOperationsDtlsVTblType,
1113     XOksMschgOperationsDtlsVTbl    OUT NOCOPY OksMschgOperationsDtlsVTblType,
1114     px_error_tbl                   IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
1115 
1116     l_api_version                  CONSTANT NUMBER := 1;
1117     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_insert_row';
1118     i                              NUMBER := 0;
1119   BEGIN
1120     OKC_API.init_msg_list(p_init_msg_list);
1121     -- Make sure PL/SQL table has records in it before passing
1122     IF (POksMschgOperationsDtlsVTbl.COUNT > 0) THEN
1123       i := POksMschgOperationsDtlsVTbl.FIRST;
1124       LOOP
1125         DECLARE
1126           l_error_rec         OKC_API.ERROR_REC_TYPE;
1127         BEGIN
1128           l_error_rec.api_name := l_api_name;
1129           l_error_rec.api_package := G_PKG_NAME;
1130           l_error_rec.idx := i;
1131           insert_row (
1132             p_api_version                  => p_api_version,
1133             p_init_msg_list                => OKC_API.G_FALSE,
1134             x_return_status                => l_error_rec.error_type,
1135             x_msg_count                    => l_error_rec.msg_count,
1136             x_msg_data                     => l_error_rec.msg_data,
1137             p_OksMschgOperationsDtlsVRec   => POksMschgOperationsDtlsVTbl(i),
1138             XOksMschgOperationsDtlsVRec    => XOksMschgOperationsDtlsVTbl(i));
1139           IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
1140             l_error_rec.sqlcode := SQLCODE;
1141             load_error_tbl(l_error_rec, px_error_tbl);
1142           ELSE
1143             x_msg_count := l_error_rec.msg_count;
1144             x_msg_data := l_error_rec.msg_data;
1145           END IF;
1146         EXCEPTION
1147           WHEN OKC_API.G_EXCEPTION_ERROR THEN
1148             l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
1149             l_error_rec.sqlcode := SQLCODE;
1150             load_error_tbl(l_error_rec, px_error_tbl);
1151           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1152             l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
1153             l_error_rec.sqlcode := SQLCODE;
1154             load_error_tbl(l_error_rec, px_error_tbl);
1155           WHEN OTHERS THEN
1156             l_error_rec.error_type := 'OTHERS';
1157             l_error_rec.sqlcode := SQLCODE;
1158             load_error_tbl(l_error_rec, px_error_tbl);
1159         END;
1160         EXIT WHEN (i = POksMschgOperationsDtlsVTbl.LAST);
1161         i := POksMschgOperationsDtlsVTbl.NEXT(i);
1162       END LOOP;
1163     END IF;
1164     -- Loop through the error_tbl to find the error with the highest severity
1165     -- and return it.
1166     x_return_status := find_highest_exception(px_error_tbl);
1167     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1168   EXCEPTION
1169     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1170       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1171       (
1172         l_api_name,
1173         G_PKG_NAME,
1174         'OKC_API.G_RET_STS_ERROR',
1175         x_msg_count,
1176         x_msg_data,
1177         '_PVT'
1178       );
1179     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1180       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1181       (
1182         l_api_name,
1183         G_PKG_NAME,
1184         'OKC_API.G_RET_STS_UNEXP_ERROR',
1185         x_msg_count,
1186         x_msg_data,
1187         '_PVT'
1188       );
1189     WHEN OTHERS THEN
1190       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1191       (
1192         l_api_name,
1193         G_PKG_NAME,
1194         'OTHERS',
1195         x_msg_count,
1196         x_msg_data,
1197         '_PVT'
1198       );
1199   END insert_row;
1200 
1201   ----------------------------------------------------------
1202   -- PL/SQL TBL insert_row for:OKSMSCHGOPERATIONSDTLSVTBL --
1203   ----------------------------------------------------------
1204   PROCEDURE insert_row(
1205     p_api_version                  IN NUMBER,
1206     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1207     x_return_status                OUT NOCOPY VARCHAR2,
1208     x_msg_count                    OUT NOCOPY NUMBER,
1209     x_msg_data                     OUT NOCOPY VARCHAR2,
1210     POksMschgOperationsDtlsVTbl    IN OksMschgOperationsDtlsVTblType,
1211     XOksMschgOperationsDtlsVTbl    OUT NOCOPY OksMschgOperationsDtlsVTblType) IS
1212 
1213     l_api_version                  CONSTANT NUMBER := 1;
1214     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
1215     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1216     l_error_tbl                    OKC_API.ERROR_TBL_TYPE;
1217   BEGIN
1218     OKC_API.init_msg_list(p_init_msg_list);
1219     -- Make sure PL/SQL table has records in it before passing
1220     IF (POksMschgOperationsDtlsVTbl.COUNT > 0) THEN
1221       insert_row (
1222         p_api_version                  => p_api_version,
1223         p_init_msg_list                => OKC_API.G_FALSE,
1224         x_return_status                => x_return_status,
1225         x_msg_count                    => x_msg_count,
1226         x_msg_data                     => x_msg_data,
1227         POksMschgOperationsDtlsVTbl    => POksMschgOperationsDtlsVTbl,
1228         XOksMschgOperationsDtlsVTbl    => XOksMschgOperationsDtlsVTbl,
1229         px_error_tbl                   => l_error_tbl);
1230     END IF;
1231     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1232   EXCEPTION
1233     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1234       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1235       (
1236         l_api_name,
1237         G_PKG_NAME,
1238         'OKC_API.G_RET_STS_ERROR',
1239         x_msg_count,
1240         x_msg_data,
1241         '_PVT'
1242       );
1243     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1244       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1245       (
1246         l_api_name,
1247         G_PKG_NAME,
1248         'OKC_API.G_RET_STS_UNEXP_ERROR',
1249         x_msg_count,
1250         x_msg_data,
1251         '_PVT'
1252       );
1253     WHEN OTHERS THEN
1254       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1255       (
1256         l_api_name,
1257         G_PKG_NAME,
1258         'OTHERS',
1259         x_msg_count,
1260         x_msg_data,
1261         '_PVT'
1262       );
1263   END insert_row;
1264 
1265   ---------------------------------------------------------------------------
1266   -- PROCEDURE lock_row
1267   ---------------------------------------------------------------------------
1268   --------------------------------------------
1269   -- lock_row for:OKS_MSCHG_OPERATIONS_DTLS --
1270   --------------------------------------------
1271   PROCEDURE lock_row(
1272     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1273     x_return_status                OUT NOCOPY VARCHAR2,
1274     x_msg_count                    OUT NOCOPY NUMBER,
1275     x_msg_data                     OUT NOCOPY VARCHAR2,
1276     p_oks_mschg_operati2           IN OksMschgOperationsDtlsRecType) IS
1277 
1278     E_Resource_Busy                EXCEPTION;
1279     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
1280     CURSOR lock_csr (p_oks_mschg_operati2 IN OksMschgOperationsDtlsRecType) IS
1281     SELECT OBJECT_VERSION_NUMBER
1282       FROM OKS_MSCHG_OPERATIONS_DTLS
1283      WHERE ID = p_oks_mschg_operati2.id
1284        AND OBJECT_VERSION_NUMBER = p_oks_mschg_operati2.object_version_number
1285     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
1286 
1287     CURSOR lchk_csr (p_oks_mschg_operati2 IN OksMschgOperationsDtlsRecType) IS
1288     SELECT OBJECT_VERSION_NUMBER
1289       FROM OKS_MSCHG_OPERATIONS_DTLS
1290      WHERE ID = p_oks_mschg_operati2.id;
1291     l_api_version                  CONSTANT NUMBER := 1;
1292     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
1293     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1294     l_object_version_number        OKS_MSCHG_OPERATIONS_DTLS.OBJECT_VERSION_NUMBER%TYPE;
1295     lc_object_version_number       OKS_MSCHG_OPERATIONS_DTLS.OBJECT_VERSION_NUMBER%TYPE;
1296     l_row_notfound                 BOOLEAN := FALSE;
1297     lc_row_notfound                BOOLEAN := FALSE;
1298   BEGIN
1299     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1300                                               p_init_msg_list,
1301                                               '',
1302                                               x_return_status);
1303     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1304       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1305     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1306       RAISE OKC_API.G_EXCEPTION_ERROR;
1307     END IF;
1308     BEGIN
1309       OPEN lock_csr(p_oks_mschg_operati2);
1310       FETCH lock_csr INTO l_object_version_number;
1311       l_row_notfound := lock_csr%NOTFOUND;
1312       CLOSE lock_csr;
1313     EXCEPTION
1314       WHEN E_Resource_Busy THEN
1315         IF (lock_csr%ISOPEN) THEN
1316           CLOSE lock_csr;
1317         END IF;
1318         OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
1319         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
1320     END;
1321 
1322     IF ( l_row_notfound ) THEN
1323       OPEN lchk_csr(p_oks_mschg_operati2);
1324       FETCH lchk_csr INTO lc_object_version_number;
1325       lc_row_notfound := lchk_csr%NOTFOUND;
1326       CLOSE lchk_csr;
1327     END IF;
1328     IF (lc_row_notfound) THEN
1329       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
1330       RAISE OKC_API.G_EXCEPTION_ERROR;
1331     ELSIF lc_object_version_number > p_oks_mschg_operati2.object_version_number THEN
1332       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1333       RAISE OKC_API.G_EXCEPTION_ERROR;
1334     ELSIF lc_object_version_number <> p_oks_mschg_operati2.object_version_number THEN
1335       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1336       RAISE OKC_API.G_EXCEPTION_ERROR;
1337     ELSIF lc_object_version_number = -1 THEN
1338       OKC_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
1339       RAISE OKC_API.G_EXCEPTION_ERROR;
1340     END IF;
1341     x_return_status := l_return_status;
1342     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1343   EXCEPTION
1344     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1345       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1346       (
1347         l_api_name,
1348         G_PKG_NAME,
1349         'OKC_API.G_RET_STS_ERROR',
1350         x_msg_count,
1351         x_msg_data,
1352         '_PVT'
1353       );
1354     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1355       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1356       (
1357         l_api_name,
1358         G_PKG_NAME,
1359         'OKC_API.G_RET_STS_UNEXP_ERROR',
1360         x_msg_count,
1361         x_msg_data,
1362         '_PVT'
1363       );
1364     WHEN OTHERS THEN
1365       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1366       (
1367         l_api_name,
1368         G_PKG_NAME,
1369         'OTHERS',
1370         x_msg_count,
1371         x_msg_data,
1372         '_PVT'
1373       );
1374   END lock_row;
1375   -----------------------------------------------
1376   -- lock_row for: OKS_MSCHG_OPERATIONS_DTLS_V --
1377   -----------------------------------------------
1378   PROCEDURE lock_row(
1379     p_api_version                  IN NUMBER,
1380     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1381     x_return_status                OUT NOCOPY VARCHAR2,
1382     x_msg_count                    OUT NOCOPY NUMBER,
1383     x_msg_data                     OUT NOCOPY VARCHAR2,
1384     p_OksMschgOperationsDtlsVRec   IN OksMschgOperationsDtlsVRecType) IS
1385 
1386     l_api_version                  CONSTANT NUMBER := 1;
1387     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
1388     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1389     l_oks_mschg_operati3           OksMschgOperationsDtlsRecType;
1390   BEGIN
1391     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1392                                               G_PKG_NAME,
1393                                               p_init_msg_list,
1394                                               l_api_version,
1395                                               p_api_version,
1396                                               '',
1397                                               x_return_status);
1398     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1399       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1400     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1401       RAISE OKC_API.G_EXCEPTION_ERROR;
1402     END IF;
1403     -----------------------------------------
1404     -- Move VIEW record to "Child" records --
1405     -----------------------------------------
1406     migrate(p_OksMschgOperationsDtlsVRec, l_oks_mschg_operati3);
1407     ---------------------------------------------
1408     -- Call the LOCK_ROW for each child record --
1409     ---------------------------------------------
1410     lock_row(
1411       p_init_msg_list,
1412       l_return_status,
1413       x_msg_count,
1414       x_msg_data,
1415       l_oks_mschg_operati3
1416     );
1417     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1418       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1419     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1420       RAISE OKC_API.G_EXCEPTION_ERROR;
1421     END IF;
1422     x_return_status := l_return_status;
1423     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1424   EXCEPTION
1425     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1426       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1427       (
1428         l_api_name,
1429         G_PKG_NAME,
1430         'OKC_API.G_RET_STS_ERROR',
1431         x_msg_count,
1432         x_msg_data,
1433         '_PVT'
1434       );
1435     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1436       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1437       (
1438         l_api_name,
1439         G_PKG_NAME,
1440         'OKC_API.G_RET_STS_UNEXP_ERROR',
1441         x_msg_count,
1442         x_msg_data,
1443         '_PVT'
1444       );
1445     WHEN OTHERS THEN
1446       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1447       (
1448         l_api_name,
1449         G_PKG_NAME,
1450         'OTHERS',
1451         x_msg_count,
1452         x_msg_data,
1453         '_PVT'
1454       );
1455   END lock_row;
1456   --------------------------------------------------------
1457   -- PL/SQL TBL lock_row for:OKSMSCHGOPERATIONSDTLSVTBL --
1458   --------------------------------------------------------
1459   PROCEDURE lock_row(
1460     p_api_version                  IN NUMBER,
1461     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1462     x_return_status                OUT NOCOPY VARCHAR2,
1463     x_msg_count                    OUT NOCOPY NUMBER,
1464     x_msg_data                     OUT NOCOPY VARCHAR2,
1465     POksMschgOperationsDtlsVTbl    IN OksMschgOperationsDtlsVTblType,
1466     px_error_tbl                   IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
1467 
1468     l_api_version                  CONSTANT NUMBER := 1;
1469     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
1470     i                              NUMBER := 0;
1471   BEGIN
1472     OKC_API.init_msg_list(p_init_msg_list);
1473     -- Make sure PL/SQL table has recrods in it before passing
1474     IF (POksMschgOperationsDtlsVTbl.COUNT > 0) THEN
1475       i := POksMschgOperationsDtlsVTbl.FIRST;
1476       LOOP
1477         DECLARE
1478           l_error_rec         OKC_API.ERROR_REC_TYPE;
1479         BEGIN
1480           l_error_rec.api_name := l_api_name;
1481           l_error_rec.api_package := G_PKG_NAME;
1482           l_error_rec.idx := i;
1483           lock_row(
1484             p_api_version                  => p_api_version,
1485             p_init_msg_list                => OKC_API.G_FALSE,
1486             x_return_status                => l_error_rec.error_type,
1487             x_msg_count                    => l_error_rec.msg_count,
1488             x_msg_data                     => l_error_rec.msg_data,
1489             p_OksMschgOperationsDtlsVRec   => POksMschgOperationsDtlsVTbl(i));
1490           IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
1491             l_error_rec.sqlcode := SQLCODE;
1492             load_error_tbl(l_error_rec, px_error_tbl);
1493           ELSE
1494             x_msg_count := l_error_rec.msg_count;
1495             x_msg_data := l_error_rec.msg_data;
1496           END IF;
1497         EXCEPTION
1498           WHEN OKC_API.G_EXCEPTION_ERROR THEN
1499             l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
1500             l_error_rec.sqlcode := SQLCODE;
1501             load_error_tbl(l_error_rec, px_error_tbl);
1502           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1503             l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
1504             l_error_rec.sqlcode := SQLCODE;
1505             load_error_tbl(l_error_rec, px_error_tbl);
1506           WHEN OTHERS THEN
1507             l_error_rec.error_type := 'OTHERS';
1508             l_error_rec.sqlcode := SQLCODE;
1509             load_error_tbl(l_error_rec, px_error_tbl);
1510         END;
1511         EXIT WHEN (i = POksMschgOperationsDtlsVTbl.LAST);
1512         i := POksMschgOperationsDtlsVTbl.NEXT(i);
1513       END LOOP;
1514     END IF;
1515     -- Loop through the error_tbl to find the error with the highest severity
1516     -- and return it.
1517     x_return_status := find_highest_exception(px_error_tbl);
1518     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1519   EXCEPTION
1520     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1521       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1522       (
1523         l_api_name,
1524         G_PKG_NAME,
1525         'OKC_API.G_RET_STS_ERROR',
1526         x_msg_count,
1527         x_msg_data,
1528         '_PVT'
1529       );
1530     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1531       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1532       (
1533         l_api_name,
1534         G_PKG_NAME,
1535         'OKC_API.G_RET_STS_UNEXP_ERROR',
1536         x_msg_count,
1537         x_msg_data,
1538         '_PVT'
1539       );
1540     WHEN OTHERS THEN
1541       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1542       (
1543         l_api_name,
1544         G_PKG_NAME,
1545         'OTHERS',
1546         x_msg_count,
1547         x_msg_data,
1548         '_PVT'
1549       );
1550   END lock_row;
1551   --------------------------------------------------------
1552   -- PL/SQL TBL lock_row for:OKSMSCHGOPERATIONSDTLSVTBL --
1553   --------------------------------------------------------
1554   PROCEDURE lock_row(
1555     p_api_version                  IN NUMBER,
1556     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1557     x_return_status                OUT NOCOPY VARCHAR2,
1558     x_msg_count                    OUT NOCOPY NUMBER,
1559     x_msg_data                     OUT NOCOPY VARCHAR2,
1560     POksMschgOperationsDtlsVTbl    IN OksMschgOperationsDtlsVTblType) IS
1561 
1562     l_api_version                  CONSTANT NUMBER := 1;
1563     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
1564     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1565     l_error_tbl                    OKC_API.ERROR_TBL_TYPE;
1566   BEGIN
1567     OKC_API.init_msg_list(p_init_msg_list);
1568     -- Make sure PL/SQL table has recrods in it before passing
1569     IF (POksMschgOperationsDtlsVTbl.COUNT > 0) THEN
1570       lock_row(
1571         p_api_version                  => p_api_version,
1572         p_init_msg_list                => OKC_API.G_FALSE,
1573         x_return_status                => x_return_status,
1574         x_msg_count                    => x_msg_count,
1575         x_msg_data                     => x_msg_data,
1576         POksMschgOperationsDtlsVTbl    => POksMschgOperationsDtlsVTbl,
1577         px_error_tbl                   => l_error_tbl);
1578     END IF;
1579     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1580   EXCEPTION
1581     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1582       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1583       (
1584         l_api_name,
1585         G_PKG_NAME,
1586         'OKC_API.G_RET_STS_ERROR',
1587         x_msg_count,
1588         x_msg_data,
1589         '_PVT'
1590       );
1591     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1592       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1593       (
1594         l_api_name,
1595         G_PKG_NAME,
1596         'OKC_API.G_RET_STS_UNEXP_ERROR',
1597         x_msg_count,
1598         x_msg_data,
1599         '_PVT'
1600       );
1601     WHEN OTHERS THEN
1602       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1603       (
1604         l_api_name,
1605         G_PKG_NAME,
1606         'OTHERS',
1607         x_msg_count,
1608         x_msg_data,
1609         '_PVT'
1610       );
1611   END lock_row;
1612   ---------------------------------------------------------------------------
1613   -- PROCEDURE update_row
1614   ---------------------------------------------------------------------------
1615   ----------------------------------------------
1616   -- update_row for:OKS_MSCHG_OPERATIONS_DTLS --
1617   ----------------------------------------------
1618   PROCEDURE update_row(
1619     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1620     x_return_status                OUT NOCOPY VARCHAR2,
1621     x_msg_count                    OUT NOCOPY NUMBER,
1622     x_msg_data                     OUT NOCOPY VARCHAR2,
1623     p_oks_mschg_operati2           IN OksMschgOperationsDtlsRecType,
1624     XOksMschgOperationsDtlsRec     OUT NOCOPY OksMschgOperationsDtlsRecType) IS
1625 
1626     l_api_version                  CONSTANT NUMBER := 1;
1627     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
1628     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1629     l_oks_mschg_operati3           OksMschgOperationsDtlsRecType := p_oks_mschg_operati2;
1630     LDefOksMschgOperationsDtlsRec  OksMschgOperationsDtlsRecType;
1631     l_row_notfound                 BOOLEAN := TRUE;
1632     ----------------------------------
1633     -- FUNCTION populate_new_record --
1634     ----------------------------------
1635     FUNCTION populate_new_record (
1636       p_oks_mschg_operati2 IN OksMschgOperationsDtlsRecType,
1637       XOksMschgOperationsDtlsRec OUT NOCOPY OksMschgOperationsDtlsRecType
1638     ) RETURN VARCHAR2 IS
1639       l_oks_mschg_operati3           OksMschgOperationsDtlsRecType;
1640       l_row_notfound                 BOOLEAN := TRUE;
1641       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1642     BEGIN
1643       XOksMschgOperationsDtlsRec := p_oks_mschg_operati2;
1644       -- Get current database values
1645       l_oks_mschg_operati3 := get_rec(p_oks_mschg_operati2, l_return_status);
1646       IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
1647         IF (XOksMschgOperationsDtlsRec.id IS NULL)
1648         THEN
1649           XOksMschgOperationsDtlsRec.id := l_oks_mschg_operati3.id;
1650         END IF;
1651         IF (XOksMschgOperationsDtlsRec.mrd_id IS NULL)
1652         THEN
1653           XOksMschgOperationsDtlsRec.mrd_id := l_oks_mschg_operati3.mrd_id;
1654         END IF;
1655         IF (XOksMschgOperationsDtlsRec.oie_id IS NULL)
1656         THEN
1657           XOksMschgOperationsDtlsRec.oie_id := l_oks_mschg_operati3.oie_id;
1658         END IF;
1659         IF (XOksMschgOperationsDtlsRec.ole_id IS NULL)
1660         THEN
1661           XOksMschgOperationsDtlsRec.ole_id := l_oks_mschg_operati3.ole_id;
1662         END IF;
1663         IF (XOksMschgOperationsDtlsRec.mschg_type IS NULL)
1664         THEN
1665           XOksMschgOperationsDtlsRec.mschg_type := l_oks_mschg_operati3.mschg_type;
1666         END IF;
1667         IF (XOksMschgOperationsDtlsRec.attribute_level IS NULL)
1668         THEN
1669           XOksMschgOperationsDtlsRec.attribute_level := l_oks_mschg_operati3.attribute_level;
1670         END IF;
1671         IF (XOksMschgOperationsDtlsRec.qa_check_yn IS NULL)
1672         THEN
1673           XOksMschgOperationsDtlsRec.qa_check_yn := l_oks_mschg_operati3.qa_check_yn;
1674         END IF;
1675         IF (XOksMschgOperationsDtlsRec.object_version_number IS NULL)
1676         THEN
1677           XOksMschgOperationsDtlsRec.object_version_number := l_oks_mschg_operati3.object_version_number;
1678         END IF;
1679         IF (XOksMschgOperationsDtlsRec.created_by IS NULL)
1680         THEN
1681           XOksMschgOperationsDtlsRec.created_by := l_oks_mschg_operati3.created_by;
1682         END IF;
1683         IF (XOksMschgOperationsDtlsRec.creation_date IS NULL)
1684         THEN
1685           XOksMschgOperationsDtlsRec.creation_date := l_oks_mschg_operati3.creation_date;
1686         END IF;
1687         IF (XOksMschgOperationsDtlsRec.last_updated_by IS NULL)
1688         THEN
1689           XOksMschgOperationsDtlsRec.last_updated_by := l_oks_mschg_operati3.last_updated_by;
1690         END IF;
1691         IF (XOksMschgOperationsDtlsRec.last_update_date IS NULL)
1692         THEN
1693           XOksMschgOperationsDtlsRec.last_update_date := l_oks_mschg_operati3.last_update_date;
1694         END IF;
1695         IF (XOksMschgOperationsDtlsRec.last_update_login IS NULL)
1696         THEN
1697           XOksMschgOperationsDtlsRec.last_update_login := l_oks_mschg_operati3.last_update_login;
1698         END IF;
1699         IF (XOksMschgOperationsDtlsRec.attribute1 IS NULL)
1700         THEN
1701           XOksMschgOperationsDtlsRec.attribute1 := l_oks_mschg_operati3.attribute1;
1702         END IF;
1703         IF (XOksMschgOperationsDtlsRec.attribute2 IS NULL)
1704         THEN
1705           XOksMschgOperationsDtlsRec.attribute2 := l_oks_mschg_operati3.attribute2;
1706         END IF;
1707         IF (XOksMschgOperationsDtlsRec.attribute3 IS NULL)
1708         THEN
1709           XOksMschgOperationsDtlsRec.attribute3 := l_oks_mschg_operati3.attribute3;
1710         END IF;
1711         IF (XOksMschgOperationsDtlsRec.attribute4 IS NULL)
1712         THEN
1713           XOksMschgOperationsDtlsRec.attribute4 := l_oks_mschg_operati3.attribute4;
1714         END IF;
1715         IF (XOksMschgOperationsDtlsRec.attribute5 IS NULL)
1716         THEN
1717           XOksMschgOperationsDtlsRec.attribute5 := l_oks_mschg_operati3.attribute5;
1718         END IF;
1719         IF (XOksMschgOperationsDtlsRec.attribute6 IS NULL)
1720         THEN
1721           XOksMschgOperationsDtlsRec.attribute6 := l_oks_mschg_operati3.attribute6;
1722         END IF;
1723         IF (XOksMschgOperationsDtlsRec.attribute7 IS NULL)
1724         THEN
1725           XOksMschgOperationsDtlsRec.attribute7 := l_oks_mschg_operati3.attribute7;
1726         END IF;
1727         IF (XOksMschgOperationsDtlsRec.attribute8 IS NULL)
1728         THEN
1729           XOksMschgOperationsDtlsRec.attribute8 := l_oks_mschg_operati3.attribute8;
1730         END IF;
1731         IF (XOksMschgOperationsDtlsRec.attribute9 IS NULL)
1732         THEN
1733           XOksMschgOperationsDtlsRec.attribute9 := l_oks_mschg_operati3.attribute9;
1734         END IF;
1735         IF (XOksMschgOperationsDtlsRec.attribute10 IS NULL)
1736         THEN
1737           XOksMschgOperationsDtlsRec.attribute10 := l_oks_mschg_operati3.attribute10;
1738         END IF;
1739         IF (XOksMschgOperationsDtlsRec.attribute11 IS NULL)
1740         THEN
1741           XOksMschgOperationsDtlsRec.attribute11 := l_oks_mschg_operati3.attribute11;
1742         END IF;
1743         IF (XOksMschgOperationsDtlsRec.attribute12 IS NULL)
1744         THEN
1745           XOksMschgOperationsDtlsRec.attribute12 := l_oks_mschg_operati3.attribute12;
1746         END IF;
1747         IF (XOksMschgOperationsDtlsRec.attribute13 IS NULL)
1748         THEN
1749           XOksMschgOperationsDtlsRec.attribute13 := l_oks_mschg_operati3.attribute13;
1750         END IF;
1751         IF (XOksMschgOperationsDtlsRec.attribute14 IS NULL)
1752         THEN
1753           XOksMschgOperationsDtlsRec.attribute14 := l_oks_mschg_operati3.attribute14;
1754         END IF;
1755         IF (XOksMschgOperationsDtlsRec.attribute15 IS NULL)
1756         THEN
1757           XOksMschgOperationsDtlsRec.attribute15 := l_oks_mschg_operati3.attribute15;
1758         END IF;
1759       END IF;
1760       RETURN(l_return_status);
1761     END populate_new_record;
1762     --------------------------------------------------
1763     -- Set_Attributes for:OKS_MSCHG_OPERATIONS_DTLS --
1764     --------------------------------------------------
1765     FUNCTION Set_Attributes (
1766       p_oks_mschg_operati2 IN OksMschgOperationsDtlsRecType,
1767       XOksMschgOperationsDtlsRec OUT NOCOPY OksMschgOperationsDtlsRecType
1768     ) RETURN VARCHAR2 IS
1769       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1770     BEGIN
1771       XOksMschgOperationsDtlsRec := p_oks_mschg_operati2;
1772       XOksMschgOperationsDtlsRec.OBJECT_VERSION_NUMBER := p_oks_mschg_operati2.OBJECT_VERSION_NUMBER + 1;
1773       RETURN(l_return_status);
1774     END Set_Attributes;
1775   BEGIN
1776     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1777                                               p_init_msg_list,
1778                                               '',
1779                                               x_return_status);
1780     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1781       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1782     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1783       RAISE OKC_API.G_EXCEPTION_ERROR;
1784     END IF;
1785     --- Setting item attributes
1786     l_return_status := Set_Attributes(
1787       p_oks_mschg_operati2,              -- IN
1788       l_oks_mschg_operati3);             -- OUT
1789     --- If any errors happen abort API
1790     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1791       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1792     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1793       RAISE OKC_API.G_EXCEPTION_ERROR;
1794     END IF;
1795     l_return_status := populate_new_record(l_oks_mschg_operati3, LDefOksMschgOperationsDtlsRec);
1796     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1797       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1798     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1799       RAISE OKC_API.G_EXCEPTION_ERROR;
1800     END IF;
1801     UPDATE OKS_MSCHG_OPERATIONS_DTLS
1802     SET MRD_ID = LDefOksMschgOperationsDtlsRec.mrd_id,
1803         OIE_ID = LDefOksMschgOperationsDtlsRec.oie_id,
1804         OLE_ID = LDefOksMschgOperationsDtlsRec.ole_id,
1805         MSCHG_TYPE = LDefOksMschgOperationsDtlsRec.mschg_type,
1806         ATTRIBUTE_LEVEL = LDefOksMschgOperationsDtlsRec.attribute_level,
1807         QA_CHECK_YN = LDefOksMschgOperationsDtlsRec.qa_check_yn,
1808         OBJECT_VERSION_NUMBER = LDefOksMschgOperationsDtlsRec.object_version_number,
1809         CREATED_BY = LDefOksMschgOperationsDtlsRec.created_by,
1810         CREATION_DATE = LDefOksMschgOperationsDtlsRec.creation_date,
1811         LAST_UPDATED_BY = LDefOksMschgOperationsDtlsRec.last_updated_by,
1812         LAST_UPDATE_DATE = LDefOksMschgOperationsDtlsRec.last_update_date,
1813         LAST_UPDATE_LOGIN = LDefOksMschgOperationsDtlsRec.last_update_login,
1814         ATTRIBUTE1 = LDefOksMschgOperationsDtlsRec.attribute1,
1815         ATTRIBUTE2 = LDefOksMschgOperationsDtlsRec.attribute2,
1816         ATTRIBUTE3 = LDefOksMschgOperationsDtlsRec.attribute3,
1817         ATTRIBUTE4 = LDefOksMschgOperationsDtlsRec.attribute4,
1818         ATTRIBUTE5 = LDefOksMschgOperationsDtlsRec.attribute5,
1819         ATTRIBUTE6 = LDefOksMschgOperationsDtlsRec.attribute6,
1820         ATTRIBUTE7 = LDefOksMschgOperationsDtlsRec.attribute7,
1821         ATTRIBUTE8 = LDefOksMschgOperationsDtlsRec.attribute8,
1822         ATTRIBUTE9 = LDefOksMschgOperationsDtlsRec.attribute9,
1823         ATTRIBUTE10 = LDefOksMschgOperationsDtlsRec.attribute10,
1824         ATTRIBUTE11 = LDefOksMschgOperationsDtlsRec.attribute11,
1825         ATTRIBUTE12 = LDefOksMschgOperationsDtlsRec.attribute12,
1826         ATTRIBUTE13 = LDefOksMschgOperationsDtlsRec.attribute13,
1827         ATTRIBUTE14 = LDefOksMschgOperationsDtlsRec.attribute14,
1828         ATTRIBUTE15 = LDefOksMschgOperationsDtlsRec.attribute15
1829     WHERE ID = LDefOksMschgOperationsDtlsRec.id;
1830 
1831     XOksMschgOperationsDtlsRec := l_oks_mschg_operati3;
1832     x_return_status := l_return_status;
1833     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1834   EXCEPTION
1835     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1836       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1837       (
1838         l_api_name,
1839         G_PKG_NAME,
1840         'OKC_API.G_RET_STS_ERROR',
1841         x_msg_count,
1842         x_msg_data,
1843         '_PVT'
1844       );
1845     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1846       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1847       (
1848         l_api_name,
1849         G_PKG_NAME,
1850         'OKC_API.G_RET_STS_UNEXP_ERROR',
1851         x_msg_count,
1852         x_msg_data,
1853         '_PVT'
1854       );
1855     WHEN OTHERS THEN
1856       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1857       (
1858         l_api_name,
1859         G_PKG_NAME,
1860         'OTHERS',
1861         x_msg_count,
1862         x_msg_data,
1863         '_PVT'
1864       );
1865   END update_row;
1866   ------------------------------------------------
1867   -- update_row for:OKS_MSCHG_OPERATIONS_DTLS_V --
1868   ------------------------------------------------
1869   PROCEDURE update_row(
1870     p_api_version                  IN NUMBER,
1871     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1872     x_return_status                OUT NOCOPY VARCHAR2,
1873     x_msg_count                    OUT NOCOPY NUMBER,
1874     x_msg_data                     OUT NOCOPY VARCHAR2,
1875     p_OksMschgOperationsDtlsVRec   IN OksMschgOperationsDtlsVRecType,
1876     XOksMschgOperationsDtlsVRec    OUT NOCOPY OksMschgOperationsDtlsVRecType) IS
1877 
1878     l_api_version                  CONSTANT NUMBER := 1;
1879     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
1880     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1881     l_OksMschgOperationsDtlsVRec   OksMschgOperationsDtlsVRecType := p_OksMschgOperationsDtlsVRec;
1882     LDefOksMschgOperationsDtlsVRec OksMschgOperationsDtlsVRecType;
1883     l_db_OksMschgOperat42          OksMschgOperationsDtlsVRecType;
1884     l_oks_mschg_operati3           OksMschgOperationsDtlsRecType;
1885     LxOksMschgOperationsDtlsRec    OksMschgOperationsDtlsRecType;
1886     -------------------------------
1887     -- FUNCTION fill_who_columns --
1888     -------------------------------
1889     FUNCTION fill_who_columns (
1890       p_OksMschgOperationsDtlsVRec IN OksMschgOperationsDtlsVRecType
1891     ) RETURN OksMschgOperationsDtlsVRecType IS
1892       l_OksMschgOperationsDtlsVRec OksMschgOperationsDtlsVRecType := p_OksMschgOperationsDtlsVRec;
1893     BEGIN
1894       l_OksMschgOperationsDtlsVRec.LAST_UPDATE_DATE := SYSDATE;
1895       l_OksMschgOperationsDtlsVRec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1896       l_OksMschgOperationsDtlsVRec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
1897       RETURN(l_OksMschgOperationsDtlsVRec);
1898     END fill_who_columns;
1899     ----------------------------------
1900     -- FUNCTION populate_new_record --
1901     ----------------------------------
1902     FUNCTION populate_new_record (
1903       p_OksMschgOperationsDtlsVRec IN OksMschgOperationsDtlsVRecType,
1904       XOksMschgOperationsDtlsVRec OUT NOCOPY OksMschgOperationsDtlsVRecType
1905     ) RETURN VARCHAR2 IS
1906       l_row_notfound                 BOOLEAN := TRUE;
1907       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1908     BEGIN
1909       XOksMschgOperationsDtlsVRec := p_OksMschgOperationsDtlsVRec;
1910       -- Get current database values
1911       -- NOTE: Never assign the OBJECT_VERSION_NUMBER.  Force the user to pass it
1912       --       so it may be verified through LOCK_ROW.
1913       l_db_OksMschgOperat42 := get_rec(p_OksMschgOperationsDtlsVRec, l_return_status);
1914       IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
1915         IF (XOksMschgOperationsDtlsVRec.id IS NULL)
1916         THEN
1917           XOksMschgOperationsDtlsVRec.id := l_db_OksMschgOperat42.id;
1918         END IF;
1919         IF (XOksMschgOperationsDtlsVRec.mrd_id IS NULL)
1920         THEN
1921           XOksMschgOperationsDtlsVRec.mrd_id := l_db_OksMschgOperat42.mrd_id;
1922         END IF;
1923         IF (XOksMschgOperationsDtlsVRec.oie_id IS NULL)
1924         THEN
1925           XOksMschgOperationsDtlsVRec.oie_id := l_db_OksMschgOperat42.oie_id;
1926         END IF;
1927         IF (XOksMschgOperationsDtlsVRec.ole_id IS NULL)
1928         THEN
1929           XOksMschgOperationsDtlsVRec.ole_id := l_db_OksMschgOperat42.ole_id;
1930         END IF;
1931         IF (XOksMschgOperationsDtlsVRec.mschg_type IS NULL)
1932         THEN
1933           XOksMschgOperationsDtlsVRec.mschg_type := l_db_OksMschgOperat42.mschg_type;
1934         END IF;
1935         IF (XOksMschgOperationsDtlsVRec.attribute_level IS NULL)
1936         THEN
1937           XOksMschgOperationsDtlsVRec.attribute_level := l_db_OksMschgOperat42.attribute_level;
1938         END IF;
1939         IF (XOksMschgOperationsDtlsVRec.qa_check_yn IS NULL)
1940         THEN
1941           XOksMschgOperationsDtlsVRec.qa_check_yn := l_db_OksMschgOperat42.qa_check_yn;
1942         END IF;
1943         IF (XOksMschgOperationsDtlsVRec.created_by IS NULL)
1944         THEN
1945           XOksMschgOperationsDtlsVRec.created_by := l_db_OksMschgOperat42.created_by;
1946         END IF;
1947         IF (XOksMschgOperationsDtlsVRec.creation_date IS NULL)
1948         THEN
1949           XOksMschgOperationsDtlsVRec.creation_date := l_db_OksMschgOperat42.creation_date;
1950         END IF;
1951         IF (XOksMschgOperationsDtlsVRec.last_updated_by IS NULL)
1952         THEN
1953           XOksMschgOperationsDtlsVRec.last_updated_by := l_db_OksMschgOperat42.last_updated_by;
1954         END IF;
1955         IF (XOksMschgOperationsDtlsVRec.last_update_date IS NULL)
1956         THEN
1957           XOksMschgOperationsDtlsVRec.last_update_date := l_db_OksMschgOperat42.last_update_date;
1958         END IF;
1959         IF (XOksMschgOperationsDtlsVRec.last_update_login IS NULL)
1960         THEN
1961           XOksMschgOperationsDtlsVRec.last_update_login := l_db_OksMschgOperat42.last_update_login;
1962         END IF;
1963         IF (XOksMschgOperationsDtlsVRec.security_group_id IS NULL)
1964         THEN
1965           XOksMschgOperationsDtlsVRec.security_group_id := l_db_OksMschgOperat42.security_group_id;
1966         END IF;
1967         IF (XOksMschgOperationsDtlsVRec.attribute1 IS NULL)
1968         THEN
1969           XOksMschgOperationsDtlsVRec.attribute1 := l_db_OksMschgOperat42.attribute1;
1970         END IF;
1971         IF (XOksMschgOperationsDtlsVRec.attribute2 IS NULL)
1972         THEN
1973           XOksMschgOperationsDtlsVRec.attribute2 := l_db_OksMschgOperat42.attribute2;
1974         END IF;
1975         IF (XOksMschgOperationsDtlsVRec.attribute3 IS NULL)
1976         THEN
1977           XOksMschgOperationsDtlsVRec.attribute3 := l_db_OksMschgOperat42.attribute3;
1978         END IF;
1979         IF (XOksMschgOperationsDtlsVRec.attribute4 IS NULL)
1980         THEN
1981           XOksMschgOperationsDtlsVRec.attribute4 := l_db_OksMschgOperat42.attribute4;
1982         END IF;
1983         IF (XOksMschgOperationsDtlsVRec.attribute5 IS NULL)
1984         THEN
1985           XOksMschgOperationsDtlsVRec.attribute5 := l_db_OksMschgOperat42.attribute5;
1986         END IF;
1987         IF (XOksMschgOperationsDtlsVRec.attribute6 IS NULL)
1988         THEN
1989           XOksMschgOperationsDtlsVRec.attribute6 := l_db_OksMschgOperat42.attribute6;
1990         END IF;
1991         IF (XOksMschgOperationsDtlsVRec.attribute7 IS NULL)
1992         THEN
1993           XOksMschgOperationsDtlsVRec.attribute7 := l_db_OksMschgOperat42.attribute7;
1994         END IF;
1995         IF (XOksMschgOperationsDtlsVRec.attribute8 IS NULL)
1996         THEN
1997           XOksMschgOperationsDtlsVRec.attribute8 := l_db_OksMschgOperat42.attribute8;
1998         END IF;
1999         IF (XOksMschgOperationsDtlsVRec.attribute9 IS NULL)
2000         THEN
2001           XOksMschgOperationsDtlsVRec.attribute9 := l_db_OksMschgOperat42.attribute9;
2002         END IF;
2003         IF (XOksMschgOperationsDtlsVRec.attribute10 IS NULL)
2004         THEN
2005           XOksMschgOperationsDtlsVRec.attribute10 := l_db_OksMschgOperat42.attribute10;
2006         END IF;
2007         IF (XOksMschgOperationsDtlsVRec.attribute11 IS NULL)
2008         THEN
2009           XOksMschgOperationsDtlsVRec.attribute11 := l_db_OksMschgOperat42.attribute11;
2010         END IF;
2011         IF (XOksMschgOperationsDtlsVRec.attribute12 IS NULL)
2012         THEN
2013           XOksMschgOperationsDtlsVRec.attribute12 := l_db_OksMschgOperat42.attribute12;
2014         END IF;
2015         IF (XOksMschgOperationsDtlsVRec.attribute13 IS NULL)
2016         THEN
2017           XOksMschgOperationsDtlsVRec.attribute13 := l_db_OksMschgOperat42.attribute13;
2018         END IF;
2019         IF (XOksMschgOperationsDtlsVRec.attribute14 IS NULL)
2020         THEN
2021           XOksMschgOperationsDtlsVRec.attribute14 := l_db_OksMschgOperat42.attribute14;
2022         END IF;
2023         IF (XOksMschgOperationsDtlsVRec.attribute15 IS NULL)
2024         THEN
2025           XOksMschgOperationsDtlsVRec.attribute15 := l_db_OksMschgOperat42.attribute15;
2026         END IF;
2027       END IF;
2028       RETURN(l_return_status);
2029     END populate_new_record;
2030     ----------------------------------------------------
2031     -- Set_Attributes for:OKS_MSCHG_OPERATIONS_DTLS_V --
2032     ----------------------------------------------------
2033     FUNCTION Set_Attributes (
2034       p_OksMschgOperationsDtlsVRec IN OksMschgOperationsDtlsVRecType,
2035       XOksMschgOperationsDtlsVRec OUT NOCOPY OksMschgOperationsDtlsVRecType
2036     ) RETURN VARCHAR2 IS
2037       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2038     BEGIN
2039       XOksMschgOperationsDtlsVRec := p_OksMschgOperationsDtlsVRec;
2040       RETURN(l_return_status);
2041     END Set_Attributes;
2042   BEGIN
2043     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2044                                               G_PKG_NAME,
2045                                               p_init_msg_list,
2046                                               l_api_version,
2047                                               p_api_version,
2048                                               '',
2049                                               x_return_status);
2050     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2051       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2052     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2053       RAISE OKC_API.G_EXCEPTION_ERROR;
2054     END IF;
2055     --- Setting item attributes
2056     l_return_status := Set_Attributes(
2057       p_OksMschgOperationsDtlsVRec,      -- IN
2058       XOksMschgOperationsDtlsVRec);      -- OUT
2059     --- If any errors happen abort API
2060     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2061       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2062     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2063       RAISE OKC_API.G_EXCEPTION_ERROR;
2064     END IF;
2065     l_return_status := populate_new_record(l_OksMschgOperationsDtlsVRec, LDefOksMschgOperationsDtlsVRec);
2066     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2067       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2068     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2069       RAISE OKC_API.G_EXCEPTION_ERROR;
2070     END IF;
2071     LDefOksMschgOperationsDtlsVRec := fill_who_columns(LDefOksMschgOperationsDtlsVRec);
2072     --- Validate all non-missing attributes (Item Level Validation)
2073     l_return_status := Validate_Attributes(LDefOksMschgOperationsDtlsVRec);
2074     --- If any errors happen abort API
2075     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2076       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2077     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2078       RAISE OKC_API.G_EXCEPTION_ERROR;
2079     END IF;
2080     l_return_status := Validate_Record(LDefOksMschgOperationsDtlsVRec, l_db_OksMschgOperat42);
2081     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2082       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2083     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2084       RAISE OKC_API.G_EXCEPTION_ERROR;
2085     END IF;
2086 
2087     -- Lock the Record
2088     lock_row(
2089       p_api_version                  => p_api_version,
2090       p_init_msg_list                => p_init_msg_list,
2091       x_return_status                => l_return_status,
2092       x_msg_count                    => x_msg_count,
2093       x_msg_data                     => x_msg_data,
2094       p_OksMschgOperationsDtlsVRec   => p_OksMschgOperationsDtlsVRec);
2095     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2096       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2097     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2098       RAISE OKC_API.G_EXCEPTION_ERROR;
2099     END IF;
2100 
2101     -----------------------------------------
2102     -- Move VIEW record to "Child" records --
2103     -----------------------------------------
2104     migrate(LDefOksMschgOperationsDtlsVRec, l_oks_mschg_operati3);
2105     -----------------------------------------------
2106     -- Call the UPDATE_ROW for each child record --
2107     -----------------------------------------------
2108     update_row(
2109       p_init_msg_list,
2110       l_return_status,
2111       x_msg_count,
2112       x_msg_data,
2113       l_oks_mschg_operati3,
2114       LxOksMschgOperationsDtlsRec
2115     );
2116     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2117       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2118     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2119       RAISE OKC_API.G_EXCEPTION_ERROR;
2120     END IF;
2121     migrate(LxOksMschgOperationsDtlsRec, LDefOksMschgOperationsDtlsVRec);
2122     XOksMschgOperationsDtlsVRec := LDefOksMschgOperationsDtlsVRec;
2123     x_return_status := l_return_status;
2124     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2125   EXCEPTION
2126     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2127       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2128       (
2129         l_api_name,
2130         G_PKG_NAME,
2131         'OKC_API.G_RET_STS_ERROR',
2132         x_msg_count,
2133         x_msg_data,
2134         '_PVT'
2135       );
2136     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2137       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2138       (
2139         l_api_name,
2140         G_PKG_NAME,
2141         'OKC_API.G_RET_STS_UNEXP_ERROR',
2142         x_msg_count,
2143         x_msg_data,
2144         '_PVT'
2145       );
2146     WHEN OTHERS THEN
2147       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2148       (
2149         l_api_name,
2150         G_PKG_NAME,
2151         'OTHERS',
2152         x_msg_count,
2153         x_msg_data,
2154         '_PVT'
2155       );
2156   END update_row;
2157   ----------------------------------------------------------
2158   -- PL/SQL TBL update_row for:OksMschgOperationsDtlsVTbl --
2159   ----------------------------------------------------------
2160   PROCEDURE update_row(
2161     p_api_version                  IN NUMBER,
2162     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2163     x_return_status                OUT NOCOPY VARCHAR2,
2164     x_msg_count                    OUT NOCOPY NUMBER,
2165     x_msg_data                     OUT NOCOPY VARCHAR2,
2166     POksMschgOperationsDtlsVTbl    IN OksMschgOperationsDtlsVTblType,
2167     XOksMschgOperationsDtlsVTbl    OUT NOCOPY OksMschgOperationsDtlsVTblType,
2168     px_error_tbl                   IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
2169 
2170     l_api_version                  CONSTANT NUMBER := 1;
2171     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_update_row';
2172     i                              NUMBER := 0;
2173   BEGIN
2174     OKC_API.init_msg_list(p_init_msg_list);
2175     -- Make sure PL/SQL table has records in it before passing
2176     IF (POksMschgOperationsDtlsVTbl.COUNT > 0) THEN
2177       i := POksMschgOperationsDtlsVTbl.FIRST;
2178       LOOP
2179         DECLARE
2180           l_error_rec         OKC_API.ERROR_REC_TYPE;
2181         BEGIN
2182           l_error_rec.api_name := l_api_name;
2183           l_error_rec.api_package := G_PKG_NAME;
2184           l_error_rec.idx := i;
2185           update_row (
2186             p_api_version                  => p_api_version,
2187             p_init_msg_list                => OKC_API.G_FALSE,
2188             x_return_status                => l_error_rec.error_type,
2189             x_msg_count                    => l_error_rec.msg_count,
2190             x_msg_data                     => l_error_rec.msg_data,
2191             p_OksMschgOperationsDtlsVRec   => POksMschgOperationsDtlsVTbl(i),
2192             XOksMschgOperationsDtlsVRec    => XOksMschgOperationsDtlsVTbl(i));
2193           IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
2194             l_error_rec.sqlcode := SQLCODE;
2195             load_error_tbl(l_error_rec, px_error_tbl);
2196           ELSE
2197             x_msg_count := l_error_rec.msg_count;
2198             x_msg_data := l_error_rec.msg_data;
2199           END IF;
2200         EXCEPTION
2201           WHEN OKC_API.G_EXCEPTION_ERROR THEN
2202             l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
2203             l_error_rec.sqlcode := SQLCODE;
2204             load_error_tbl(l_error_rec, px_error_tbl);
2205           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2206             l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
2207             l_error_rec.sqlcode := SQLCODE;
2208             load_error_tbl(l_error_rec, px_error_tbl);
2209           WHEN OTHERS THEN
2210             l_error_rec.error_type := 'OTHERS';
2211             l_error_rec.sqlcode := SQLCODE;
2212             load_error_tbl(l_error_rec, px_error_tbl);
2213         END;
2214         EXIT WHEN (i = POksMschgOperationsDtlsVTbl.LAST);
2215         i := POksMschgOperationsDtlsVTbl.NEXT(i);
2216       END LOOP;
2217     END IF;
2218     -- Loop through the error_tbl to find the error with the highest severity
2219     -- and return it.
2220     x_return_status := find_highest_exception(px_error_tbl);
2221     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2222   EXCEPTION
2223     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2224       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2225       (
2226         l_api_name,
2227         G_PKG_NAME,
2228         'OKC_API.G_RET_STS_ERROR',
2229         x_msg_count,
2230         x_msg_data,
2231         '_PVT'
2232       );
2233     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2234       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2235       (
2236         l_api_name,
2237         G_PKG_NAME,
2238         'OKC_API.G_RET_STS_UNEXP_ERROR',
2239         x_msg_count,
2240         x_msg_data,
2241         '_PVT'
2242       );
2243     WHEN OTHERS THEN
2244       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2245       (
2246         l_api_name,
2247         G_PKG_NAME,
2248         'OTHERS',
2249         x_msg_count,
2250         x_msg_data,
2251         '_PVT'
2252       );
2253   END update_row;
2254 
2255   ----------------------------------------------------------
2256   -- PL/SQL TBL update_row for:OKSMSCHGOPERATIONSDTLSVTBL --
2257   ----------------------------------------------------------
2258   PROCEDURE update_row(
2259     p_api_version                  IN NUMBER,
2260     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2261     x_return_status                OUT NOCOPY VARCHAR2,
2262     x_msg_count                    OUT NOCOPY NUMBER,
2263     x_msg_data                     OUT NOCOPY VARCHAR2,
2264     POksMschgOperationsDtlsVTbl    IN OksMschgOperationsDtlsVTblType,
2265     XOksMschgOperationsDtlsVTbl    OUT NOCOPY OksMschgOperationsDtlsVTblType) IS
2266 
2267     l_api_version                  CONSTANT NUMBER := 1;
2268     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
2269     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2270     l_error_tbl                    OKC_API.ERROR_TBL_TYPE;
2271   BEGIN
2272     OKC_API.init_msg_list(p_init_msg_list);
2273     -- Make sure PL/SQL table has records in it before passing
2274     IF (POksMschgOperationsDtlsVTbl.COUNT > 0) THEN
2275       update_row (
2276         p_api_version                  => p_api_version,
2277         p_init_msg_list                => OKC_API.G_FALSE,
2278         x_return_status                => x_return_status,
2279         x_msg_count                    => x_msg_count,
2280         x_msg_data                     => x_msg_data,
2281         POksMschgOperationsDtlsVTbl    => POksMschgOperationsDtlsVTbl,
2282         XOksMschgOperationsDtlsVTbl    => XOksMschgOperationsDtlsVTbl,
2283         px_error_tbl                   => l_error_tbl);
2284     END IF;
2285     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2286   EXCEPTION
2287     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2288       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2289       (
2290         l_api_name,
2291         G_PKG_NAME,
2292         'OKC_API.G_RET_STS_ERROR',
2293         x_msg_count,
2294         x_msg_data,
2295         '_PVT'
2296       );
2297     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2298       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2299       (
2300         l_api_name,
2301         G_PKG_NAME,
2302         'OKC_API.G_RET_STS_UNEXP_ERROR',
2303         x_msg_count,
2304         x_msg_data,
2305         '_PVT'
2306       );
2307     WHEN OTHERS THEN
2308       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2309       (
2310         l_api_name,
2311         G_PKG_NAME,
2312         'OTHERS',
2313         x_msg_count,
2314         x_msg_data,
2315         '_PVT'
2316       );
2317   END update_row;
2318 
2319   ---------------------------------------------------------------------------
2320   -- PROCEDURE delete_row
2321   ---------------------------------------------------------------------------
2322   ----------------------------------------------
2323   -- delete_row for:OKS_MSCHG_OPERATIONS_DTLS --
2324   ----------------------------------------------
2325   PROCEDURE delete_row(
2326     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2327     x_return_status                OUT NOCOPY VARCHAR2,
2328     x_msg_count                    OUT NOCOPY NUMBER,
2329     x_msg_data                     OUT NOCOPY VARCHAR2,
2330     p_oks_mschg_operati2           IN OksMschgOperationsDtlsRecType) IS
2331 
2332     l_api_version                  CONSTANT NUMBER := 1;
2333     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
2334     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2335     l_oks_mschg_operati3           OksMschgOperationsDtlsRecType := p_oks_mschg_operati2;
2336     l_row_notfound                 BOOLEAN := TRUE;
2337   BEGIN
2338     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2339                                               p_init_msg_list,
2340                                               '',
2341                                               x_return_status);
2342     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2343       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2344     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2345       RAISE OKC_API.G_EXCEPTION_ERROR;
2346     END IF;
2347 
2348     DELETE FROM OKS_MSCHG_OPERATIONS_DTLS
2349      WHERE ID = p_oks_mschg_operati2.id;
2350 
2351     x_return_status := l_return_status;
2352     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2353   EXCEPTION
2354     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2355       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2356       (
2357         l_api_name,
2358         G_PKG_NAME,
2359         'OKC_API.G_RET_STS_ERROR',
2360         x_msg_count,
2361         x_msg_data,
2362         '_PVT'
2363       );
2364     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2365       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2366       (
2367         l_api_name,
2368         G_PKG_NAME,
2369         'OKC_API.G_RET_STS_UNEXP_ERROR',
2370         x_msg_count,
2371         x_msg_data,
2372         '_PVT'
2373       );
2374     WHEN OTHERS THEN
2375       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2376       (
2377         l_api_name,
2378         G_PKG_NAME,
2379         'OTHERS',
2380         x_msg_count,
2381         x_msg_data,
2382         '_PVT'
2383       );
2384   END delete_row;
2385   ------------------------------------------------
2386   -- delete_row for:OKS_MSCHG_OPERATIONS_DTLS_V --
2387   ------------------------------------------------
2388   PROCEDURE delete_row(
2389     p_api_version                  IN NUMBER,
2390     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2391     x_return_status                OUT NOCOPY VARCHAR2,
2392     x_msg_count                    OUT NOCOPY NUMBER,
2393     x_msg_data                     OUT NOCOPY VARCHAR2,
2394     p_OksMschgOperationsDtlsVRec   IN OksMschgOperationsDtlsVRecType) IS
2395 
2396     l_api_version                  CONSTANT NUMBER := 1;
2397     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
2398     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2399     l_OksMschgOperationsDtlsVRec   OksMschgOperationsDtlsVRecType := p_OksMschgOperationsDtlsVRec;
2400     l_oks_mschg_operati3           OksMschgOperationsDtlsRecType;
2401   BEGIN
2402     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2403                                               G_PKG_NAME,
2404                                               p_init_msg_list,
2405                                               l_api_version,
2406                                               p_api_version,
2407                                               '',
2408                                               x_return_status);
2409     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2410       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2411     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2412       RAISE OKC_API.G_EXCEPTION_ERROR;
2413     END IF;
2414     -----------------------------------------
2415     -- Move VIEW record to "Child" records --
2416     -----------------------------------------
2417     migrate(l_OksMschgOperationsDtlsVRec, l_oks_mschg_operati3);
2418     -----------------------------------------------
2419     -- Call the DELETE_ROW for each child record --
2420     -----------------------------------------------
2421     delete_row(
2422       p_init_msg_list,
2423       l_return_status,
2424       x_msg_count,
2425       x_msg_data,
2426       l_oks_mschg_operati3
2427     );
2428     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2429       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2430     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2431       RAISE OKC_API.G_EXCEPTION_ERROR;
2432     END IF;
2433     x_return_status := l_return_status;
2434     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2435   EXCEPTION
2436     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2437       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2438       (
2439         l_api_name,
2440         G_PKG_NAME,
2441         'OKC_API.G_RET_STS_ERROR',
2442         x_msg_count,
2443         x_msg_data,
2444         '_PVT'
2445       );
2446     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2447       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2448       (
2449         l_api_name,
2450         G_PKG_NAME,
2451         'OKC_API.G_RET_STS_UNEXP_ERROR',
2452         x_msg_count,
2453         x_msg_data,
2454         '_PVT'
2455       );
2456     WHEN OTHERS THEN
2457       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2458       (
2459         l_api_name,
2460         G_PKG_NAME,
2461         'OTHERS',
2462         x_msg_count,
2463         x_msg_data,
2464         '_PVT'
2465       );
2466   END delete_row;
2467   -----------------------------------------------------------
2468   -- PL/SQL TBL delete_row for:OKS_MSCHG_OPERATIONS_DTLS_V --
2469   -----------------------------------------------------------
2470   PROCEDURE delete_row(
2471     p_api_version                  IN NUMBER,
2472     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2473     x_return_status                OUT NOCOPY VARCHAR2,
2474     x_msg_count                    OUT NOCOPY NUMBER,
2475     x_msg_data                     OUT NOCOPY VARCHAR2,
2476     POksMschgOperationsDtlsVTbl    IN OksMschgOperationsDtlsVTblType,
2477     px_error_tbl                   IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
2478 
2479     l_api_version                  CONSTANT NUMBER := 1;
2480     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
2481     i                              NUMBER := 0;
2482   BEGIN
2483     OKC_API.init_msg_list(p_init_msg_list);
2484     -- Make sure PL/SQL table has records in it before passing
2485     IF (POksMschgOperationsDtlsVTbl.COUNT > 0) THEN
2486       i := POksMschgOperationsDtlsVTbl.FIRST;
2487       LOOP
2488         DECLARE
2489           l_error_rec         OKC_API.ERROR_REC_TYPE;
2490         BEGIN
2491           l_error_rec.api_name := l_api_name;
2492           l_error_rec.api_package := G_PKG_NAME;
2493           l_error_rec.idx := i;
2494           delete_row (
2495             p_api_version                  => p_api_version,
2496             p_init_msg_list                => OKC_API.G_FALSE,
2497             x_return_status                => l_error_rec.error_type,
2498             x_msg_count                    => l_error_rec.msg_count,
2499             x_msg_data                     => l_error_rec.msg_data,
2500             p_OksMschgOperationsDtlsVRec   => POksMschgOperationsDtlsVTbl(i));
2501           IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
2502             l_error_rec.sqlcode := SQLCODE;
2503             load_error_tbl(l_error_rec, px_error_tbl);
2504           ELSE
2505             x_msg_count := l_error_rec.msg_count;
2506             x_msg_data := l_error_rec.msg_data;
2507           END IF;
2508         EXCEPTION
2509           WHEN OKC_API.G_EXCEPTION_ERROR THEN
2510             l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
2511             l_error_rec.sqlcode := SQLCODE;
2512             load_error_tbl(l_error_rec, px_error_tbl);
2513           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2514             l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
2515             l_error_rec.sqlcode := SQLCODE;
2516             load_error_tbl(l_error_rec, px_error_tbl);
2517           WHEN OTHERS THEN
2518             l_error_rec.error_type := 'OTHERS';
2519             l_error_rec.sqlcode := SQLCODE;
2520             load_error_tbl(l_error_rec, px_error_tbl);
2521         END;
2522         EXIT WHEN (i = POksMschgOperationsDtlsVTbl.LAST);
2523         i := POksMschgOperationsDtlsVTbl.NEXT(i);
2524       END LOOP;
2525     END IF;
2526     -- Loop through the error_tbl to find the error with the highest severity
2527     -- and return it.
2528     x_return_status := find_highest_exception(px_error_tbl);
2529     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2530   EXCEPTION
2531     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2532       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2533       (
2534         l_api_name,
2535         G_PKG_NAME,
2536         'OKC_API.G_RET_STS_ERROR',
2537         x_msg_count,
2538         x_msg_data,
2539         '_PVT'
2540       );
2541     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2542       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2543       (
2544         l_api_name,
2545         G_PKG_NAME,
2546         'OKC_API.G_RET_STS_UNEXP_ERROR',
2547         x_msg_count,
2548         x_msg_data,
2549         '_PVT'
2550       );
2551     WHEN OTHERS THEN
2552       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2553       (
2554         l_api_name,
2555         G_PKG_NAME,
2556         'OTHERS',
2557         x_msg_count,
2558         x_msg_data,
2559         '_PVT'
2560       );
2561   END delete_row;
2562 
2563   -----------------------------------------------------------
2564   -- PL/SQL TBL delete_row for:OKS_MSCHG_OPERATIONS_DTLS_V --
2565   -----------------------------------------------------------
2566   PROCEDURE delete_row(
2567     p_api_version                  IN NUMBER,
2568     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2569     x_return_status                OUT NOCOPY VARCHAR2,
2570     x_msg_count                    OUT NOCOPY NUMBER,
2571     x_msg_data                     OUT NOCOPY VARCHAR2,
2572     POksMschgOperationsDtlsVTbl    IN OksMschgOperationsDtlsVTblType) IS
2573 
2574     l_api_version                  CONSTANT NUMBER := 1;
2575     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
2576     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2577     l_error_tbl                    OKC_API.ERROR_TBL_TYPE;
2578   BEGIN
2579     OKC_API.init_msg_list(p_init_msg_list);
2580     -- Make sure PL/SQL table has records in it before passing
2581     IF (POksMschgOperationsDtlsVTbl.COUNT > 0) THEN
2582       delete_row (
2583         p_api_version                  => p_api_version,
2584         p_init_msg_list                => OKC_API.G_FALSE,
2585         x_return_status                => x_return_status,
2586         x_msg_count                    => x_msg_count,
2587         x_msg_data                     => x_msg_data,
2588         POksMschgOperationsDtlsVTbl    => POksMschgOperationsDtlsVTbl,
2589         px_error_tbl                   => l_error_tbl);
2590     END IF;
2591     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2592   EXCEPTION
2593     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2594       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2595       (
2596         l_api_name,
2597         G_PKG_NAME,
2598         'OKC_API.G_RET_STS_ERROR',
2599         x_msg_count,
2600         x_msg_data,
2601         '_PVT'
2602       );
2603     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2604       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2605       (
2606         l_api_name,
2607         G_PKG_NAME,
2608         'OKC_API.G_RET_STS_UNEXP_ERROR',
2609         x_msg_count,
2610         x_msg_data,
2611         '_PVT'
2612       );
2613     WHEN OTHERS THEN
2614       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2615       (
2616         l_api_name,
2617         G_PKG_NAME,
2618         'OTHERS',
2619         x_msg_count,
2620         x_msg_data,
2621         '_PVT'
2622       );
2623   END delete_row;
2624 
2625 END OKS_MOD_PVT;
2626