[Home] [Help]
PACKAGE BODY: APPS.XLA_CMP_ANALYTIC_CRITERIA_PKG
Source
1 PACKAGE BODY xla_cmp_analytic_criteria_pkg AS
2 /* $Header: xlacpanc.pkb 120.14 2005/07/12 22:27:11 awan 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_analytic_criteria_pkg |
10 | |
11 | DESCRIPTION |
12 | This is a XLA private package, which contains all the logic required |
13 | to generate anlytical criteria from AMB specifcations |
14 | |
15 | |
16 | HISTORY |
17 | 10-JAN-2003 K.Boussema Created |
18 | 14-JAN-2003 K.Boussema Added 'dbdrv' command |
19 | 01-APR-2003 K.Boussema Included amb_context_code |
20 | update according to the new datamodel |
21 | 22-APR-2003 K.Boussema Included Error messages |
22 | 02-JUN-2003 K.Boussema Modified to fix bug 2975670 and bug 2729143 |
23 | 17-JUL-2003 K.Boussema Reviewed the code |
24 | 27-SEP-2003 K.Boussema Changed the event_class clauses using '_ALL' |
25 | 10-OCT-2003 K.Boussema Added an Outer join to query Anlytical |
26 | criteria information, bug 3187719 |
27 | 23-FEB-2004 K.Boussema Made changes for the FND_LOG. |
28 | 22-MAR-2004 K.Boussema Added a parameter p_module to the TRACE calls|
29 | and the procedure. |
30 | 11-MAY-2004 K.Boussema Removed the call to XLA trace routine from |
31 | trace() procedure |
32 | 20-Sep-2004 S.Singhania Made ffg chagnes for the bulk changes: |
33 | - Modified constant C_AC_HDR_CALL |
34 | - Minor change to GenerateHdrAnalyticCriteria|
35 | 07-Mar-2005 K.Boussema Changed for ADR-enhancements. |
36 | 11-Jul-2005 A.Wan Changed for MPA Bug 4262811 |
37 +===========================================================================*/
38 --
39 --+==========================================================================+
40 --| |
41 --| |
42 --| Global Constants/variables |
43 --| |
44 --| |
45 --+==========================================================================+
46 --
47 --
48 -- Analytical criteria defined in header
49 --
50 C_AC_HDR_CALL CONSTANT VARCHAR2(10000):= '
51
52 xla_ae_header_pkg.g_rec_header_new.array_anc_id_$number$(hdr_idx) :=
53 xla_ae_header_pkg.SetAnalyticalCriteria(
54 p_analytical_criterion_name => ''$analytical_criterion_name$''
55 , p_analytical_criterion_owner => ''$analytical_criterion_owner$''
56 , p_analytical_criterion_code => ''$analytical_criterion_code$''
57 , p_amb_context_code => ''$amb_context_code$''
58 , p_balancing_flag => ''$balancing_flag$''
59 $analytical_details$
60 )
61 ;
62 --
63 ';
64 --
65 --
66 -- Analytical criteria defined in line
67 --
68 C_AC_LINE_CALL CONSTANT VARCHAR2(10000):= '
69
70 xla_ae_lines_pkg.g_rec_lines.array_anc_id_$number$(xla_ae_lines_pkg.g_LineNumber) :=
71 xla_ae_lines_pkg.SetAnalyticalCriteria(
72 p_analytical_criterion_name => ''$analytical_criterion_name$''
73 , p_analytical_criterion_owner => ''$analytical_criterion_owner$''
74 , p_analytical_criterion_code => ''$analytical_criterion_code$''
75 , p_amb_context_code => ''$amb_context_code$''
76 , p_balancing_flag => ''$balancing_flag$''
77 $analytical_details$
78 , p_ae_header_id => l_ae_header_id
79 )
80 ;
81 --
82 ';
83 --
84 --
85 C_DETAIL_CHAR CONSTANT VARCHAR2(10000):='
86 , p_analytical_detail_char_$Jdx$ => TO_CHAR($detail_value$)
87 , p_analytical_detail_num_$Jdx$ => NULL
88 , p_analytical_detail_date_$Jdx$ => NULL
89 ';
90 --
91 --
92 C_DETAIL_NUM CONSTANT VARCHAR2(10000):='
93 , p_analytical_detail_char_$Jdx$ => NULL
94 , p_analytical_detail_num_$Jdx$ => $detail_value$
95 , p_analytical_detail_date_$Jdx$ => NULL
96 ';
97 --
98 --
99 C_DETAIL_DATE CONSTANT VARCHAR2(10000):='
100 , p_analytical_detail_char_$Jdx$ => NULL
101 , p_analytical_detail_num_$Jdx$ => NULL
102 , p_analytical_detail_date_$Jdx$ => $detail_value$
103 ';
104 --
105 --
106 C_CHAR CONSTANT VARCHAR2(1):= 'C';
107 C_DATE CONSTANT VARCHAR2(1):= 'D';
108 C_NUM CONSTANT VARCHAR2(1):= 'N';
109 --
110 -- 4262811
111 C_LINE CONSTANT VARCHAR2(2):= 'L';
112 C_MPA_HDR CONSTANT VARCHAR2(2):= 'MH';
113 C_MPA_LINE CONSTANT VARCHAR2(2):= 'ML';
114
115 --+==========================================================================+
116 --| |
117 --| Private global type declarations |
118 --| |
119 --+==========================================================================+
120 --
121 --
122 g_chr_newline CONSTANT VARCHAR2(10):= xla_environment_pkg.g_chr_newline;
123 --
124 --=============================================================================
125 --
126 --
127 --
128 --
129 --
130 --
131 --
132 --
133 --
134 --
135 -- FND trace
136 --
137 --
138 --
139 --
140 --
141 --
142 --
143 --
144 --
145 --
146 --
147 --=============================================================================
148 --=============================================================================
149 -- *********** Local Trace Routine **********
150 --=============================================================================
151
152 C_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
153 C_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
154 C_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
155 C_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
156 C_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
157 C_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
158
159 C_LEVEL_LOG_DISABLED CONSTANT NUMBER := 99;
160 C_DEFAULT_MODULE CONSTANT VARCHAR2(240) := 'xla.plsql.xla_cmp_analytic_criteria_pkg';
161
162 g_log_level NUMBER;
163 g_log_enabled BOOLEAN;
164
165 PROCEDURE trace
166 (p_msg IN VARCHAR2
167 ,p_level IN NUMBER
168 ,p_module IN VARCHAR2 )
169 IS
170 BEGIN
171 ----------------------------------------------------------------------------
172 -- Following is for FND log.
173 ----------------------------------------------------------------------------
174 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
175 fnd_log.message(p_level, p_module);
176 ELSIF p_level >= g_log_level THEN
177 fnd_log.string(p_level, p_module, p_msg);
178 END IF;
179
180 EXCEPTION
181 WHEN xla_exceptions_pkg.application_exception THEN
182 RAISE;
183 WHEN OTHERS THEN
184 xla_exceptions_pkg.raise_message
185 (p_location => 'xla_cmp_analytic_criteria_pkg.trace');
186 END trace;
187
188 /*---------------------------------------------------------------------------+
189 | |
190 | |
191 | Public Procedure |
192 | |
193 | GetAnalyticalCriteriaSources |
194 | |
195 | Returns the list of sources defined the AMB header analytical criteria. |
196 | |
197 +---------------------------------------------------------------------------*/
198 PROCEDURE GetAnalyticalCriteriaSources (
199 p_entity IN VARCHAR2
200 , p_event_class IN VARCHAR2
201 , p_event_type IN VARCHAR2
202 , p_application_id IN NUMBER
203 , p_product_rule_code IN VARCHAR2
204 , p_product_rule_type_code IN VARCHAR2
205 , p_amb_context_code IN VARCHAR2
206 , p_array_evt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
207 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
208 )
209 IS
210
211 CURSOR source_cur
212 IS
213 SELECT DISTINCT
214 xas.source_application_id
215 , xas.source_type_code
216 , xas.source_code
217 FROM xla_analytical_sources xas
218 , xla_aad_header_ac_assgns xah
219 , xla_analytical_hdrs_b xahb
220 WHERE xas.analytical_criterion_code = xah.analytical_criterion_code
221 AND xas.analytical_criterion_type_code = xah.analytical_criterion_type_code
222 AND xas.amb_context_code = xah.amb_context_code
223 AND xas.analytical_criterion_code = xahb.analytical_criterion_code
224 AND xas.analytical_criterion_type_code = xahb.analytical_criterion_type_code
225 AND xas.amb_context_code = xahb.amb_context_code
226 AND xas.application_id = p_application_id
227 AND xas.entity_code = p_entity
228 AND xas.amb_context_code = p_amb_context_code
229 AND (
230 xas.event_class_code = xah.event_class_code
231 OR
232 xas.event_class_code = xas.entity_code ||'_ALL'
233 )
234 AND xah.event_class_code = p_event_class
235 AND xah.event_type_code = p_event_type
236 AND xas.source_application_id IS NOT NULL
237 AND xas.source_code IS NOT NULL
238 AND xas.source_type_code IS NOT NULL
239 AND xahb.enabled_flag = 'Y'
240 AND xah.product_rule_code = p_product_rule_code
241 AND xah.product_rule_type_code = p_product_rule_type_code
242 ORDER BY xas.source_type_code, xas.source_code
243 ;
244
245 l_SourceIdx BINARY_INTEGER;
246 l_source_application_id xla_cmp_source_pkg.t_array_Num;
247 l_source_type_code xla_cmp_source_pkg.t_array_VL1;
248 l_source_code xla_cmp_source_pkg.t_array_VL30;
249 l_log_module VARCHAR2(240);
250 --
251 BEGIN
252 IF g_log_enabled THEN
253 l_log_module := C_DEFAULT_MODULE||'.GetAnalyticalCriteriaSources';
254 END IF;
255 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
256
257 trace
258 (p_msg => 'BEGIN of GetAnalyticalCriteriaSources'
259 ,p_level => C_LEVEL_PROCEDURE
260 ,p_module => l_log_module);
261
262 END IF;
263
264 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
265 trace
266 (p_msg => 'entity code = '||p_entity||
267 ' - event class code = '||p_event_class ||
268 ' - event type code = '||p_event_type||
269 ' - application id = '||p_application_id||
270 ' - product rule code = '||p_product_rule_code||
271 ' - product rule owner = '||p_product_rule_type_code||
272 ' amb context code =' ||p_amb_context_code
273 ,p_level => C_LEVEL_STATEMENT
274 ,p_module => l_log_module);
275 END IF;
276
277 OPEN source_cur;
278
279 FETCH source_cur BULK COLLECT INTO l_source_application_id
280 , l_source_type_code
281 , l_source_code
282 ;
283
284 CLOSE source_cur;
285
286 IF l_source_code.EXISTS(NVL(l_source_code.FIRST,1)) THEN
287
288 FOR Idx IN l_source_code.FIRST .. l_source_code.LAST LOOP
289
290 l_SourceIdx := xla_cmp_source_pkg.StackSource (
294 , p_array_source_index => p_array_evt_source_index
291 p_source_code => l_source_code(Idx)
292 , p_source_type_code => l_source_type_code(Idx)
293 , p_source_application_id => l_source_application_id(Idx)
295 , p_rec_sources => p_rec_sources
296 );
297
298 END LOOP;
299
300 END IF;
301 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
302 trace
303 (p_msg => 'END of GetAnalyticalCriteriaSources'
304 ,p_level => C_LEVEL_PROCEDURE
305 ,p_module => l_log_module);
306 END IF;
307 EXCEPTION
308 WHEN xla_exceptions_pkg.application_exception THEN
309 IF source_cur%ISOPEN THEN CLOSE source_cur; END IF;
310 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
311 trace
312 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
313 ,p_level => C_LEVEL_EXCEPTION
314 ,p_module => l_log_module);
315 END IF;
316 RAISE;
317 WHEN OTHERS THEN
318 IF source_cur%ISOPEN THEN CLOSE source_cur; END IF;
319 xla_exceptions_pkg.raise_message
320 (p_location => 'xla_cmp_analytic_criteria_pkg.GetAnalyticalCriteriaSources');
321 END GetAnalyticalCriteriaSources;
322
323 /*---------------------------------------------------------------------------+
324 | |
325 | |
326 | Private Function |
327 | |
328 | HdrAnalyticCriteria |
329 | |
330 | Generates one header analytical criterion into PL/SQL code. |
331 | |
332 +---------------------------------------------------------------------------*/
333
334 FUNCTION HdrAnalyticCriteria(
335 p_analytical_criterion_code IN VARCHAR2
336 , p_analytical_criterion_type IN VARCHAR2
337 , p_amb_context_code IN VARCHAR2
338 , p_balancing_flag IN VARCHAR2
339 , p_criterion_value IN VARCHAR2
340 , p_name IN VARCHAR2
341 , p_application_id IN NUMBER
342 , p_entity IN VARCHAR2
343 , p_event_class IN VARCHAR2
344 --
345 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
346 )
347 RETURN CLOB
348 IS
349 --
350 CURSOR analytic_criteria_cur
351 IS
352 SELECT xas.source_code
353 , xas.source_type_code
354 , xas.source_application_id
355 , xadb.grouping_order
356 , xadb.data_type_code
357 , xadb.analytical_detail_code
358 FROM xla_analytical_dtls_b xadb
359 , xla_analytical_sources xas
360 WHERE xadb.analytical_detail_code = xas.analytical_detail_code
361 AND xadb.analytical_criterion_code = xas.analytical_criterion_code
362 AND xadb.amb_context_code = xas.amb_context_code
363 AND xadb.analytical_criterion_type_code = xas.analytical_criterion_type_code
364 AND (
365 xas.event_class_code = p_event_class
366 OR
367 xas.event_class_code = xas.entity_code ||'_ALL'
368 )
369 AND xas.application_id = p_application_id
370 AND xas.entity_code = p_entity
371 AND xas.analytical_criterion_code = p_analytical_criterion_code
372 AND xas.analytical_criterion_type_code = p_analytical_criterion_type
373 AND xas.amb_context_code = p_amb_context_code
374 AND xadb.analytical_detail_code IS NOT NULL
375 AND xadb.data_type_code IS NOT NULL
376 AND xadb.grouping_order IS NOT NULL
377 ORDER BY xadb.grouping_order
378 ;
379 --
380 l_array_order xla_cmp_source_pkg.t_array_Num;
381 l_array_detail_code xla_cmp_source_pkg.t_array_VL30;
382 l_array_data_type xla_cmp_source_pkg.t_array_VL1;
383 l_array_source_code xla_cmp_source_pkg.t_array_VL30;
384 l_array_source_type_code xla_cmp_source_pkg.t_array_VL1;
385 l_array_source_appl_id xla_cmp_source_pkg.t_array_Num;
386 --
387 l_source_Idx BINARY_INTEGER;
388 --
389 l_analytical_criteria CLOB;
390 l_analytical_detail CLOB;
391 l_detail VARCHAR2(32000);
392 l_log_module VARCHAR2(240);
393 --
394 BEGIN
395 IF g_log_enabled THEN
396 l_log_module := C_DEFAULT_MODULE||'.HdrAnalyticCriteria';
397 END IF;
398 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
399 trace
400 (p_msg => 'BEGIN of HdrAnalyticCriteria'
401 ,p_level => C_LEVEL_PROCEDURE
402 ,p_module => l_log_module);
403 END IF;
404
405 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
406 trace
407 (p_msg => 'entity code = '||p_entity||
408 ' - event class code = '||p_event_class ||
409 ' - application id = '||p_application_id||
410 ' - analytical criterion code = '||p_analytical_criterion_code||
411 ' - analytical criterion owner = '||p_analytical_criterion_type||
412 ' amb context code =' ||p_amb_context_code
413 ,p_level => C_LEVEL_STATEMENT
414 ,p_module => l_log_module);
415 END IF;
416
420 ,l_array_source_type_code
417 OPEN analytic_criteria_cur;
418
419 FETCH analytic_criteria_cur BULK COLLECT INTO l_array_source_code
421 ,l_array_source_appl_id
422 ,l_array_order
423 ,l_array_data_type
424 ,l_array_detail_code
425
426 ;
427
428 CLOSE analytic_criteria_cur;
429
430 l_analytical_detail := NULL;
431
432 IF l_array_detail_code.COUNT > 0 THEN
433
434 FOR Idx IN l_array_detail_code.FIRST .. l_array_detail_code.LAST LOOP
435 IF l_array_detail_code.EXISTS(Idx) THEN
436
437 CASE l_array_data_type(Idx)
438 WHEN C_NUM THEN l_detail := C_DETAIL_NUM;
439 WHEN C_DATE THEN l_detail := C_DETAIL_DATE;
440 ELSE l_detail := C_DETAIL_CHAR;
441 END CASE;
442
443 l_detail := REPLACE(l_detail,'$Jdx$',TO_CHAR(l_array_order(Idx)));
444
445 IF l_array_source_code(Idx) IS NOT NULL THEN
446
447 l_source_Idx := xla_cmp_source_pkg.CacheSource(
448 p_source_code => l_array_source_code(Idx)
449 , p_source_type_code => l_array_source_type_code(Idx)
450 , p_source_application_id => l_array_source_appl_id(Idx)
451 , p_rec_sources => p_rec_sources
452 );
453
454 l_detail := REPLACE(l_detail,'$detail_value$',
455 xla_cmp_source_pkg.GenerateSource(
456 p_Index => l_source_Idx
457 , p_rec_sources => p_rec_sources
458 , p_variable => 'H'
459 , p_translated_flag => p_criterion_value)
460 );
461 ELSE
462
463 l_detail := REPLACE(l_detail,'$detail_value$' , '''NULL''');
464
465 END IF;
466
467 l_analytical_detail := l_analytical_detail || l_detail ;
468
469 END IF;
470
471 END LOOP;
472
473 l_analytical_criteria := C_AC_HDR_CALL ;
474 l_analytical_criteria := xla_cmp_string_pkg.replace_token(l_analytical_criteria,'$analytical_criterion_name$' ,REPLACE(p_name, '''','''''')); -- 4417664
475 l_analytical_criteria := xla_cmp_string_pkg.replace_token(l_analytical_criteria,'$analytical_criterion_owner$',p_analytical_criterion_type); -- 4417664
476 l_analytical_criteria := xla_cmp_string_pkg.replace_token(l_analytical_criteria,'$analytical_criterion_code$' ,p_analytical_criterion_code); -- 4417664
477 l_analytical_criteria := xla_cmp_string_pkg.replace_token(l_analytical_criteria,'$amb_context_code$' ,p_amb_context_code); -- 4417664
478 l_analytical_criteria := xla_cmp_string_pkg.replace_token(l_analytical_criteria,'$balancing_flag$' ,p_balancing_flag); -- 4417664
479 l_analytical_criteria := xla_cmp_string_pkg.replace_token(l_analytical_criteria,'$analytical_details$'
480 ,l_analytical_detail);
481
482 END IF;
483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
484
485 trace
486 (p_msg => 'END of HdrAnalyticCriteria'
487 ,p_level => C_LEVEL_PROCEDURE
488 ,p_module => l_log_module);
489
490 END IF;
491
492 RETURN l_analytical_criteria;
493
494 EXCEPTION
495 WHEN xla_exceptions_pkg.application_exception THEN
496 IF analytic_criteria_cur%ISOPEN THEN CLOSE analytic_criteria_cur; END IF;
497 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
498 trace
499 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
500 ,p_level => C_LEVEL_EXCEPTION
501 ,p_module => l_log_module);
502 END IF;
503 RETURN NULL;
504 WHEN OTHERS THEN
505 IF analytic_criteria_cur%ISOPEN THEN CLOSE analytic_criteria_cur; END IF;
506 xla_exceptions_pkg.raise_message
507 (p_location => 'xla_cmp_analytic_criteria_pkg.HdrAnalyticCriteria');
508 END HdrAnalyticCriteria;
509
510 /*---------------------------------------------------------------------------+
511 | |
512 | |
513 | Private Function |
514 | |
515 | GenerateHdrAnalyticCriteria |
516 | |
517 | Translates the AMB header analytical criteria into PL/SQL code. |
518 | |
519 +---------------------------------------------------------------------------*/
520
521 FUNCTION GenerateHdrAnalyticCriteria(
522 p_application_id IN NUMBER
523 , p_product_rule_code IN VARCHAR2
524 , p_product_rule_type_code IN VARCHAR2
525 , p_amb_context_code IN VARCHAR2
526 , p_entity IN VARCHAR2
527 , p_event_class IN VARCHAR2
528 , p_event_type IN VARCHAR2
529 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
530 )
531 RETURN CLOB
532 IS
533 --
534 CURSOR analytic_criteria_cur
535 IS
536 SELECT DISTINCT
537 xah.analytical_criterion_code
538 , xah.analytical_criterion_type_code
539 , xahb.balancing_flag
540 , DECODE(xahb.criterion_value_code,
541 'MEANING','Y'
545 , xla_analytical_hdrs_b xahb
542 ,'N')
543 , xaht.name
544 FROM xla_aad_header_ac_assgns xah
546 , xla_analytical_hdrs_tl xaht
547 WHERE xah.analytical_criterion_code = xahb.analytical_criterion_code
548 AND xah.analytical_criterion_type_code = xahb.analytical_criterion_type_code
549 AND xah.amb_context_code = xahb.amb_context_code
550 AND xah.analytical_criterion_code = xaht.analytical_criterion_code (+)
551 AND xah.analytical_criterion_type_code = xaht.analytical_criterion_type_code (+)
552 AND xah.amb_context_code = xaht.amb_context_code (+)
553 AND xah.application_id = p_application_id
554 AND xah.product_rule_type_code = p_product_rule_type_code
555 AND xah.product_rule_code = p_product_rule_code
556 AND xah.amb_context_code = p_amb_context_code
557 AND xah.event_class_code = p_event_class
558 AND xah.event_type_code = p_event_type
559 AND xahb.enabled_flag = 'Y'
560 AND xaht.language(+) = USERENV('LANG')
561 ORDER BY xah.analytical_criterion_type_code, xah.analytical_criterion_code
562 ;
563 --
564 l_array_analytic_code xla_cmp_source_pkg.t_array_VL30;
565 l_array_analytic_type_code xla_cmp_source_pkg.t_array_VL1;
566 l_array_balancing_flag xla_cmp_source_pkg.t_array_VL1;
567 l_array_name xla_cmp_source_pkg.t_array_VL80;
568 l_array_criterion_value xla_cmp_source_pkg.t_array_VL1;
569 --
570 l_analytical_criteria CLOB;
571 l_log_module VARCHAR2(240);
572 BEGIN
573 --
574 IF g_log_enabled THEN
575 l_log_module := C_DEFAULT_MODULE||'.GenerateHdrAnalyticCriteria';
576 END IF;
577 --
578 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
579
580 trace
581 (p_msg => 'BEGIN of GenerateHdrAnalyticCriteria'
582 ,p_level => C_LEVEL_PROCEDURE
583 ,p_module => l_log_module);
584
585 END IF;
586
587 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
588 trace
589 (p_msg => 'entity code = '||p_entity||
590 ' - event class code = '||p_event_class ||
591 ' - event type code = '||p_event_type||
592 ' - application id = '||p_application_id||
593 ' - product rule code = '||p_product_rule_code||
594 ' - product rule owner = '||p_product_rule_type_code||
595 ' amb context code =' ||p_amb_context_code
596 ,p_level => C_LEVEL_STATEMENT
597 ,p_module => l_log_module);
598 END IF;
599
600 OPEN analytic_criteria_cur;
601 --
602 FETCH analytic_criteria_cur BULK COLLECT INTO
603 l_array_analytic_code
604 , l_array_analytic_type_code
605 , l_array_balancing_flag
606 , l_array_criterion_value
607 , l_array_name
608 ;
609 CLOSE analytic_criteria_cur;
610
611 l_analytical_criteria := NULL;
612
613 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
614 trace
615 (p_msg => '# number of analytical criteria = '||l_array_analytic_code.COUNT
616 ,p_level => C_LEVEL_STATEMENT
617 ,p_module => l_log_module);
618 END IF;
619
620 IF l_array_analytic_code.COUNT > 0 THEN
621
622 FOR Idx IN l_array_analytic_code.FIRST .. l_array_analytic_code.LAST LOOP
623
624 IF l_array_analytic_code.EXISTS(Idx) THEN
625 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
626 trace
627 (p_msg => 'Analytical criteri name = '||l_array_name(Idx)
628 ||' - Analytical criteri code = '||l_array_analytic_code(Idx)
629 ||' - Analytical criteri type code = '||l_array_analytic_type_code(Idx)
630 ,p_level => C_LEVEL_STATEMENT
631 ,p_module => l_log_module);
632 END IF;
633
634 l_analytical_criteria := l_analytical_criteria ||
635 xla_cmp_string_pkg.replace_token(HdrAnalyticCriteria( -- 4417664
636 p_analytical_criterion_code => l_array_analytic_code(Idx)
637 , p_analytical_criterion_type => l_array_analytic_type_code(Idx)
638 , p_amb_context_code => p_amb_context_code
639 , p_balancing_flag => l_array_balancing_flag(Idx)
640 , p_criterion_value => l_array_criterion_value(Idx)
641 , p_name => l_array_name(Idx)
642 , p_application_id => p_application_id
643 , p_entity => p_entity
644 , p_event_class => p_event_class
645 , p_rec_sources => p_rec_sources),'$number$',TO_CHAR(Idx)); -- 4417664
646
647
648 END IF;
649
650 END LOOP;
651
652 END IF;
653
654 IF l_analytical_criteria IS NULL THEN
655 l_analytical_criteria := '-- No header level analytical criteria';
656 END IF;
657
658 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
659 trace
660 (p_msg => 'END of GenerateHdrAnalyticCriteria'
661 ,p_level => C_LEVEL_PROCEDURE
662 ,p_module => l_log_module);
663 END IF;
664 RETURN l_analytical_criteria;
665 EXCEPTION
666 WHEN VALUE_ERROR THEN
667 -- SLA message to create
668 IF analytic_criteria_cur%ISOPEN THEN CLOSE analytic_criteria_cur; END IF;
669
670 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
671 trace
672 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR= '||sqlerrm
673 ,p_level => C_LEVEL_EXCEPTION
677 WHEN xla_exceptions_pkg.application_exception THEN
674 ,p_module => l_log_module);
675 END IF;
676 RETURN NULL;
678 IF analytic_criteria_cur%ISOPEN THEN CLOSE analytic_criteria_cur; END IF;
679 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
680 trace
681 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
682 ,p_level => C_LEVEL_EXCEPTION
683 ,p_module => l_log_module);
684 END IF;
685 RETURN NULL;
686 WHEN OTHERS THEN
687 IF analytic_criteria_cur%ISOPEN THEN CLOSE analytic_criteria_cur; END IF;
688 xla_exceptions_pkg.raise_message
689 (p_location => 'xla_cmp_analytic_criteria_pkg.GenerateHdrAnalyticCriteria');
690
691 END GenerateHdrAnalyticCriteria;
692
693 /*---------------------------------------------------------------------------+
694 | |
695 | |
696 | Public Procedure |
697 | |
698 | LineAnalyticCriteria |
699 | |
700 | Translates one AMB line analytical criterion into PL/SQL code. |
701 | |
702 +---------------------------------------------------------------------------*/
703
704 FUNCTION LineAnalyticCriteria(
705 p_analytical_criterion_code IN VARCHAR2
706 , p_analytical_criterion_type IN VARCHAR2
707 , p_amb_context_code IN VARCHAR2
708 , p_balancing_flag IN VARCHAR2
709 , p_criterion_value IN VARCHAR2
710 , p_name IN VARCHAR2
711 , p_application_id IN NUMBER
712 , p_event_class IN VARCHAR2
713 , p_ac_type IN VARCHAR2 -- 4262811
714 , p_array_alt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
715 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
716 )
717 RETURN CLOB
718 IS
719 --
720 CURSOR analytic_criteria_cur
721 IS
722 SELECT xas.source_code
723 , xas.source_type_code
724 , xas.source_application_id
725 , xadb.grouping_order
726 , xadb.data_type_code
727 , xadb.analytical_detail_code
728 FROM xla_analytical_dtls_b xadb
729 , xla_analytical_sources xas
730 WHERE xadb.analytical_detail_code = xas.analytical_detail_code
731 AND xadb.analytical_criterion_code = xas.analytical_criterion_code
732 AND xadb.analytical_criterion_type_code = xas.analytical_criterion_type_code
733 AND xadb.amb_context_code = xas.amb_context_code
734 AND (
735 xas.event_class_code = p_event_class
736 OR
737 xas.event_class_code = xas.entity_code ||'_ALL'
738 )
739 AND xas.analytical_criterion_code = p_analytical_criterion_code
740 AND xas.analytical_criterion_type_code = p_analytical_criterion_type
741 AND xas.amb_context_code = p_amb_context_code
742 AND xas.application_id = p_application_id
743 AND xadb.analytical_detail_code IS NOT NULL
744 AND xadb.data_type_code IS NOT NULL
745 AND xadb.grouping_order IS NOT NULL
746 ORDER BY xadb.grouping_order
747 ;
748 --
749 l_array_order xla_cmp_source_pkg.t_array_Num;
750 l_array_detail_code xla_cmp_source_pkg.t_array_VL30;
751 l_array_data_type xla_cmp_source_pkg.t_array_VL1;
752 l_array_source_code xla_cmp_source_pkg.t_array_VL30;
753 l_array_source_type_code xla_cmp_source_pkg.t_array_VL1;
754 l_array_source_appl_id xla_cmp_source_pkg.t_array_Num;
755 --
756 l_source_Idx BINARY_INTEGER;
757 --
758 l_analytical_criteria CLOB;
759 l_analytical_detail CLOB;
760 l_detail VARCHAR2(32000);
761 l_log_module VARCHAR2(240);
762 --
763 BEGIN
764 IF g_log_enabled THEN
765 l_log_module := C_DEFAULT_MODULE||'.LineAnalyticCriteria';
766 END IF;
767
768 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
769
770 trace
771 (p_msg => 'BEGIN of LineAnalyticCriteria'
772 ,p_level => C_LEVEL_PROCEDURE
773 ,p_module => l_log_module);
774
775 END IF;
776
777 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
778 trace
779 (p_msg => ' event class code = '||p_event_class ||
780 ' - application id = '||p_application_id||
781 ' - analytical criterion code = '||p_analytical_criterion_code||
782 ' - analytical criterion owner = '||p_analytical_criterion_type||
783 ' amb context code =' ||p_amb_context_code
784 ,p_level => C_LEVEL_STATEMENT
785 ,p_module => l_log_module);
786 END IF;
787
788 OPEN analytic_criteria_cur;
789 --
790 FETCH analytic_criteria_cur BULK COLLECT INTO l_array_source_code
791 ,l_array_source_type_code
792 ,l_array_source_appl_id
793 ,l_array_order
794 ,l_array_data_type
795 ,l_array_detail_code
796 ;
797 --
798 CLOSE analytic_criteria_cur;
799 --
800 l_analytical_detail := NULL;
801
805
802 IF l_array_detail_code.COUNT > 0 THEN
803
804 FOR Idx IN l_array_detail_code.FIRST .. l_array_detail_code.LAST LOOP
806 IF l_array_detail_code.EXISTS(Idx) THEN
807
808 CASE l_array_data_type(Idx)
809 WHEN C_NUM THEN l_detail := C_DETAIL_NUM;
810 WHEN C_DATE THEN l_detail := C_DETAIL_DATE;
811 ELSE l_detail := C_DETAIL_CHAR;
812 END CASE;
813
814 l_detail := REPLACE(l_detail,'$Jdx$', TO_CHAR(l_array_order(Idx)));
815
816 IF l_array_source_code(Idx) IS NOT NULL THEN
817
818 l_source_Idx := xla_cmp_source_pkg.StackSource (
819 p_source_code => l_array_source_code(Idx)
820 , p_source_type_code => l_array_source_type_code(Idx)
821 , p_source_application_id => l_array_source_appl_id(Idx)
822 , p_array_source_index => p_array_alt_source_index
823 , p_rec_sources => p_rec_sources
824 );
825
826 l_detail := REPLACE(l_detail,'$detail_value$',
827 xla_cmp_source_pkg.GenerateSource(
828 p_Index => l_source_Idx
829 , p_rec_sources => p_rec_sources
830 , p_translated_flag => p_criterion_value)
831 );
832 ELSE
833
834 l_detail := REPLACE(l_detail,'$detail_value$' , '''NULL''');
835
836 END IF;
837
838 l_analytical_detail := l_analytical_detail || l_detail ;
839
840 END IF;
841 END LOOP;
842
843 if p_ac_type = C_MPA_HDR THEN -- 4262811
844 l_analytical_criteria := C_AC_HDR_CALL; -- 4262811
845 ELSE
846 l_analytical_criteria := C_AC_LINE_CALL;
847 END IF;
848 l_analytical_criteria := xla_cmp_string_pkg.replace_token(l_analytical_criteria,'$analytical_criterion_name$' ,REPLACE(p_name, '''','''''')); -- 4417664
849 l_analytical_criteria := xla_cmp_string_pkg.replace_token(l_analytical_criteria,'$analytical_criterion_owner$',p_analytical_criterion_type); -- 4417664
850 l_analytical_criteria := xla_cmp_string_pkg.replace_token(l_analytical_criteria,'$analytical_criterion_code$' ,p_analytical_criterion_code); -- 4417664
851 l_analytical_criteria := xla_cmp_string_pkg.replace_token(l_analytical_criteria,'$amb_context_code$' ,p_amb_context_code); -- 4417664
852 l_analytical_criteria := xla_cmp_string_pkg.replace_token(l_analytical_criteria,'$balancing_flag$' ,p_balancing_flag); -- 4417664
853 l_analytical_criteria := xla_cmp_string_pkg.replace_token(l_analytical_criteria,'$analytical_details$' ,
854 l_analytical_detail);
855
856 END IF;
857
858 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
859 trace
860 (p_msg => 'END of LineAnalyticCriteria'
861 ,p_level => C_LEVEL_PROCEDURE
862 ,p_module => l_log_module);
863 END IF;
864 RETURN l_analytical_criteria;
865 EXCEPTION
866 WHEN xla_exceptions_pkg.application_exception THEN
867 IF analytic_criteria_cur%ISOPEN THEN CLOSE analytic_criteria_cur; END IF;
868 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
869 trace
870 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
871 ,p_level => C_LEVEL_EXCEPTION
872 ,p_module => l_log_module);
873 END IF;
874 RETURN NULL;
875 WHEN OTHERS THEN
876 IF analytic_criteria_cur%ISOPEN THEN CLOSE analytic_criteria_cur; END IF;
877 xla_exceptions_pkg.raise_message
878 (p_location => 'xla_cmp_analytic_criteria_pkg.LineAnalyticCriteria');
879 END LineAnalyticCriteria;
880
881 /*---------------------------------------------------------------------------+
882 | |
883 | |
884 | Public Procedure |
885 | |
886 | GenerateMpaHeaderAC - 4262811 |
887 | |
888 | |
889 +---------------------------------------------------------------------------*/
890
891 FUNCTION GenerateMpaHeaderAC(
892 p_application_id IN NUMBER
893 , p_amb_context_code IN VARCHAR2
894 , p_event_class IN VARCHAR2
895 , p_event_type IN VARCHAR2
896 , p_line_definition_owner_code IN VARCHAR2
897 , p_line_definition_code IN VARCHAR2
898 , p_accrual_jlt_owner_code IN VARCHAR2
899 , p_accrual_jlt_code IN VARCHAR2
900 , p_array_alt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
901 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
902 )
903 RETURN CLOB
904 IS
905 --
906 CURSOR ac_cur IS
907 SELECT xmhc.analytical_criterion_code
908 , xmhc.analytical_criterion_type_code
909 , xahb.balancing_flag
910 , DECODE(xahb.criterion_value_code,
911 'MEANING','Y'
912 ,'N')
913 , xaht.name
914 FROM xla_mpa_header_ac_assgns xmhc
915 , xla_analytical_hdrs_b xahb
916 , xla_analytical_hdrs_tl xaht
917 WHERE xahb.analytical_criterion_code = xaht.analytical_criterion_code (+)
918 AND xahb.analytical_criterion_type_code = xaht.analytical_criterion_type_code(+)
919 AND xahb.amb_context_code = xaht.amb_context_code (+)
920 AND xaht.language(+) = USERENV('LANG')
924 AND xmhc.application_id = p_application_id
921 AND xmhc.analytical_criterion_code = xahb.analytical_criterion_code
922 AND xmhc.analytical_criterion_type_code = xahb.analytical_criterion_type_code
923 AND xmhc.amb_context_code = xahb.amb_context_code
925 AND xmhc.amb_context_code = p_amb_context_code
926 AND xmhc.event_class_code = p_event_class
927 AND xmhc.event_type_code = p_event_type
928 AND xmhc.line_definition_owner_code = p_line_definition_owner_code
929 AND xmhc.line_definition_code = p_line_definition_code
930 AND xmhc.accounting_line_type_code = p_accrual_jlt_owner_code
931 AND xmhc.accounting_line_code = p_accrual_jlt_code
932 AND xahb.enabled_flag = 'Y'
933 ORDER BY xmhc.analytical_criterion_type_code, xmhc.analytical_criterion_code
934 ;
935
936 l_array_ac_code xla_cmp_source_pkg.t_array_VL30;
937 l_array_ac_type_code xla_cmp_source_pkg.t_array_VL1;
938 l_array_balancing_flag xla_cmp_source_pkg.t_array_VL1;
939 l_array_ac_value xla_cmp_source_pkg.t_array_VL1;
940 l_array_name xla_cmp_source_pkg.t_array_VL80;
941
942 l_body CLOB;
943 l_log_module VARCHAR2(240);
944 --
945 BEGIN
946 IF g_log_enabled THEN
947 l_log_module := C_DEFAULT_MODULE||'.GenerateMpaHeaderAC';
948 END IF;
949
950 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
951
952 trace
953 (p_msg => 'BEGIN of GenerateMpaHeaderAC'
954 ,p_level => C_LEVEL_PROCEDURE
955 ,p_module => l_log_module);
956
957 END IF;
958
959
960 OPEN ac_cur;
961 FETCH ac_cur BULK COLLECT INTO
962 l_array_ac_code
963 , l_array_ac_type_code
964 , l_array_balancing_flag
965 , l_array_ac_value
966 , l_array_name;
967 CLOSE ac_cur;
968 --
969 IF l_array_ac_code.COUNT > 0 THEN
970 --
971 l_body := 'hdr_idx := g_last_hdr_idx; -- to set value of mpa header index for analytical criteria
972 ';
973 --
974 FOR Idx IN l_array_ac_code.FIRST .. l_array_ac_code.LAST LOOP
975 --
976 IF l_array_ac_code.EXISTS(Idx) THEN
977 --
978 l_body := l_body ||xla_cmp_string_pkg.replace_token(LineAnalyticCriteria(
979 p_analytical_criterion_code => l_array_ac_code(Idx)
980 , p_analytical_criterion_type => l_array_ac_type_code(Idx)
981 , p_amb_context_code => p_amb_context_code
982 , p_balancing_flag => l_array_balancing_flag(Idx)
983 , p_criterion_value => l_array_ac_value(Idx)
984 , p_name => l_array_name(Idx)
985 , p_application_id => p_application_id
986 , p_event_class => p_event_class
987 , p_ac_type => C_MPA_HDR
988 , p_array_alt_source_index => p_array_alt_source_index
989 , p_rec_sources => p_rec_sources
990 ) ,'$number$',TO_CHAR(Idx));
991 --
992 END IF;
993 --
994 END LOOP;
995 --
996 END IF;
997
998
999 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1000 trace
1001 (p_msg => 'END of GenerateMpaHeaderAC'
1002 ,p_level => C_LEVEL_PROCEDURE
1003 ,p_module => l_log_module);
1004 END IF;
1005
1006 RETURN l_body;
1007
1008 EXCEPTION
1009 WHEN xla_exceptions_pkg.application_exception THEN
1010 IF ac_cur%ISOPEN THEN CLOSE ac_cur; END IF;
1011 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1012 trace
1013 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
1014 ,p_level => C_LEVEL_EXCEPTION
1015 ,p_module => l_log_module);
1016 END IF;
1017 RETURN NULL;
1018 WHEN OTHERS THEN
1019 IF ac_cur%ISOPEN THEN CLOSE ac_cur; END IF;
1020 xla_exceptions_pkg.raise_message
1021 (p_location => 'xla_cmp_analytic_criteria_pkg.GenerateMpaHeaderAC');
1022
1023 END GenerateMpaHeaderAC;
1024
1025
1026 /*---------------------------------------------------------------------------+
1027 | |
1028 | |
1029 | Public Procedure |
1030 | |
1031 | GenerateMpaLineAC - 4262811 |
1032 | |
1033 | |
1034 +---------------------------------------------------------------------------*/
1035
1036 FUNCTION GenerateMpaLineAC(
1037 p_application_id IN NUMBER
1038 , p_amb_context_code IN VARCHAR2
1039 , p_event_class IN VARCHAR2
1040 , p_event_type IN VARCHAR2
1041 , p_line_definition_owner_code IN VARCHAR2
1042 , p_line_definition_code IN VARCHAR2
1043 , p_accrual_jlt_owner_code IN VARCHAR2
1047 , p_array_mpa_jlt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
1044 , p_accrual_jlt_code IN VARCHAR2
1045 , p_mpa_jlt_owner_code IN VARCHAR2
1046 , p_mpa_jlt_code IN VARCHAR2
1048 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
1049 )
1050 RETURN CLOB
1051 IS
1052
1053 CURSOR ac_cur IS
1054 SELECT xmlc.analytical_criterion_code
1055 , xmlc.analytical_criterion_type_code
1056 , xahb.balancing_flag
1057 , DECODE(xahb.criterion_value_code,
1058 'MEANING','Y'
1059 ,'N')
1060 , xaht.name
1061 FROM xla_mpa_jlt_ac_assgns xmlc
1062 , xla_analytical_hdrs_b xahb
1063 , xla_analytical_hdrs_tl xaht
1064 WHERE xahb.analytical_criterion_code = xaht.analytical_criterion_code (+)
1065 AND xahb.analytical_criterion_type_code = xaht.analytical_criterion_type_code(+)
1066 AND xahb.amb_context_code = xaht.amb_context_code (+)
1067 AND xaht.language(+) = USERENV('LANG')
1068 AND xmlc.analytical_criterion_code = xahb.analytical_criterion_code
1069 AND xmlc.analytical_criterion_type_code = xahb.analytical_criterion_type_code
1070 AND xmlc.amb_context_code = xahb.amb_context_code
1071 AND xmlc.application_id = p_application_id
1072 AND xmlc.amb_context_code = p_amb_context_code
1073 AND xmlc.event_class_code = p_event_class
1074 AND xmlc.event_type_code = p_event_type
1075 AND xmlc.line_definition_owner_code = p_line_definition_owner_code
1076 AND xmlc.line_definition_code = p_line_definition_code
1077 AND xmlc.accounting_line_type_code = p_accrual_jlt_owner_code
1078 AND xmlc.accounting_line_code = p_accrual_jlt_code
1079 AND xmlc.mpa_accounting_line_type_code = p_mpa_jlt_owner_code
1080 AND xmlc.mpa_accounting_line_code = p_mpa_jlt_code
1081 AND xahb.enabled_flag = 'Y'
1082 ORDER BY xmlc.analytical_criterion_type_code, xmlc.analytical_criterion_code
1083 ;
1084 --
1085 l_array_ac_code xla_cmp_source_pkg.t_array_VL30;
1086 l_array_ac_type_code xla_cmp_source_pkg.t_array_VL1;
1087 l_array_balancing_flag xla_cmp_source_pkg.t_array_VL1;
1088 l_array_ac_value xla_cmp_source_pkg.t_array_VL1;
1089 l_array_name xla_cmp_source_pkg.t_array_VL80;
1090
1091 l_body CLOB;
1092 l_log_module VARCHAR2(240);
1093 --
1094 BEGIN
1095 IF g_log_enabled THEN
1096 l_log_module := C_DEFAULT_MODULE||'.GenerateMpaLineAC';
1097 END IF;
1098
1099 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1100
1101 trace
1102 (p_msg => 'BEGIN of GenerateMpaLineAC'
1103 ,p_level => C_LEVEL_PROCEDURE
1104 ,p_module => l_log_module);
1105
1106 END IF;
1107
1108 OPEN ac_cur;
1109 FETCH ac_cur BULK COLLECT INTO l_array_ac_code
1110 , l_array_ac_type_code
1111 , l_array_balancing_flag
1112 , l_array_ac_value
1113 , l_array_name;
1114 CLOSE ac_cur;
1115 --
1116 l_body := NULL;
1117 --
1118 IF l_array_ac_code.COUNT > 0 THEN
1119 --
1120 FOR Idx IN l_array_ac_code.FIRST .. l_array_ac_code.LAST LOOP
1121 --
1122 IF l_array_ac_code.EXISTS(Idx) THEN
1123 --
1124 l_body := l_body ||xla_cmp_string_pkg.replace_token(LineAnalyticCriteria(
1125 p_analytical_criterion_code => l_array_ac_code(Idx)
1126 , p_analytical_criterion_type => l_array_ac_type_code(Idx)
1127 , p_amb_context_code => p_amb_context_code
1128 , p_balancing_flag => l_array_balancing_flag(Idx)
1129 , p_criterion_value => l_array_ac_value(Idx)
1130 , p_name => l_array_name(Idx)
1131 , p_application_id => p_application_id
1132 , p_event_class => p_event_class
1133 , p_ac_type => C_MPA_LINE
1134 , p_array_alt_source_index => p_array_mpa_jlt_source_index
1135 , p_rec_sources => p_rec_sources
1136 ) ,'$number$',TO_CHAR(Idx));
1137 --
1138 END IF;
1139 --
1140 END LOOP;
1141 --
1142 END IF;
1143
1144
1145 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1146 trace
1147 (p_msg => 'END of GenerateMpaLineAC'
1148 ,p_level => C_LEVEL_PROCEDURE
1149 ,p_module => l_log_module);
1150 END IF;
1151
1152 RETURN l_body;
1153
1154 EXCEPTION
1155 WHEN xla_exceptions_pkg.application_exception THEN
1156 IF ac_cur%ISOPEN THEN CLOSE ac_cur; END IF;
1157 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1158 trace
1159 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
1160 ,p_level => C_LEVEL_EXCEPTION
1161 ,p_module => l_log_module);
1162 END IF;
1163 RETURN NULL;
1164 WHEN OTHERS THEN
1165 IF ac_cur%ISOPEN THEN CLOSE ac_cur; END IF;
1166 xla_exceptions_pkg.raise_message
1167 (p_location => 'xla_cmp_analytic_criteria_pkg.GenerateMpaLineAC');
1168
1169 END GenerateMpaLineAC;
1170
1174 | Public Procedure |
1171 /*---------------------------------------------------------------------------+
1172 | |
1173 | |
1175 | |
1176 | GenerateLineAnalyticCriteria |
1177 | |
1178 | Translates the AMB line analytical criteria into PL/SQL code. |
1179 | |
1180 +---------------------------------------------------------------------------*/
1181
1182
1183 FUNCTION GenerateLineAnalyticCriteria(
1184 p_application_id IN NUMBER
1185 , p_amb_context_code IN VARCHAR2
1186 , p_event_class IN VARCHAR2
1187 , p_event_type IN VARCHAR2
1188 , p_line_definition_owner_code IN VARCHAR2
1189 , p_line_definition_code IN VARCHAR2
1190 , p_accounting_line_type_code IN VARCHAR2
1191 , p_accounting_line_code IN VARCHAR2
1192 --
1193 , p_array_alt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
1194 --
1195 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
1196 )
1197 RETURN CLOB
1198 IS
1199 --
1200 CURSOR analytic_criteria_cur
1201 IS
1202 SELECT xlda.analytical_criterion_code
1203 , xlda.analytical_criterion_type_code
1204 , xahb.balancing_flag
1205 , DECODE(xahb.criterion_value_code,
1206 'MEANING','Y'
1207 ,'N')
1208 , xaht.name
1209 FROM xla_line_defn_ac_assgns xlda
1210 , xla_analytical_hdrs_b xahb
1211 , xla_analytical_hdrs_tl xaht
1212 WHERE xahb.analytical_criterion_code = xaht.analytical_criterion_code (+)
1213 AND xahb.analytical_criterion_type_code = xaht.analytical_criterion_type_code (+)
1214 AND xahb.amb_context_code = xaht.amb_context_code (+)
1215 AND xaht.language(+) = USERENV('LANG')
1216 AND xlda.analytical_criterion_code = xahb.analytical_criterion_code
1217 AND xlda.analytical_criterion_type_code = xahb.analytical_criterion_type_code
1218 AND xlda.amb_context_code = xahb.amb_context_code
1219 AND xlda.application_id = p_application_id
1220 AND xlda.amb_context_code = p_amb_context_code
1221 AND xlda.event_class_code = p_event_class
1222 AND xlda.event_type_code = p_event_type
1223 AND xlda.line_definition_owner_code = p_line_definition_owner_code
1224 AND xlda.line_definition_code = p_line_definition_code
1225 AND xlda.accounting_line_code = p_accounting_line_code
1226 AND xlda.accounting_line_type_code = p_accounting_line_type_code
1227 AND xahb.enabled_flag = 'Y'
1228 ORDER BY xlda.analytical_criterion_type_code, xlda.analytical_criterion_code
1229 ;
1230 --
1231 l_array_analytic_code xla_cmp_source_pkg.t_array_VL30;
1232 l_array_analytic_type_code xla_cmp_source_pkg.t_array_VL1;
1233 l_array_balancing_flag xla_cmp_source_pkg.t_array_VL1;
1234 l_array_name xla_cmp_source_pkg.t_array_VL80;
1235 l_array_criterion_value xla_cmp_source_pkg.t_array_VL1;
1236 --
1237 l_analytical_criteria CLOB;
1238 l_log_module VARCHAR2(240);
1239 BEGIN
1240 --
1241 IF g_log_enabled THEN
1242 l_log_module := C_DEFAULT_MODULE||'.GenerateLineAnalyticCriteria';
1243 END IF;
1244 --
1245 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1246
1247 trace
1248 (p_msg => 'BEGIN of GenerateLineAnalyticCriteria'
1249 ,p_level => C_LEVEL_PROCEDURE
1250 ,p_module => l_log_module);
1251
1252 END IF;
1253
1254 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1255 trace
1256 (p_msg => ' event class code = '||p_event_class ||
1257 ' - event type code = '||p_event_type||
1258 ' - application id = '||p_application_id||
1259 ' - line definition code = '||p_line_definition_code||
1260 ' - line definition owner = '||p_line_definition_owner_code||
1261 ' - accounting line code = '||p_accounting_line_code||
1262 ' - accounting line owner = '||p_accounting_line_type_code||
1263 ' amb context code =' ||p_amb_context_code
1264 ,p_level => C_LEVEL_STATEMENT
1265 ,p_module => l_log_module);
1266 END IF;
1267
1268
1269 OPEN analytic_criteria_cur;
1270
1271 FETCH analytic_criteria_cur BULK COLLECT INTO
1272 l_array_analytic_code
1273 , l_array_analytic_type_code
1274 , l_array_balancing_flag
1275 , l_array_criterion_value
1276 , l_array_name
1277 ;
1278 CLOSE analytic_criteria_cur;
1279
1280 l_analytical_criteria := NULL;
1281
1282 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1283 trace
1284 (p_msg => 'l_array_analytic_code.COUNT = '||l_array_analytic_code.COUNT
1285 ,p_level => C_LEVEL_STATEMENT
1286 ,p_module => l_log_module);
1287 END IF;
1288
1289 IF l_array_analytic_code.COUNT > 0 THEN
1290
1291 FOR Idx IN l_array_analytic_code.FIRST .. l_array_analytic_code.LAST LOOP
1292
1293 IF l_array_analytic_code.EXISTS(Idx) THEN
1294
1295 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1296 trace
1300 ,p_level => C_LEVEL_STATEMENT
1297 (p_msg => 'Analytical criteri name = '||l_array_name(Idx)
1298 ||' - Analytical criteri code = '||l_array_analytic_code(Idx)
1299 ||' - Analytical criteri type code = '||l_array_analytic_type_code(Idx)
1301 ,p_module => l_log_module);
1302 END IF;
1303
1304 l_analytical_criteria := l_analytical_criteria ||
1305 xla_cmp_string_pkg.replace_token( -- 4417664
1306 LineAnalyticCriteria(
1307 p_analytical_criterion_code => l_array_analytic_code(Idx)
1308 , p_analytical_criterion_type => l_array_analytic_type_code(Idx)
1309 , p_amb_context_code => p_amb_context_code
1310 , p_balancing_flag => l_array_balancing_flag(Idx)
1311 , p_criterion_value => l_array_criterion_value(Idx)
1312 , p_name => l_array_name(Idx)
1313 , p_application_id => p_application_id
1314 , p_event_class => p_event_class
1315 , p_ac_type => C_LINE -- 4262811
1316 , p_array_alt_source_index => p_array_alt_source_index
1317 , p_rec_sources => p_rec_sources ) ,'$number$', TO_CHAR(Idx)); -- 4417664
1318
1319 END IF;
1320 END LOOP;
1321
1322 END IF;
1323
1324 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1325
1326 trace
1327 (p_msg => 'END of GenerateLineAnalyticCriteria'
1328 ,p_level => C_LEVEL_PROCEDURE
1329 ,p_module => l_log_module);
1330
1331 END IF;
1332 RETURN l_analytical_criteria;
1333 EXCEPTION
1334 WHEN VALUE_ERROR THEN
1335 --
1336 IF analytic_criteria_cur%ISOPEN THEN CLOSE analytic_criteria_cur; END IF;
1337
1338 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1339 trace
1340 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR ='||sqlerrm
1341 ,p_level => C_LEVEL_EXCEPTION
1342 ,p_module => l_log_module);
1343 END IF;
1344 RETURN NULL;
1345 WHEN xla_exceptions_pkg.application_exception THEN
1346 IF analytic_criteria_cur%ISOPEN THEN CLOSE analytic_criteria_cur; END IF;
1347 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1348 trace
1349 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
1350 ,p_level => C_LEVEL_EXCEPTION
1351 ,p_module => l_log_module);
1352 END IF;
1353 RETURN NULL;
1354 WHEN OTHERS THEN
1355 IF analytic_criteria_cur%ISOPEN THEN CLOSE analytic_criteria_cur; END IF;
1356 xla_exceptions_pkg.raise_message
1357 (p_location => 'xla_cmp_analytic_criteria_pkg.GenerateLineAnalyticCriteria');
1358
1359 END GenerateLineAnalyticCriteria;
1360
1361 --=============================================================================
1362 --
1363 --
1364 --
1365 --
1366 --
1367 --
1368 --
1369 --
1370 --
1371 --
1372 --
1373 --
1374 --
1375 --
1376 --
1377 --
1378 --
1379 --
1380 --
1381 --
1382 --
1383 --
1384 --=============================================================================
1385 --=============================================================================
1386 -- *********** Initialization routine **********
1387 --=============================================================================
1388
1389 BEGIN
1390
1391 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1392 g_log_enabled := fnd_log.test
1393 (log_level => g_log_level
1394 ,module => C_DEFAULT_MODULE);
1395
1396 IF NOT g_log_enabled THEN
1397 g_log_level := C_LEVEL_LOG_DISABLED;
1398 END IF;
1399
1400 END xla_cmp_analytic_criteria_pkg; --