[Home] [Help]
PACKAGE BODY: APPS.XLA_CMP_CALL_FCT_PKG
Source
1 PACKAGE BODY xla_cmp_call_fct_pkg AS
2 /* $Header: xlacpcll.pkb 120.19 2006/04/06 19:39:58 wychan ship $ */
3 /*===========================================================================+
4 | Copyright (c) 2001-2002 Oracle Corporation |
5 | Redwood Shores, CA, USA |
6 | All rights reserved. |
7 +============================================================================+
8 | PACKAGE NAME |
9 | xla_cmp_call_fct_pkg |
10 | |
11 | DESCRIPTION |
12 | This is a XLA private package, which contains all the logic required |
13 | to generate function/procedure calls |
14 | |
15 | |
16 | HISTORY |
17 | 25-JUN-2002 K.Boussema Created |
18 | 20-FEB-2003 K.Boussema Added 'dbdrv' command |
19 | 22-APR-2003 K.Boussema Included error messages |
20 | 17-JUL-2003 K.Boussema Reviewd the code |
21 | 18-DEC-2003 K.Boussema Changed to fix bug 3042840,3307761,3268940 |
22 | 3310291 and 3320689 |
23 | 23-FEB-2004 K.Boussema Made changes for the FND_LOG. |
24 | 12-MAR-2004 K.Boussema Changed to incorporate the select of lookups |
25 | from the extract objects |
26 | 22-MAR-2004 K.Boussema Added a parameter p_module to the TRACE calls|
27 | and the procedure. |
28 | 20-Sep-2004 S.Singhania Made ffg chganges for the BULK performance |
29 | - Modifed routines GenerateCallHdrDescALT, |
30 | GetHeaderParameters, GetLineParameters, |
31 | GenerateCallHeaderDesc, GenerateCallLineD|
32 | esc, GenerateCallAcctLineType |
33 | - Replaced LONG with CLOB |
34 | - xla_cmp_string_pkg.replace_token was used|
35 | to perform REPLACE on CLOB variables. |
36 | 21-Sep-2004 S.Singhania Added NOCOPY hint to the OUT parameters. |
37 | 28-Feb-2005 W. Shen change made for ledger currency project |
38 | GenerateCallADR |
39 | 07-Mar-2005 K.Boussema Changed for ADR-enhancements. |
40 +===========================================================================*/
41 --
42 g_chr_newline CONSTANT VARCHAR2(10):= xla_environment_pkg.g_chr_newline;
43 --
44
45 --
46 --=============================================================================
47 -- *********** Local Trace Routine **********
48 --=============================================================================
49
50 C_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
51 C_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
52 C_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
53 C_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
54 C_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
55 C_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
56
57 C_LEVEL_LOG_DISABLED CONSTANT NUMBER := 99;
58 C_DEFAULT_MODULE CONSTANT VARCHAR2(240) := 'xla.plsql.xla_cmp_call_fct_pkg';
59
60 g_log_level NUMBER;
61 g_log_enabled BOOLEAN;
62
63 PROCEDURE trace
64 (p_msg IN VARCHAR2
65 ,p_level IN NUMBER
66 ,p_module IN VARCHAR2)
67 IS
68 BEGIN
69 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
70 fnd_log.message(p_level, p_module);
71 ELSIF p_level >= g_log_level THEN
72 fnd_log.string(p_level, p_module, p_msg);
73 END IF;
74
75 EXCEPTION
76 WHEN xla_exceptions_pkg.application_exception THEN
77 RAISE;
78 WHEN OTHERS THEN
79 xla_exceptions_pkg.raise_message
80 (p_location => 'xla_cmp_call_fct_pkg.trace');
81 END trace;
82
83
84 /*-----------------------------------------------------------------+
85 | |
86 | Public Function |
87 | |
88 | GetSourceParameters |
89 | |
90 | Generates the source parameters in function/procedure call |
91 | |
92 | Example: p_source_1 => p_source_1, |
93 | p_source_2 => p_source_2, ... |
94 | p_source_2_meaning => p_source_2_meaning, ... |
95 | |
96 +-----------------------------------------------------------------*/
97
98 FUNCTION GetSourceParameters(
99 p_array_source_index IN xla_cmp_source_pkg.t_array_ByInt
100 , p_rec_sources IN xla_cmp_source_pkg.t_rec_sources
101 )
102 RETURN CLOB
103 IS
104 --
105 C_PARAMETER CONSTANT VARCHAR2(1000) := ', p_source_$Index$ => p_source_$Index$';
106 C_MNG_PARAMETER CONSTANT VARCHAR2(1000) := ', p_source_$Index$_meaning => p_source_$Index$_meaning';
107 --
108 l_parameters CLOB;
109 l_one_param VARCHAR2(10000);
110 l_log_module VARCHAR2(240);
111 BEGIN
112 IF g_log_enabled THEN
113 l_log_module := C_DEFAULT_MODULE||'.GetSourceParameters';
114 END IF;
115 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116 trace
117 (p_msg => 'BEGIN of GetSourceParameters'
118 ,p_level => C_LEVEL_PROCEDURE
119 ,p_module => l_log_module);
120 trace
121 (p_msg => 'p_array_source_index.COUNT = '||p_array_source_index.COUNT
122 ,p_level => C_LEVEL_PROCEDURE
123 ,p_module => l_log_module);
124 END IF;
125
126 l_parameters := NULL;
127
128 IF p_array_source_index.COUNT > 0 THEN
129
130 FOR Idx IN p_array_source_index.FIRST .. p_array_source_index.LAST LOOP
131 IF p_array_source_index.EXISTS(Idx) THEN
132
133 l_one_param := C_PARAMETER;
134
135 IF p_rec_sources.array_lookup_type.EXISTS(Idx)
136 AND p_rec_sources.array_lookup_type(Idx) IS NOT NULL
137 AND p_rec_sources.array_view_application_id.EXISTS(Idx)
138 AND p_rec_sources.array_view_application_id(Idx) IS NOT NULL THEN
139
140 l_one_param := l_one_param || g_chr_newline || C_MNG_PARAMETER;
141
142 END IF;
143
144 l_one_param := REPLACE(l_one_param,'$Index$',Idx) ;
145 l_parameters := l_parameters || g_chr_newline || l_one_param ;
146
147 END IF;
148 END LOOP;
149 END IF;
150
151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152 trace
153 (p_msg => 'END of GetSourceParameters'
154 ,p_level => C_LEVEL_PROCEDURE
155 ,p_module => l_log_module);
156 END IF;
157 RETURN l_parameters;
158 EXCEPTION
159 WHEN VALUE_ERROR THEN
160 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
161 trace
162 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
163 ,p_level => C_LEVEL_EXCEPTION
164 ,p_module => l_log_module);
165 END IF;
166 RAISE;
167 WHEN xla_exceptions_pkg.application_exception THEN
168 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
169 trace
170 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
171 ,p_level => C_LEVEL_EXCEPTION
172 ,p_module => l_log_module);
173 END IF;
174 RAISE;
175 WHEN OTHERS THEN
176 xla_exceptions_pkg.raise_message
177 (p_location => 'xla_cmp_call_fct_pkg.GetSourceParameters');
178 END GetSourceParameters;
179
180 /*-----------------------------------------------------------------+
181 | |
182 | Public Function |
183 | |
184 | GetHeaderParameters |
185 | |
186 | Generates the source parameters in header fct/prod call |
187 | |
188 | Example: p_source_1 => l_source_1, |
189 | p_source_2 => l_source_2, ... |
190 | p_source_2_meaning => l_source_2_meaning, ... |
191 | |
192 +-----------------------------------------------------------------*/
193
194 FUNCTION GetHeaderParameters(
195 p_array_source_index IN xla_cmp_source_pkg.t_array_ByInt
196 , p_rec_sources IN xla_cmp_source_pkg.t_rec_sources
197 )
198 RETURN CLOB
199 IS
200 C_PARAMETER CONSTANT VARCHAR2(2000) :=
201 ' , p_source_$Index$ => g_array_event(l_event_id).array_value_$datatype$(''source_$Index$'')';
202 C_MNG_PARAMETER CONSTANT VARCHAR2(2000) :=
203 ' , p_source_$Index$_meaning => g_array_event(l_event_id).array_value_char(''source_$Index$_meaning'')';
204
205 l_parameters CLOB;
206 l_one_param VARCHAR2(10000);
207 l_log_module VARCHAR2(240);
208 BEGIN
209 IF g_log_enabled THEN
210 l_log_module := C_DEFAULT_MODULE||'.GetHeaderParameters';
211 END IF;
212 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
213 trace
214 (p_msg => 'BEGIN of GetHeaderParameters'
215 ,p_level => C_LEVEL_PROCEDURE
216 ,p_module => l_log_module);
217 END IF;
218
219 l_parameters := NULL;
220
221 IF p_array_source_index.COUNT > 0 THEN
222 FOR Idx IN p_array_source_index.FIRST .. p_array_source_index.LAST LOOP
223
224 IF p_array_source_index.EXISTS(Idx) THEN
225
226 l_one_param := C_PARAMETER;
227
228 IF p_rec_sources.array_lookup_type.EXISTS(Idx) AND
229 p_rec_sources.array_lookup_type(Idx) IS NOT NULL AND
230 p_rec_sources.array_view_application_id.EXISTS(Idx) AND
231 p_rec_sources.array_view_application_id(Idx) IS NOT NULL THEN
232
233 l_one_param := l_one_param || g_chr_newline || C_MNG_PARAMETER;
234
235 END IF;
236
237 l_one_param := REPLACE(l_one_param,'$Index$',Idx) ;
238
239 CASE p_rec_sources.array_datatype_code(Idx)
240
241 WHEN 'I' then
242 l_one_param := REPLACE(l_one_param,'$datatype$','num') ;
243 WHEN 'F' then
244 l_one_param := REPLACE(l_one_param,'$datatype$','num') ;
245 WHEN 'N' then
246 l_one_param := REPLACE(l_one_param,'$datatype$','num') ;
247 WHEN 'C' then
248 l_one_param := REPLACE(l_one_param,'$datatype$','char') ;
249 WHEN 'D' then
250 l_one_param := REPLACE(l_one_param,'$datatype$','date') ;
251 ELSE
252 l_one_param := REPLACE(l_one_param,'$datatype$',p_rec_sources.array_datatype_code(Idx)) ;
253 END CASE;
254
255 l_parameters := l_parameters ||g_chr_newline|| l_one_param ;
256
257 END IF;
258 END LOOP;
259 END IF;
260
261 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
262 trace
263 (p_msg => 'END of GetHeaderParameters'
264 ,p_level => C_LEVEL_PROCEDURE
265 ,p_module => l_log_module);
266 END IF;
267 RETURN l_parameters;
268 EXCEPTION
269 WHEN VALUE_ERROR THEN
270 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
271 trace
272 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
273 ,p_level => C_LEVEL_EXCEPTION
274 ,p_module => l_log_module);
275 END IF;
276 RAISE;
277 WHEN xla_exceptions_pkg.application_exception THEN
278 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
279 trace
280 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
281 ,p_level => C_LEVEL_EXCEPTION
282 ,p_module => l_log_module);
283 END IF;
284 RAISE;
285 WHEN OTHERS THEN
286 xla_exceptions_pkg.raise_message
287 (p_location => 'xla_cmp_call_fct_pkg.GetHeaderParameters');
288 END GetHeaderParameters;
289
290 /*--------------------------------------------------------------------------+
291 | |
292 | Public Function |
293 | |
294 | GetLineParameters |
295 | |
296 | Generates the source parameters in line fct/prod call |
297 | |
298 | Example: p_source_1 => l_array_source_1(Idx), |
299 | p_source_1_meaning => l_array_source_1_meaning(Idx), |
300 | p_source_2 => g_array_event(l_event_id).array_value_num('source_1'), ... |
301 | |
302 +--------------------------------------------------------------------------*/
303
304 FUNCTION GetLineParameters(
305 p_array_source_index IN xla_cmp_source_pkg.t_array_ByInt
306 , p_array_source_level IN xla_cmp_source_pkg.t_array_VL1
307 , p_rec_sources IN xla_cmp_source_pkg.t_rec_sources
308 )
309 RETURN CLOB
310 IS
311
312 C_L_PARAMETER CONSTANT VARCHAR2(1000) :=
313 ' , p_source_$Index$ => l_array_source_$Index$(Idx)';
314 C_L_MNG_PARAMETER CONSTANT VARCHAR2(1000) :=
315 ' , p_source_$Index$_meaning => l_array_source_$Index$_meaning(Idx)';
316 C_H_PARAMETER CONSTANT VARCHAR2(1000) :=
317 ' , p_source_$Index$ => g_array_event(l_event_id).array_value_$datatype$(''source_$Index$'')';
321 l_parameters CLOB;
318 C_H_MNG_PARAMETER CONSTANT VARCHAR2(1000) :=
319 ' , p_source_$Index$_meaning => g_array_event(l_event_id).array_value_char(''source_$Index$_meaning'')';
320 --
322 l_one_param VARCHAR2(32000) ;
323 l_log_module VARCHAR2(240);
324 invalid_source EXCEPTION;
325 --
326 BEGIN
327 IF g_log_enabled THEN
328 l_log_module := C_DEFAULT_MODULE||'.GetLineParameters';
329 END IF;
330 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
331 trace
332 (p_msg => 'BEGIN of GetLineParameters'
333 ,p_level => C_LEVEL_PROCEDURE
334 ,p_module => l_log_module);
335 END IF;
336
337 l_parameters := NULL;
338
339 IF p_array_source_index.COUNT > 0 THEN
340
341 FOR Idx IN p_array_source_index.FIRST .. p_array_source_index.LAST LOOP
342
343 IF p_array_source_index.EXISTS(Idx) AND
344 p_array_source_level.EXISTS(Idx) THEN
345
346 IF p_array_source_level(Idx) ='H' THEN
347
348 l_one_param := C_H_PARAMETER;
349
350 IF p_rec_sources.array_lookup_type.EXISTS(Idx) AND
351 p_rec_sources.array_lookup_type(Idx) IS NOT NULL AND
352 p_rec_sources.array_view_application_id.EXISTS(Idx) AND
353 p_rec_sources.array_view_application_id(Idx) IS NOT NULL THEN
354
355 l_one_param := l_one_param || g_chr_newline || C_H_MNG_PARAMETER;
356
357 END IF;
358
359 ELSIF p_array_source_level(Idx) ='L' THEN
360 --
361 l_one_param := C_L_PARAMETER;
362
363 IF p_rec_sources.array_lookup_type.EXISTS(Idx) AND
364 p_rec_sources.array_lookup_type(Idx) IS NOT NULL AND
365 p_rec_sources.array_view_application_id.EXISTS(Idx) AND
366 p_rec_sources.array_view_application_id(Idx) IS NOT NULL THEN
367
368 l_one_param := l_one_param || g_chr_newline || C_L_MNG_PARAMETER;
369
370 END IF;
371
372 ELSE
373 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
374 trace
375 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||
376 ' invalid source level : header source nor line source ='||
377 p_rec_sources.array_source_code(Idx) ||' - '||
378 p_rec_sources.array_source_type_code(Idx) ||' - '||
379 p_rec_sources.array_application_id(Idx)
380 ,p_level => C_LEVEL_EXCEPTION
381 ,p_module => l_log_module);
382 END IF;
383 RAISE invalid_source;
384 END IF;
385 --
386 l_one_param := REPLACE(l_one_param,'$Index$',Idx) ;
387
388 case p_rec_sources.array_datatype_code(Idx)
389 when 'F' then
390 l_one_param := REPLACE(l_one_param,'$datatype$','num') ;
391 when 'N' then
392 l_one_param := REPLACE(l_one_param,'$datatype$','num') ;
393 when 'I' then
394 l_one_param := REPLACE(l_one_param,'$datatype$','num') ;
395 when 'C' then
396 l_one_param := REPLACE(l_one_param,'$datatype$','char') ;
397 when 'D' then
398 l_one_param := REPLACE(l_one_param,'$datatype$','date') ;
399 else
400 l_one_param := REPLACE(l_one_param,'$datatype$',p_rec_sources.array_datatype_code(Idx)) ;
401 end case;
402
403 l_parameters := l_parameters || g_chr_newline|| l_one_param ;
404
405 END IF;
406 END LOOP;
407
408 END IF;
409
410 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
411 trace
412 (p_msg => 'END of GetLineParameters'
413 ,p_level => C_LEVEL_PROCEDURE
414 ,p_module => l_log_module);
415 END IF;
416 RETURN l_parameters;
417 EXCEPTION
418 WHEN invalid_source THEN
419 RAISE;
420 WHEN VALUE_ERROR THEN
421 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
422 trace
423 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
424 ,p_level => C_LEVEL_EXCEPTION
425 ,p_module => l_log_module);
426 END IF;
427 RAISE;
428 WHEN xla_exceptions_pkg.application_exception THEN
429 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
430 trace
431 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
432 ,p_level => C_LEVEL_EXCEPTION
433 ,p_module => l_log_module);
434 END IF;
435 RAISE;
436 WHEN OTHERS THEN
437 xla_exceptions_pkg.raise_message
438 (p_location => 'xla_cmp_call_fct_pkg.GetLineParameters');
439 END GetLineParameters;
440
441 --
442 --=============================================================================
443 --
444 --
445 --
446 --
447 --
448 --
449 --
450 --
451 --
452 --
453 --
454 --
455 --
456 --
457 --
458 --
459 --
460 --
461 --
462 --
463 --
464 --
465 --=============================================================================
466 --=============================================================================
467 -- *********** Initialization routine **********
468 --=============================================================================
469
470 BEGIN
471
472 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
473 g_log_enabled := fnd_log.test
474 (log_level => g_log_level
475 ,module => C_DEFAULT_MODULE);
476
477 IF NOT g_log_enabled THEN
478 g_log_level := C_LEVEL_LOG_DISABLED;
479 END IF;
480
481 END xla_cmp_call_fct_pkg; --