[Home] [Help]
PACKAGE BODY: APPS.FEM_GLOBAL_VS_COMBO_UTIL_PKG
Source
1 PACKAGE BODY FEM_GLOBAL_VS_COMBO_UTIL_PKG AS
2 --$Header: fem_globvs_utl.plb 120.1 2008/02/20 06:56:56 jcliving ship $
3 /*==========================================================================+
4 | Copyright (c) 1997 Oracle Corporation, Redwood Shores, CA, USA |
5 | All rights reserved. |
6 +==========================================================================+
7 | FILENAME
8 |
9 | fem_globvs_utl.plb
10 |
11 | NAME FEM_GLOBAL_VS_COMBO_UTIL_PKG
12 |
13 | DESCRIPTION
14 |
15 | Package Body for the FEM Global Value Set Combo Utility Package
16 |
17 | HISTORY
18 |
19 | 16-MAY-07 RFlippo initial creation
20 | 08-JUN-07 nmartine Update for bug 6052152 to only update ledgers with
21 | the given Global Value Set Combo ID. Also handles
22 | the added GLOBAL_VS_COMBO_ID column.
23 +=========================================================================*/
24
25 -----------------------
26 -- Package Constants --
27 -----------------------
28 c_resp_app_id CONSTANT NUMBER := FND_GLOBAL.RESP_APPL_ID;
29
30 c_user_id CONSTANT NUMBER := FND_GLOBAL.USER_ID;
31 c_login_id NUMBER := FND_GLOBAL.Login_Id;
32
33 c_module_pkg CONSTANT VARCHAR2(80) := 'fem.plsql.fem_global_vs_combo_util_pkg';
34 G_PKG_NAME CONSTANT VARCHAR2(30) := 'FEM_GLOBAL_VS_COMBO_UTIL_PKG';
35
36 f_set_status BOOLEAN;
37
38 c_log_level_1 CONSTANT NUMBER := fnd_log.level_statement;
39 c_log_level_2 CONSTANT NUMBER := fnd_log.level_procedure;
40 c_log_level_3 CONSTANT NUMBER := fnd_log.level_event;
41 c_log_level_4 CONSTANT NUMBER := fnd_log.level_exception;
42 c_log_level_5 CONSTANT NUMBER := fnd_log.level_error;
43 c_log_level_6 CONSTANT NUMBER := fnd_log.level_unexpected;
44
45 c_object_version CONSTANT NUMBER := 1;
46
47
48
49 -----------------------
50 -- Package Variables --
51 -----------------------
52 v_module_log VARCHAR2(255);
53
54
55 v_token_value VARCHAR2(150);
56 v_token_trans VARCHAR2(1);
57
58 v_msg_text VARCHAR2(4000);
59
60 gv_prg_msg VARCHAR2(2000);
61 gv_callstack VARCHAR2(2000);
62
63
64 -----------------------
65 -- Private Procedures --
66 -----------------------
67 PROCEDURE Validate_OA_Params (
68 p_api_version IN NUMBER,
69 p_init_msg_list IN VARCHAR2,
70 p_commit IN VARCHAR2,
71 p_encoded IN VARCHAR2,
72 x_return_status OUT NOCOPY VARCHAR2
73 );
74
75
76
77 /*************************************************************************
78
79 Create_snapshot
80
81 PURPOSE: Creates a new empty snapshot object (Mapping helper rule) and object definition,
82 and registers the association to the true mapping rule in FEM_OBJDEF_HELPER_RULES.
83
84 *************************************************************************/
85
86 PROCEDURE refresh_ledger_vs_maps (
87 p_global_vs_combo_id IN NUMBER,
88 p_api_version IN NUMBER DEFAULT c_api_version,
89 p_init_msg_list IN VARCHAR2 DEFAULT c_false,
90 p_commit IN VARCHAR2 DEFAULT c_false,
91 p_encoded IN VARCHAR2 DEFAULT c_true,
92 x_return_status OUT NOCOPY VARCHAR2,
93 x_msg_count OUT NOCOPY NUMBER,
94 x_msg_data OUT NOCOPY VARCHAR2) IS
95
96 C_MODULE CONSTANT FND_LOG_MESSAGES.module%TYPE :=
97 'fem.plsql.fem_global_vs_combo_util_pkg.refresh_ledger_vs_maps';
98 C_API_NAME CONSTANT VARCHAR2(30) := 'Refresh Ledger Value Set Maps';
99
100 e_unexp EXCEPTION;
101 e_error EXCEPTION;
102 e_attribute EXCEPTION;
103 e_version EXCEPTION;
104 e_global EXCEPTION;
105
106
107
108 v_count number;
109 v_attribute_id FEM_DIM_ATTRIBUTES_B.attribute_id%TYPE;
110 v_version_id FEM_DIM_ATTR_VERSIONS_B.version_id%TYPE;
111
112
113 v_channel_vs_id fem_ledger_dim_vs_maps.CHANNEL_VS_ID%type;
114 v_cctr_org_vs_id fem_ledger_dim_vs_maps.COMPANY_COST_CENTER_ORG_VS_ID%type;
115 v_company_vs_id fem_ledger_dim_vs_maps.COMPANY_VS_ID%type;
116 v_cost_ctr_vs_id fem_ledger_dim_vs_maps.COST_CENTER_VS_ID%type;
117 v_customer_vs_id fem_ledger_dim_vs_maps.CUSTOMER_VS_ID%type;
118 v_entity_vs_id fem_ledger_dim_vs_maps.ENTITY_VS_ID%type;
119 v_fin_elem_vs_id fem_ledger_dim_vs_maps.FINANCIAL_ELEM_VS_ID%type;
120 v_geography_vs_id fem_ledger_dim_vs_maps.GEOGRAPHY_VS_ID%type;
121 v_line_item_vs_id fem_ledger_dim_vs_maps.LINE_ITEM_VS_ID%type;
122 v_natural_account_vs_id fem_ledger_dim_vs_maps.NATURAL_ACCOUNT_VS_ID%type;
123 v_product_vs_id fem_ledger_dim_vs_maps.PRODUCT_VS_ID%type;
124 v_project_vs_id fem_ledger_dim_vs_maps.PROJECT_VS_ID%type;
125 v_task_vs_id fem_ledger_dim_vs_maps.TASK_VS_ID%type;
126 v_user_dim1_vs_id fem_ledger_dim_vs_maps.USER_DIM1_VS_ID%type;
127 v_user_dim2_vs_id fem_ledger_dim_vs_maps.USER_DIM2_VS_ID%type;
128 v_user_dim3_vs_id fem_ledger_dim_vs_maps.USER_DIM3_VS_ID%type;
129 v_user_dim4_vs_id fem_ledger_dim_vs_maps.USER_DIM4_VS_ID%type;
130 v_user_dim5_vs_id fem_ledger_dim_vs_maps.USER_DIM5_VS_ID%type;
131 v_user_dim6_vs_id fem_ledger_dim_vs_maps.USER_DIM6_VS_ID%type;
132 v_user_dim7_vs_id fem_ledger_dim_vs_maps.USER_DIM7_VS_ID%type;
133 v_user_dim8_vs_id fem_ledger_dim_vs_maps.USER_DIM8_VS_ID%type;
134 v_user_dim9_vs_id fem_ledger_dim_vs_maps.USER_DIM9_VS_ID%type;
135 v_user_dim10_vs_id fem_ledger_dim_vs_maps.USER_DIM10_VS_ID%type;
136
137
138 cursor c1 (p_global_vs_combo_id IN NUMBER) is
139 SELECT D.dimension_varchar_label, G.value_set_id
140 FROM fem_dimensions_b D, fem_global_vs_combo_defs G
141 WHERE G.dimension_id = D.dimension_id
142 AND G.global_vs_combo_id = p_global_vs_combo_id;
143
144 cursor c2 (
145 p_attribute_id IN NUMBER,
146 p_version_id IN NUMBER,
147 p_global_vs_combo_id IN NUMBER
148 ) is
149 select ledger_id
150 from fem_ledgers_attr
151 where attribute_id = p_attribute_id
152 and version_id = p_version_id
153 and dim_attribute_numeric_member = p_global_vs_combo_id;
154
155
156
157
158 BEGIN
159
160 -- Standard Start of API savepoint
161 SAVEPOINT refresh_ledger_maps_pub;
162
163
164 IF FND_LOG.level_procedure >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
165 FEM_ENGINES_PKG.TECH_MESSAGE(
166 p_severity => FND_LOG.level_procedure,
167 p_module => C_MODULE,
168 p_msg_text => 'Begin Procedure');
169 END IF;
170
171
172 -- Initialize return status to unexpected error
173 x_return_status := c_unexp;
174
175 -- Check for call compatibility.
176 IF NOT FND_API.Compatible_API_Call (c_api_version,
177 p_api_version,
178 C_API_NAME,
179 G_PKG_NAME)
180 THEN
181 IF FND_LOG.level_statement >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
182 FEM_ENGINES_PKG.TECH_MESSAGE(
183 p_severity => FND_LOG.level_statement,
184 p_module => C_MODULE,
185 p_msg_text => 'API Version ('||C_API_VERSION||') not compatible with '
186 ||'passed in version ('||p_api_version||')');
187 END IF;
188 RAISE e_unexp;
189 END IF;
190
191
192 Validate_OA_Params (
193 p_api_version => p_api_version,
194 p_init_msg_list => p_init_msg_list,
195 p_commit => p_commit,
196 p_encoded => p_encoded,
197 x_return_status => x_return_status);
198
199 IF (x_return_status <> c_success) THEN
200 RAISE e_error;
201 END IF;
202
203 /* Verify the global combo is valid*/
204 BEGIN
205
206 SELECT 1
207 INTO v_count
208 FROM fem_global_vs_combos_vl
209 WHERE global_vs_combo_id = p_global_vs_combo_id;
210
211 EXCEPTION
212 WHEN no_data_found THEN
213 RAISE e_global;
214
215 END;
216
217
218 /* get the attribute_id for GLOBAL_VS_COMBO */
219 BEGIN
220 SELECT attribute_id
221 INTO v_attribute_id
222 FROM fem_dim_attributes_b A, fem_dimensions_b D
223 WHERE D.dimension_varchar_label = 'LEDGER'
224 AND D.dimension_id = A.dimension_id
225 AND A.attribute_varchar_label = 'GLOBAL_VS_COMBO';
226
227 EXCEPTION
228 WHEN OTHERS THEN
229 RAISE e_attribute;
230
231 END;
232
233 /* get the default version_id for GLOBAL_VS_COMBO */
234 BEGIN
235 SELECT version_id
236 INTO v_version_id
237 FROM fem_dim_attr_versions_b
238 WHERE attribute_id = v_attribute_id
239 AND default_version_flag = 'Y';
240
241 EXCEPTION
242 WHEN OTHERS THEN
243 RAISE e_version;
244
245 END;
246
247 /* Get all of the value set ids for each dimension for the global combo*/
248 FOR dim IN c1 (p_global_vs_combo_id) LOOP
249 CASE dim.dimension_varchar_label
250 WHEN 'CHANNEL' THEN v_channel_vs_id := dim.value_set_id;
251 WHEN 'COMPANY_COST_CENTER_ORG' THEN v_cctr_org_vs_id := dim.value_set_id;
252 WHEN 'COMPANY' THEN v_company_vs_id := dim.value_set_id;
253 WHEN 'COST_CENTER' THEN v_cost_ctr_vs_id := dim.value_set_id;
254 WHEN 'CUSTOMER' THEN v_customer_vs_id := dim.value_set_id;
255 WHEN 'ENTITY' THEN v_entity_vs_id := dim.value_set_id;
256 WHEN 'FINANCIAL_ELEMENT' THEN v_fin_elem_vs_id := dim.value_set_id;
257 WHEN 'GEOGRAPHY' THEN v_geography_vs_id := dim.value_set_id;
258 WHEN 'LINE_ITEM' THEN v_line_item_vs_id := dim.value_set_id;
259 WHEN 'NATURAL_ACCOUNT' THEN v_natural_account_vs_id := dim.value_set_id;
260 WHEN 'PRODUCT' THEN v_product_vs_id := dim.value_set_id;
261 WHEN 'PROJECT' THEN v_project_vs_id := dim.value_set_id;
262 WHEN 'TASK' THEN v_task_vs_id := dim.value_set_id;
263 WHEN 'USER_DIM1' THEN v_user_dim1_vs_id := dim.value_set_id;
264 WHEN 'USER_DIM10' THEN v_user_dim10_vs_id := dim.value_set_id;
265 WHEN 'USER_DIM2' THEN v_user_dim2_vs_id := dim.value_set_id;
266 WHEN 'USER_DIM3' THEN v_user_dim3_vs_id := dim.value_set_id;
267 WHEN 'USER_DIM4' THEN v_user_dim4_vs_id := dim.value_set_id;
268 WHEN 'USER_DIM5' THEN v_user_dim5_vs_id := dim.value_set_id;
269 WHEN 'USER_DIM6' THEN v_user_dim6_vs_id := dim.value_set_id;
270 WHEN 'USER_DIM7' THEN v_user_dim7_vs_id := dim.value_set_id;
271 WHEN 'USER_DIM8' THEN v_user_dim8_vs_id := dim.value_set_id;
272 WHEN 'USER_DIM9' THEN v_user_dim9_vs_id := dim.value_set_id;
273 END CASE;
274
275 END LOOP;
276
277
278 /* for each ledger with the given global value set combo id, merge the
279 value set ids into the fem_ledger_dim_vs_maps table*/
280 FOR ledger IN c2 (v_attribute_id, v_version_id, p_global_vs_combo_id) LOOP
281
282 MERGE INTO fem_ledger_dim_vs_maps L
283 USING (SELECT
284 ledger.ledger_id as ledger_id
285 ,p_global_vs_combo_id as global_vs_combo
286 ,v_channel_vs_id as channel
287 ,v_cctr_org_vs_id as cctr
288 ,v_company_vs_id as company
289 ,v_cost_ctr_vs_id as cost_ctr
290 ,v_customer_vs_id as customer
291 ,v_entity_vs_id as entity
292 ,v_fin_elem_vs_id as fin_elem
293 ,v_geography_vs_id as geography
294 ,v_line_item_vs_id as line_item
295 ,v_natural_account_vs_id as natural_acct
296 ,v_product_vs_id as product
297 ,v_project_vs_id as project
298 ,v_task_vs_id as task
299 ,v_user_dim1_vs_id as user_dim1
300 ,v_user_dim2_vs_id as user_dim2
301 ,v_user_dim3_vs_id as user_dim3
302 ,v_user_dim4_vs_id as user_dim4
303 ,v_user_dim5_vs_id as user_dim5
304 ,v_user_dim6_vs_id as user_dim6
305 ,v_user_dim7_vs_id as user_dim7
306 ,v_user_dim8_vs_id as user_dim8
307 ,v_user_dim9_vs_id as user_dim9
308 ,v_user_dim10_vs_id as user_dim10
309 FROM dual) A
310 ON (A.ledger_id = L.ledger_id)
311 WHEN MATCHED THEN UPDATE SET
312 L.GLOBAL_VS_COMBO_ID = p_global_vs_combo_id,
313 L.CHANNEL_VS_ID = v_channel_vs_id,
314 L.COMPANY_COST_CENTER_ORG_VS_ID = v_cctr_org_vs_id,
315 L.COMPANY_VS_ID = v_company_vs_id,
316 L.COST_CENTER_VS_ID = v_cost_ctr_vs_id,
317 L.CUSTOMER_VS_ID = v_customer_vs_id,
318 L.ENTITY_VS_ID = v_entity_vs_id,
319 L.FINANCIAL_ELEM_VS_ID = v_fin_elem_vs_id,
320 L.GEOGRAPHY_VS_ID = v_geography_vs_id,
321 L.LINE_ITEM_VS_ID = v_line_item_vs_id,
322 L.NATURAL_ACCOUNT_VS_ID = v_natural_account_vs_id,
323 L.PRODUCT_VS_ID = v_product_vs_id,
324 L.PROJECT_VS_ID = v_project_vs_id,
325 L.TASK_VS_ID = v_task_vs_id,
326 L.USER_DIM1_VS_ID = v_user_dim1_vs_id,
327 L.USER_DIM2_VS_ID = v_user_dim2_vs_id,
328 L.USER_DIM3_VS_ID = v_user_dim3_vs_id,
329 L.USER_DIM4_VS_ID = v_user_dim4_vs_id,
330 L.USER_DIM5_VS_ID = v_user_dim5_vs_id,
331 L.USER_DIM6_VS_ID = v_user_dim6_vs_id,
332 L.USER_DIM7_VS_ID = v_user_dim7_vs_id,
333 L.USER_DIM8_VS_ID = v_user_dim8_vs_id,
334 L.USER_DIM9_VS_ID = v_user_dim9_vs_id,
335 L.USER_DIM10_VS_ID= v_user_dim10_vs_id
336 WHEN NOT MATCHED THEN INSERT (
337 L.LEDGER_ID,
338 L.GLOBAL_VS_COMBO_ID,
339 L.CHANNEL_VS_ID,
340 L.COMPANY_COST_CENTER_ORG_VS_ID,
341 L.COMPANY_VS_ID,
342 L.COST_CENTER_VS_ID,
343 L.CUSTOMER_VS_ID,
344 L.ENTITY_VS_ID,
345 L.FINANCIAL_ELEM_VS_ID,
346 L.GEOGRAPHY_VS_ID,
347 L.LINE_ITEM_VS_ID,
348 L.NATURAL_ACCOUNT_VS_ID,
349 L.PRODUCT_VS_ID,
350 L.PROJECT_VS_ID,
351 L.TASK_VS_ID,
352 L.USER_DIM1_VS_ID,
353 L.USER_DIM2_VS_ID,
354 L.USER_DIM3_VS_ID,
355 L.USER_DIM4_VS_ID,
356 L.USER_DIM5_VS_ID,
357 L.USER_DIM6_VS_ID,
358 L.USER_DIM7_VS_ID,
359 L.USER_DIM8_VS_ID,
360 L.USER_DIM9_VS_ID,
361 L.USER_DIM10_VS_ID
362 )
363 VALUES (ledger.ledger_id
364 ,p_global_vs_combo_id
365 ,v_channel_vs_id
366 ,v_cctr_org_vs_id
367 ,v_company_vs_id
368 ,v_cost_ctr_vs_id
369 ,v_customer_vs_id
370 ,v_entity_vs_id
371 ,v_fin_elem_vs_id
372 ,v_geography_vs_id
373 ,v_line_item_vs_id
374 ,v_natural_account_vs_id
375 ,v_product_vs_id
376 ,v_project_vs_id
377 ,v_task_vs_id
378 ,v_user_dim1_vs_id
379 ,v_user_dim2_vs_id
380 ,v_user_dim3_vs_id
381 ,v_user_dim4_vs_id
382 ,v_user_dim5_vs_id
386 ,v_user_dim9_vs_id
383 ,v_user_dim6_vs_id
384 ,v_user_dim7_vs_id
385 ,v_user_dim8_vs_id
387 ,v_user_dim10_vs_id
388 );
389
390
391
392
393 END LOOP;
394
395
396 x_return_status := c_success;
397
398 IF FND_LOG.level_procedure >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
399 FEM_ENGINES_PKG.TECH_MESSAGE(
400 p_severity => FND_LOG.level_procedure,
401 p_module => C_MODULE,
402 p_msg_text => 'End Procedure');
403 END IF;
404
405 IF FND_API.To_Boolean( p_commit ) THEN
406 COMMIT WORK;
407 END IF;
408
409
410 EXCEPTION
411 WHEN e_global THEN
412 IF FND_LOG.level_statement >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
413 FEM_ENGINES_PKG.TECH_MESSAGE(
414 p_severity => FND_LOG.level_statement,
415 p_module => C_MODULE,
416 p_msg_text => 'Global Value Set Combo ID does not exist '||p_global_vs_combo_id);
417 END IF;
418 FND_MSG_PUB.Count_And_Get(p_encoded => p_encoded,
419 p_count => x_msg_count,
420 p_data => x_msg_data);
421 ROLLBACK TO refresh_ledger_maps_pub;
422 x_return_status := c_error;
423
424 WHEN e_attribute THEN
425 IF FND_LOG.level_statement >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
426 FEM_ENGINES_PKG.TECH_MESSAGE(
427 p_severity => FND_LOG.level_statement,
428 p_module => C_MODULE,
429 p_msg_text => 'GLOBAL_VS_COMBO attribute metadata does not exist or is not valid');
430 END IF;
431 FND_MSG_PUB.Count_And_Get(p_encoded => p_encoded,
432 p_count => x_msg_count,
433 p_data => x_msg_data);
434 ROLLBACK TO refresh_ledger_maps_pub;
435 x_return_status := c_error;
436
437 WHEN e_version THEN
438 IF FND_LOG.level_statement >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
439 FEM_ENGINES_PKG.TECH_MESSAGE(
440 p_severity => FND_LOG.level_statement,
441 p_module => C_MODULE,
442 p_msg_text => 'GLOBAL_VS_COMBO attribute version metadata does not exist or is not valid');
443 END IF;
444 FND_MSG_PUB.Count_And_Get(p_encoded => p_encoded,
445 p_count => x_msg_count,
446 p_data => x_msg_data);
447 ROLLBACK TO refresh_ledger_maps_pub;
448 x_return_status := c_error;
449
450
451 WHEN others THEN
452 IF FND_LOG.level_statement >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
453 FEM_ENGINES_PKG.TECH_MESSAGE(
454 p_severity => FND_LOG.level_statement,
455 p_module => C_MODULE,
456 p_msg_text => 'Unexpected error.');
457 FEM_ENGINES_PKG.TECH_MESSAGE(
458 p_severity => FND_LOG.level_statement,
459 p_module => C_MODULE,
460 p_msg_text => SQLERRM);
461 END IF;
462 FND_MSG_PUB.Count_And_Get(p_encoded => p_encoded,
463 p_count => x_msg_count,
464 p_data => x_msg_data);
465 ROLLBACK TO refresh_ledger_maps_pub;
466 x_return_status := c_unexp;
467
468
469 END refresh_ledger_vs_maps;
470
471
472 /*************************************************************************
473
474 OA Exception Handler
475
476 *************************************************************************/
477
478 PROCEDURE Validate_OA_Params (
479 p_api_version IN NUMBER,
480 p_init_msg_list IN VARCHAR2,
481 p_commit IN VARCHAR2,
482 p_encoded IN VARCHAR2,
483 x_return_status OUT NOCOPY VARCHAR2
484 )
485 IS
486 e_bad_p_api_ver EXCEPTION;
487 e_bad_p_init_msg_list EXCEPTION;
488 e_bad_p_commit EXCEPTION;
489 e_bad_p_encoded EXCEPTION;
490 BEGIN
491
492 x_return_status := c_success;
493
494 CASE p_api_version
495 WHEN c_api_version THEN NULL;
496 ELSE RAISE e_bad_p_api_ver;
497 END CASE;
498
499 CASE p_init_msg_list
500 WHEN c_false THEN NULL;
501 WHEN c_true THEN
502 FND_MSG_PUB.Initialize;
503 ELSE RAISE e_bad_p_init_msg_list;
504 END CASE;
505
506 CASE p_encoded
507 WHEN c_false THEN NULL;
508 WHEN c_true THEN NULL;
509 ELSE RAISE e_bad_p_encoded;
510 END CASE;
511
512 CASE p_commit
513 WHEN c_false THEN NULL;
514 WHEN c_true THEN NULL;
515 ELSE RAISE e_bad_p_commit;
516 END CASE;
517
518 EXCEPTION
519 WHEN e_bad_p_api_ver THEN
520 FEM_ENGINES_PKG.Put_Message(
521 p_app_name => 'FEM',
522 p_msg_name => 'FEM_BAD_P_API_VER_ERR',
523 p_token1 => 'VALUE',
524 p_value1 => p_api_version);
525 x_return_status := c_error;
526
527 WHEN e_bad_p_init_msg_list THEN
528 FEM_ENGINES_PKG.Put_Message(
529 p_app_name => 'FEM',
530 p_msg_name => 'FEM_BAD_P_INIT_MSG_LIST_ERR');
531 x_return_status := c_error;
532
533 WHEN e_bad_p_encoded THEN
534 FEM_ENGINES_PKG.Put_Message(
535 p_app_name => 'FEM',
536 p_msg_name => 'FEM_BAD_P_ENCODED_ERR');
537 x_return_status := c_error;
538
539 WHEN e_bad_p_commit THEN
540 FEM_ENGINES_PKG.Put_Message(
541 p_app_name => 'FEM',
542 p_msg_name => 'FEM_BAD_P_COMMIT_ERR');
543 x_return_status := c_error;
544
545 END Validate_OA_Params;
546
547
548
549 END FEM_GLOBAL_VS_COMBO_UTIL_PKG;