DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKE_RLE_PVT

Source


1 PACKAGE BODY OKE_RLE_PVT AS
2 /* $Header: OKEVRLEB.pls 115.13 2002/11/20 20:43:07 who ship $ */
3 
4 -- validate record
5 
6   FUNCTION validate_record (
7     p_rle_rec IN rle_rec_type
8   ) RETURN VARCHAR2 IS
9     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
10   BEGIN
11 
12     RETURN(l_return_status);
13 
14   END validate_record;
15 
16 -- validate individual attributes
17 
18   FUNCTION validate_attributes(
19     p_rle_rec IN  rle_rec_type
20   ) RETURN VARCHAR2 IS
21 
22     l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
23     x_return_status VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
24 
25 
26   PROCEDURE validate_k_header_id(x_return_status OUT NOCOPY VARCHAR2,
27 			      p_rle_rec   IN  rle_rec_type)IS
28 
29 	l_dummy_val VARCHAR2(1):='?';
30 	CURSOR l_csr IS
31 	SELECT 'x'
32 	FROM OKE_K_HEADERS
33 	WHERE K_HEADER_ID = p_rle_rec.K_HEADER_ID;
34 
35     BEGIN
36 
37 	x_return_status := OKE_API.G_RET_STS_SUCCESS;
38 
39 
40 	-- check required value - not null
41 
42 	IF (   p_rle_rec.k_header_id = OKE_API.G_MISS_NUM
43      	OR     p_rle_rec.k_header_id IS NULL) THEN
44       		OKE_API.SET_MESSAGE(
45         	p_app_name		=>g_app_name,
46  		p_msg_name		=>g_required_value,
47 		p_token1		=>g_col_name_token,
48 		p_token1_value		=>'K_HEADER_ID');
49 
50 		x_return_status := OKE_API.G_RET_STS_ERROR;
51 		raise G_EXCEPTION_HALT_VALIDATION;
52 	END IF;
53 
54 
55     	OPEN l_csr;
56     	FETCH l_csr INTO l_dummy_val;
57     	CLOSE l_csr;
58 
59     		IF (l_dummy_val = '?') THEN
60       		OKE_API.SET_MESSAGE(
61         	p_app_name		=>g_app_name,
62  		p_msg_name		=>g_no_parent_record,
63 		p_token1		=>g_col_name_token,
64 		p_token1_value		=>'K_HEADER_ID',
65 		p_token2		=>g_child_table_token,
66 		p_token2_value		=>G_VIEW,
67 		p_token3		=>g_parent_table_token,
68 		p_token3_value		=>'OKE_K_HEADERS');
69 
70       		x_return_status := OKE_API.G_RET_STS_ERROR;
71     		END IF;
72 
73 
74     EXCEPTION
75     WHEN G_EXCEPTION_HALT_VALIDATION THEN
76 	NULL;
77     WHEN OTHERS THEN
78     -- store SQL error message on message stack
79     OKE_API.SET_MESSAGE(
80 		p_app_name		=>g_app_name,
81 		p_msg_name		=>G_UNEXPECTED_ERROR,
82 		p_token1		=>G_SQLCODE_TOKEN,
83 		p_token1_value		=>SQLCODE,
84 		p_token2		=>G_SQLERRM_TOKEN,
85 		p_token2_value		=>SQLERRM);
86     x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
87 
88     IF l_csr%ISOPEN THEN
89       CLOSE l_csr;
90     END IF;
91 
92     END validate_k_header_id;
93 
94 
95   PROCEDURE validate_change_request_id(x_return_status OUT NOCOPY VARCHAR2,
96 			      p_rle_rec   IN  rle_rec_type)IS
97 
98 	l_dummy_val VARCHAR2(1):='?';
99 	CURSOR l_csr IS
100 	SELECT 'x'
101 	FROM OKE_CHG_REQUESTS
102 	WHERE CHG_REQUEST_ID = p_rle_rec.CHG_REQUEST_ID;
103 
104     BEGIN
105 	x_return_status := OKE_API.G_RET_STS_SUCCESS;
106 	IF (   p_rle_rec.chg_request_id <> OKE_API.G_MISS_NUM
107      	AND p_rle_rec.chg_request_id IS NOT NULL) THEN
108 
109     	OPEN l_csr;
110     	FETCH l_csr INTO l_dummy_val;
111     	CLOSE l_csr;
112 
113     		IF (l_dummy_val = '?') THEN
114       		OKE_API.SET_MESSAGE(
115         	p_app_name		=>g_app_name,
116  		p_msg_name		=>g_no_parent_record,
117 		p_token1		=>g_col_name_token,
118 		p_token1_value		=>'CHANGE_REQUEST_ID',
119 		p_token2		=>g_child_table_token,
120 		p_token2_value		=>G_VIEW,
121 		p_token3		=>g_parent_table_token,
122 		p_token3_value		=>'OKE_CHG_REQUESTS');
123 
124       		x_return_status := OKE_API.G_RET_STS_ERROR;
125     		END IF;
126   	END IF;
127     EXCEPTION
128     WHEN OTHERS THEN
129     -- store SQL error message on message stack
130     OKE_API.SET_MESSAGE(
131 		p_app_name		=>g_app_name,
132 		p_msg_name		=>G_UNEXPECTED_ERROR,
133 		p_token1		=>G_SQLCODE_TOKEN,
134 		p_token1_value		=>SQLCODE,
135 		p_token2		=>G_SQLERRM_TOKEN,
136 		p_token2_value		=>SQLERRM);
137     x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
138 
139     IF l_csr%ISOPEN THEN
140       CLOSE l_csr;
141     END IF;
142     END validate_change_request_id;
143 
144 
145 
146 
147 
148   PROCEDURE validate_related_entity_id(x_return_status OUT NOCOPY VARCHAR2,
149 			      p_rle_rec   IN  rle_rec_type)IS
150 
151 	l_dummy_val VARCHAR2(1):='?';
152 	CURSOR l_csr IS
153 	SELECT 'x'
154 	FROM OKE_K_HEADERS
155 	WHERE K_HEADER_ID = p_rle_rec.related_entity_id;
156 
157     BEGIN
158 
159 	x_return_status := OKE_API.G_RET_STS_SUCCESS;
160 
161 
162 	-- check required value - not null
163 
164 	IF (   p_rle_rec.related_entity_id = OKE_API.G_MISS_NUM
165      	OR     p_rle_rec.related_entity_id IS NULL) THEN
166       		OKE_API.SET_MESSAGE(
167         	p_app_name		=>g_app_name,
168  		p_msg_name		=>g_required_value,
169 		p_token1		=>g_col_name_token,
170 		p_token1_value		=>'RELATED_ENTITY_ID');
171 
172 		x_return_status := OKE_API.G_RET_STS_ERROR;
173 		raise G_EXCEPTION_HALT_VALIDATION;
174 	END IF;
175 
176 
177     	OPEN l_csr;
178     	FETCH l_csr INTO l_dummy_val;
179     	CLOSE l_csr;
180 
181     		IF (l_dummy_val = '?') THEN
182       		OKE_API.SET_MESSAGE(
183         	p_app_name		=>g_app_name,
184  		p_msg_name		=>g_no_parent_record,
185 		p_token1		=>g_col_name_token,
186 		p_token1_value		=>'RELATED_ENTITY_ID',
187 		p_token2		=>g_child_table_token,
188 		p_token2_value		=>G_VIEW,
189 		p_token3		=>g_parent_table_token,
190 		p_token3_value		=>'OKE_K_HEADERS');
191 
192       		x_return_status := OKE_API.G_RET_STS_ERROR;
193     		END IF;
194 
195 
196     EXCEPTION
197     WHEN G_EXCEPTION_HALT_VALIDATION THEN
198 	NULL;
199     WHEN OTHERS THEN
200     -- store SQL error message on message stack
201     OKE_API.SET_MESSAGE(
202 		p_app_name		=>g_app_name,
203 		p_msg_name		=>G_UNEXPECTED_ERROR,
204 		p_token1		=>G_SQLCODE_TOKEN,
205 		p_token1_value		=>SQLCODE,
206 		p_token2		=>G_SQLERRM_TOKEN,
207 		p_token2_value		=>SQLERRM);
208     x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
209 
210     IF l_csr%ISOPEN THEN
211       CLOSE l_csr;
212     END IF;
213 
214     END validate_related_entity_id;
215 
216 
217 /*  PROCEDURE validate_version(x_return_status OUT NOCOPY VARCHAR2,
218 			      p_rle_rec   IN  rle_rec_type)IS
219 
220 	l_dummy_val VARCHAR2(1):='?';
221 	CURSOR l_csr IS
222 	SELECT 'x'
223 	FROM
224 	((Select major_version
225 	 From OKE_K_VERS_NUMBERS_V
226 	 Where chr_id = p_rle_rec.related_entity_id)
227 	 UNION
228 	 (Select major_version
229 	  From OKE_K_HEADERS_H
230 	  Where k_header_id = p_rle_rec.related_entity_id)
231 	)
232 	WHERE  major_version  = p_rle_rec.related_entity_version;
233 
234 
235 
236     BEGIN
237 
238 	x_return_status := OKE_API.G_RET_STS_SUCCESS;
239 
240 
241 	-- check required value - not null
242 
243 	IF (   p_rle_rec.related_entity_version = OKE_API.G_MISS_NUM
244      	OR     p_rle_rec.related_entity_version IS NULL) THEN
245       		OKE_API.SET_MESSAGE(
246         	p_app_name		=>g_app_name,
247  		p_msg_name		=>g_required_value,
248 		p_token1		=>g_col_name_token,
249 		p_token1_value		=>'RELATED_ENTITY_VERSION');
250 
251 		x_return_status := OKE_API.G_RET_STS_ERROR;
252 		raise G_EXCEPTION_HALT_VALIDATION;
253 	END IF;
254 
255 
256     	OPEN l_csr;
257     	FETCH l_csr INTO l_dummy_val;
258     	CLOSE l_csr;
259 
260     		IF (l_dummy_val = '?') THEN
261       		OKE_API.SET_MESSAGE(
262         	p_app_name		=>g_app_name,
263  		p_msg_name		=>g_no_parent_record,
264 		p_token1		=>g_col_name_token,
265 		p_token1_value		=>'VERSION',
266 		p_token2		=>g_child_table_token,
267 		p_token2_value		=>G_VIEW,
268 		p_token3		=>g_parent_table_token,
269 		p_token3_value		=>'OKC_K_VERS_NUMBERS');
270 
271       		x_return_status := OKE_API.G_RET_STS_ERROR;
272     		END IF;
273 
274 
275     EXCEPTION
276     WHEN G_EXCEPTION_HALT_VALIDATION THEN
277 	NULL;
278     WHEN OTHERS THEN
279     -- store SQL error message on message stack
280     OKE_API.SET_MESSAGE(
281 		p_app_name		=>g_app_name,
282 		p_msg_name		=>G_UNEXPECTED_ERROR,
283 		p_token1		=>G_SQLCODE_TOKEN,
284 		p_token1_value		=>SQLCODE,
285 		p_token2		=>G_SQLERRM_TOKEN,
286 		p_token2_value		=>SQLERRM);
287     x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
288 
289     IF l_csr%ISOPEN THEN
290       CLOSE l_csr;
291     END IF;
292 
293     END validate_version; */
294 
295 
296   BEGIN
297 
298  validate_k_header_id (x_return_status => l_return_status,
299                               p_rle_rec         =>  p_rle_rec);
300   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
301     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
302       x_return_status := l_return_status;
303     END IF;
304   END IF;
305 
306  validate_change_request_id (x_return_status => l_return_status,
307                               p_rle_rec         =>  p_rle_rec);
308   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
309     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
310       x_return_status := l_return_status;
311     END IF;
312   END IF;
313 
314  validate_related_entity_id (x_return_status => l_return_status,
315                               p_rle_rec         =>  p_rle_rec);
316   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
317     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
318       x_return_status := l_return_status;
319     END IF;
320   END IF;
321 
322 /*  validate_version (x_return_status => l_return_status,
323                               p_rle_rec         =>  p_rle_rec);
324   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
325     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
326       x_return_status := l_return_status;
327     END IF;
328   END IF;   */
329 
330    /* call individual validation procedure */
331 	   -- return status to caller
332         RETURN(x_return_status);
333 
334   END Validate_Attributes;
335 
336   FUNCTION null_out_defaults(
337 	 p_rle_rec	IN rle_rec_type ) RETURN rle_rec_type IS
338 
339   l_rle_rec rle_rec_type := p_rle_rec;
340 
341   BEGIN
342 
343 
344     IF  l_rle_rec.K_HEADER_ID = OKE_API.G_MISS_NUM THEN
345 	l_rle_rec.K_HEADER_ID := NULL;
346     END IF;
347 
348     IF  l_rle_rec.CHG_REQUEST_ID = OKE_API.G_MISS_NUM THEN
349 	l_rle_rec.CHG_REQUEST_ID := NULL;
350     END IF;
351 
352     IF  l_rle_rec.RELATED_ENTITY_ID = OKE_API.G_MISS_NUM THEN
353 	l_rle_rec.RELATED_ENTITY_ID := NULL;
354     END IF;
355 
356     IF  l_rle_rec.RELATED_ENTITY_VERSION = OKE_API.G_MISS_NUM THEN
357     	l_rle_rec.RELATED_ENTITY_VERSION := NULL;
358     END IF;
359 
360     IF	l_rle_rec.CREATED_BY = OKE_API.G_MISS_NUM THEN
361 	l_rle_rec.CREATED_BY := NULL;
362     END IF;
363 
364     IF	l_rle_rec.CREATION_DATE = OKE_API.G_MISS_DATE THEN
365 	l_rle_rec.CREATION_DATE := NULL;
366     END IF;
367 
368     IF	l_rle_rec.LAST_UPDATED_BY = OKE_API.G_MISS_NUM THEN
369 	l_rle_rec.LAST_UPDATED_BY := NULL;
370     END IF;
371 
372     IF	l_rle_rec.LAST_UPDATE_LOGIN = OKE_API.G_MISS_NUM THEN
373 	l_rle_rec.LAST_UPDATE_LOGIN := NULL;
374     END IF;
375 
376     IF	l_rle_rec.LAST_UPDATE_DATE = OKE_API.G_MISS_DATE THEN
377 	l_rle_rec.LAST_UPDATE_DATE := NULL;
378     END IF;
379 
380 
381     RETURN(l_rle_rec);
382 
383   END null_out_defaults;
384 
385 
386 	-- row level insert
387 
388   PROCEDURE insert_row(
389     p_api_version                  IN NUMBER,
390     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
391     x_return_status                OUT NOCOPY VARCHAR2,
392     x_msg_count                    OUT NOCOPY NUMBER,
393     x_msg_data                     OUT NOCOPY VARCHAR2,
394     p_rle_rec                      IN rle_rec_type,
395     x_rle_rec                      OUT NOCOPY rle_rec_type) IS
396 
397     l_api_version                  CONSTANT NUMBER := 1;
398     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
399     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
400     l_rle_rec                      rle_rec_type;
401     l_def_rle_rec                  rle_rec_type;
402     lx_rle_rec                     rle_rec_type;
403 
404 
405 
406     -- FUNCTION fill_who_columns --
407     -------------------------------
408     FUNCTION fill_who_columns (
409       p_rle_rec	IN rle_rec_type
410     ) RETURN rle_rec_type IS
411 
412       l_rle_rec	rle_rec_type := p_rle_rec;
413 
414     BEGIN
415 
416       l_rle_rec.CREATION_DATE := SYSDATE;
417       l_rle_rec.CREATED_BY := FND_GLOBAL.USER_ID;
418       l_rle_rec.LAST_UPDATE_DATE := SYSDATE;
419       l_rle_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
420       l_rle_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
421       RETURN(l_rle_rec);
422 
423     END fill_who_columns;
424 
425 
426 
427     FUNCTION Set_Attributes (
428       p_rle_rec IN  rle_rec_type,
429       x_rle_rec OUT NOCOPY rle_rec_type
430     ) RETURN VARCHAR2 IS
431       l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
432     BEGIN
433 	x_rle_rec := p_rle_rec;
434 
435       RETURN(l_return_status);
436 
437     END Set_Attributes;
438 
439 
440   BEGIN  -- insert
441 
442     l_return_status := OKE_API.START_ACTIVITY(l_api_name,
443                                               G_PKG_NAME,
444                                               p_init_msg_list,
445                                               l_api_version,
446                                               p_api_version,
447                                               '_PVT',
448                                               x_return_status);
449 
450 
451     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
452       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
453     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
454       RAISE OKE_API.G_EXCEPTION_ERROR;
455     END IF;
456 
457 
458     l_rle_rec := null_out_defaults(p_rle_rec);
459 
460 
461 
462     --- Setting item attributes
463     l_return_status := Set_Attributes(
464       l_rle_rec,                        -- IN
465       l_def_rle_rec);                   -- OUT
466 
467     --- If any errors happen abort API
468     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
469       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
470     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
471       RAISE OKE_API.G_EXCEPTION_ERROR;
472     END IF;
473 
474 
475     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
476       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
477     END IF;
478 
479     l_def_rle_rec := fill_who_columns(l_def_rle_rec);
480 
481 
482     --- Validate all non-missing attributes (Item Level Validation)
483     l_return_status := Validate_Attributes(l_def_rle_rec);
484 
485     --- If any errors happen abort API
486     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
487       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
488 
489     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
490       RAISE OKE_API.G_EXCEPTION_ERROR;
491     END IF;
492 
493 
494     l_return_status := Validate_Record(l_def_rle_rec);
495 
496     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
497       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
498     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
499       RAISE OKE_API.G_EXCEPTION_ERROR;
500     END IF;
501 
502 
503     INSERT INTO OKE_K_RELATED_ENTITIES(
504 
505  	K_HEADER_ID          ,
506  	CHG_REQUEST_ID ,
507  	RELATED_ENTITY_ID ,
508 	RELATED_ENTITY_VERSION,
509  	CREATION_DATE        ,
510  	CREATED_BY           ,
511  	LAST_UPDATE_DATE     ,
512  	LAST_UPDATED_BY      ,
513  	LAST_UPDATE_LOGIN
514 	)
515     VALUES(
516 	l_def_rle_rec.K_HEADER_ID          ,
517  	l_def_rle_rec.CHG_REQUEST_ID ,
518  	l_def_rle_rec.RELATED_ENTITY_ID ,
519  	l_def_rle_rec.RELATED_ENTITY_VERSION,
520  	l_def_rle_rec.CREATION_DATE        ,
521  	l_def_rle_rec.CREATED_BY           ,
522  	l_def_rle_rec.LAST_UPDATE_DATE     ,
523  	l_def_rle_rec.LAST_UPDATED_BY      ,
524  	l_def_rle_rec.LAST_UPDATE_LOGIN
525 	);
526 
527 
528 
529 
530     -- Set OUT values
531     x_rle_rec := l_def_rle_rec;
532 
533     	SELECT rowid INTO x_rle_rec.ROW_ID
534      	FROM OKE_K_RELATED_ENTITIES
535 	WHERE K_HEADER_ID=x_rle_rec.K_HEADER_ID
536 	AND
537 	(CHG_REQUEST_ID = x_rle_rec.CHG_REQUEST_ID
538 	 OR
539 	(CHG_REQUEST_ID IS NULL
540 		AND x_rle_rec.CHG_REQUEST_ID IS NULL))
541 	AND RELATED_ENTITY_ID = x_rle_rec.RELATED_ENTITY_ID
542 	AND
543 	(RELATED_ENTITY_VERSION = x_rle_rec.RELATED_ENTITY_VERSION
544 	 OR
545 	(RELATED_ENTITY_VERSION IS NULL
546 		AND x_rle_rec.RELATED_ENTITY_VERSION IS NULL));
547 
548 
549     OKE_API.END_ACTIVITY(x_msg_count, x_msg_data);
550 
551   EXCEPTION
552     WHEN OKE_API.G_EXCEPTION_ERROR THEN
553       x_return_status := OKE_API.HANDLE_EXCEPTIONS
554       (
555         l_api_name,
556         G_PKG_NAME,
557         'OKE_API.G_RET_STS_ERROR',
558         x_msg_count,
559         x_msg_data,
560         '_PVT'
561       );
562     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
563       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
564       (
565         l_api_name,
566         G_PKG_NAME,
567         'OKE_API.G_RET_STS_UNEXP_ERROR',
568         x_msg_count,
569         x_msg_data,
570         '_PVT'
571       );
572     WHEN OTHERS THEN
573       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
574       (
575         l_api_name,
576         G_PKG_NAME,
577         'OTHERS',
578         x_msg_count,
579         x_msg_data,
580         '_PVT'
581       );
582   END insert_row;   -- row level
583 
584 
585 
586 
587 	-- table level insert
588 
589   PROCEDURE insert_row(
590     p_api_version                  IN NUMBER,
591     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
592     x_return_status                OUT NOCOPY VARCHAR2,
593     x_msg_count                    OUT NOCOPY NUMBER,
594     x_msg_data                     OUT NOCOPY VARCHAR2,
595     p_rle_tbl                      IN rle_tbl_type,
596     x_rle_tbl                      OUT NOCOPY rle_tbl_type) IS
597 
598     l_api_version                  CONSTANT NUMBER := 1;
599     l_api_name                     CONSTANT VARCHAR2(30) := 'TBL_insert_row';
600     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
601     l_overall_status               VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
602     i                              NUMBER := 0;
603   BEGIN
604 
605     OKE_API.init_msg_list(p_init_msg_list);
606     -- Make sure PL/SQL table has records in it before passing
607     IF (p_rle_tbl.COUNT > 0) THEN
608       i := p_rle_tbl.FIRST;
609       LOOP
610         insert_row (
611           p_api_version                  => p_api_version,
612           p_init_msg_list                => OKE_API.G_FALSE,
613           x_return_status                => x_return_status,
614           x_msg_count                    => x_msg_count,
615           x_msg_data                     => x_msg_data,
616 
617           p_rle_rec                      => p_rle_tbl(i),
618           x_rle_rec                      => x_rle_tbl(i));
619 
620 		-- store the highest degree of error
621 	 If x_return_status <> OKE_API.G_RET_STS_SUCCESS Then
622 	   If l_overall_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
623 	     l_overall_status := x_return_status;
624 	   End If;
625 	 End If;
626 
627         EXIT WHEN (i = p_rle_tbl.LAST);
628 
629         i := p_rle_tbl.NEXT(i);
630       END LOOP;
631 	 -- return overall status
632 	 x_return_status := l_overall_status;
633     END IF;
634 
635   EXCEPTION
636     WHEN OKE_API.G_EXCEPTION_ERROR THEN
637       x_return_status := OKE_API.HANDLE_EXCEPTIONS
638       (
639         l_api_name,
640         G_PKG_NAME,
641         'OKE_API.G_RET_STS_ERROR',
642         x_msg_count,
643         x_msg_data,
644         '_PVT'
645       );
646     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
647       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
648       (
649         l_api_name,
650         G_PKG_NAME,
651         'OKE_API.G_RET_STS_UNEXP_ERROR',
652         x_msg_count,
653         x_msg_data,
654         '_PVT'
655       );
656     WHEN OTHERS THEN
657       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
658       (
659         l_api_name,
660         G_PKG_NAME,
661         'OTHERS',
662         x_msg_count,
663         x_msg_data,
664         '_PVT'
665       );
666   END insert_row; -- table level
667 
668 
669 
670 
671 
672 
673 
674 
675   PROCEDURE update_row(
676     p_api_version                  IN NUMBER,
677     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
678     x_return_status                OUT NOCOPY VARCHAR2,
679     x_msg_count                    OUT NOCOPY NUMBER,
680     x_msg_data                     OUT NOCOPY VARCHAR2,
681     p_rle_rec                      IN rle_rec_type,
682     x_rle_rec                      OUT NOCOPY rle_rec_type) IS
683 
684     l_api_version                  CONSTANT NUMBER := 1.0;
685     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
686     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
687     l_rle_rec                      rle_rec_type := p_rle_rec;
688     l_def_rle_rec                  rle_rec_type;
689     lx_rle_rec                     rle_rec_type;
690 
691     -------------------------------
692     -- FUNCTION fill_who_columns --
693     -------------------------------
694     FUNCTION fill_who_columns (
695       p_rle_rec	IN rle_rec_type
696     ) RETURN rle_rec_type IS
697 
698       l_rle_rec	rle_rec_type := p_rle_rec;
699 
700     BEGIN
701       l_rle_rec.LAST_UPDATE_DATE := SYSDATE;
702       l_rle_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
703       l_rle_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
704       RETURN(l_rle_rec);
705     END fill_who_columns;
706 
707 
708 
709   FUNCTION set_attributes(
710 	      p_rle_rec IN  rle_rec_type,
711               x_rle_rec OUT NOCOPY rle_rec_type
712     ) RETURN VARCHAR2 IS
713       l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
714     BEGIN
715       	x_rle_rec := p_rle_rec;
716       RETURN(l_return_status);
717     END Set_Attributes;
718 
719 
720   BEGIN  -- update row
721 
722 
723     l_return_status := OKE_API.START_ACTIVITY(l_api_name,
724                                               G_PKG_NAME,
725                                               p_init_msg_list,
726                                               l_api_version,
727                                               p_api_version,
728                                               '_PVT',
729                                               x_return_status);
730 
731 
732     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
733       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
734     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
735       RAISE OKE_API.G_EXCEPTION_ERROR;
736     END IF;
737 
738 
739     l_return_status := Set_Attributes(
740       p_rle_rec,                        -- IN
741       l_rle_rec);                       -- OUT
742 
743     --- If any errors happen abort API
744     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
745       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
746     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
747       RAISE OKE_API.G_EXCEPTION_ERROR;
748     END IF;
749 
750 
751     l_def_rle_rec:=l_rle_rec;
752 
753     l_def_rle_rec := fill_who_columns(l_def_rle_rec);
754 
755 
756     --- Validate all non-missing attributes (Item Level Validation)
757     l_return_status := Validate_Attributes(l_def_rle_rec);
758 
759     --- If any errors happen abort API
760     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
761       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
762     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
763       RAISE OKE_API.G_EXCEPTION_ERROR;
764     END IF;
765 
766     l_return_status := Validate_Record(l_def_rle_rec);
767     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
768       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
769     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
770       RAISE OKE_API.G_EXCEPTION_ERROR;
771     END IF;
772 
773 
774     UPDATE OKE_K_RELATED_ENTITIES
775     SET
776 	K_HEADER_ID = l_def_rle_rec.K_HEADER_ID,
777 	CHG_REQUEST_ID = l_def_rle_rec.CHG_REQUEST_ID,
778 	RELATED_ENTITY_ID = l_def_rle_rec.RELATED_ENTITY_ID,
779         RELATED_ENTITY_VERSION = l_def_rle_rec.RELATED_ENTITY_VERSION,
780 	CREATION_DATE	= l_def_rle_rec.CREATION_DATE,
781 	CREATED_BY = l_def_rle_rec.CREATED_BY,
782 	LAST_UPDATE_DATE = l_def_rle_rec.LAST_UPDATE_DATE,
783 	LAST_UPDATED_BY = l_def_rle_rec.LAST_UPDATED_BY,
784 	LAST_UPDATE_LOGIN = l_def_rle_rec.LAST_UPDATE_LOGIN
785     WHERE
786 	rowid = l_def_rle_rec.ROW_ID;
787 
788     x_rle_rec := l_def_rle_rec;
789 
790     OKE_API.END_ACTIVITY(x_msg_count, x_msg_data);
791 
792   EXCEPTION
793     WHEN OKE_API.G_EXCEPTION_ERROR THEN
794       x_return_status := OKE_API.HANDLE_EXCEPTIONS
795       (
796         l_api_name,
797         G_PKG_NAME,
798         'OKE_API.G_RET_STS_ERROR',
799         x_msg_count,
800         x_msg_data,
801         '_PVT'
802       );
803     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
804       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
805       (
806         l_api_name,
807         G_PKG_NAME,
808         'OKE_API.G_RET_STS_UNEXP_ERROR',
809         x_msg_count,
810         x_msg_data,
811         '_PVT'
812       );
813     WHEN OTHERS THEN
814       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
815       (
816         l_api_name,
817         G_PKG_NAME,
818         'OTHERS',
819         x_msg_count,
820         x_msg_data,
821         '_PVT'
822       );
823   END update_row;   -- row level update
824 
825 
826 
827   PROCEDURE update_row(
828     p_api_version                  IN NUMBER,
829     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
830     x_return_status                OUT NOCOPY VARCHAR2,
831     x_msg_count                    OUT NOCOPY NUMBER,
832     x_msg_data                     OUT NOCOPY VARCHAR2,
833     p_rle_tbl                     IN rle_tbl_type,
834     x_rle_tbl                     OUT NOCOPY rle_tbl_type) IS
835 
836     l_api_version                 CONSTANT NUMBER := 1.0;
837     l_api_name                     CONSTANT VARCHAR2(30) := 'TBL_update_row';
838 
839 
840     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
841     l_overall_status               VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
842     i                              NUMBER := 0;
843   BEGIN
844 
845     OKE_API.init_msg_list(p_init_msg_list);
846     -- Make sure PL/SQL table has records in it before passing
847     IF (p_rle_tbl.COUNT > 0) THEN
848       i := p_rle_tbl.FIRST;
849       LOOP
850 
851         update_row (
852           p_api_version                  => p_api_version,
853           p_init_msg_list                => OKE_API.G_FALSE,
854           x_return_status                => x_return_status,
855           x_msg_count                    => x_msg_count,
856           x_msg_data                     => x_msg_data,
857           p_rle_rec                      => p_rle_tbl(i),
858           x_rle_rec                     => x_rle_tbl(i));
859 
860 		-- store the highest degree of error
861 	If x_return_status <> OKE_API.G_RET_STS_SUCCESS Then
862 	  If l_overall_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
863 	    l_overall_status := x_return_status;
864 	  End If;
865 	End If;
866 
867         EXIT WHEN (i = p_rle_tbl.LAST);
868         i := p_rle_tbl.NEXT(i);
869       END LOOP;
870 	 -- return overall status
871 	 x_return_status := l_overall_status;
872     END IF;
873 
874   EXCEPTION
875     WHEN OKE_API.G_EXCEPTION_ERROR THEN
876       x_return_status := OKE_API.HANDLE_EXCEPTIONS
877       (
878         l_api_name,
879         G_PKG_NAME,
880         'OKE_API.G_RET_STS_ERROR',
881         x_msg_count,
882         x_msg_data,
883         '_PVT'
884       );
885 
886     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
887       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
888       (
889         l_api_name,
890         G_PKG_NAME,
891         'OKE_API.G_RET_STS_UNEXP_ERROR',
892         x_msg_count,
893         x_msg_data,
894         '_PVT'
895       );
896     WHEN OTHERS THEN
897       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
898       (
899         l_api_name,
900         G_PKG_NAME,
901         'OTHERS',
902         x_msg_count,
903         x_msg_data,
904         '_PVT'
905       );
906   END update_row;  -- table level update
907 
908 
909   PROCEDURE delete_row(
910     p_api_version                  IN NUMBER,
911     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
912     x_return_status                OUT NOCOPY VARCHAR2,
913     x_msg_count                    OUT NOCOPY NUMBER,
914     x_msg_data                     OUT NOCOPY VARCHAR2,
915     p_rle_rec                     IN rle_rec_type) IS
916 
917     l_api_version                 CONSTANT NUMBER := 1;
918     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
919     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
920     l_rle_rec                     rle_rec_type := p_rle_rec;
921 
922   BEGIN
923 
924     l_return_status := OKE_API.START_ACTIVITY(l_api_name,
925                                               p_init_msg_list,
926                                               '_PVT',
927                                               x_return_status);
928 
929 
930     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
931       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
932     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
933       RAISE OKE_API.G_EXCEPTION_ERROR;
934     END IF;
935 
936 
937     DELETE FROM OKE_K_RELATED_ENTITIES
938     WHERE rowid = p_rle_rec.ROW_ID;
939 
940     OKE_API.END_ACTIVITY(x_msg_count, x_msg_data);
941 
942   EXCEPTION
943     WHEN OKE_API.G_EXCEPTION_ERROR THEN
944       x_return_status := OKE_API.HANDLE_EXCEPTIONS
945       (
946         l_api_name,
947         G_PKG_NAME,
948         'OKE_API.G_RET_STS_ERROR',
949         x_msg_count,
950         x_msg_data,
951         '_PVT'
952       );
953     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
954       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
955       (
956         l_api_name,
957         G_PKG_NAME,
958         'OKE_API.G_RET_STS_UNEXP_ERROR',
959         x_msg_count,
960         x_msg_data,
961         '_PVT'
962       );
963     WHEN OTHERS THEN
964       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
965       (
966         l_api_name,
967         G_PKG_NAME,
968         'OTHERS',
969         x_msg_count,
970         x_msg_data,
971         '_PVT'
972       );
973   END delete_row;
974 
975 
976 -- table level delete
977 
978   PROCEDURE delete_row(
979     p_api_version                  IN NUMBER,
980     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
981     x_return_status                OUT NOCOPY VARCHAR2,
982     x_msg_count                    OUT NOCOPY NUMBER,
983     x_msg_data                     OUT NOCOPY VARCHAR2,
984     p_rle_tbl                     IN rle_tbl_type) IS
985 
986     l_api_version                 CONSTANT NUMBER := 1;
987     l_api_name                     CONSTANT VARCHAR2(30) := 'TBL_delete_row';
988     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
989     l_overall_status               VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
990     i                              NUMBER := 0;
991   BEGIN
992     OKE_API.init_msg_list(p_init_msg_list);
993 
994     -- Make sure PL/SQL table has records in it before passing
995     IF (p_rle_tbl.COUNT > 0) THEN
996       i := p_rle_tbl.FIRST;
997       LOOP
998         delete_row (
999           p_api_version                  => p_api_version,
1000           p_init_msg_list                => OKE_API.G_FALSE,
1001           x_return_status                => x_return_status,
1002           x_msg_count                    => x_msg_count,
1003           x_msg_data                     => x_msg_data,
1004           p_rle_rec                      => p_rle_tbl(i));
1005 
1006 
1007 
1008 	-- store the highest degree of error
1009 	If x_return_status <> OKE_API.G_RET_STS_SUCCESS Then
1010 	  If l_overall_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
1011 	    l_overall_status := x_return_status;
1012           End If;
1013 	End If;
1014 
1015         EXIT WHEN (i = p_rle_tbl.LAST);
1016         i := p_rle_tbl.NEXT(i);
1017       END LOOP;
1018 
1019 	 -- return overall status
1020 	 x_return_status := l_overall_status;
1021     END IF;
1022 
1023   EXCEPTION
1024     WHEN OKE_API.G_EXCEPTION_ERROR THEN
1025       x_return_status := OKE_API.HANDLE_EXCEPTIONS
1026       (
1027         l_api_name,
1028         G_PKG_NAME,
1029         'OKE_API.G_RET_STS_ERROR',
1030         x_msg_count,
1031         x_msg_data,
1032         '_PVT'
1033       );
1034     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1035       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
1036       (
1037         l_api_name,
1038         G_PKG_NAME,
1039         'OKE_API.G_RET_STS_UNEXP_ERROR',
1040         x_msg_count,
1041         x_msg_data,
1042         '_PVT'
1043       );
1044     WHEN OTHERS THEN
1045       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
1046       (
1047         l_api_name,
1048         G_PKG_NAME,
1049         'OTHERS',
1050         x_msg_count,
1051         x_msg_data,
1052         '_PVT'
1053       );
1054   END delete_row; -- table level delete
1055 
1056 
1057 -- validate row
1058 
1059   PROCEDURE validate_row(
1060     p_api_version       IN NUMBER,
1061     p_init_msg_list     IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
1062     x_return_status     OUT NOCOPY VARCHAR2,
1063     x_msg_count         OUT NOCOPY NUMBER,
1064     x_msg_data          OUT NOCOPY VARCHAR2,
1065     p_rle_rec           IN rle_rec_type
1066   ) IS
1067 
1068     l_api_version       CONSTANT NUMBER := 1;
1069     l_api_name          CONSTANT VARCHAR2(30) := 'B_validate_row';
1070     l_return_status     VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
1071     l_rle_rec           rle_rec_type := p_rle_rec;
1072 
1073   BEGIN
1074     l_return_status := OKE_API.START_ACTIVITY(l_api_name,
1075 					      G_PKG_NAME,
1076 					      p_init_msg_list,
1077 					      l_api_version,
1078 					      p_api_version,
1079 					      '_PVT',
1080 					      x_return_status);
1081     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
1082       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
1083     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
1084 
1085       RAISE OKE_API.G_EXCEPTION_ERROR;
1086     END IF;
1087     --- Validate all non-missing attributes (Item Level Validation)
1088     l_return_status := Validate_Attributes(l_rle_rec);
1089     --- If any errors happen abort API
1090     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
1091       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
1092     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
1093       RAISE OKE_API.G_EXCEPTION_ERROR;
1094     END IF;
1095     l_return_status := Validate_Record(l_rle_rec);
1096 
1097     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
1098       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
1099     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
1100       RAISE OKE_API.G_EXCEPTION_ERROR;
1101     END IF;
1102     OKE_API.END_ACTIVITY(x_msg_count, x_msg_data);
1103   EXCEPTION
1104     WHEN OKE_API.G_EXCEPTION_ERROR THEN
1105       x_return_status := OKE_API.HANDLE_EXCEPTIONS
1106       (
1107         l_api_name,
1108         G_PKG_NAME,
1109         'OKE_API.G_RET_STS_ERROR',
1110         x_msg_count,
1111         x_msg_data,
1112         '_PVT'
1113       );
1114     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1115       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
1116       (
1117         l_api_name,
1118         G_PKG_NAME,
1119         'OKE_API.G_RET_STS_UNEXP_ERROR',
1120         x_msg_count,
1121         x_msg_data,
1122         '_PVT'
1123       );
1124     WHEN OTHERS THEN
1125       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
1126       (
1127         l_api_name,
1128         G_PKG_NAME,
1129         'OTHERS',
1130         x_msg_count,
1131         x_msg_data,
1132         '_PVT'
1133       );
1134   END validate_row;
1135 
1136   PROCEDURE validate_row(
1137     p_api_version                  IN NUMBER,
1138     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
1139     x_return_status                OUT NOCOPY VARCHAR2,
1140     x_msg_count                    OUT NOCOPY NUMBER,
1141     x_msg_data                     OUT NOCOPY VARCHAR2,
1142     p_rle_tbl                      IN rle_tbl_type
1143     ) IS
1144 
1145     l_api_version                  CONSTANT NUMBER := 1;
1146     l_api_name                     CONSTANT VARCHAR2(30) := 'TBL_validate_row';
1147     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
1148     l_overall_status               VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
1149     i                              NUMBER := 0;
1150   BEGIN
1151     OKE_API.init_msg_list(p_init_msg_list);
1152     -- Make sure PL/SQL table has records in it before passing
1153     IF (p_rle_tbl.COUNT > 0) THEN
1154       i := p_rle_tbl.FIRST;
1155       LOOP
1156         validate_row (
1157           p_api_version                  => p_api_version,
1158           p_init_msg_list                => OKE_API.G_FALSE,
1159           x_return_status                => x_return_status,
1160           x_msg_count                    => x_msg_count,
1161           x_msg_data                     => x_msg_data,
1162           p_rle_rec                     => p_rle_tbl(i));
1163 
1164 		-- store the highest degree of error
1165 	If x_return_status <> OKE_API.G_RET_STS_SUCCESS Then
1166 	  If l_overall_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
1167 	     l_overall_status := x_return_status;
1168 	  End If;
1169 	End If;
1170 
1171         EXIT WHEN (i = p_rle_tbl.LAST);
1172         i := p_rle_tbl.NEXT(i);
1173       END LOOP;
1174 	 -- return overall status
1175 	 x_return_status := l_overall_status;
1176     END IF;
1177 
1178   EXCEPTION
1179     WHEN OKE_API.G_EXCEPTION_ERROR THEN
1180       x_return_status := OKE_API.HANDLE_EXCEPTIONS
1181       (
1182         l_api_name,
1183         G_PKG_NAME,
1184         'OKE_API.G_RET_STS_ERROR',
1185         x_msg_count,
1186         x_msg_data,
1187         '_PVT'
1188       );
1189     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1190       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
1191       (
1192         l_api_name,
1193         G_PKG_NAME,
1194         'OKE_API.G_RET_STS_UNEXP_ERROR',
1195         x_msg_count,
1196         x_msg_data,
1197         '_PVT'
1198       );
1199     WHEN OTHERS THEN
1200       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
1201       (
1202         l_api_name,
1203         G_PKG_NAME,
1204         'OTHERS',
1205         x_msg_count,
1206         x_msg_data,
1207         '_PVT'
1208       );
1209   END validate_row;
1210 
1211 
1212 
1213 
1214   PROCEDURE lock_row(
1215     p_api_version                  IN NUMBER,
1216     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
1217     x_return_status                OUT NOCOPY VARCHAR2,
1218     x_msg_count                    OUT NOCOPY NUMBER,
1219     x_msg_data                     OUT NOCOPY VARCHAR2,
1220     p_rle_rec                     IN rle_rec_type) IS
1221 
1222 
1223     l_api_version                  CONSTANT NUMBER := 1;
1224     l_api_name                     CONSTANT VARCHAR2(30) := 'lock_row';
1225     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
1226     l_row_notfound                BOOLEAN := FALSE;
1227 
1228     l_chr_id                       NUMBER;
1229     l_rle_id                       NUMBER;
1230     l_ver_id			   NUMBER;
1231 
1232 	E_Resource_Busy		EXCEPTION;
1233 	PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
1234 
1235 
1236 	CURSOR lock_csr (p IN rle_rec_type) IS
1237 	SELECT k_header_id,related_entity_id,related_entity_version FROM oke_k_related_entities a
1238 	WHERE  a.rowid = p.ROW_ID
1239 
1240 	FOR UPDATE NOWAIT;
1241 
1242 
1243 BEGIN
1244     l_return_status := OKE_API.START_ACTIVITY(l_api_name,
1245                                               p_init_msg_list,
1246                                               '_PVT',
1247                                               x_return_status);
1248     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
1249       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
1250     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
1251       RAISE OKE_API.G_EXCEPTION_ERROR;
1252     END IF;
1253 
1254 
1255     BEGIN
1256       OPEN lock_csr(p_rle_rec);
1257       FETCH lock_csr INTO l_chr_id,l_rle_id,l_ver_id;
1258       l_row_notfound := lock_csr%NOTFOUND;
1259       CLOSE lock_csr;
1260 
1261 
1262     EXCEPTION
1263       WHEN E_Resource_Busy THEN
1264         IF (lock_csr%ISOPEN) THEN
1265           CLOSE lock_csr;
1266         END IF;
1267         OKE_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
1268         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
1269     END;
1270 
1271 
1272     IF (l_row_notfound) THEN
1273       OKE_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
1274       RAISE OKE_API.G_EXCEPTION_ERROR;
1275     END IF;
1276 
1277 	OKE_API.END_ACTIVITY(x_msg_count, x_msg_data);
1278 
1279 EXCEPTION
1280     WHEN OKE_API.G_EXCEPTION_ERROR THEN
1281       x_return_status := OKE_API.HANDLE_EXCEPTIONS
1282       (
1283         l_api_name,
1284         G_PKG_NAME,
1285         'OKE_API.G_RET_STS_ERROR',
1286         x_msg_count,
1287         x_msg_data,
1288         '_PVT'
1289       );
1290     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1291       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
1292       (
1293         l_api_name,
1294         G_PKG_NAME,
1295         'OKE_API.G_RET_STS_UNEXP_ERROR',
1296         x_msg_count,
1297         x_msg_data,
1298         '_PVT'
1299       );
1300     WHEN OTHERS THEN
1301       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
1302       (
1303         l_api_name,
1304         G_PKG_NAME,
1305         'OTHERS',
1306         x_msg_count,
1307         x_msg_data,
1308         '_PVT'
1309       );
1310   END lock_row;
1311 
1312 
1313 END OKE_RLE_PVT;
1314