DBA Data[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;