DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEX_IOH_PVT

Source


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