[Home] [Help]
PACKAGE BODY: APPS.OKL_IPM_PVT
Source
1 PACKAGE BODY OKL_IPM_PVT AS
2 /* $Header: OKLSIPMB.pls 115.1 2002/11/30 09:14:45 spillaip noship $ */
3 ---------------------------------------------------------------------------
4 -- PROCEDURE load_error_tbl
5 ---------------------------------------------------------------------------
6 PROCEDURE load_error_tbl (
7 px_error_rec IN OUT NOCOPY OKC_API.ERROR_REC_TYPE,
8 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
9
10 j INTEGER := NVL(px_error_tbl.LAST, 0) + 1;
11 last_msg_idx INTEGER := FND_MSG_PUB.COUNT_MSG;
12 l_msg_idx INTEGER := FND_MSG_PUB.G_NEXT;
13 BEGIN
14 -- FND_MSG_PUB has a small error in it. If we call FND_MSG_PUB.COUNT_AND_GET before
15 -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
16 -- message stack gets set to 1. This makes sense until we call FND_MSG_PUB.GET which
17 -- automatically increments the index by 1, (making it 2), however, when the GET function
18 -- attempts to pull message 2, we get a NO_DATA_FOUND exception because there isn't any
19 -- message 2. To circumvent this problem, check the amount of messages and compensate.
20 -- Again, this error only occurs when 1 message is on the stack because COUNT_AND_GET
21 -- will only update the index variable when 1 and only 1 message is on the stack.
22 IF (last_msg_idx = 1) THEN
23 l_msg_idx := FND_MSG_PUB.G_FIRST;
24 END IF;
25 LOOP
26 fnd_msg_pub.get(
27 p_msg_index => l_msg_idx,
28 p_encoded => fnd_api.g_false,
29 p_data => px_error_rec.msg_data,
30 p_msg_index_out => px_error_rec.msg_count);
31 px_error_tbl(j) := px_error_rec;
32 j := j + 1;
33 EXIT WHEN (px_error_rec.msg_count = last_msg_idx);
34 END LOOP;
35 END load_error_tbl;
36 ---------------------------------------------------------------------------
37 -- FUNCTION find_highest_exception
38 ---------------------------------------------------------------------------
39 -- Finds the highest exception (G_RET_STS_UNEXP_ERROR)
40 -- in a OKC_API.ERROR_TBL_TYPE, and returns it.
41 FUNCTION find_highest_exception(
42 p_error_tbl IN OKC_API.ERROR_TBL_TYPE
43 ) RETURN VARCHAR2 IS
44 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
45 i INTEGER := 1;
46 BEGIN
47 IF (p_error_tbl.COUNT > 0) THEN
48 i := p_error_tbl.FIRST;
49 LOOP
50 IF (p_error_tbl(i).error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
51 IF (l_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
52 l_return_status := p_error_tbl(i).error_type;
53 END IF;
54 END IF;
55 EXIT WHEN (i = p_error_tbl.LAST);
56 i := p_error_tbl.NEXT(i);
57 END LOOP;
58 END IF;
59 RETURN(l_return_status);
60 END find_highest_exception;
61 ---------------------------------------------------------------------------
62 -- FUNCTION get_seq_id
63 ---------------------------------------------------------------------------
64 FUNCTION get_seq_id RETURN NUMBER IS
65 BEGIN
66 RETURN(okc_p_util.raw_to_number(sys_guid()));
67 END get_seq_id;
68
69 ---------------------------------------------------------------------------
70 -- PROCEDURE qc
71 ---------------------------------------------------------------------------
72 PROCEDURE qc IS
73 BEGIN
74 null;
75 END qc;
76
77 ---------------------------------------------------------------------------
78 -- PROCEDURE change_version
79 ---------------------------------------------------------------------------
80 PROCEDURE change_version IS
81 BEGIN
82 null;
83 END change_version;
84
85 ---------------------------------------------------------------------------
86 -- PROCEDURE api_copy
87 ---------------------------------------------------------------------------
88 PROCEDURE api_copy IS
89 BEGIN
90 null;
91 END api_copy;
92
93 ---------------------------------------------------------------------------
94 -- FUNCTION get_rec for: OKL_TRX_PARAMS_B
95 ---------------------------------------------------------------------------
96 FUNCTION get_rec (
97 p_ipm_rec IN ipm_rec_type,
98 x_no_data_found OUT NOCOPY BOOLEAN
99 ) RETURN ipm_rec_type IS
100 CURSOR okl_trx_params_b_pk_csr (p_id IN NUMBER) IS
101 SELECT
102 ID,
103 SOURCE_TABLE,
104 SOURCE_ID,
105 PARAM_NAME,
106 PARAM_VALUE,
107 CREATED_BY,
108 CREATION_DATE,
109 LAST_UPDATED_BY,
110 LAST_UPDATE_DATE,
111 LAST_UPDATE_LOGIN
112 FROM Okl_Trx_Params_B
113 WHERE okl_trx_params_b.id = p_id;
114 l_okl_trx_params_b_pk okl_trx_params_b_pk_csr%ROWTYPE;
115 l_ipm_rec ipm_rec_type;
116 BEGIN
117 x_no_data_found := TRUE;
118 -- Get current database values
119 OPEN okl_trx_params_b_pk_csr (p_ipm_rec.id);
120 FETCH okl_trx_params_b_pk_csr INTO
121 l_ipm_rec.id,
122 l_ipm_rec.source_table,
123 l_ipm_rec.source_id,
124 l_ipm_rec.param_name,
125 l_ipm_rec.param_value,
126 l_ipm_rec.created_by,
127 l_ipm_rec.creation_date,
128 l_ipm_rec.last_updated_by,
129 l_ipm_rec.last_update_date,
130 l_ipm_rec.last_update_login;
131 x_no_data_found := okl_trx_params_b_pk_csr%NOTFOUND;
132 CLOSE okl_trx_params_b_pk_csr;
133 RETURN(l_ipm_rec);
134 END get_rec;
135
136 ------------------------------------------------------------------
137 -- This version of get_rec sets error messages if no data found --
138 ------------------------------------------------------------------
139 FUNCTION get_rec (
140 p_ipm_rec IN ipm_rec_type,
141 x_return_status OUT NOCOPY VARCHAR2
142 ) RETURN ipm_rec_type IS
143 l_ipm_rec ipm_rec_type;
144 l_row_notfound BOOLEAN := TRUE;
145 BEGIN
146 x_return_status := OKC_API.G_RET_STS_SUCCESS;
147 l_ipm_rec := get_rec(p_ipm_rec, l_row_notfound);
148 IF (l_row_notfound) THEN
149 OKC_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
150 x_return_status := OKC_API.G_RET_STS_ERROR;
151 END IF;
152 RETURN(l_ipm_rec);
153 END get_rec;
154 -----------------------------------------------------------
155 -- So we don't have to pass an "l_row_notfound" variable --
156 -----------------------------------------------------------
157 FUNCTION get_rec (
158 p_ipm_rec IN ipm_rec_type
159 ) RETURN ipm_rec_type IS
160 l_row_not_found BOOLEAN := TRUE;
161 BEGIN
162 RETURN(get_rec(p_ipm_rec, l_row_not_found));
163 END get_rec;
164 ---------------------------------------------------------------------------
165 -- FUNCTION null_out_defaults for: OKL_TRX_PARAMS_B
166 ---------------------------------------------------------------------------
167 FUNCTION null_out_defaults (
168 p_ipm_rec IN ipm_rec_type
169 ) RETURN ipm_rec_type IS
170 l_ipm_rec ipm_rec_type := p_ipm_rec;
171 BEGIN
172 IF (l_ipm_rec.id = OKC_API.G_MISS_NUM ) THEN
173 l_ipm_rec.id := NULL;
174 END IF;
175 IF (l_ipm_rec.source_table = OKC_API.G_MISS_CHAR ) THEN
176 l_ipm_rec.source_table := NULL;
177 END IF;
178 IF (l_ipm_rec.source_id = OKC_API.G_MISS_NUM ) THEN
179 l_ipm_rec.source_id := NULL;
180 END IF;
181 IF (l_ipm_rec.param_name = OKC_API.G_MISS_CHAR ) THEN
182 l_ipm_rec.param_name := NULL;
183 END IF;
184 IF (l_ipm_rec.param_value = OKC_API.G_MISS_CHAR ) THEN
185 l_ipm_rec.param_value := NULL;
186 END IF;
187 IF (l_ipm_rec.created_by = OKC_API.G_MISS_NUM ) THEN
188 l_ipm_rec.created_by := NULL;
189 END IF;
190 IF (l_ipm_rec.creation_date = OKC_API.G_MISS_DATE ) THEN
191 l_ipm_rec.creation_date := NULL;
192 END IF;
193 IF (l_ipm_rec.last_updated_by = OKC_API.G_MISS_NUM ) THEN
194 l_ipm_rec.last_updated_by := NULL;
195 END IF;
196 IF (l_ipm_rec.last_update_date = OKC_API.G_MISS_DATE ) THEN
197 l_ipm_rec.last_update_date := NULL;
198 END IF;
199 IF (l_ipm_rec.last_update_login = OKC_API.G_MISS_NUM ) THEN
200 l_ipm_rec.last_update_login := NULL;
201 END IF;
202 RETURN(l_ipm_rec);
203 END null_out_defaults;
204 ---------------------------------
205 -- Validate_Attributes for: ID --
206 ---------------------------------
207 PROCEDURE validate_id(
208 x_return_status OUT NOCOPY VARCHAR2,
209 p_id IN NUMBER) IS
210 BEGIN
211 x_return_status := OKC_API.G_RET_STS_SUCCESS;
212 -- dbms_output.put_line('No. 4'||p_id);
213 IF (p_id = OKC_API.G_MISS_NUM OR
214 p_id IS NULL)
215 THEN
216 OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'id');
217 x_return_status := OKC_API.G_RET_STS_ERROR;
218 RAISE G_EXCEPTION_HALT_VALIDATION;
219 END IF;
220 -- dbms_output.put_line('No. 5');
221 EXCEPTION
222 WHEN G_EXCEPTION_HALT_VALIDATION THEN
223 null;
224 WHEN OTHERS THEN
225 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
226 ,p_msg_name => G_UNEXPECTED_ERROR
227 ,p_token1 => G_SQLCODE_TOKEN
228 ,p_token1_value => SQLCODE
229 ,p_token2 => G_SQLERRM_TOKEN
230 ,p_token2_value => SQLERRM);
231 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
232 END validate_id;
233 -------------------------------------------
234 -- Validate_Attributes for: PARAM_NAME --
235 -------------------------------------------
236 PROCEDURE validate_param_name(
237 x_return_status OUT NOCOPY VARCHAR2,
238 p_param_name IN VARCHAR2) IS
239
240 l_param_name_status VARCHAR2(1);
241 BEGIN
242 x_return_status := OKC_API.G_RET_STS_SUCCESS;
243 IF (p_param_name = OKC_API.G_MISS_CHAR OR
244 p_param_name IS NULL)
245 THEN
246 OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'param_name');
247 x_return_status := OKC_API.G_RET_STS_ERROR;
248 RAISE G_EXCEPTION_HALT_VALIDATION;
249 END IF;
250
251 l_param_name_status := OKL_ACCOUNTING_UTIL.validate_lookup_code
252 (p_lookup_type => 'OKL_TRX_PARAM_NAME',
253 p_lookup_code => p_param_name,
254 p_app_id => 540,
255 p_view_app_id => 0);
256
257 -- dbms_output.put_line('No. 7'||l_param_name_status||p_param_name);
258 IF l_param_name_status = 'T' THEN
259 x_return_status := OKC_API.G_RET_STS_SUCCESS;
260 ELSE
261 OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'param_name');
262 x_return_status := OKC_API.G_RET_STS_ERROR;
263 RAISE G_EXCEPTION_HALT_VALIDATION;
264 END IF;
265 EXCEPTION
266 WHEN G_EXCEPTION_HALT_VALIDATION THEN
267 null;
268 WHEN OTHERS THEN
269 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
270 ,p_msg_name => G_UNEXPECTED_ERROR
271 ,p_token1 => G_SQLCODE_TOKEN
272 ,p_token1_value => SQLCODE
273 ,p_token2 => G_SQLERRM_TOKEN
274 ,p_token2_value => SQLERRM);
275 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
276 END validate_param_name;
277 -------------------------------------------
278 -- Validate_Attributes for: SOURCE_TABLE --
279 -------------------------------------------
280 PROCEDURE validate_source_table(
281 x_return_status OUT NOCOPY VARCHAR2,
282 p_source_table IN VARCHAR2) IS
283
284 l_source_table_status VARCHAR2(1);
285 BEGIN
286 x_return_status := OKC_API.G_RET_STS_SUCCESS;
287 IF (p_source_table = OKC_API.G_MISS_CHAR OR
288 p_source_table IS NULL)
289 THEN
290 OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'source_table');
291 x_return_status := OKC_API.G_RET_STS_ERROR;
292 RAISE G_EXCEPTION_HALT_VALIDATION;
293 END IF;
294
295 l_source_table_status := OKL_ACCOUNTING_UTIL.validate_lookup_code
296 (p_lookup_type => 'OKL_TRX_PARAM_SOURCE_TABLE',
297 p_lookup_code => p_source_table,
298 p_app_id => 540,
299 p_view_app_id => 0);
300
301 IF l_source_table_status = 'T' THEN
302 x_return_status := OKC_API.G_RET_STS_SUCCESS;
303 ELSE
304 OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'source_table');
305 x_return_status := OKC_API.G_RET_STS_ERROR;
306 RAISE G_EXCEPTION_HALT_VALIDATION;
307 END IF;
308 EXCEPTION
309 WHEN G_EXCEPTION_HALT_VALIDATION THEN
310 null;
311 WHEN OTHERS THEN
312 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
313 ,p_msg_name => G_UNEXPECTED_ERROR
314 ,p_token1 => G_SQLCODE_TOKEN
315 ,p_token1_value => SQLCODE
316 ,p_token2 => G_SQLERRM_TOKEN
317 ,p_token2_value => SQLERRM);
318 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
319 END validate_source_table;
320 ----------------------------------------
321 -- Validate_Attributes for: SOURCE_ID --
322 ----------------------------------------
323 PROCEDURE validate_source_id(
324 x_return_status OUT NOCOPY VARCHAR2,
325 p_source_id IN NUMBER) IS
326 BEGIN
327 x_return_status := OKC_API.G_RET_STS_SUCCESS;
328 IF (p_source_id = OKC_API.G_MISS_NUM OR
329 p_source_id IS NULL)
330 THEN
331 OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'source_id');
332 x_return_status := OKC_API.G_RET_STS_ERROR;
333 RAISE G_EXCEPTION_HALT_VALIDATION;
334 END IF;
335 EXCEPTION
336 WHEN G_EXCEPTION_HALT_VALIDATION THEN
337 null;
338 WHEN OTHERS THEN
339 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
340 ,p_msg_name => G_UNEXPECTED_ERROR
341 ,p_token1 => G_SQLCODE_TOKEN
342 ,p_token1_value => SQLCODE
343 ,p_token2 => G_SQLERRM_TOKEN
344 ,p_token2_value => SQLERRM);
345 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
346 END validate_source_id;
347 ---------------------------------------------------------------------------
348 -- FUNCTION Validate_Attributes
349 ---------------------------------------------------------------------------
350 ----------------------------------------------
351 -- Validate_Attributes for:OKL_TRX_PARAMS_B --
352 ----------------------------------------------
353 FUNCTION Validate_Attributes (
354 p_ipm_rec IN ipm_rec_type
355 ) RETURN VARCHAR2 IS
356 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
357 x_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
358 BEGIN
359 -----------------------------
360 -- Column Level Validation --
361 -----------------------------
362 -- ***
363 -- id
364 -- ***
365 -- dbms_output.put_line('No. 1');
366 validate_id(x_return_status, p_ipm_rec.id);
367 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
368 l_return_status := x_return_status;
369 RAISE G_EXCEPTION_HALT_VALIDATION;
370 END IF;
371
372 -- ***
373 -- source_table
374 -- ***
375 -- dbms_output.put_line('No. 2');
376 validate_source_table(x_return_status, p_ipm_rec.source_table);
377 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
378 l_return_status := x_return_status;
379 RAISE G_EXCEPTION_HALT_VALIDATION;
380 END IF;
381
382 -- ***
383 -- source_id
384 -- ***
385 -- dbms_output.put_line('No. 3');
386 validate_source_id(x_return_status, p_ipm_rec.source_id);
387 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
388 l_return_status := x_return_status;
389 RAISE G_EXCEPTION_HALT_VALIDATION;
390 END IF;
391
392 -- ***
393 -- param_name
394 -- ***
395 -- dbms_output.put_line('No. 4');
396 validate_param_name(x_return_status, p_ipm_rec.param_name);
397 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
398 l_return_status := x_return_status;
399 RAISE G_EXCEPTION_HALT_VALIDATION;
400 END IF;
401 -- dbms_output.put_line('No. 6');
402
403 RETURN(l_return_status);
404 EXCEPTION
405 WHEN G_EXCEPTION_HALT_VALIDATION THEN
406 RETURN(l_return_status);
407 WHEN OTHERS THEN
408 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
409 ,p_msg_name => G_UNEXPECTED_ERROR
410 ,p_token1 => G_SQLCODE_TOKEN
411 ,p_token1_value => SQLCODE
412 ,p_token2 => G_SQLERRM_TOKEN
413 ,p_token2_value => SQLERRM);
414 l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
415 RETURN(l_return_status);
416 END Validate_Attributes;
417
418 ---------------------------------------------------------------------------
419 -- PROCEDURE Validate_Record
420 ---------------------------------------------------------------------------
421 ------------------------------------------
422 -- Validate Record for:OKL_TRX_PARAMS_B --
423 ------------------------------------------
424 FUNCTION Validate_Record (
425 p_ipm_rec IN ipm_rec_type,
426 p_db_ipm_rec IN ipm_rec_type
427 ) RETURN VARCHAR2 IS
428 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
429 BEGIN
430 RETURN (l_return_status);
431 END Validate_Record;
432 FUNCTION Validate_Record (
433 p_ipm_rec IN ipm_rec_type
434 ) RETURN VARCHAR2 IS
435 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
436 l_db_ipm_rec ipm_rec_type := get_rec(p_ipm_rec);
437 BEGIN
438 l_return_status := Validate_Record(p_ipm_rec => p_ipm_rec,
439 p_db_ipm_rec => l_db_ipm_rec);
440 RETURN (l_return_status);
441 END Validate_Record;
442
443 ---------------------------------------------------------------------------
444 -- PROCEDURE Migrate
445 ---------------------------------------------------------------------------
446 PROCEDURE migrate (
447 p_from IN ipm_rec_type,
448 p_to IN OUT NOCOPY ipm_rec_type
449 ) IS
450 BEGIN
451 p_to.id := p_from.id;
452 p_to.source_table := p_from.source_table;
453 p_to.source_id := p_from.source_id;
454 p_to.param_name := p_from.param_name;
455 p_to.param_value := p_from.param_value;
456 p_to.created_by := p_from.created_by;
457 p_to.creation_date := p_from.creation_date;
458 p_to.last_updated_by := p_from.last_updated_by;
459 p_to.last_update_date := p_from.last_update_date;
460 p_to.last_update_login := p_from.last_update_login;
461 END migrate;
462 ---------------------------------------------------------------------------
463 -- PROCEDURE validate_row
464 ---------------------------------------------------------------------------
465 ---------------------------------------
466 -- validate_row for:OKL_TRX_PARAMS_B --
467 ---------------------------------------
468 PROCEDURE validate_row(
469 p_api_version IN NUMBER,
470 p_init_msg_list IN VARCHAR2,
471 x_return_status OUT NOCOPY VARCHAR2,
472 x_msg_count OUT NOCOPY NUMBER,
473 x_msg_data OUT NOCOPY VARCHAR2,
474 p_ipm_rec IN ipm_rec_type) IS
475
476 l_api_version CONSTANT NUMBER := 1;
477 l_api_name CONSTANT VARCHAR2(30) := 'V_validate_row';
478 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
479 l_ipm_rec ipm_rec_type := p_ipm_rec;
480 BEGIN
481 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
482 G_PKG_NAME,
483 p_init_msg_list,
484 l_api_version,
485 p_api_version,
486 '_PVT',
487 x_return_status);
488 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
489 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
490 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
491 RAISE OKC_API.G_EXCEPTION_ERROR;
492 END IF;
493 --- Validate all non-missing attributes (Item Level Validation)
494 l_return_status := Validate_Attributes(l_ipm_rec);
495 --- If any errors happen abort API
496 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
497 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
498 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
499 RAISE OKC_API.G_EXCEPTION_ERROR;
500 END IF;
501 l_return_status := Validate_Record(l_ipm_rec);
502 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
503 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
504 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
505 RAISE OKC_API.G_EXCEPTION_ERROR;
506 END IF;
507 x_return_status := l_return_status;
508 EXCEPTION
509 WHEN OKC_API.G_EXCEPTION_ERROR THEN
510 x_return_status := OKC_API.HANDLE_EXCEPTIONS
511 (
512 l_api_name,
513 G_PKG_NAME,
514 'OKC_API.G_RET_STS_ERROR',
515 x_msg_count,
516 x_msg_data,
517 '_PVT'
518 );
519 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
520 x_return_status := OKC_API.HANDLE_EXCEPTIONS
521 (
522 l_api_name,
523 G_PKG_NAME,
524 'OKC_API.G_RET_STS_UNEXP_ERROR',
525 x_msg_count,
526 x_msg_data,
527 '_PVT'
528 );
529 WHEN OTHERS THEN
530 x_return_status := OKC_API.HANDLE_EXCEPTIONS
531 (
532 l_api_name,
533 G_PKG_NAME,
534 'OTHERS',
535 x_msg_count,
536 x_msg_data,
537 '_PVT'
538 );
539 END validate_row;
540 --------------------------------------------------
541 -- PL/SQL TBL validate_row for:OKL_TRX_PARAMS_B --
542 --------------------------------------------------
543 PROCEDURE validate_row(
544 p_api_version IN NUMBER,
545 p_init_msg_list IN VARCHAR2,
546 x_return_status OUT NOCOPY VARCHAR2,
547 x_msg_count OUT NOCOPY NUMBER,
548 x_msg_data OUT NOCOPY VARCHAR2,
549 p_ipm_tbl IN ipm_tbl_type,
550 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
551
552 l_api_version CONSTANT NUMBER := 1;
553 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
554 i NUMBER := 0;
555 BEGIN
556 OKC_API.init_msg_list(p_init_msg_list);
557 -- Make sure PL/SQL table has records in it before passing
558 IF (p_ipm_tbl.COUNT > 0) THEN
559 i := p_ipm_tbl.FIRST;
560 LOOP
561 DECLARE
562 l_error_rec OKC_API.ERROR_REC_TYPE;
563 BEGIN
564 l_error_rec.api_name := l_api_name;
565 l_error_rec.api_package := G_PKG_NAME;
566 l_error_rec.idx := i;
567 validate_row (
568 p_api_version => p_api_version,
569 p_init_msg_list => OKC_API.G_FALSE,
570 x_return_status => l_error_rec.error_type,
571 x_msg_count => l_error_rec.msg_count,
572 x_msg_data => l_error_rec.msg_data,
573 p_ipm_rec => p_ipm_tbl(i));
574 IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
575 l_error_rec.sqlcode := SQLCODE;
576 load_error_tbl(l_error_rec, px_error_tbl);
577 ELSE
578 x_msg_count := l_error_rec.msg_count;
579 x_msg_data := l_error_rec.msg_data;
580 END IF;
581 EXCEPTION
582 WHEN OKC_API.G_EXCEPTION_ERROR THEN
583 l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
584 l_error_rec.sqlcode := SQLCODE;
585 load_error_tbl(l_error_rec, px_error_tbl);
586 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
587 l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
588 l_error_rec.sqlcode := SQLCODE;
589 load_error_tbl(l_error_rec, px_error_tbl);
590 WHEN OTHERS THEN
591 l_error_rec.error_type := 'OTHERS';
592 l_error_rec.sqlcode := SQLCODE;
593 load_error_tbl(l_error_rec, px_error_tbl);
594 END;
595 EXIT WHEN (i = p_ipm_tbl.LAST);
596 i := p_ipm_tbl.NEXT(i);
597 END LOOP;
598 END IF;
599 -- Loop through the error_tbl to find the error with the highest severity
600 -- and return it.
601 x_return_status := find_highest_exception(px_error_tbl);
602 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
603 EXCEPTION
604 WHEN OKC_API.G_EXCEPTION_ERROR THEN
605 x_return_status := OKC_API.HANDLE_EXCEPTIONS
606 (
607 l_api_name,
608 G_PKG_NAME,
609 'OKC_API.G_RET_STS_ERROR',
610 x_msg_count,
611 x_msg_data,
612 '_PVT'
613 );
614 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
615 x_return_status := OKC_API.HANDLE_EXCEPTIONS
616 (
617 l_api_name,
618 G_PKG_NAME,
619 'OKC_API.G_RET_STS_UNEXP_ERROR',
620 x_msg_count,
621 x_msg_data,
622 '_PVT'
623 );
624 WHEN OTHERS THEN
625 x_return_status := OKC_API.HANDLE_EXCEPTIONS
626 (
627 l_api_name,
628 G_PKG_NAME,
629 'OTHERS',
630 x_msg_count,
631 x_msg_data,
632 '_PVT'
633 );
634 END validate_row;
635
636 --------------------------------------------------
637 -- PL/SQL TBL validate_row for:OKL_TRX_PARAMS_B --
638 --------------------------------------------------
639 PROCEDURE validate_row(
640 p_api_version IN NUMBER,
641 p_init_msg_list IN VARCHAR2,
642 x_return_status OUT NOCOPY VARCHAR2,
643 x_msg_count OUT NOCOPY NUMBER,
644 x_msg_data OUT NOCOPY VARCHAR2,
645 p_ipm_tbl IN ipm_tbl_type) IS
646
647 l_api_version CONSTANT NUMBER := 1;
648 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
649 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
650 l_error_tbl OKC_API.ERROR_TBL_TYPE;
651 BEGIN
652 OKC_API.init_msg_list(p_init_msg_list);
653 -- Make sure PL/SQL table has records in it before passing
654 IF (p_ipm_tbl.COUNT > 0) THEN
655 validate_row (
656 p_api_version => p_api_version,
657 p_init_msg_list => OKC_API.G_FALSE,
658 x_return_status => x_return_status,
659 x_msg_count => x_msg_count,
660 x_msg_data => x_msg_data,
661 p_ipm_tbl => p_ipm_tbl,
662 px_error_tbl => l_error_tbl);
663 END IF;
664 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
665 EXCEPTION
666 WHEN OKC_API.G_EXCEPTION_ERROR THEN
667 x_return_status := OKC_API.HANDLE_EXCEPTIONS
668 (
669 l_api_name,
670 G_PKG_NAME,
671 'OKC_API.G_RET_STS_ERROR',
672 x_msg_count,
673 x_msg_data,
674 '_PVT'
675 );
676 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
677 x_return_status := OKC_API.HANDLE_EXCEPTIONS
678 (
679 l_api_name,
680 G_PKG_NAME,
681 'OKC_API.G_RET_STS_UNEXP_ERROR',
682 x_msg_count,
683 x_msg_data,
684 '_PVT'
685 );
686 WHEN OTHERS THEN
687 x_return_status := OKC_API.HANDLE_EXCEPTIONS
688 (
689 l_api_name,
690 G_PKG_NAME,
691 'OTHERS',
692 x_msg_count,
693 x_msg_data,
694 '_PVT'
695 );
696 END validate_row;
697
698 ---------------------------------------------------------------------------
699 -- PROCEDURE insert_row
700 ---------------------------------------------------------------------------
701 -------------------------------------
702 -- insert_row for:OKL_TRX_PARAMS_B --
703 -------------------------------------
704 PROCEDURE insert_row(
705 p_api_version IN NUMBER,
706 p_init_msg_list IN VARCHAR2,
707 x_return_status OUT NOCOPY VARCHAR2,
708 x_msg_count OUT NOCOPY NUMBER,
709 x_msg_data OUT NOCOPY VARCHAR2,
710 p_ipm_rec IN ipm_rec_type,
711 x_ipm_rec OUT NOCOPY ipm_rec_type) IS
712
713 l_api_version CONSTANT NUMBER := 1;
714 l_api_name CONSTANT VARCHAR2(30) := 'B_insert_row';
715 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
716 l_ipm_rec ipm_rec_type := p_ipm_rec;
717 l_def_ipm_rec ipm_rec_type;
718
719 -------------------------------
720 -- FUNCTION fill_who_columns --
721 -------------------------------
722 FUNCTION fill_who_columns (
723 p_ipm_rec IN ipm_rec_type
724 ) RETURN ipm_rec_type IS
725 l_ipm_rec ipm_rec_type := p_ipm_rec;
726 BEGIN
727 l_ipm_rec.CREATION_DATE := SYSDATE;
728 l_ipm_rec.CREATED_BY := Fnd_Global.USER_ID;
729 l_ipm_rec.LAST_UPDATE_DATE := SYSDATE;
730 l_ipm_rec.LAST_UPDATED_BY := Fnd_Global.USER_ID;
731 l_ipm_rec.LAST_UPDATE_LOGIN := Fnd_Global.LOGIN_ID;
732 -- dbms_output.put_line('created_by1 : '||to_char(l_ipm_rec.CREATED_BY));
733 RETURN(l_ipm_rec);
734 END fill_who_columns;
735 -----------------------------------------
736 -- Set_Attributes for:OKL_TRX_PARAMS_B --
737 -----------------------------------------
738 FUNCTION Set_Attributes (
739 p_ipm_rec IN ipm_rec_type,
740 x_ipm_rec OUT NOCOPY ipm_rec_type
741 ) RETURN VARCHAR2 IS
742 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
743 BEGIN
744 x_ipm_rec := p_ipm_rec;
745 RETURN(l_return_status);
746 END Set_Attributes;
747 BEGIN
748 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
749 p_init_msg_list,
750 '_PVT',
751 x_return_status);
752 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
753 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
754 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
755 RAISE OKC_API.G_EXCEPTION_ERROR;
756 END IF;
757 -- dbms_output.put_line('created_by1 : '||to_char(l_ipm_rec.CREATED_BY));
758 -- dbms_output.put_line('Message 1');
759 l_ipm_rec := null_out_defaults(p_ipm_rec);
760 -- Set primary key value
761 l_ipm_rec.ID := get_seq_id;
762 l_return_status := Validate_Attributes(l_ipm_rec);
763 IF (l_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
764 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
765 ELSIF (l_return_status = Okc_Api.G_RET_STS_ERROR) THEN
766 RAISE Okc_Api.G_EXCEPTION_ERROR;
767 END IF;
768 -- dbms_output.put_line('ID: '||l_ipm_rec.ID);
769 --- Setting item atributes
770 l_return_status := Set_Attributes(
771 p_ipm_rec, -- IN
772 l_ipm_rec); -- OUT
773
774 l_ipm_rec := fill_who_columns(l_ipm_rec);
775 l_ipm_rec.ID := get_seq_id;
776
777 -- -- dbms_output.put_line('Message 2');
778 -- dbms_output.put_line('ID: '||l_ipm_rec.ID);
779 -- dbms_output.put_line('Source Table: '||l_ipm_rec.source_table);
780 -- dbms_output.put_line('Source ID: '||l_ipm_rec.source_id);
781 -- dbms_output.put_line('param_name: '||l_ipm_rec.param_name);
782 -- dbms_output.put_line('param_value: '||l_ipm_rec.param_value);
783 -- dbms_output.put_line('created_by: '||to_char(l_ipm_rec.created_by));
784 -- dbms_output.put_line('creation_date: '||l_ipm_rec.creation_date);
785 -- dbms_output.put_line('last_updated_by: '||to_char(l_ipm_rec.last_updated_by));
786 -- dbms_output.put_line('last_update_date: '||l_ipm_rec.last_update_date);
787 -- dbms_output.put_line('last_update_login: '||to_char(l_ipm_rec.last_update_login));
788 --- If any errors happen abort API
789 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
790 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
791 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
792 RAISE OKC_API.G_EXCEPTION_ERROR;
793 END IF;
794 INSERT INTO OKL_TRX_PARAMS_B(
795 id,
796 source_table,
797 source_id,
798 param_name,
799 param_value,
800 created_by,
801 creation_date,
802 last_updated_by,
803 last_update_date,
804 last_update_login)
805 VALUES (
806 l_ipm_rec.id,
807 l_ipm_rec.source_table,
808 l_ipm_rec.source_id,
809 l_ipm_rec.param_name,
810 l_ipm_rec.param_value,
811 l_ipm_rec.created_by,
812 l_ipm_rec.creation_date,
813 l_ipm_rec.last_updated_by,
814 l_ipm_rec.last_update_date,
815 l_ipm_rec.last_update_login);
816 -- Set OUT values
817 -- dbms_output.put_line('Message 3');
818 x_ipm_rec := l_ipm_rec;
819 x_return_status := l_return_status;
820 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
821 EXCEPTION
822 WHEN OKC_API.G_EXCEPTION_ERROR THEN
823 x_return_status := OKC_API.HANDLE_EXCEPTIONS
824 (
825 l_api_name,
826 G_PKG_NAME,
827 'OKC_API.G_RET_STS_ERROR',
828 x_msg_count,
829 x_msg_data,
830 '_PVT'
831 );
832 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
833 x_return_status := OKC_API.HANDLE_EXCEPTIONS
834 (
835 l_api_name,
836 G_PKG_NAME,
837 'OKC_API.G_RET_STS_UNEXP_ERROR',
838 x_msg_count,
839 x_msg_data,
840 '_PVT'
841 );
842 WHEN OTHERS THEN
843 x_return_status := OKC_API.HANDLE_EXCEPTIONS
844 (
845 l_api_name,
846 G_PKG_NAME,
847 'OTHERS',
848 x_msg_count,
849 x_msg_data,
850 '_PVT'
851 );
852 END insert_row;
853 ----------------------------------------
854 -- PL/SQL TBL insert_row for:ipm_TBL --
855 ----------------------------------------
856 PROCEDURE insert_row(
857 p_api_version IN NUMBER,
858 p_init_msg_list IN VARCHAR2,
859 x_return_status OUT NOCOPY VARCHAR2,
860 x_msg_count OUT NOCOPY NUMBER,
861 x_msg_data OUT NOCOPY VARCHAR2,
862 p_ipm_tbl IN ipm_tbl_type,
863 x_ipm_tbl OUT NOCOPY ipm_tbl_type) IS
864
865 l_api_version CONSTANT NUMBER := 1;
866 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
867 l_return_status VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
868 l_overall_status VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
869 i NUMBER := 0;
870 BEGIN
871 okl_api.init_msg_list(p_init_msg_list);
872 -- Make sure PL/SQL table has records in it before passing
873 IF (p_ipm_tbl.COUNT > 0) THEN
874 i := p_ipm_tbl.FIRST;
875 LOOP
876 insert_row (
877 p_api_version => p_api_version,
878 p_init_msg_list => okl_api.G_FALSE,
879 x_return_status => x_return_status,
880 x_msg_count => x_msg_count,
881 x_msg_data => x_msg_data,
882 p_ipm_rec => p_ipm_tbl(i),
883 x_ipm_rec => x_ipm_tbl(i));
884 -- Store the highest degree of error
885 IF x_return_status <> okl_api.G_RET_STS_SUCCESS THEN
886 IF l_overall_status <> okl_api.G_RET_STS_UNEXP_ERROR THEN
887 l_overall_status := x_return_status;
888 END IF;
889 END IF;
890 EXIT WHEN (i = p_ipm_tbl.LAST);
891 i := p_ipm_tbl.NEXT(i);
892 END LOOP;
893 -- return overall status
894 x_return_status := l_overall_status;
895 END IF;
896 EXCEPTION
897 WHEN okl_api.G_EXCEPTION_ERROR THEN
898 x_return_status := okl_api.HANDLE_EXCEPTIONS
899 (
900 l_api_name,
901 G_PKG_NAME,
902 'okl_api.G_RET_STS_ERROR',
903 x_msg_count,
904 x_msg_data,
905 '_PVT'
906 );
907 WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
908 x_return_status :=okl_api.HANDLE_EXCEPTIONS
909 (
910 l_api_name,
911 G_PKG_NAME,
912 'okl_api.G_RET_STS_UNEXP_ERROR',
913 x_msg_count,
914 x_msg_data,
915 '_PVT'
916 );
917 WHEN OTHERS THEN
918 x_return_status :=okl_api.HANDLE_EXCEPTIONS
919 (
920 l_api_name,
921 G_PKG_NAME,
922 'OTHERS',
923 x_msg_count,
924 x_msg_data,
925 '_PVT'
926 );
927 END insert_row;
928
929 ---------------------------------------------------------------------------
930 -- PROCEDURE lock_row
931 ---------------------------------------------------------------------------
932 -----------------------------------
933 -- lock_row for:OKL_TRX_PARAMS_B --
934 -----------------------------------
935 PROCEDURE lock_row(
936 p_init_msg_list IN VARCHAR2,
937 x_return_status OUT NOCOPY VARCHAR2,
938 x_msg_count OUT NOCOPY NUMBER,
939 x_msg_data OUT NOCOPY VARCHAR2,
940 p_ipm_rec IN ipm_rec_type) IS
941
942 E_Resource_Busy EXCEPTION;
943 PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
944 CURSOR lock_csr (p_ipm_rec IN ipm_rec_type) IS
945 SELECT *
946 FROM OKL_TRX_PARAMS_B
947 WHERE ID = p_ipm_rec.id
948 FOR UPDATE NOWAIT;
949
950 l_api_version CONSTANT NUMBER := 1;
951 l_api_name CONSTANT VARCHAR2(30) := 'B_lock_row';
952 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
953 l_lock_var lock_csr%ROWTYPE;
954 l_row_notfound BOOLEAN := FALSE;
955 lc_row_notfound BOOLEAN := FALSE;
956 BEGIN
957 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
958 p_init_msg_list,
959 '_PVT',
960 x_return_status);
961 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
962 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
963 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
964 RAISE OKC_API.G_EXCEPTION_ERROR;
965 END IF;
966 BEGIN
967 OPEN lock_csr(p_ipm_rec);
968 FETCH lock_csr INTO l_lock_var;
969 l_row_notfound := lock_csr%NOTFOUND;
970 CLOSE lock_csr;
971 EXCEPTION
972 WHEN E_Resource_Busy THEN
973 IF (lock_csr%ISOPEN) THEN
974 CLOSE lock_csr;
975 END IF;
976 OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
977 RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
978 END;
979
980 IF ( l_row_notfound ) THEN
981 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
982 RAISE OKC_API.G_EXCEPTION_ERROR;
983 ELSE
984 IF (l_lock_var.id <> p_ipm_rec.id) THEN
985 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
986 RAISE OKC_API.G_EXCEPTION_ERROR;
987 END IF;
988 IF (l_lock_var.source_table <> p_ipm_rec.source_table) THEN
989 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
990 RAISE OKC_API.G_EXCEPTION_ERROR;
991 END IF;
992 IF (l_lock_var.source_id <> p_ipm_rec.source_id) THEN
993 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
994 RAISE OKC_API.G_EXCEPTION_ERROR;
995 END IF;
996 IF (l_lock_var.param_name <> p_ipm_rec.param_name) THEN
997 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
998 RAISE OKC_API.G_EXCEPTION_ERROR;
999 END IF;
1000 IF (l_lock_var.param_value <> p_ipm_rec.param_value) THEN
1001 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1002 RAISE OKC_API.G_EXCEPTION_ERROR;
1003 END IF;
1004 IF (l_lock_var.created_by <> p_ipm_rec.created_by) THEN
1005 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1006 RAISE OKC_API.G_EXCEPTION_ERROR;
1007 END IF;
1008 IF (l_lock_var.creation_date <> p_ipm_rec.creation_date) THEN
1009 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1010 RAISE OKC_API.G_EXCEPTION_ERROR;
1011 END IF;
1012 IF (l_lock_var.last_updated_by <> p_ipm_rec.last_updated_by) THEN
1013 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1014 RAISE OKC_API.G_EXCEPTION_ERROR;
1015 END IF;
1016 IF (l_lock_var.last_update_date <> p_ipm_rec.last_update_date) THEN
1017 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1018 RAISE OKC_API.G_EXCEPTION_ERROR;
1019 END IF;
1020 IF (l_lock_var.last_update_login <> p_ipm_rec.last_update_login) THEN
1021 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1022 RAISE OKC_API.G_EXCEPTION_ERROR;
1023 END IF;
1024 END IF;
1025 x_return_status := l_return_status;
1026 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1027 EXCEPTION
1028 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1029 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1030 (
1031 l_api_name,
1032 G_PKG_NAME,
1033 'OKC_API.G_RET_STS_ERROR',
1034 x_msg_count,
1035 x_msg_data,
1036 '_PVT'
1037 );
1038 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1039 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1040 (
1041 l_api_name,
1042 G_PKG_NAME,
1043 'OKC_API.G_RET_STS_UNEXP_ERROR',
1044 x_msg_count,
1045 x_msg_data,
1046 '_PVT'
1047 );
1048 WHEN OTHERS THEN
1049 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1050 (
1051 l_api_name,
1052 G_PKG_NAME,
1053 'OTHERS',
1054 x_msg_count,
1055 x_msg_data,
1056 '_PVT'
1057 );
1058 END lock_row;
1059 ------------------------------------
1060 -- lock_row for: OKL_TRX_PARAMS_B --
1061 ------------------------------------
1062 PROCEDURE lock_row(
1063 p_api_version IN NUMBER,
1064 p_init_msg_list IN VARCHAR2,
1065 x_return_status OUT NOCOPY VARCHAR2,
1066 x_msg_count OUT NOCOPY NUMBER,
1067 x_msg_data OUT NOCOPY VARCHAR2,
1068 p_ipm_rec IN ipm_rec_type) IS
1069
1070 l_api_version CONSTANT NUMBER := 1;
1071 l_api_name CONSTANT VARCHAR2(30) := 'V_lock_row';
1072 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1073 l_ipm_rec ipm_rec_type;
1074 BEGIN
1075 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1076 G_PKG_NAME,
1077 p_init_msg_list,
1078 l_api_version,
1079 p_api_version,
1080 '_PVT',
1081 x_return_status);
1082 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1083 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1084 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1085 RAISE OKC_API.G_EXCEPTION_ERROR;
1086 END IF;
1087 -----------------------------------------
1088 -- Move VIEW record to "Child" records --
1089 -----------------------------------------
1090 migrate(p_ipm_rec, l_ipm_rec);
1091 ---------------------------------------------
1092 -- Call the LOCK_ROW for each child record --
1093 ---------------------------------------------
1094 lock_row(
1095 p_init_msg_list,
1096 l_return_status,
1097 x_msg_count,
1098 x_msg_data,
1099 l_ipm_rec
1100 );
1101 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1102 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1103 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1104 RAISE OKC_API.G_EXCEPTION_ERROR;
1105 END IF;
1106 x_return_status := l_return_status;
1107 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1108 EXCEPTION
1109 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1110 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1111 (
1112 l_api_name,
1113 G_PKG_NAME,
1114 'OKC_API.G_RET_STS_ERROR',
1115 x_msg_count,
1116 x_msg_data,
1117 '_PVT'
1118 );
1119 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1120 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1121 (
1122 l_api_name,
1123 G_PKG_NAME,
1124 'OKC_API.G_RET_STS_UNEXP_ERROR',
1125 x_msg_count,
1126 x_msg_data,
1127 '_PVT'
1128 );
1129 WHEN OTHERS THEN
1130 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1131 (
1132 l_api_name,
1133 G_PKG_NAME,
1134 'OTHERS',
1135 x_msg_count,
1136 x_msg_data,
1137 '_PVT'
1138 );
1139 END lock_row;
1140 -------------------------------------
1141 -- PL/SQL TBL lock_row for:IPM_TBL --
1142 -------------------------------------
1143 PROCEDURE lock_row(
1144 p_api_version IN NUMBER,
1145 p_init_msg_list IN VARCHAR2,
1146 x_return_status OUT NOCOPY VARCHAR2,
1147 x_msg_count OUT NOCOPY NUMBER,
1148 x_msg_data OUT NOCOPY VARCHAR2,
1149 p_ipm_tbl IN ipm_tbl_type,
1150 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
1151
1152 l_api_version CONSTANT NUMBER := 1;
1153 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
1154 i NUMBER := 0;
1155 BEGIN
1156 OKC_API.init_msg_list(p_init_msg_list);
1157 -- Make sure PL/SQL table has recrods in it before passing
1158 IF (p_ipm_tbl.COUNT > 0) THEN
1159 i := p_ipm_tbl.FIRST;
1160 LOOP
1161 DECLARE
1162 l_error_rec OKC_API.ERROR_REC_TYPE;
1163 BEGIN
1164 l_error_rec.api_name := l_api_name;
1165 l_error_rec.api_package := G_PKG_NAME;
1166 l_error_rec.idx := i;
1167 lock_row(
1168 p_api_version => p_api_version,
1169 p_init_msg_list => OKC_API.G_FALSE,
1170 x_return_status => l_error_rec.error_type,
1171 x_msg_count => l_error_rec.msg_count,
1172 x_msg_data => l_error_rec.msg_data,
1173 p_ipm_rec => p_ipm_tbl(i));
1174 IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
1175 l_error_rec.sqlcode := SQLCODE;
1176 load_error_tbl(l_error_rec, px_error_tbl);
1177 ELSE
1178 x_msg_count := l_error_rec.msg_count;
1179 x_msg_data := l_error_rec.msg_data;
1180 END IF;
1181 EXCEPTION
1182 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1183 l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
1184 l_error_rec.sqlcode := SQLCODE;
1185 load_error_tbl(l_error_rec, px_error_tbl);
1186 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1187 l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
1188 l_error_rec.sqlcode := SQLCODE;
1189 load_error_tbl(l_error_rec, px_error_tbl);
1190 WHEN OTHERS THEN
1191 l_error_rec.error_type := 'OTHERS';
1192 l_error_rec.sqlcode := SQLCODE;
1193 load_error_tbl(l_error_rec, px_error_tbl);
1194 END;
1195 EXIT WHEN (i = p_ipm_tbl.LAST);
1196 i := p_ipm_tbl.NEXT(i);
1197 END LOOP;
1198 END IF;
1199 -- Loop through the error_tbl to find the error with the highest severity
1200 -- and return it.
1201 x_return_status := find_highest_exception(px_error_tbl);
1202 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1203 EXCEPTION
1204 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1205 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1206 (
1207 l_api_name,
1208 G_PKG_NAME,
1209 'OKC_API.G_RET_STS_ERROR',
1210 x_msg_count,
1211 x_msg_data,
1212 '_PVT'
1213 );
1214 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1215 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1216 (
1217 l_api_name,
1218 G_PKG_NAME,
1219 'OKC_API.G_RET_STS_UNEXP_ERROR',
1220 x_msg_count,
1221 x_msg_data,
1222 '_PVT'
1223 );
1224 WHEN OTHERS THEN
1225 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1226 (
1227 l_api_name,
1228 G_PKG_NAME,
1229 'OTHERS',
1230 x_msg_count,
1231 x_msg_data,
1232 '_PVT'
1233 );
1234 END lock_row;
1235 -------------------------------------
1236 -- PL/SQL TBL lock_row for:IPM_TBL --
1237 -------------------------------------
1238 PROCEDURE lock_row(
1239 p_api_version IN NUMBER,
1240 p_init_msg_list IN VARCHAR2,
1241 x_return_status OUT NOCOPY VARCHAR2,
1242 x_msg_count OUT NOCOPY NUMBER,
1243 x_msg_data OUT NOCOPY VARCHAR2,
1244 p_ipm_tbl IN ipm_tbl_type) IS
1245
1246 l_api_version CONSTANT NUMBER := 1;
1247 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
1248 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1249 l_error_tbl OKC_API.ERROR_TBL_TYPE;
1250 BEGIN
1251 OKC_API.init_msg_list(p_init_msg_list);
1252 -- Make sure PL/SQL table has recrods in it before passing
1253 IF (p_ipm_tbl.COUNT > 0) THEN
1254 lock_row(
1255 p_api_version => p_api_version,
1256 p_init_msg_list => OKC_API.G_FALSE,
1257 x_return_status => x_return_status,
1258 x_msg_count => x_msg_count,
1259 x_msg_data => x_msg_data,
1260 p_ipm_tbl => p_ipm_tbl,
1261 px_error_tbl => l_error_tbl);
1262 END IF;
1263 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1264 EXCEPTION
1265 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1266 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1267 (
1268 l_api_name,
1269 G_PKG_NAME,
1270 'OKC_API.G_RET_STS_ERROR',
1271 x_msg_count,
1272 x_msg_data,
1273 '_PVT'
1274 );
1275 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1276 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1277 (
1278 l_api_name,
1279 G_PKG_NAME,
1280 'OKC_API.G_RET_STS_UNEXP_ERROR',
1281 x_msg_count,
1282 x_msg_data,
1283 '_PVT'
1284 );
1285 WHEN OTHERS THEN
1286 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1287 (
1288 l_api_name,
1289 G_PKG_NAME,
1290 'OTHERS',
1291 x_msg_count,
1292 x_msg_data,
1293 '_PVT'
1294 );
1295 END lock_row;
1296 ---------------------------------------------------------------------------
1297 -- PROCEDURE update_row
1298 ---------------------------------------------------------------------------
1299 -------------------------------------
1300 -- update_row for:OKL_TRX_PARAMS_B --
1301 -------------------------------------
1302 PROCEDURE update_row(
1303 p_init_msg_list IN VARCHAR2,
1304 x_return_status OUT NOCOPY VARCHAR2,
1305 x_msg_count OUT NOCOPY NUMBER,
1306 x_msg_data OUT NOCOPY VARCHAR2,
1307 p_ipm_rec IN ipm_rec_type,
1308 x_ipm_rec OUT NOCOPY ipm_rec_type) IS
1309
1310 l_api_version CONSTANT NUMBER := 1;
1311 l_api_name CONSTANT VARCHAR2(30) := 'B_update_row';
1312 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1313 l_ipm_rec ipm_rec_type := p_ipm_rec;
1314 l_def_ipm_rec ipm_rec_type;
1315 l_row_notfound BOOLEAN := TRUE;
1316 ----------------------------------
1317 -- FUNCTION populate_new_record --
1318 ----------------------------------
1319 FUNCTION populate_new_record (
1320 p_ipm_rec IN ipm_rec_type,
1321 x_ipm_rec OUT NOCOPY ipm_rec_type
1322 ) RETURN VARCHAR2 IS
1323 l_ipm_rec ipm_rec_type;
1324 l_row_notfound BOOLEAN := TRUE;
1325 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1326 BEGIN
1327 x_ipm_rec := p_ipm_rec;
1328 -- Get current database values
1329 l_ipm_rec := get_rec(p_ipm_rec, l_return_status);
1330 IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
1331 IF (x_ipm_rec.id = OKC_API.G_MISS_NUM)
1332 THEN
1333 x_ipm_rec.id := l_ipm_rec.id;
1334 END IF;
1335 IF (x_ipm_rec.source_table = OKC_API.G_MISS_CHAR)
1336 THEN
1337 x_ipm_rec.source_table := l_ipm_rec.source_table;
1338 END IF;
1339 IF (x_ipm_rec.source_id = OKC_API.G_MISS_NUM)
1340 THEN
1341 x_ipm_rec.source_id := l_ipm_rec.source_id;
1342 END IF;
1343 IF (x_ipm_rec.param_name = OKC_API.G_MISS_CHAR)
1344 THEN
1345 x_ipm_rec.param_name := l_ipm_rec.param_name;
1346 END IF;
1347 IF (x_ipm_rec.param_value = OKC_API.G_MISS_CHAR)
1348 THEN
1349 x_ipm_rec.param_value := l_ipm_rec.param_value;
1350 END IF;
1351 IF (x_ipm_rec.created_by = OKC_API.G_MISS_NUM)
1352 THEN
1353 x_ipm_rec.created_by := l_ipm_rec.created_by;
1354 END IF;
1355 IF (x_ipm_rec.creation_date = OKC_API.G_MISS_DATE)
1356 THEN
1357 x_ipm_rec.creation_date := l_ipm_rec.creation_date;
1358 END IF;
1359 IF (x_ipm_rec.last_updated_by = OKC_API.G_MISS_NUM)
1360 THEN
1361 x_ipm_rec.last_updated_by := l_ipm_rec.last_updated_by;
1362 END IF;
1363 IF (x_ipm_rec.last_update_date = OKC_API.G_MISS_DATE)
1364 THEN
1365 x_ipm_rec.last_update_date := l_ipm_rec.last_update_date;
1366 END IF;
1367 IF (x_ipm_rec.last_update_login = OKC_API.G_MISS_NUM)
1368 THEN
1369 x_ipm_rec.last_update_login := l_ipm_rec.last_update_login;
1370 END IF;
1371 END IF;
1372 RETURN(l_return_status);
1373 END populate_new_record;
1374 -----------------------------------------
1375 -- Set_Attributes for:OKL_TRX_PARAMS_B --
1376 -----------------------------------------
1377 FUNCTION Set_Attributes (
1378 p_ipm_rec IN ipm_rec_type,
1379 x_ipm_rec OUT NOCOPY ipm_rec_type
1380 ) RETURN VARCHAR2 IS
1381 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1382 BEGIN
1383 x_ipm_rec := p_ipm_rec;
1384 RETURN(l_return_status);
1385 END Set_Attributes;
1386 BEGIN
1387 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1388 p_init_msg_list,
1389 '_PVT',
1390 x_return_status);
1391 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1392 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1393 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1394 RAISE OKC_API.G_EXCEPTION_ERROR;
1395 END IF;
1396 --- Setting item attributes
1397 l_return_status := Set_Attributes(
1398 p_ipm_rec, -- IN
1399 l_ipm_rec); -- OUT
1400 --- If any errors happen abort API
1401 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1402 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1403 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1404 RAISE OKC_API.G_EXCEPTION_ERROR;
1405 END IF;
1406 l_return_status := populate_new_record(l_ipm_rec, l_def_ipm_rec);
1407 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1408 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1409 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1410 RAISE OKC_API.G_EXCEPTION_ERROR;
1411 END IF;
1412 UPDATE OKL_TRX_PARAMS_B
1413 SET SOURCE_TABLE = l_def_ipm_rec.source_table,
1414 SOURCE_ID = l_def_ipm_rec.source_id,
1415 PARAM_NAME = l_def_ipm_rec.param_name,
1416 PARAM_VALUE = l_def_ipm_rec.param_value,
1417 CREATED_BY = l_def_ipm_rec.created_by,
1418 CREATION_DATE = l_def_ipm_rec.creation_date,
1419 LAST_UPDATED_BY = l_def_ipm_rec.last_updated_by,
1420 LAST_UPDATE_DATE = l_def_ipm_rec.last_update_date,
1421 LAST_UPDATE_LOGIN = l_def_ipm_rec.last_update_login
1422 WHERE ID = l_def_ipm_rec.id;
1423
1424 x_ipm_rec := l_ipm_rec;
1425 x_return_status := l_return_status;
1426 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1427 EXCEPTION
1428 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1429 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1430 (
1431 l_api_name,
1432 G_PKG_NAME,
1433 'OKC_API.G_RET_STS_ERROR',
1434 x_msg_count,
1435 x_msg_data,
1436 '_PVT'
1437 );
1438 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1439 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1440 (
1441 l_api_name,
1442 G_PKG_NAME,
1443 'OKC_API.G_RET_STS_UNEXP_ERROR',
1444 x_msg_count,
1445 x_msg_data,
1446 '_PVT'
1447 );
1448 WHEN OTHERS THEN
1449 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1450 (
1451 l_api_name,
1452 G_PKG_NAME,
1453 'OTHERS',
1454 x_msg_count,
1455 x_msg_data,
1456 '_PVT'
1457 );
1458 END update_row;
1459 -------------------------------------
1460 -- update_row for:OKL_TRX_PARAMS_B --
1461 -------------------------------------
1462 PROCEDURE update_row(
1463 p_api_version IN NUMBER,
1464 p_init_msg_list IN VARCHAR2,
1465 x_return_status OUT NOCOPY VARCHAR2,
1466 x_msg_count OUT NOCOPY NUMBER,
1467 x_msg_data OUT NOCOPY VARCHAR2,
1468 p_ipm_rec IN ipm_rec_type,
1469 x_ipm_rec OUT NOCOPY ipm_rec_type) IS
1470
1471 l_api_version CONSTANT NUMBER := 1;
1472 l_api_name CONSTANT VARCHAR2(30) := 'V_update_row';
1473 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1474 l_ipm_rec ipm_rec_type := p_ipm_rec;
1475 l_def_ipm_rec ipm_rec_type;
1476 l_db_ipm_rec ipm_rec_type;
1477 lx_ipm_rec ipm_rec_type;
1478 -------------------------------
1479 -- FUNCTION fill_who_columns --
1480 -------------------------------
1481 FUNCTION fill_who_columns (
1482 p_ipm_rec IN ipm_rec_type
1483 ) RETURN ipm_rec_type IS
1484 l_ipm_rec ipm_rec_type := p_ipm_rec;
1485 BEGIN
1486 l_ipm_rec.LAST_UPDATE_DATE := SYSDATE;
1487 l_ipm_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1488 l_ipm_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
1489 RETURN(l_ipm_rec);
1490 END fill_who_columns;
1491 ----------------------------------
1492 -- FUNCTION populate_new_record --
1493 ----------------------------------
1494 FUNCTION populate_new_record (
1495 p_ipm_rec IN ipm_rec_type,
1496 x_ipm_rec OUT NOCOPY ipm_rec_type
1497 ) RETURN VARCHAR2 IS
1498 l_row_notfound BOOLEAN := TRUE;
1499 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1500 BEGIN
1501 x_ipm_rec := p_ipm_rec;
1502 -- Get current database values
1503 -- NOTE: Never assign the OBJECT_VERSION_NUMBER. Force the user to pass it
1504 -- so it may be verified through LOCK_ROW.
1505 l_db_ipm_rec := get_rec(p_ipm_rec, l_return_status);
1506 IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
1507 IF (x_ipm_rec.id = OKC_API.G_MISS_NUM)
1508 THEN
1509 x_ipm_rec.id := l_db_ipm_rec.id;
1510 END IF;
1511 IF (x_ipm_rec.source_table = OKC_API.G_MISS_CHAR)
1512 THEN
1513 x_ipm_rec.source_table := l_db_ipm_rec.source_table;
1514 END IF;
1515 IF (x_ipm_rec.source_id = OKC_API.G_MISS_NUM)
1516 THEN
1517 x_ipm_rec.source_id := l_db_ipm_rec.source_id;
1518 END IF;
1519 IF (x_ipm_rec.param_name = OKC_API.G_MISS_CHAR)
1520 THEN
1521 x_ipm_rec.param_name := l_db_ipm_rec.param_name;
1522 END IF;
1523 IF (x_ipm_rec.param_value = OKC_API.G_MISS_CHAR)
1524 THEN
1525 x_ipm_rec.param_value := l_db_ipm_rec.param_value;
1526 END IF;
1527 IF (x_ipm_rec.created_by = OKC_API.G_MISS_NUM)
1528 THEN
1529 x_ipm_rec.created_by := l_db_ipm_rec.created_by;
1530 END IF;
1531 IF (x_ipm_rec.creation_date = OKC_API.G_MISS_DATE)
1532 THEN
1533 x_ipm_rec.creation_date := l_db_ipm_rec.creation_date;
1534 END IF;
1535 IF (x_ipm_rec.last_updated_by = OKC_API.G_MISS_NUM)
1536 THEN
1537 x_ipm_rec.last_updated_by := l_db_ipm_rec.last_updated_by;
1538 END IF;
1539 IF (x_ipm_rec.last_update_date = OKC_API.G_MISS_DATE)
1540 THEN
1541 x_ipm_rec.last_update_date := l_db_ipm_rec.last_update_date;
1542 END IF;
1543 IF (x_ipm_rec.last_update_login = OKC_API.G_MISS_NUM)
1544 THEN
1545 x_ipm_rec.last_update_login := l_db_ipm_rec.last_update_login;
1546 END IF;
1547 END IF;
1548 RETURN(l_return_status);
1549 END populate_new_record;
1550 -----------------------------------------
1551 -- Set_Attributes for:OKL_TRX_PARAMS_B --
1552 -----------------------------------------
1553 FUNCTION Set_Attributes (
1554 p_ipm_rec IN ipm_rec_type,
1555 x_ipm_rec OUT NOCOPY ipm_rec_type
1556 ) RETURN VARCHAR2 IS
1557 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1558 BEGIN
1559 x_ipm_rec := p_ipm_rec;
1560 RETURN(l_return_status);
1561 END Set_Attributes;
1562 BEGIN
1563 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1564 G_PKG_NAME,
1565 p_init_msg_list,
1566 l_api_version,
1567 p_api_version,
1568 '_PVT',
1569 x_return_status);
1570 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1571 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1572 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1573 RAISE OKC_API.G_EXCEPTION_ERROR;
1574 END IF;
1575 --- Setting item attributes
1576 l_return_status := Set_Attributes(
1577 p_ipm_rec, -- IN
1578 x_ipm_rec); -- OUT
1579 --- If any errors happen abort API
1580 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1581 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1582 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1583 RAISE OKC_API.G_EXCEPTION_ERROR;
1584 END IF;
1585 l_return_status := populate_new_record(l_ipm_rec, l_def_ipm_rec);
1586 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1587 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1588 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1589 RAISE OKC_API.G_EXCEPTION_ERROR;
1590 END IF;
1591 l_def_ipm_rec := fill_who_columns(l_def_ipm_rec);
1592 --- Validate all non-missing attributes (Item Level Validation)
1593 l_return_status := Validate_Attributes(l_def_ipm_rec);
1594 --- If any errors happen abort API
1595 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1596 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1597 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1598 RAISE OKC_API.G_EXCEPTION_ERROR;
1599 END IF;
1600 l_return_status := Validate_Record(l_def_ipm_rec, l_db_ipm_rec);
1601 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1602 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1603 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1604 RAISE OKC_API.G_EXCEPTION_ERROR;
1605 END IF;
1606
1607 -- Lock the Record
1608 lock_row(
1609 p_api_version => p_api_version,
1610 p_init_msg_list => p_init_msg_list,
1611 x_return_status => l_return_status,
1612 x_msg_count => x_msg_count,
1613 x_msg_data => x_msg_data,
1614 p_ipm_rec => p_ipm_rec);
1615 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1616 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1617 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1618 RAISE OKC_API.G_EXCEPTION_ERROR;
1619 END IF;
1620
1621 -----------------------------------------
1622 -- Move VIEW record to "Child" records --
1623 -----------------------------------------
1624 migrate(l_def_ipm_rec, l_ipm_rec);
1625 -----------------------------------------------
1626 -- Call the UPDATE_ROW for each child record --
1627 -----------------------------------------------
1628 update_row(
1629 p_init_msg_list,
1630 l_return_status,
1631 x_msg_count,
1632 x_msg_data,
1633 l_ipm_rec,
1634 lx_ipm_rec
1635 );
1636 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1637 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1638 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1639 RAISE OKC_API.G_EXCEPTION_ERROR;
1640 END IF;
1641 migrate(lx_ipm_rec, l_def_ipm_rec);
1642 x_ipm_rec := l_def_ipm_rec;
1643 x_return_status := l_return_status;
1644 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1645 EXCEPTION
1646 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1647 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1648 (
1649 l_api_name,
1650 G_PKG_NAME,
1651 'OKC_API.G_RET_STS_ERROR',
1652 x_msg_count,
1653 x_msg_data,
1654 '_PVT'
1655 );
1656 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1657 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1658 (
1659 l_api_name,
1660 G_PKG_NAME,
1661 'OKC_API.G_RET_STS_UNEXP_ERROR',
1662 x_msg_count,
1663 x_msg_data,
1664 '_PVT'
1665 );
1666 WHEN OTHERS THEN
1667 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1668 (
1669 l_api_name,
1670 G_PKG_NAME,
1671 'OTHERS',
1672 x_msg_count,
1673 x_msg_data,
1674 '_PVT'
1675 );
1676 END update_row;
1677 ---------------------------------------
1678 -- PL/SQL TBL update_row for:ipm_tbl --
1679 ---------------------------------------
1680 PROCEDURE update_row(
1681 p_api_version IN NUMBER,
1682 p_init_msg_list IN VARCHAR2,
1683 x_return_status OUT NOCOPY VARCHAR2,
1684 x_msg_count OUT NOCOPY NUMBER,
1685 x_msg_data OUT NOCOPY VARCHAR2,
1686 p_ipm_tbl IN ipm_tbl_type,
1687 x_ipm_tbl OUT NOCOPY ipm_tbl_type,
1688 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
1689
1690 l_api_version CONSTANT NUMBER := 1;
1691 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_update_row';
1692 i NUMBER := 0;
1693 BEGIN
1694 OKC_API.init_msg_list(p_init_msg_list);
1695 -- Make sure PL/SQL table has records in it before passing
1696 IF (p_ipm_tbl.COUNT > 0) THEN
1697 i := p_ipm_tbl.FIRST;
1698 LOOP
1699 DECLARE
1700 l_error_rec OKC_API.ERROR_REC_TYPE;
1701 BEGIN
1702 l_error_rec.api_name := l_api_name;
1703 l_error_rec.api_package := G_PKG_NAME;
1704 l_error_rec.idx := i;
1705 update_row (
1706 p_api_version => p_api_version,
1707 p_init_msg_list => OKC_API.G_FALSE,
1708 x_return_status => l_error_rec.error_type,
1709 x_msg_count => l_error_rec.msg_count,
1710 x_msg_data => l_error_rec.msg_data,
1711 p_ipm_rec => p_ipm_tbl(i),
1712 x_ipm_rec => x_ipm_tbl(i));
1713 IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
1714 l_error_rec.sqlcode := SQLCODE;
1715 load_error_tbl(l_error_rec, px_error_tbl);
1716 ELSE
1717 x_msg_count := l_error_rec.msg_count;
1718 x_msg_data := l_error_rec.msg_data;
1719 END IF;
1720 EXCEPTION
1721 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1722 l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
1723 l_error_rec.sqlcode := SQLCODE;
1724 load_error_tbl(l_error_rec, px_error_tbl);
1725 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1726 l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
1727 l_error_rec.sqlcode := SQLCODE;
1728 load_error_tbl(l_error_rec, px_error_tbl);
1729 WHEN OTHERS THEN
1730 l_error_rec.error_type := 'OTHERS';
1731 l_error_rec.sqlcode := SQLCODE;
1732 load_error_tbl(l_error_rec, px_error_tbl);
1733 END;
1734 EXIT WHEN (i = p_ipm_tbl.LAST);
1735 i := p_ipm_tbl.NEXT(i);
1736 END LOOP;
1737 END IF;
1738 -- Loop through the error_tbl to find the error with the highest severity
1739 -- and return it.
1740 x_return_status := find_highest_exception(px_error_tbl);
1741 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1742 EXCEPTION
1743 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1744 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1745 (
1746 l_api_name,
1747 G_PKG_NAME,
1748 'OKC_API.G_RET_STS_ERROR',
1749 x_msg_count,
1750 x_msg_data,
1751 '_PVT'
1752 );
1753 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1754 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1755 (
1756 l_api_name,
1757 G_PKG_NAME,
1758 'OKC_API.G_RET_STS_UNEXP_ERROR',
1759 x_msg_count,
1760 x_msg_data,
1761 '_PVT'
1762 );
1763 WHEN OTHERS THEN
1764 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1765 (
1766 l_api_name,
1767 G_PKG_NAME,
1768 'OTHERS',
1769 x_msg_count,
1770 x_msg_data,
1771 '_PVT'
1772 );
1773 END update_row;
1774
1775 ---------------------------------------
1776 -- PL/SQL TBL update_row for:IPM_TBL --
1777 ---------------------------------------
1778 PROCEDURE update_row(
1779 p_api_version IN NUMBER,
1780 p_init_msg_list IN VARCHAR2,
1781 x_return_status OUT NOCOPY VARCHAR2,
1782 x_msg_count OUT NOCOPY NUMBER,
1783 x_msg_data OUT NOCOPY VARCHAR2,
1784 p_ipm_tbl IN ipm_tbl_type,
1785 x_ipm_tbl OUT NOCOPY ipm_tbl_type) IS
1786
1787 l_api_version CONSTANT NUMBER := 1;
1788 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
1789 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1790 l_error_tbl OKC_API.ERROR_TBL_TYPE;
1791 BEGIN
1792 OKC_API.init_msg_list(p_init_msg_list);
1793 -- Make sure PL/SQL table has records in it before passing
1794 IF (p_ipm_tbl.COUNT > 0) THEN
1795 update_row (
1796 p_api_version => p_api_version,
1797 p_init_msg_list => OKC_API.G_FALSE,
1798 x_return_status => x_return_status,
1799 x_msg_count => x_msg_count,
1800 x_msg_data => x_msg_data,
1801 p_ipm_tbl => p_ipm_tbl,
1802 x_ipm_tbl => x_ipm_tbl,
1803 px_error_tbl => l_error_tbl);
1804 END IF;
1805 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1806 EXCEPTION
1807 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1808 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1809 (
1810 l_api_name,
1811 G_PKG_NAME,
1812 'OKC_API.G_RET_STS_ERROR',
1813 x_msg_count,
1814 x_msg_data,
1815 '_PVT'
1816 );
1817 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1818 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1819 (
1820 l_api_name,
1821 G_PKG_NAME,
1822 'OKC_API.G_RET_STS_UNEXP_ERROR',
1823 x_msg_count,
1824 x_msg_data,
1825 '_PVT'
1826 );
1827 WHEN OTHERS THEN
1828 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1829 (
1830 l_api_name,
1831 G_PKG_NAME,
1832 'OTHERS',
1833 x_msg_count,
1834 x_msg_data,
1835 '_PVT'
1836 );
1837 END update_row;
1838
1839 ---------------------------------------------------------------------------
1840 -- PROCEDURE delete_row
1841 ---------------------------------------------------------------------------
1842 -------------------------------------
1843 -- delete_row for:OKL_TRX_PARAMS_B --
1844 -------------------------------------
1845 PROCEDURE delete_row(
1846 p_init_msg_list IN VARCHAR2,
1847 x_return_status OUT NOCOPY VARCHAR2,
1848 x_msg_count OUT NOCOPY NUMBER,
1849 x_msg_data OUT NOCOPY VARCHAR2,
1850 p_ipm_rec IN ipm_rec_type) IS
1851
1852 l_api_version CONSTANT NUMBER := 1;
1853 l_api_name CONSTANT VARCHAR2(30) := 'B_delete_row';
1854 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1855 l_ipm_rec ipm_rec_type := p_ipm_rec;
1856 l_row_notfound BOOLEAN := TRUE;
1857 BEGIN
1858 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1859 p_init_msg_list,
1860 '_PVT',
1861 x_return_status);
1862 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1863 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1864 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1865 RAISE OKC_API.G_EXCEPTION_ERROR;
1866 END IF;
1867
1868 DELETE FROM OKL_TRX_PARAMS_B
1869 WHERE ID = p_ipm_rec.id;
1870
1871 x_return_status := l_return_status;
1872 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1873 EXCEPTION
1874 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1875 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1876 (
1877 l_api_name,
1878 G_PKG_NAME,
1879 'OKC_API.G_RET_STS_ERROR',
1880 x_msg_count,
1881 x_msg_data,
1882 '_PVT'
1883 );
1884 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1885 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1886 (
1887 l_api_name,
1888 G_PKG_NAME,
1889 'OKC_API.G_RET_STS_UNEXP_ERROR',
1890 x_msg_count,
1891 x_msg_data,
1892 '_PVT'
1893 );
1894 WHEN OTHERS THEN
1895 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1896 (
1897 l_api_name,
1898 G_PKG_NAME,
1899 'OTHERS',
1900 x_msg_count,
1901 x_msg_data,
1902 '_PVT'
1903 );
1904 END delete_row;
1905 -------------------------------------
1906 -- delete_row for:OKL_TRX_PARAMS_B --
1907 -------------------------------------
1908 PROCEDURE delete_row(
1909 p_api_version IN NUMBER,
1910 p_init_msg_list IN VARCHAR2,
1911 x_return_status OUT NOCOPY VARCHAR2,
1912 x_msg_count OUT NOCOPY NUMBER,
1913 x_msg_data OUT NOCOPY VARCHAR2,
1914 p_ipm_rec IN ipm_rec_type) IS
1915
1916 l_api_version CONSTANT NUMBER := 1;
1917 l_api_name CONSTANT VARCHAR2(30) := 'V_delete_row';
1918 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1919 l_ipm_rec ipm_rec_type := p_ipm_rec;
1920 BEGIN
1921 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1922 G_PKG_NAME,
1923 p_init_msg_list,
1924 l_api_version,
1925 p_api_version,
1926 '_PVT',
1927 x_return_status);
1928 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1929 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1930 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1931 RAISE OKC_API.G_EXCEPTION_ERROR;
1932 END IF;
1933 -----------------------------------------
1934 -- Move VIEW record to "Child" records --
1935 -----------------------------------------
1936 migrate(l_ipm_rec, l_ipm_rec);
1937 -----------------------------------------------
1938 -- Call the DELETE_ROW for each child record --
1939 -----------------------------------------------
1940 delete_row(
1941 p_init_msg_list,
1942 l_return_status,
1943 x_msg_count,
1944 x_msg_data,
1945 l_ipm_rec
1946 );
1947 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1948 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1949 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1950 RAISE OKC_API.G_EXCEPTION_ERROR;
1951 END IF;
1952 x_return_status := l_return_status;
1953 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1954 EXCEPTION
1955 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1956 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1957 (
1958 l_api_name,
1959 G_PKG_NAME,
1960 'OKC_API.G_RET_STS_ERROR',
1961 x_msg_count,
1962 x_msg_data,
1963 '_PVT'
1964 );
1965 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1966 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1967 (
1968 l_api_name,
1969 G_PKG_NAME,
1970 'OKC_API.G_RET_STS_UNEXP_ERROR',
1971 x_msg_count,
1972 x_msg_data,
1973 '_PVT'
1974 );
1975 WHEN OTHERS THEN
1976 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1977 (
1978 l_api_name,
1979 G_PKG_NAME,
1980 'OTHERS',
1981 x_msg_count,
1982 x_msg_data,
1983 '_PVT'
1984 );
1985 END delete_row;
1986 ------------------------------------------------
1987 -- PL/SQL TBL delete_row for:OKL_TRX_PARAMS_B --
1988 ------------------------------------------------
1989 PROCEDURE delete_row(
1990 p_api_version IN NUMBER,
1991 p_init_msg_list IN VARCHAR2,
1992 x_return_status OUT NOCOPY VARCHAR2,
1993 x_msg_count OUT NOCOPY NUMBER,
1994 x_msg_data OUT NOCOPY VARCHAR2,
1995 p_ipm_tbl IN ipm_tbl_type,
1996 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
1997
1998 l_api_version CONSTANT NUMBER := 1;
1999 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
2000 i NUMBER := 0;
2001 BEGIN
2002 OKC_API.init_msg_list(p_init_msg_list);
2003 -- Make sure PL/SQL table has records in it before passing
2004 IF (p_ipm_tbl.COUNT > 0) THEN
2005 i := p_ipm_tbl.FIRST;
2006 LOOP
2007 DECLARE
2008 l_error_rec OKC_API.ERROR_REC_TYPE;
2009 BEGIN
2010 l_error_rec.api_name := l_api_name;
2011 l_error_rec.api_package := G_PKG_NAME;
2012 l_error_rec.idx := i;
2013 delete_row (
2014 p_api_version => p_api_version,
2015 p_init_msg_list => OKC_API.G_FALSE,
2016 x_return_status => l_error_rec.error_type,
2017 x_msg_count => l_error_rec.msg_count,
2018 x_msg_data => l_error_rec.msg_data,
2019 p_ipm_rec => p_ipm_tbl(i));
2020 IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
2021 l_error_rec.sqlcode := SQLCODE;
2022 load_error_tbl(l_error_rec, px_error_tbl);
2023 ELSE
2024 x_msg_count := l_error_rec.msg_count;
2025 x_msg_data := l_error_rec.msg_data;
2026 END IF;
2027 EXCEPTION
2028 WHEN OKC_API.G_EXCEPTION_ERROR THEN
2029 l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
2030 l_error_rec.sqlcode := SQLCODE;
2031 load_error_tbl(l_error_rec, px_error_tbl);
2032 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2033 l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
2034 l_error_rec.sqlcode := SQLCODE;
2035 load_error_tbl(l_error_rec, px_error_tbl);
2036 WHEN OTHERS THEN
2037 l_error_rec.error_type := 'OTHERS';
2038 l_error_rec.sqlcode := SQLCODE;
2039 load_error_tbl(l_error_rec, px_error_tbl);
2040 END;
2041 EXIT WHEN (i = p_ipm_tbl.LAST);
2042 i := p_ipm_tbl.NEXT(i);
2043 END LOOP;
2044 END IF;
2045 -- Loop through the error_tbl to find the error with the highest severity
2046 -- and return it.
2047 x_return_status := find_highest_exception(px_error_tbl);
2048 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2049 EXCEPTION
2050 WHEN OKC_API.G_EXCEPTION_ERROR THEN
2051 x_return_status := OKC_API.HANDLE_EXCEPTIONS
2052 (
2053 l_api_name,
2054 G_PKG_NAME,
2055 'OKC_API.G_RET_STS_ERROR',
2056 x_msg_count,
2057 x_msg_data,
2058 '_PVT'
2059 );
2060 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2061 x_return_status := OKC_API.HANDLE_EXCEPTIONS
2062 (
2063 l_api_name,
2064 G_PKG_NAME,
2065 'OKC_API.G_RET_STS_UNEXP_ERROR',
2066 x_msg_count,
2067 x_msg_data,
2068 '_PVT'
2069 );
2070 WHEN OTHERS THEN
2071 x_return_status := OKC_API.HANDLE_EXCEPTIONS
2072 (
2073 l_api_name,
2074 G_PKG_NAME,
2075 'OTHERS',
2076 x_msg_count,
2077 x_msg_data,
2078 '_PVT'
2079 );
2080 END delete_row;
2081
2082 ------------------------------------------------
2083 -- PL/SQL TBL delete_row for:OKL_TRX_PARAMS_B --
2084 ------------------------------------------------
2085 PROCEDURE delete_row(
2086 p_api_version IN NUMBER,
2087 p_init_msg_list IN VARCHAR2,
2088 x_return_status OUT NOCOPY VARCHAR2,
2089 x_msg_count OUT NOCOPY NUMBER,
2090 x_msg_data OUT NOCOPY VARCHAR2,
2091 p_ipm_tbl IN ipm_tbl_type) IS
2092
2093 l_api_version CONSTANT NUMBER := 1;
2094 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
2095 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2096 l_error_tbl OKC_API.ERROR_TBL_TYPE;
2097 BEGIN
2098 OKC_API.init_msg_list(p_init_msg_list);
2099 -- Make sure PL/SQL table has records in it before passing
2100 IF (p_ipm_tbl.COUNT > 0) THEN
2101 delete_row (
2102 p_api_version => p_api_version,
2103 p_init_msg_list => OKC_API.G_FALSE,
2104 x_return_status => x_return_status,
2105 x_msg_count => x_msg_count,
2106 x_msg_data => x_msg_data,
2107 p_ipm_tbl => p_ipm_tbl,
2108 px_error_tbl => l_error_tbl);
2109 END IF;
2110 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2111 EXCEPTION
2112 WHEN OKC_API.G_EXCEPTION_ERROR THEN
2113 x_return_status := OKC_API.HANDLE_EXCEPTIONS
2114 (
2115 l_api_name,
2116 G_PKG_NAME,
2117 'OKC_API.G_RET_STS_ERROR',
2118 x_msg_count,
2119 x_msg_data,
2120 '_PVT'
2121 );
2122 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2123 x_return_status := OKC_API.HANDLE_EXCEPTIONS
2124 (
2125 l_api_name,
2126 G_PKG_NAME,
2127 'OKC_API.G_RET_STS_UNEXP_ERROR',
2128 x_msg_count,
2129 x_msg_data,
2130 '_PVT'
2131 );
2132 WHEN OTHERS THEN
2133 x_return_status := OKC_API.HANDLE_EXCEPTIONS
2134 (
2135 l_api_name,
2136 G_PKG_NAME,
2137 'OTHERS',
2138 x_msg_count,
2139 x_msg_data,
2140 '_PVT'
2141 );
2142 END delete_row;
2143
2144 END OKL_IPM_PVT;