[Home] [Help]
PACKAGE BODY: APPS.GMD_OPERATION_ACTIVITIES_PUB
Source
1 PACKAGE BODY GMD_OPERATION_ACTIVITIES_PUB AS
2 /* $Header: GMDPOPAB.pls 120.0.12010000.2 2009/03/16 06:34:37 kannavar ship $
3 +=========================================================================+
4 | FILENAME |
5 | GMDPOPAB.pls |
6 | |
7 | DESCRIPTION |
8 | This package contains public definitions for |
9 | creating, modifying, deleting operation activities |
10 | |
11 | HISTORY |
12 | 21-AUG-2002 Sandra Dulyk Created |
13 | 20-FEB-2004 NSRIVAST Bug# 3222090 |
14 | Removed call to FND_PROFILE.VALUE('AFLOG_ENABLED')|
15 +=========================================================================+
16 API Name : GMD_OPERATION_ACTIVITIES_PUB
17 Type : Public
18 Function : This package contains public procedures used to create, modify, and delete operation activties
19 Pre-reqs : N/A
20 Parameters: Per function
21
22 Current Vers : 1.0
23
24 Previous Vers : 1.0
25
26 Initial Vers : 1.0
27 Notes
28 */
29
30 --Bug 3222090, NSRIVAST 20-FEB-2004, BEGIN
31 --Forward declaration.
32 FUNCTION set_debug_flag RETURN VARCHAR2;
33 l_debug VARCHAR2(1) := set_debug_flag;
34
35 FUNCTION set_debug_flag RETURN VARCHAR2 IS
36 l_debug VARCHAR2(1):= 'N';
37 BEGIN
38 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
39 l_debug := 'Y';
40 END IF;
41 RETURN l_debug;
42 END set_debug_flag;
43 --Bug 3222090, NSRIVAST 20-FEB-2004, END
44
45 /*==============================================
46 Procedure
47 insert_operation_activity
48 Description
49 This particular procedure is used to insert an
50 operation activity Parameters
51 ================================================ */
52 PROCEDURE insert_operation_activity
53 ( p_api_version IN NUMBER
54 , p_init_msg_list IN BOOLEAN
55 , p_commit IN BOOLEAN
56 , p_oprn_no IN gmd_operations.oprn_no%TYPE
57 , p_oprn_vers IN gmd_operations.oprn_vers%TYPE
58 , p_oprn_activity IN OUT NOCOPY gmd_operation_activities%ROWTYPE
59 , p_oprn_rsrc_tbl IN gmd_operation_resources_pub.gmd_oprn_resources_tbl_type
60 , x_message_count OUT NOCOPY NUMBER
61 , x_message_list OUT NOCOPY VARCHAR2
62 , x_return_status OUT NOCOPY VARCHAR2) IS
63
64 v_activity gmd_operation_activities.activity%TYPE;
65 v_oprn_line_Id gmd_operation_activities.oprn_line_id%TYPE;
66 v_oprn_id gmd_operation_activities.oprn_id%TYPE;
67 v_count NUMBER;
68
69 l_retn_status VARCHAR2(1);
70 l_api_version NUMBER := 1.0;
71
72 setup_failure EXCEPTION;
73 invalid_version EXCEPTION;
74 ins_oprn_actv_err EXCEPTION;
75
76 CURSOR check_oprn_id (p_oprn_id gmd_operations.oprn_id%TYPE)IS
77 SELECT 1
78 FROM gmd_operations_b
79 WHERE oprn_id = p_oprn_id
80 AND delete_mark = 0;
81
82 CURSOR check_oprn_no_vers(p_oprn_no gmd_operations.oprn_no%TYPE
83 , p_oprn_vers gmd_operations.oprn_vers%TYPE ) IS
84 SELECT oprn_id
85 FROM gmd_operations_b
86 WHERE oprn_No = p_oprn_no
87 AND oprn_vers = p_oprn_vers
88 and delete_Mark = 0;
89
90 CURSOR check_activity(v_activity gmd_operation_activities.activity%TYPE) IS
91 SELECT 1
92 FROM gmd_activities
93 WHERE activity = v_activity
94 and delete_mark = 0;
95
96 CURSOR Cur_gen_oprnline_id IS
97 SELECT GEM5_OPRNLINE_ID_S.NEXTVAL
98 FROM FND_DUAL;
99
100 BEGIN
101 SAVEPOINT insert_oprn_actv;
102
103 /* Initialize message list and count if needed */
104 IF p_init_msg_list THEN
105 fnd_msg_pub.initialize;
106 END IF;
107
108 IF (l_debug = 'Y') THEN
109 gmd_debug.put_line('In insert_operation_activity public.');
110 END IF;
111
112 /* Initially let us assign the return status to success */
113 x_return_status := FND_API.g_ret_sts_success;
114
115 IF NOT gmd_api_grp.setup_done THEN
116 gmd_api_grp.setup_done := gmd_api_grp.setup;
117 END IF;
118 IF NOT gmd_api_grp.setup_done THEN
119 RAISE setup_failure;
120 END IF;
121
122 /* Make sure we are call compatible */
123 IF NOT FND_API.compatible_api_call(l_api_version
124 ,p_api_version
125 ,'insert_operation_activity'
126 ,'gmd_operation_activities_pub') THEN
127 RAISE invalid_version;
128 END IF;
129
130 /* Operation number ID must be passed, otherwise give error, also check operation exists */
131 IF (p_oprn_activity.oprn_id IS NULL) THEN
132 IF ((p_oprn_no IS NULL) OR (p_oprn_vers IS NULL)) THEN
133 FND_MESSAGE.SET_NAME ('GMI', 'GMI_MISSING');
134 FND_MESSAGE.SET_TOKEN ('MISSING', 'OPRN_NO');
135 FND_MSG_PUB.ADD;
136 ELSE
137 OPEN check_oprn_no_vers(p_oprn_no, p_oprn_vers);
138 FETCH check_oprn_no_vers INTO v_oprn_id;
139 IF check_oprn_no_vers%NOTFOUND THEN
140 /* must pass existing operation no and vers */
141 FND_MESSAGE.SET_NAME('GMD','FM_INVOPRN');
142 FND_MSG_PUB.ADD;
143 RAISE ins_oprn_actv_err;
144 END IF;
145 CLOSE check_oprn_no_vers;
146 END IF;
147 ELSE
148 v_oprn_id := p_oprn_activity.oprn_id;
149 END IF;
150
151 /* Operation Security Validation */
152 /* Validation: Check if this users performing update has access to this
153 operation owner orgn code */
154 IF NOT GMD_API_GRP.Check_orgn_access(Entity => 'OPERATION'
155 ,Entity_id => v_oprn_id) THEN
156 RAISE ins_oprn_actv_err;
157 END IF;
158
159 /* Activity must be passed, otherwise give error */
160 IF p_oprn_activity.activity IS NULL THEN
161 IF (l_debug = 'Y') THEN
162 gmd_debug.put_line('operation activity required');
163 END IF;
164
165 FND_MESSAGE.SET_NAME ('GMI', 'GMI_MISSING');
166 FND_MESSAGE.SET_TOKEN ('MISSING', 'ACTIVITY');
167 FND_MSG_PUB.ADD;
168 RAISE ins_oprn_actv_err;
169 ELSE
170 v_activity := p_oprn_activity.activity;
171 OPEN check_activity(v_activity);
172 FETCH check_activity INTO v_count;
173 IF check_activity%NOTFOUND THEN
174 /* must pass existing activity */
175 FND_MESSAGE.SET_NAME('GMD','FM_INVACTIVITY');
176 FND_MSG_PUB.ADD;
177 RAISE ins_oprn_actv_err;
178 END IF;
179 CLOSE check_activity;
180 END IF;
181
182 /* check activity factor has a value else default */
183 IF p_oprn_activity.activity_factor IS NULL THEN
184 p_oprn_activity.activity_factor := 1;
185 ELSIF p_oprn_activity.activity_factor < 0 THEN
186 gmd_api_grp.log_message ('GMD_NEGATIVE_FIELDS',
187 'FIELD', 'ACTIVITY_FACTOR');
188 RAISE ins_oprn_actv_err;
189 END IF;
190
191 /* check offset interval has a value else default */
192 IF p_oprn_activity.offset_interval IS NULL THEN
193 p_oprn_activity.offset_interval := 0;
194 ELSIF p_oprn_activity.offset_interval < 0 THEN
195 gmd_api_grp.log_message ('GMD_NEGATIVE_FIELDS',
196 'FIELD','OFFSET_INTERVAL');
197 RAISE ins_oprn_actv_err;
198 END IF;
199
200 /* check sequence_dependent_ind has a value else default */
201 IF p_oprn_activity.sequence_dependent_ind IS NULL THEN
202 p_oprn_activity.sequence_dependent_ind := 0;
203 ELSIF p_oprn_activity.sequence_dependent_ind NOT IN (1,0) THEN
204 FND_MESSAGE.SET_NAME('GMD','GMD_INVALID_SEQ_DEP_IND');
205 FND_MSG_PUB.ADD;
206 RAISE ins_oprn_actv_err;
207 END IF;
208
209 /* generate oprnline_id */
210 OPEN Cur_gen_oprnline_id;
211 FETCH Cur_gen_oprnline_id INTO p_oprn_activity.oprn_line_id;
212 CLOSE Cur_gen_oprnline_id;
213
214 IF x_return_status = 'S' THEN
215 IF (l_debug = 'Y') THEN
216 gmd_debug.put_line('before PVT insert_oprn_activity routine called');
217 END IF;
218
219 /* call insert operation activity routine using oprn_id */
220 GMD_OPERATION_ACTIVITIES_PVT.insert_operation_activity(
221 p_oprn_id => v_oprn_id,
222 p_oprn_activity => p_oprn_activity,
223 x_message_count => x_message_count,
224 x_message_list => x_message_list,
225 x_return_status => l_retn_status);
226
227 IF l_retn_status <> FND_API.g_ret_sts_success THEN
228 RAISE ins_oprn_actv_err;
229 END IF;
230
231 /* Added the below call in Bug No.8316321 */
232 GMD_API_GRP.set_activity_sequence_num (P_oprn_id => v_oprn_id,
233 P_user_id => fnd_global.user_id,
234 P_login_id => fnd_global.login_id);
235
236
237 IF p_oprn_rsrc_tbl.count > 0 THEN
238 /* call insert operation resources */
239 GMD_OPERATION_RESOURCES_PUB.insert_operation_resources(
240 p_init_msg_list => FALSE,
241 p_oprn_line_id => p_oprn_activity.oprn_line_id,
242 p_oprn_rsrc_tbl => p_oprn_rsrc_tbl,
243 x_message_count => x_message_count,
244 x_message_list => x_message_list,
245 x_return_status => l_retn_status);
246 IF l_retn_status <> FND_API.g_ret_sts_success THEN
247 RAISE ins_oprn_actv_err;
248 END IF;
249 END IF;
250
251 IF p_commit THEN
252 COMMIT;
253 END IF;
254 END IF;
255
256 FND_MSG_PUB.count_and_get(p_count => x_message_count
257 ,p_data => x_message_list);
258 EXCEPTION
259 WHEN setup_failure OR invalid_version THEN
260 ROLLBACK TO SAVEPOINT insert_oprn_actv;
261 x_return_status := FND_API.G_RET_STS_ERROR;
262 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
263 P_data => x_message_list);
264 WHEN ins_oprn_actv_err THEN
265 ROLLBACK TO SAVEPOINT insert_oprn_actv;
266 x_return_status := FND_API.G_RET_STS_ERROR;
267 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
268 P_data => x_message_list);
269 WHEN OTHERS THEN
270 ROLLBACK TO SAVEPOINT insert_oprn_actv;
271 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
272 FND_MESSAGE.SET_NAME('GMD', 'GMD_UNEXPECTED_ERROR');
273 FND_MESSAGE.SET_TOKEN('ERROR', sqlerrm);
274 FND_MSG_PUB.ADD;
275 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
276 P_data => x_message_list);
277 END insert_operation_activity;
278
279 /*===============================================
280 Procedure
281 update_operation_activity
282 Description
283 This particular procedure is used to update
284 an operation activity Parameters
285 ================================================ */
286 PROCEDURE update_operation_activity
287 ( p_api_version IN NUMBER
288 , p_init_msg_list IN BOOLEAN
289 , p_commit IN BOOLEAN
290 , p_oprn_line_id IN gmd_operation_activities.oprn_line_id%TYPE
291 , p_update_table IN gmd_operation_activities_pub.update_tbl_type
292 , x_message_count OUT NOCOPY NUMBER
293 , x_message_list OUT NOCOPY VARCHAR2
294 , x_return_status OUT NOCOPY VARCHAR2) IS
295
296 v_oprn_id gmd_operations.oprn_id%TYPE;
297 l_retn_status VARCHAR2(1);
298 l_api_version NUMBER := 1.0;
299
300 invalid_version EXCEPTION;
301 setup_failure EXCEPTION;
302 upd_oprn_actv_err EXCEPTION;
303
304 CURSOR get_oprn_id(p_oprN_line_id gmd_operation_activities.oprn_line_id%TYPE) IS
305 SELECT oprn_id
306 FROM gmd_operation_activities
307 WHERE oprn_line_id = p_oprn_line_id
308 AND delete_mark = 0;
309
310 BEGIN
311 SAVEPOINT upd_oprn_actv;
312
313 /* Initialize message list and count if needed */
314 IF p_init_msg_list THEN
315 fnd_msg_pub.initialize;
316 END IF;
317
318 /* Initially let us assign the return status to success */
319 x_return_status := FND_API.g_ret_sts_success;
320
321 IF NOT gmd_api_grp.setup_done THEN
322 gmd_api_grp.setup_done := gmd_api_grp.setup;
323 END IF;
324 IF NOT gmd_api_grp.setup_done THEN
325 RAISE setup_failure;
326 END IF;
327
328 /* Make sure we are call compatible */
329 IF NOT FND_API.compatible_api_call(l_api_version
330 ,p_api_version
331 ,'update_operation_activity'
332 ,'gmd_operation_activities_pub') THEN
333 RAISE invalid_version;
334 END IF;
335
336 IF (l_debug = 'Y') THEN
337 gmd_debug.put_line('Start of update_operation_activity PUB');
338 END IF;
339
340 /* Oprn_line_id must be passed, otherwise give error */
341 IF p_oprn_line_id IS NULL THEN
342 IF (l_debug = 'Y') THEN
343 gmd_debug.put_line('operation line id is required');
344 END IF;
345
346 FND_MESSAGE.SET_NAME ('GMI', 'GMI_MISSING');
347 FND_MESSAGE.SET_TOKEN ('MISSING', 'OPRN_LINE_ID');
348 FND_MSG_PUB.ADD;
349 RAISE upd_oprn_actv_err;
350 END IF;
351
352 /* Loop thru cols to be updated - verify col and value are present */
353 FOR i in 1 .. p_update_table.count LOOP
354 /* Col_to_update and value must be passed, otherwise give error */
355 IF p_update_table(i).p_col_to_update IS NULL THEN
356 IF (l_debug = 'Y') THEN
357 gmd_debug.put_line('col_to_update required');
358 END IF;
359
360 FND_MESSAGE.SET_NAME ('GMI', 'GMI_MISSING');
361 FND_MESSAGE.SET_TOKEN ('MISSING', 'COL_TO_UPDATE');
362 FND_MSG_PUB.ADD;
363 RAISE upd_oprn_actv_err;
364 ELSIF p_update_table(i).p_value IS NULL THEN
365 IF (l_debug = 'Y') THEN
366 gmd_debug.put_line('value required');
367 END IF;
368
369 FND_MESSAGE.SET_NAME ('GMI', 'GMI_MISSING');
370 FND_MESSAGE.SET_TOKEN ('MISSING', 'P_VALUE');
371 FND_MSG_PUB.ADD;
372 RAISE upd_oprn_actv_err;
373 END IF;
374 END LOOP;
375
376 /* Validation : Verify Operation status is not On Hold nor Obsolete/Archived
377 and Operation is not logically deleted */
378 OPEN get_oprn_id(p_oprn_line_id);
379 FETCH get_oprn_id INTO v_oprn_id;
380 IF get_oprn_id%NOTFOUND THEN
381 gmd_api_grp.log_message('GMD_INVALID_OPRNLINE_ID');
382 x_return_status := FND_API.g_ret_sts_error;
383 END IF;
384 CLOSE get_oprn_id;
385
386 /* Operation Security Validation */
387 /* Validation: Check if this users performing update has access to this
388 operation owner orgn code */
389 IF NOT GMD_API_GRP.Check_orgn_access(Entity => 'OPERATION'
390 ,Entity_id => v_oprn_id) THEN
391 RAISE upd_oprn_actv_err;
392 END IF;
393
394 IF NOT GMD_COMMON_VAL.UPDATE_ALLOWED(Entity => 'OPERATION',
395 Entity_id => v_oprn_id ) THEN
396 FND_MESSAGE.SET_NAME('GMD', 'GMD_OPRN_NOT_VALID');
397 FND_MSG_PUB.ADD;
398 RAISE upd_oprn_actv_err;
399 END IF;
400
401 /* delete_mark validation */
402 FOR a IN 1 .. p_update_table.count LOOP
403 /* check activity factor has a value else default */
404 IF (UPPER(p_update_table(a).p_col_to_update) = 'ACTIVITY_FACTOR' AND
405 p_update_table(a).p_value < 0) THEN
406 gmd_api_grp.log_message ('GMD_NEGATIVE_FIELDS',
407 'FIELD', p_update_table(a).p_col_to_update);
408 RAISE upd_oprn_actv_err;
409 /* check offset interval has a value else default */
410 ELSIF (UPPER(p_update_table(a).p_col_to_update) = 'OFFSET_INTERVAL' AND
411 p_update_table(a).p_value < 0) THEN
412 gmd_api_grp.log_message ('GMD_NEGATIVE_FIELDS',
413 'FIELD', p_update_table(a).p_col_to_update);
414 RAISE upd_oprn_actv_err;
415 ELSIF (UPPER(p_update_table(a).p_col_to_update) = 'SEQUENCE_DEPENDENT_IND' AND
416 p_update_table(a).p_value NOT IN (1,0)) THEN
417 FND_MESSAGE.SET_NAME('GMD','GMD_INVALID_SEQ_DEP_IND');
418 FND_MSG_PUB.ADD;
419 RAISE upd_oprn_actv_err;
420 END IF;
421 END LOOP;
422
423 IF x_return_status = 'S' THEN
424 GMD_OPERATION_ACTIVITIES_PVT.update_operation_activity(p_oprn_line_id => p_oprn_line_id
425 , p_update_table => p_update_table
426 , x_message_count => x_message_count
427 , x_message_list => x_message_list
428 , x_return_status => l_retn_status);
429 IF l_retn_status <> FND_API.g_ret_sts_success THEN
430 RAISE upd_oprn_actv_err;
431 END IF;
432
433 /* Added the below call in Bug No.8316321 */
434 GMD_API_GRP.set_activity_sequence_num (P_oprn_id => v_oprn_id,
435 P_user_id => fnd_global.user_id,
436 P_login_id => fnd_global.login_id);
437
438 IF p_commit THEN
439 COMMIT;
440 END IF;
441
442 END IF;
443
444 FND_MSG_PUB.count_and_get(p_count => x_message_count
445 ,p_data => x_message_list);
446
447 EXCEPTION
448 WHEN setup_failure OR invalid_version THEN
449 ROLLBACK TO SAVEPOINT upd_oprn_actv;
450 x_return_status := FND_API.G_RET_STS_ERROR;
451 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
452 P_data => x_message_list);
453 WHEN upd_oprn_actv_err THEN
454 ROLLBACK TO SAVEPOINT upd_oprn_actv;
455 x_return_status := FND_API.G_RET_STS_ERROR;
456 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
457 P_data => x_message_list);
458
459 WHEN OTHERS THEN
460 ROLLBACK TO SAVEPOINT upd_oprn_actv;
461 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
462 FND_MESSAGE.SET_NAME('GMD', 'GMD_UNEXPECTED_ERROR');
463 FND_MESSAGE.SET_TOKEN('ERROR', sqlerrm);
464 FND_MSG_PUB.ADD;
465 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
466 P_data => x_message_list);
467
468
469 END update_operation_activity;
470
471 /*================================================
472 Procedure
473 delete_operation_activity
474 Description
475 This particular procedure is used to delete an
476 operation activity Parameters
477 ================================================ */
478 PROCEDURE delete_operation_activity
479 ( p_api_version IN NUMBER
480 , p_init_msg_list IN BOOLEAN
481 , p_commit IN BOOLEAN
482 , p_oprn_line_id IN gmd_operation_activities.oprn_line_id%TYPE
483 , x_message_count OUT NOCOPY NUMBER
484 , x_message_list OUT NOCOPY VARCHAR2
485 , x_return_status OUT NOCOPY VARCHAR2) IS
486
487 v_update_table gmd_operation_activities_pub.update_tbl_type;
488 v_count NUMBER;
489 l_retn_status VARCHAR2(1);
490 l_api_version NUMBER := 1.0;
491 l_oprn_id NUMBER(15);
492
493 invalid_version EXCEPTION;
494 setup_failure EXCEPTION;
495 del_oprn_actv_err EXCEPTION;
496
497 CURSOR chk_oprn_line_id(v_oprN_line_id NUMBER) IS
498 SELECT oprn_id
499 FROM gmd_operation_activities
500 WHERE oprn_line_id = v_oprn_line_id;
501
502 CURSOR get_activity_count (v_oprn_id NUMBER) IS
503 SELECT COUNT(1)
504 FROM gmd_operation_activities a
505 WHERE a.oprn_id = v_oprn_id;
506
507 BEGIN
508 SAVEPOINT delete_oprn_actv;
509
510 /* Initialize message list and count if needed */
511 IF p_init_msg_list THEN
512 fnd_msg_pub.initialize;
513 END IF;
514
515 /* Initially let us assign the return status to success */
516 x_return_status := FND_API.g_ret_sts_success;
517
518 IF NOT gmd_api_grp.setup_done THEN
519 gmd_api_grp.setup_done := gmd_api_grp.setup;
520 END IF;
521 IF NOT gmd_api_grp.setup_done THEN
522 RAISE setup_failure;
523 END IF;
524
525
526 /* Make sure we are call compatible */
527 IF NOT FND_API.compatible_api_call(l_api_version
528 ,p_api_version
529 ,'delete_operation_activity'
530 ,'gmd_operation_activities_pvt') THEN
531 RAISE invalid_version;
532 END IF;
533
534 IF (l_debug = 'Y') THEN
535 gmd_debug.put_line('START of delete_operation_activity PUB');
536 END IF;
537
538
539 /* Operation Line ID must be passed, otherwise give error */
540 IF p_oprn_line_id IS NULL THEN
541 IF (l_debug = 'Y') THEN
542 gmd_debug.put_line('Operation Line id is required');
543 END IF;
544
545 FND_MESSAGE.SET_NAME ('GMI', 'GMI_MISSING');
546 FND_MESSAGE.SET_TOKEN ('MISSING', 'OPRN_LINE_ID');
547 FND_MSG_PUB.ADD;
548 RAISE del_oprn_actv_err;
549 ELSE
550 OPEN chk_oprn_line_id(p_oprn_line_id);
551 FETCH chk_oprn_line_Id INTO l_oprn_id;
552 IF chk_oprn_line_ID%NOTFOUND THEN
553 FND_MESSAGE.SET_NAME('GMD','GMD_INVALID_OPRNLINE_ID');
554 FND_MSG_PUB.ADD;
555 RAISE del_oprn_actv_err;
556 ELSE
557 OPEN get_activity_count (l_oprn_id);
558 FETCH get_activity_count INTO v_count;
559 CLOSE get_activity_count;
560 IF v_count = 1 THEN
561 gmd_api_grp.log_message ('GMD_DETAILS_REQUIRED');
562 RAISE del_oprn_actv_err;
563 END IF;
564 END IF;
565 CLOSE chk_oprN_line_id;
566 END IF;
567
568 /* Operation Security Validation */
569 /* Validation: Check if this users performing update has access to this
570 operation owner orgn code */
571 IF NOT GMD_API_GRP.Check_orgn_access(Entity => 'OPERATION'
572 ,Entity_id => l_oprn_id) THEN
573 RAISE del_oprn_actv_err;
574 END IF;
575
576 IF x_return_status = 'S' THEN
577 gmd_operation_activities_pvt.delete_operation_activity
578 (p_oprn_line_id => p_oprn_line_id
579 , x_message_count => x_message_count
580 , x_message_list => x_message_list
581 , x_return_status => l_retn_status);
582 IF l_retn_status <> FND_API.g_ret_sts_success THEN
583 RAISE del_oprn_actv_err;
584 END IF;
585
586 IF p_commit THEN
587 COMMIT;
588 END IF;
589 END IF;
590
591 FND_MSG_PUB.count_and_get(p_count => x_message_count
592 ,p_data => x_message_list);
593
594 EXCEPTION
595 WHEN setup_failure OR invalid_version THEN
596 ROLLBACK TO SAVEPOINT delete_oprn_actv;
597 x_return_status := FND_API.G_RET_STS_ERROR;
598 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
599 P_data => x_message_list);
600 WHEN del_oprn_actv_err THEN
601 ROLLBACK TO SAVEPOINT delete_oprn_actv;
602 x_return_status := FND_API.G_RET_STS_ERROR;
603 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
604 P_data => x_message_list);
605 WHEN OTHERS THEN
606 ROLLBACK TO SAVEPOINT delete_oprn_actv;
607 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
608 FND_MESSAGE.SET_NAME('GMD', 'GMD_UNEXPECTED_ERROR');
609 FND_MESSAGE.SET_TOKEN('ERROR', sqlerrm);
610 FND_MSG_PUB.ADD;
611 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
612 P_data => x_message_list);
613 END delete_operation_activity;
614
615 END GMD_OPERATION_ACTIVITIES_PUB;