DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_MULTIPERIOD_ACCOUNTING_PKG

Source


1 PACKAGE BODY xla_multiperiod_accounting_pkg AS
2 -- $Header: xlampaac.pkb 120.14.12020000.2 2012/07/23 07:00:39 vgopiset ship $
3 /*===========================================================================+
4 |             Copyright (c) 2005 Oracle Corporation                          |
5 |                       Redwood Shores, CA, USA                              |
6 |                         All rights reserved.                               |
7 +============================================================================+
8 | PACKAGE NAME                                                               |
9 |     xla_multiperiod_accounting_pkg                                         |
10 |                                                                            |
11 | DESCRIPTION                                                                |
12 |     This package contains the APIs related to the Complete Multiperiod     |
13 |     Accounting Program.                                                    |
14 |                                                                            |
15 | HISTORY                                                                    |
16 |     05/23/2005    eklau             Created                                |
17 |     02/15/2006    awan              5039413 performance fix                |
18 |     03/29/2006    awan              5115223 cannot complete MPA            |
19 |     18/01/2012   sragadde           13258048 nodata end in  success        |
20 +===========================================================================*/
21 
22 -------------------------------------------------------------------------------
23 --              *********** Local Exceptions ************
24 -------------------------------------------------------------------------------
25 
26 normal_termination     EXCEPTION;
27 resource_busy          EXCEPTION;
28 PRAGMA EXCEPTION_INIT(resource_busy, -54);
29 
30 --=============================================================================
31 --               *********** Local Trace Routine **********
32 --=============================================================================
33 
34 C_LEVEL_STATEMENT     CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
35 C_LEVEL_PROCEDURE     CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
36 C_LEVEL_EVENT         CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
37 C_LEVEL_EXCEPTION     CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
38 C_LEVEL_ERROR         CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
39 C_LEVEL_UNEXPECTED    CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
40 
41 C_LEVEL_LOG_DISABLED  CONSTANT NUMBER := 99;
42 C_DEFAULT_MODULE      CONSTANT VARCHAR2(240) := 'xla.plsql.xla_multiperiod_accounting_pkg';
43 
44 g_log_level           NUMBER;
45 g_log_enabled         BOOLEAN;
46 
47 --Constants for bug13258048
48 C_YES      CONSTANT VARCHAR2(1) := 'Y';
49 C_NO      CONSTANT VARCHAR2(1) := 'N';
50 --  Parameters
51 
52 g_application_id               PLS_INTEGER;
53 g_ledger_id                    PLS_INTEGER;
54 g_process_category_code        VARCHAR2(30);
55 g_end_date                     DATE;
56 g_errors_only_flag             VARCHAR2(1);
57 g_transfer_to_gl_flag          VARCHAR2(1);
58 g_post_in_gl_flag              VARCHAR2(1);
59 g_gl_batch_name                VARCHAR2(50);
60 g_valuation_method_code        VARCHAR2(30);
61 g_security_id_int_1            PLS_INTEGER;
62 g_security_id_int_2            PLS_INTEGER;
63 g_security_id_int_3            PLS_INTEGER;
64 g_security_id_char_1           VARCHAR2(30);
65 g_security_id_char_2           VARCHAR2(30);
66 g_security_id_char_3           VARCHAR2(30);
67 
68 g_request_id                   NUMBER;
69 g_accounting_batch_id          NUMBER;
70 g_total_error_count            NUMBER;
71 g_total_error_count_main       NUMBER;
72 g_security_condition           VARCHAR2(2000);
73 g_process_category_condition   VARCHAR2(2000);
74 
75 g_array_ae_header_id   xla_je_validation_pkg.t_array_int; -- 5115223
76 
77 g_nodata_flag                  VARCHAR2(1) ;--bug13258048
78 
79 --========================================================
80 -- Forward declarion of private procedures and functions
81 --========================================================
82 
83 PROCEDURE Initialize
84        (p_application_id             IN  NUMBER
85        ,p_ledger_id                  IN  NUMBER
86        ,p_process_category_code      IN  VARCHAR2
87        ,p_end_date                   IN  DATE
88        ,p_errors_only_flag           IN  VARCHAR2
89        ,p_transfer_to_gl_flag        IN  VARCHAR2
90        ,p_post_in_gl_flag            IN  VARCHAR2
91        ,p_gl_batch_name              IN  VARCHAR2
92        ,p_valuation_method_code      IN  VARCHAR2
93        ,p_security_id_int_1          IN  NUMBER
94        ,p_security_id_int_2          IN  NUMBER
95        ,p_security_id_int_3          IN  NUMBER
96        ,p_security_id_char_1         IN  VARCHAR2
97        ,p_security_id_char_2         IN  VARCHAR2
98        ,p_security_id_char_3         IN  VARCHAR2);
99 
100 PROCEDURE Populate_Journal_Entries;
101 
102 PROCEDURE Update_Journal_Entries;
103 
104 PROCEDURE Populate_Sequences;
105 
106 PROCEDURE Transfer_To_GL;
107 
108 --===========================================================================
109 -- Local trace routine.
110 --===========================================================================
111 
112 PROCEDURE trace
113        (p_msg                        IN VARCHAR2
114        ,p_level                      IN NUMBER
115        ,p_module                     IN VARCHAR2 DEFAULT C_DEFAULT_MODULE) IS
116 BEGIN
117    IF (p_msg IS NULL AND p_level >= g_log_level) THEN
118       fnd_log.message(p_level, p_module);
119    ELSIF p_level >= g_log_level THEN
120       fnd_log.string(p_level, p_module, p_msg);
121    END IF;
122 
123 EXCEPTION
124    WHEN xla_exceptions_pkg.application_exception THEN
125       RAISE;
126    WHEN OTHERS THEN
127       xla_exceptions_pkg.raise_message
128          (p_location   => 'xla_multiperiod_accounting_pkg.trace');
129 END trace;
130 
131 
132 --=============================================================================
133 --                   ******* Print Log File **********
134 --=============================================================================
135 PROCEDURE print_logfile(p_msg  IN  VARCHAR2) IS
136 BEGIN
137 
138    fnd_file.put_line(fnd_file.log,p_msg);
139 
140 EXCEPTION
141    WHEN xla_exceptions_pkg.application_exception THEN
142       RAISE;
143    WHEN OTHERS THEN
144       xla_exceptions_pkg.raise_message
145          (p_location   => 'xla_multiperiod_accounting_pkg.print_logfile');
146 END print_logfile;
147 
148 
149 --============================================================================
150 --
151 --  Public API which completes incomplete recognition journal entries and
152 --  accrual reversal journal entries.
153 --
154 --============================================================================
155 
156 PROCEDURE Complete_Journal_Entries
157        (p_application_id             IN  NUMBER
158        ,p_ledger_id                  IN  NUMBER
159        ,p_process_category_code      IN  VARCHAR2
160        ,p_end_date                   IN  DATE
161        ,p_errors_only_flag           IN  VARCHAR2
162        ,p_transfer_to_gl_flag        IN  VARCHAR2
163        ,p_post_in_gl_flag            IN  VARCHAR2
164        ,p_gl_batch_name              IN  VARCHAR2
165        ,p_valuation_method_code      IN  VARCHAR2
166        ,p_security_id_int_1          IN  NUMBER
167        ,p_security_id_int_2          IN  NUMBER
168        ,p_security_id_int_3          IN  NUMBER
169        ,p_security_id_char_1         IN  VARCHAR2
170        ,p_security_id_char_2         IN  VARCHAR2
171        ,p_security_id_char_3         IN  VARCHAR2
172        ,p_accounting_batch_id        OUT NOCOPY NUMBER
173        ,p_errbuf                     OUT NOCOPY VARCHAR2
174        ,p_retcode                    OUT NOCOPY NUMBER) IS
175 
176    l_log_module                VARCHAR2(240);
177    l_validation                NUMBER      := 0;
178    l_ret_flag_bal_reversal     BOOLEAN     := FALSE;
179 
180 BEGIN
181 
182    IF g_log_enabled THEN
183       l_log_module := C_DEFAULT_MODULE||'.Complete_Journal_Entries';
184    END IF;
185 
186    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187       trace
188          (p_msg      => 'BEGIN procedure COMPLETE_JOURNAL_ENTRIES'
189          ,p_level    => C_LEVEL_PROCEDURE
190          ,p_module   => l_log_module);
191 
192       trace
193          (p_msg      => 'p_application_id = '||p_application_id
194          ,p_level    => C_LEVEL_PROCEDURE
195          ,p_module   => l_log_module);
196 
197       trace
198          (p_msg      => 'p_ledger_id = '||p_ledger_id
199          ,p_level    => C_LEVEL_PROCEDURE
200          ,p_module   => l_log_module);
201 
202       trace
203          (p_msg      => 'p_process_category_code = '||p_process_category_code
204          ,p_level    => C_LEVEL_PROCEDURE
205          ,p_module   => l_log_module);
206 
207       trace
208          (p_msg      => 'p_end_date = '||to_char(p_end_date,'DD-MON-YYYY')
209          ,p_level    => C_LEVEL_PROCEDURE
210          ,p_module   => l_log_module);
211 
212       trace
213          (p_msg      => 'p_errors_only_flag = '||p_errors_only_flag
214          ,p_level    => C_LEVEL_PROCEDURE
215          ,p_module   => l_log_module);
216 
217       trace
218          (p_msg      => 'p_transfer_to_gl_flag = '||p_transfer_to_gl_flag
219          ,p_level    => C_LEVEL_PROCEDURE
220          ,p_module   => l_log_module);
221 
222       trace
223          (p_msg      => 'p_post_in_gl_flag = '||p_post_in_gl_flag
224          ,p_level    => C_LEVEL_PROCEDURE
225          ,p_module   => l_log_module);
226 
227       trace
228          (p_msg      => 'p_gl_batch_name = '||p_gl_batch_name
229          ,p_level    => C_LEVEL_PROCEDURE
230          ,p_module   => l_log_module);
231 
232       trace
233          (p_msg      => 'p_valuation_method_code = '||p_valuation_method_code
234          ,p_level    => C_LEVEL_PROCEDURE
235          ,p_module   => l_log_module);
236 
237       trace
238          (p_msg      => 'p_security_id_int_1 = '||p_security_id_int_1
239          ,p_level    => C_LEVEL_PROCEDURE
240          ,p_module   => l_log_module);
241 
242       trace
243          (p_msg      => 'p_security_id_int_1 = '||p_security_id_int_1
244          ,p_level    => C_LEVEL_PROCEDURE
245          ,p_module   => l_log_module);
246 
247       trace
248          (p_msg      => 'p_security_id_int_3 = '||p_security_id_int_3
249          ,p_level    => C_LEVEL_PROCEDURE
250          ,p_module   => l_log_module);
251 
252       trace
253          (p_msg      => 'p_security_id_char_1 = '||p_security_id_char_1
254          ,p_level    => C_LEVEL_PROCEDURE
255          ,p_module   => l_log_module);
256 
257       trace
258          (p_msg      => 'p_security_id_char_2 = '||p_security_id_char_2
259          ,p_level    => C_LEVEL_PROCEDURE
260          ,p_module   => l_log_module);
261 
262       trace
263          (p_msg      => 'p_security_id_char_3 = '||p_security_id_char_3
264          ,p_level    => C_LEVEL_PROCEDURE
265          ,p_module   => l_log_module);
266 
267    END IF;
268 
269    Initialize
270       (p_application_id                  => p_application_id
271       ,p_ledger_id                       => p_ledger_id
272       ,p_process_category_code           => p_process_category_code
273       ,p_end_date                        => p_end_date
274       ,p_errors_only_flag                => p_errors_only_flag
275       ,p_transfer_to_gl_flag             => p_transfer_to_gl_flag
276       ,p_post_in_gl_flag                 => p_post_in_gl_flag
277       ,p_gl_batch_name                   => p_gl_batch_name
278       ,p_valuation_method_code           => p_valuation_method_code
279       ,p_security_id_int_1               => p_security_id_int_1
280       ,p_security_id_int_2               => p_security_id_int_2
281       ,p_security_id_int_3               => p_security_id_int_3
282       ,p_security_id_char_1              => p_security_id_char_1
283       ,p_security_id_char_2              => p_security_id_char_2
284       ,p_security_id_char_3              => p_security_id_char_3);
285 
286      g_nodata_flag := C_NO; --bug13258048
287    -- Populate xla_ae_headers_gt table for processing.
288 
289    Populate_Journal_Entries;
290 
291     --To check if any events to process are present.bug13258048
292    IF(g_nodata_flag <> C_YES) THEN
293 
294    -- Invoke API to validate and balance journal entries by balancing segments.
295 
296    IF (C_LEVEL_EVENT >= g_log_level) THEN
297       trace
298          (p_msg      => 'Calling the function XLA_JE_VALIDATION_PKG.BALANCE_AMOUNTS'
299          ,p_level    => C_LEVEL_EVENT
300          ,p_module   => l_log_module);
301    END IF;
302 
303    xla_accounting_cache_pkg.load_application_ledgers
304       (p_application_id      => g_application_id
305       ,p_event_ledger_id     => g_ledger_id);
306 
307    l_validation := XLA_JE_VALIDATION_PKG.Balance_Amounts
308                          (p_application_id   => g_application_id
309                          ,p_ledger_id        => g_ledger_id
310                          ,p_mode             => 'COMPLETE_MPA'
311                          ,p_end_date         => g_end_date
312                          ,p_budgetary_control_mode => 'NONE'
313                          ,p_accounting_mode  => 'F');
314 
315    If (l_validation = 1) then
316 
317       -- Error encountered in validation and balancing program.
318 
319       IF (C_LEVEL_EVENT >= g_log_level) THEN
320          trace
321             (p_msg      => 'Error encountered in the XLA_JE_VALIDATION_PKG.Balance_Amounts function.'
322             ,p_level    => C_LEVEL_EVENT
323             ,p_module   => l_log_module);
324       END IF;
325    Else
326       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
327          trace
328             (p_msg      => 'Routine XLA_JE_VALIDATION_PKG.Balance_Amounts executed.'
329             ,p_level    => C_LEVEL_STATEMENT
330             ,p_module   => l_log_module);
331       END IF;
332    End If;
333 
334    -- Invoke API to balance control account balances and analytical criterion balances.
335 
336    IF (C_LEVEL_EVENT >= g_log_level) THEN
337       trace
338          (p_msg      => 'Calling the function XLA_BALANCES_PKG.MASSIVE_UPDATE'
339          ,p_level    => C_LEVEL_EVENT
340          ,p_module   => l_log_module);
341    END IF;
342 
343    l_ret_flag_bal_reversal :=
344            XLA_BALANCES_PKG.Massive_Update
345                      (p_application_id                  => g_application_id
346                      ,p_ledger_id                       => NULL
347                      ,p_entity_id                       => NULL
348                      ,p_event_id                        => NULL
349                      ,p_request_id                      => NULL
350                      ,p_accounting_batch_id             => g_accounting_batch_id
351                      ,p_update_mode                     => 'A'
352                      ,p_execution_mode                  => 'O');
353 
354    IF NOT l_ret_flag_bal_reversal THEN
355 
356       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
357          trace
358             (p_msg      => 'Error encountered in the function XLA_BALANCES_PKG.Massive_Update '
359             ,p_level    => C_LEVEL_STATEMENT
360             ,p_module   => l_log_module);
361       END IF;
362 
363       xla_accounting_err_pkg.build_message
364          (p_appli_s_name   => 'XLA'
365          ,p_msg_name       => 'XLA_AP_TECHNICAL_ERROR'
366          ,p_token_1        => 'APPLICATION_NAME'
367          ,p_value_1        => 'SLA'
368          ,p_entity_id      => NULL
369          ,p_event_id       => NULL);
370 
371       print_logfile('Technical problem : Problem in the routine XLA_BALANCES_PKG.Massive_Update');
372 
373       xla_exceptions_pkg.raise_message
374          (p_appli_s_name   => 'XLA'
375          ,p_msg_name       => 'XLA_COMMON_ERROR'
376          ,p_token_1        => 'LOCATION'
377          ,p_value_1        => 'xla_multiperiod_accounting_pkg.complete_journal_entries'
378          ,p_token_2        => 'ERROR'
379          ,p_value_2        => 'Technical problem : Problem in the routine XLA_BALANCES_PKG.Massive_Update');
380    ELSE
381 
382       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
383          trace
384             (p_msg      => 'Call to function XLA_BALANCES_PKG.Massive_Update completed.'
385             ,p_level    => C_LEVEL_STATEMENT
386             ,p_module   => l_log_module);
387       END IF;
388       print_logfile('- call to XLA_BALANCES_PKG.Massive_Update completed');
389    END IF;
390 
391    -- Update journal entry status.
392 
393    Update_journal_Entries;
394 
395    -- Track number of errors encountered during XLA routines.
396 
397    g_total_error_count_main := xla_accounting_err_pkg.g_error_count;
398 
399    -- Populate document sequence.
400 
401    Populate_Sequences;
402 
403    -- Transfer to GL.
404 
405    If (g_transfer_to_gl_flag = 'Y') then
406       Transfer_To_Gl;
407    End If;
408 
409   END IF;
410 
411    ----------------------------------------------------------------------------
412    -- insert any errors that were build in this session (for them to appear
413    -- on the report).
414    ----------------------------------------------------------------------------
415    g_total_error_count := xla_accounting_err_pkg.g_error_count;
416 
417    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
418       trace
419          (p_msg      => 'g_total_error_count = '||g_total_error_count
420          ,p_level    => C_LEVEL_STATEMENT
421          ,p_module   => l_log_module);
422    END IF;
423 
424    --
425    -- If errors were encountered during sequencing and/or transfer to GL
426    -- then rollback to allow reprocessing of JE headers.  Otherwise, it
427    -- will be possible to have "completed" entries without the proper
428    -- sequencing data and/or properly transferred to GL.
429    --
430 
431    If (g_total_error_count > g_total_error_count_main) then
432       rollback;
433    End If;
434 
435    xla_accounting_err_pkg.insert_errors;
436    COMMIT;
437 
438    ----------------------------------------------------------------------------
439    -- set return variables
440    ----------------------------------------------------------------------------
441 
442    p_accounting_batch_id := g_accounting_batch_id;
443 
444    IF g_total_error_count = 0 THEN
445       p_retcode             := 0;
446       p_errbuf              := 'Complete Multiperiod Accounting Program completed Normal';
447    ELSE
448      IF g_total_error_count = 1 and g_nodata_flag ='Y' THEN --bug13258048
449         p_retcode             := 0;
450         p_errbuf              := 'Complete Multiperiod Accounting Program completed Normal with no events to process';
451     ELSE
452         p_retcode             := 1;
453         p_errbuf              := 'Complete Multiperiod Accounting Program completed Normal with some entries in error';
454     END IF;
455    END IF;
456 
457    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
458       trace
459          (p_msg      => 'END of procedure COMPLETE_JOURNAL_ENTRIES'
460          ,p_level    => C_LEVEL_PROCEDURE
461          ,p_module   => l_log_module);
462    END IF;
463 
464 
465 EXCEPTION
466    WHEN xla_exceptions_pkg.application_exception THEN
467 
468       ----------------------------------------------------------------------------
469       -- set out variables
470       ----------------------------------------------------------------------------
471       p_accounting_batch_id    := g_accounting_batch_id;
472       p_retcode                := 2;
473       p_errbuf                 := xla_messages_pkg.get_message;
474 
475       print_logfile(p_errbuf);
476 
477       IF (C_LEVEL_ERROR >= g_log_level) THEN
478          trace
479             (p_msg      => NULL
480             ,p_level    => C_LEVEL_ERROR
481             ,p_module   => l_log_module);
482       END IF;
483 
484       ----------------------------------------------------------------------------
485       -- insert any errors that were build in this session (for them to appear
486       -- on the report).
487       ----------------------------------------------------------------------------
488       rollback;
489 
490       xla_accounting_err_pkg.insert_errors;
491       COMMIT;
492 
493       IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
494          trace
495             (p_msg      => 'p_retcode = '||p_retcode
496             ,p_level    => C_LEVEL_PROCEDURE
497             ,p_module   => l_log_module);
498          trace
499             (p_msg      => 'p_errbuf = '||p_errbuf
500             ,p_level    => C_LEVEL_PROCEDURE
501             ,p_module   => l_log_module);
502          trace
503             (p_msg      => 'END of procedure COMPLETE_JOURNAL_ENTRIES'
504             ,p_level    => C_LEVEL_PROCEDURE
505             ,p_module   => l_log_module);
506       END IF;
507 
508    WHEN OTHERS THEN
509       xla_accounting_err_pkg.build_message
510          (p_appli_s_name   => 'XLA'
511          ,p_msg_name       => 'XLA_AP_TECHNICAL_ERROR'
512          ,p_token_1        => 'XLA_MULTIPERIOD_ACCOUNTING_PKG.Complete_Journal_Entries'
513          ,p_value_1        => 'SLA'
514          ,p_entity_id      => NULL
515          ,p_event_id       => NULL);
516 
517       rollback;
518 
519       xla_accounting_err_pkg.insert_errors;
520       COMMIT;
521 
522       xla_exceptions_pkg.raise_message
523          (p_location       => 'xla_multiperiod_accounting_pkg.complete_journal_entries');
524 
525 END complete_journal_entries; -- end of procedure
526 
527 
528 --============================================================================
529 --
530 -- Private API which initializes the complete multiperiod accounting program.
531 --
532 --============================================================================
533 
534 PROCEDURE Initialize
535        (p_application_id             IN  NUMBER
536        ,p_ledger_id                  IN  NUMBER
537        ,p_process_category_code      IN  VARCHAR2
538        ,p_end_date                   IN  DATE
539        ,p_errors_only_flag           IN  VARCHAR2
540        ,p_transfer_to_gl_flag        IN  VARCHAR2
541        ,p_post_in_gl_flag            IN  VARCHAR2
542        ,p_gl_batch_name              IN  VARCHAR2
543        ,p_valuation_method_code      IN  VARCHAR2
544        ,p_security_id_int_1          IN  NUMBER
545        ,p_security_id_int_2          IN  NUMBER
546        ,p_security_id_int_3          IN  NUMBER
547        ,p_security_id_char_1         IN  VARCHAR2
548        ,p_security_id_char_2         IN  VARCHAR2
549        ,p_security_id_char_3         IN  VARCHAR2)
550 IS
551    l_log_module                      VARCHAR2(240);
552 BEGIN
553    IF g_log_enabled THEN
554       l_log_module := C_DEFAULT_MODULE||'.Initialize';
555    END IF;
556 
557    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
558       trace
559          (p_msg      => 'BEGIN procedure INITIALIZE'
560          ,p_level    => C_LEVEL_PROCEDURE
561          ,p_module   => l_log_module);
562    END IF;
563 
564 
565    -- Initialize global params.
566 
567    g_application_id          := p_application_id;
568    g_ledger_id               := p_ledger_id;
569    g_process_category_code   := p_process_category_code;
570    g_end_date                := p_end_date;
571    g_errors_only_flag        := p_errors_only_flag;
572    g_transfer_to_gl_flag     := p_transfer_to_gl_flag;
573    g_post_in_gl_flag         := p_post_in_gl_flag;
574    g_gl_batch_name           := p_gl_batch_name;
575    g_valuation_method_code   := p_valuation_method_code;
576    g_security_id_int_1       := p_security_id_int_1;
577    g_security_id_int_2       := p_security_id_int_2;
578    g_security_id_int_3       := p_security_id_int_3;
579    g_security_id_char_1      := p_security_id_char_1;
580    g_security_id_char_2      := p_security_id_char_2;
581    g_security_id_char_3      := p_security_id_char_3;
582 
583 
584    -- Set request id.
585 
586    g_request_id              := FND_GLOBAL.Conc_Request_Id();
587 
588    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
589       trace
590          (p_msg      => 'g_request_id = '||g_request_id
591          ,p_level    => C_LEVEL_STATEMENT
592          ,p_module   => l_log_module);
593    END IF;
594 
595    xla_security_pkg.set_security_context(p_application_id);
596 
597    -- Set new accounting batch id.
598 
599    Select xla_accounting_batches_s.nextval
600      into g_accounting_batch_id
601      from dual;
602 
603    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
604       trace
605          (p_msg      => 'g_accounting_batch_id = '||g_accounting_batch_id
606          ,p_level    => C_LEVEL_STATEMENT
607          ,p_module   => l_log_module);
608    END IF;
609 
610    -- Initialize errors package.
611 
612    XLA_ACCOUNTING_ERR_PKG.Set_Options
613       (p_error_source     => xla_accounting_err_pkg.C_ACCT_PROGRAM
614       ,p_request_id       => g_request_id
615       ,p_application_id   => p_application_id);
616 
617 
618    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
619       trace
620          (p_msg      => 'END of procedure INITIALIZE '
621          ,p_level    => C_LEVEL_PROCEDURE
622          ,p_module   => l_log_module);
623    END IF;
624 
625 EXCEPTION
626    WHEN xla_exceptions_pkg.application_exception THEN
627       RAISE;
628    WHEN OTHERS THEN
629       xla_accounting_err_pkg.build_message
630          (p_appli_s_name   => 'XLA'
631          ,p_msg_name       => 'XLA_AP_TECHNICAL_ERROR'
632          ,p_token_1        => 'XLA_MULTIPERIOD_ACCOUNTING_PKG.Initialize'
633          ,p_value_1        => 'SLA'
634          ,p_entity_id      => NULL
635          ,p_event_id       => NULL);
636 
637       xla_exceptions_pkg.raise_message
638          (p_location       => 'xla_multiperiod_accounting_pkg.Initialize');
639 END Initialize;
640 
641 
642 --============================================================================
643 --
644 --  Private API which populates the xla_ae_headers_gt table with journal
645 --  entries to be completed and reset its status to 'Incomplete'.
646 --
647 --  The accounting entries to be completed must fullfill the following
648 --  conditions:
649 --
650 --  (1) The journal entry is an accrual reversal entry or a multiperiod
651 --      accounting recognition entry.
652 --  (2) Filtered by the input parameters.
653 --  (3) The accounting entry status of the accrual entry of the entry to
654 --      be completed is 'Final'.
655 --
656 --============================================================================
657 
658 PROCEDURE Populate_Journal_Entries
659 IS
660 
661    l_stmt          VARCHAR2(5000);
662    l_count         NUMBER  := 0;
663    l_log_module    VARCHAR2(240);
664 
665    l_err_msg    varchar2(100);
666    l_err_num    number;
667 
668    Cursor C_SEL_HDRS is
669    Select accounting_entry_status_code
670      from xla_ae_headers
671     where ae_header_id in (Select /*+ cardinality(XLA_AE_HEADERS_GT,1) */    --bug9174950
672     ae_header_id from xla_ae_headers_gt)
673      and application_id = g_application_id
674       for update nowait;
675 
676 BEGIN
677 
678    IF g_log_enabled THEN
679       l_log_module := C_DEFAULT_MODULE||'.Populate_Journal_Entries';
680    END IF;
681 
682    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
683       trace
684          (p_msg      => 'BEGIN procedure POPULATE_JOURNAL_ENTRIES'
685          ,p_level    => C_LEVEL_PROCEDURE
686          ,p_module   => l_log_module);
687    END IF;
688 
689    g_security_condition := NULL;
690 
691    -- Building filter condition based on security columns and valuation method
692    -- This condition will be added dynamically to select statemtents.
693 
694    SELECT DECODE(g_valuation_method_code,NULL,NULL,'and valuation_method = '''||g_valuation_method_code||''' ')||
695           DECODE(g_security_id_int_1,NULL,NULL,'and security_id_int_1 = '||g_security_id_int_1||' ')||
696           DECODE(g_security_id_int_2,NULL,NULL,'and security_id_int_2 = '||g_security_id_int_2||' ')||
697           DECODE(g_security_id_int_3,NULL,NULL,'and security_id_int_3 = '||g_security_id_int_3||' ')||
698           DECODE(g_security_id_char_1,NULL,NULL,'and security_id_char_1 = '''||g_security_id_char_1||''' ')||
699           DECODE(g_security_id_char_2,NULL,NULL,'and security_id_char_2 = '''||g_security_id_char_2||''' ')||
700           DECODE(g_security_id_char_3,NULL,NULL,'and security_id_char_3 = '''||g_security_id_char_3||''' ')
701      INTO g_security_condition
702      FROM DUAL;
703 
704    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
705       trace
706           (p_msg      => 'g_security_condition = '||g_security_condition
707           ,p_level    => C_LEVEL_STATEMENT
708           ,p_module   => l_log_module);
709    End If;
710 
711    -- Building filter condition based process_category.
712    -- This condition will be added dynamically to select statemtents.
713 
714    g_process_category_condition := NULL;
715 
716    SELECT DECODE(g_process_category_code,NULL,NULL,'and event_class_group_code = '''||g_process_category_code||'''')
717      INTO g_process_category_condition
718      FROM DUAL;
719 
720    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
721       trace
722           (p_msg      => 'g_process_category_condition = '||g_process_category_condition
723           ,p_level    => C_LEVEL_STATEMENT
724           ,p_module   => l_log_module);
725    End If;
726 
727    -- Insert the journal entries to be completed into xla_ae_headers_gt.
728 
729    l_stmt := 'INSERT INTO xla_ae_headers_gt
730                           (ae_header_id
731                           ,ledger_id
732                           ,entity_id
733                           ,event_id
734                           ,accounting_date
735                           ,balance_type_code
736                           ,je_category_name
737                           ,product_rule_type_code
738                           ,product_rule_code
739                           ,period_name
740                           ,doc_sequence_id
741                           ,doc_category_code
742                           ,gl_transfer_status_code
743                           ,accrual_reversal_flag
744                           ,accounting_entry_status_code)
745               SELECT /*+ INDEX(xah xla_ae_headers_n7) */ xah.ae_header_id
746                     ,xah.ledger_id
747                     ,xah.entity_id
748                     ,xah.event_id
749                     ,xah.accounting_date
750                     ,xah.balance_type_code
751                     ,xah.je_category_name
752                     ,xah.product_rule_type_code
753                     ,xah.product_rule_code
754                     ,xah.period_name
755                     ,xah.doc_sequence_id
756                     ,xah.doc_category_code
757                     ,xah.gl_transfer_status_code
758                     ,xah.accrual_reversal_flag
759                     ,''F''
760               FROM  xla_ae_headers             xah
761                   , xla_ae_headers             xah2
762                   , xla_subledgers             xs
763                   , xla_event_types_b          xet
764                   , xla_event_class_attrs      xec
765                   , xla_transaction_entities    xte
766               WHERE xah.application_id             = :1
767                 and xah.accounting_date           <= :2
768                 and xah.accounting_entry_status_code IN (''I'', DECODE(:3, ''Y'', ''I'', ''N''))
769                 AND xah.application_id         = xah2.application_id
770                 AND xah.parent_ae_header_id    = xah2.ae_header_id
771                 AND xah2.accounting_entry_status_code = ''F''
772                 AND xs.application_id          = xah.application_id
773                 AND xah.ledger_id IN  (SELECT xlr.ledger_id                     -- bug9587265
774                              FROM   xla_ledger_options xlo,
775                                     xla_ledger_relationships_v xlr
776                              WHERE  xlo.application_id        = :4
777                                     AND xlr.primary_ledger_id = :5
778                                     AND xlr.relationship_enabled_flag = ''Y''
779                                     AND xlr.ledger_category_code IN ( ''ALC'', ''PRIMARY'', ''SECONDARY'' )
780                                     AND DECODE(xlr.ledger_category_code, ''ALC'', xlr.ledger_id, xlo.ledger_id) = xlr.ledger_id
781                                     AND DECODE(xlr.ledger_category_code, ''SECONDARY'', xlo.capture_event_flag, ''N'') = ''N''
782                                     AND DECODE(xlr.ledger_category_code, ''ALC'', ''Y'', xlo.enabled_flag) = ''Y'')
783                 AND xte.application_id         = xah.application_id
784                 AND xte.entity_id              = xah.entity_id
785                 AND xte.entity_code            <> ''MANUAL''
786                 AND xet.application_id         = xah.application_id
787                 AND xet.event_type_code        = xah.event_type_code
788                 AND xec.application_id         = xet.application_id
789                 AND xec.entity_code            = xet.entity_code
790                 AND xec.event_class_code       = xet.event_class_code' ||
791                 g_security_condition || ' ' ||
792                 g_process_category_condition;
793 
794 
795    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
796       trace
797           (p_msg      => 'l_stmt = '||l_stmt
798           ,p_level    => C_LEVEL_STATEMENT
799           ,p_module   => l_log_module);
800    End If;
801 
802    print_logfile('- Dynamic stmt to populate xla_ae_headers_gt table built');
803 
804    EXECUTE IMMEDIATE l_stmt
805      USING g_application_id
806           ,g_end_date
807           ,g_errors_only_flag
808           ,g_application_id  --bug9174950
809           ,g_ledger_id;      --bug9174950
810 
811    l_count := SQL%ROWCOUNT;
812 
813    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
814       trace(p_msg    => '# lines inserted = '||SQL%ROWCOUNT,
815             p_module => l_log_module,
816             p_level  => C_LEVEL_STATEMENT);
817    END IF;
818 
819    print_logfile('- xla_ae_headers_gt table populuated');
820 
821    If (l_count = 0) then
822       If (C_LEVEL_EVENT >= g_log_level) THEN
823          trace
824             (p_msg      => 'No incomplete recognition journal entries and accrual reversal ' ||
825                            'journal entries fetched for the application. '||
826                            'There are no events to process in this run.'
827             ,p_level    => C_LEVEL_EVENT
828             ,p_module   => l_log_module);
829       END IF;
830 
831       xla_accounting_err_pkg.build_message
832          (p_appli_s_name   => 'XLA'
833          ,p_msg_name       => 'XLA_AP_NO_EVENT_TO_PROCESS'
834          ,p_entity_id      => NULL
835          ,p_event_id       => NULL);
836 
837       print_logfile('Technical warning : There are no Incomplete entries to process.');
838 
839       g_nodata_flag := C_YES; --bug13258048
840 
841    Else
842 
843       --
844       -- Reset journal entry status for the journal entry to be completed
845       --
846 
847       Update xla_ae_headers
848          Set accounting_entry_status_code  = 'N'
849            , request_id                    = g_request_id
850            , accounting_batch_id           = g_accounting_batch_id
851            , last_update_date              = sysdate
852            , last_updated_by               = xla_environment_pkg.g_usr_id
853            , last_update_login             = xla_environment_pkg.g_login_id
854        Where application_id = g_application_id
855          and ae_header_id in (Select ae_header_id from xla_ae_headers_gt)
856        RETURNING  ae_header_id   BULK COLLECT INTO g_array_ae_header_id;   -- 5115223
857 
858       -- Lock rows in main headers table selected for processing.
859 
860       Begin
861          Open  C_SEL_HDRS;
862          Close C_SEL_HDRS;
863       Exception
864          When resource_busy Then
865             xla_accounting_err_pkg.build_message
866                (p_appli_s_name   => 'XLA'
867                ,p_msg_name       => 'XLA_MA_HDR_LOCKED'
868                ,p_entity_id      => NULL
869                ,p_event_id       => NULL);
870 
871             print_logfile('Technical problem : JE Headers of transactions to be completed cannot be locked.');
872 
873             xla_exceptions_pkg.raise_message
874                (p_appli_s_name   => 'XLA'
875                ,p_msg_name       => 'XLA_MA_HDR_LOCKED');
876 
877          When Others Then
878             xla_exceptions_pkg.raise_message
879                (p_location       => 'xla_multiperiod_accounting_pkg.Populate_Journal_Entries');
880       End;
881 
882       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
883          trace(p_msg    => '# lines updated = '||SQL%ROWCOUNT,
884                p_module => l_log_module,
885                p_level  => C_LEVEL_STATEMENT);
886       END IF;
887 
888    End If;
889    --bug13258048
890    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
891          trace(p_msg    => 'g_nodata_flag = '||g_nodata_flag,
892                p_module => l_log_module,
893                p_level  => C_LEVEL_STATEMENT);
894       END IF;
895 
896    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
897       trace
898          (p_msg      => 'END procedure POPULATE_JOURNAL_ENTRIES'
899          ,p_level    => C_LEVEL_PROCEDURE
900          ,p_module   => l_log_module);
901    END IF;
902 
903 EXCEPTION
904    WHEN xla_exceptions_pkg.application_exception THEN
905       RAISE;
906    WHEN OTHERS THEN
907       xla_accounting_err_pkg.build_message
908          (p_appli_s_name   => 'XLA'
909          ,p_msg_name       => 'XLA_AP_TECHNICAL_ERROR'
910          ,p_token_1        => 'XLA_MULTIPERIOD_ACCOUNTING_PKG.Populate_Journal_Entries'
911          ,p_value_1        => 'SLA'
912          ,p_entity_id      => NULL
913          ,p_event_id       => NULL);
914 
915       xla_exceptions_pkg.raise_message
916          (p_location       => 'xla_multiperiod_accounting_pkg.Populate_Journal_Entries');
917 
918 END Populate_Journal_Entries;
919 
920 
921 --============================================================================
922 --
923 -- Private API which updates the journal entry completed in the current run.
924 --
925 --============================================================================
926 
927 PROCEDURE Update_Journal_Entries
928 IS
929    l_log_module               VARCHAR2(240);
930 BEGIN
931    IF g_log_enabled THEN
932       l_log_module := C_DEFAULT_MODULE||'.Update_Journal_Entries';
933    END IF;
934 
935    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
936       trace
937          (p_msg      => 'BEGIN of procedure UPDATE_JOURNAL_ENTRIES'
938          ,p_level    => C_LEVEL_STATEMENT
939          ,p_module   => l_log_module);
940       trace
941          (p_msg      => '# incomplete ='||g_array_ae_header_id.COUNT
942          ,p_level    => C_LEVEL_STATEMENT
943          ,p_module   => l_log_module);
944    END IF;
945 
946    FORALL i IN 1..g_array_ae_header_id.COUNT  -- 5115223
947       UPDATE xla_ae_headers xah
948       SET    accounting_entry_status_code = 'F'
949             ,completed_date               = sysdate
950       WHERE  xah.request_id          = g_request_id
951       AND    xah.accounting_batch_id = g_accounting_batch_id
952       AND    xah.application_id      = g_application_id
953       AND    xah.ae_header_id        = g_array_ae_header_id(i)
954       AND    accounting_entry_status_code NOT IN ('I', 'R');
955 
956 
957    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
958       trace
959          (p_msg      => 'Number of headers updated = '||SQL%ROWCOUNT
960          ,p_level    => C_LEVEL_PROCEDURE
961          ,p_module   => l_log_module);
962 
963       trace
964          (p_msg      => 'END of procedure UPDATE_JOURNAL_ENTRIES '
965          ,p_level    => C_LEVEL_PROCEDURE
966          ,p_module   => l_log_module);
967    END IF;
968 
969 EXCEPTION
970    WHEN xla_exceptions_pkg.application_exception THEN
971       RAISE;
972 
973    WHEN OTHERS THEN
974       xla_accounting_err_pkg.build_message
975          (p_appli_s_name   => 'XLA'
976          ,p_msg_name       => 'XLA_AP_TECHNICAL_ERROR'
977          ,p_token_1        => 'XLA_MULTIPERIOD_ACCOUNTING_PKG.Update_Journal_Entries'
978          ,p_value_1        => 'SLA'
979          ,p_entity_id      => NULL
980          ,p_event_id       => NULL);
981 
982       xla_exceptions_pkg.raise_message
983          (p_location       => 'xla_multiperiod_accounting_pkg.Update_Journal_Entries');
984 END Update_Journal_Entries;
985 
986 
987 --============================================================================
988 --
989 -- Private API which populates the completion sequence number for the journal
990 -- entries to be completed.
991 --
992 --============================================================================
993 
994 PROCEDURE Populate_Sequences
995 IS
996    l_seq_context_value     fun_seq_batch.context_value_tbl_type;
997    l_xla_seq_status        VARCHAR2(30);
998    l_xla_seq_context_id    NUMBER;
999    l_log_module            VARCHAR2(240);
1000 
1001 BEGIN
1002    IF g_log_enabled THEN
1003       l_log_module := C_DEFAULT_MODULE||'.Populate_Sequences';
1004    END IF;
1005 
1006    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1007       trace
1008          (p_msg      => 'BEGIN of procedure POPULATE_SEQUENCES'
1009          ,p_level    => C_LEVEL_STATEMENT
1010          ,p_module   => l_log_module);
1011    END IF;
1012 
1013    --
1014    -- Insert the journal entry to be sequenced to the XLA_EVENTS_GT
1015    -- and the sequencing batch API will use the GT table to identify
1016    -- the journal entry to be sequenced.
1017    --
1018 
1019    INSERT INTO xla_events_gt
1020                (application_id
1021                ,ledger_id
1022                ,entity_id
1023                ,entity_code
1024                ,event_id)
1025         SELECT /*+ cardinality(H,1)  INDEX(t xla_transaction_entities_u1) */  DISTINCT   --bug9174950
1026                g_application_id
1027               ,g_ledger_id
1028               ,h.entity_id
1029               ,t.entity_code
1030               ,h.event_id
1031          FROM xla_ae_headers_gt h,
1032               xla_transaction_entities t
1033         WHERE h.entity_id = t.entity_id
1034         AND h.ledger_id = t.ledger_id
1035         AND t.application_id = g_application_id
1036         AND t.ledger_id = g_ledger_id;
1037 
1038    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1039       trace(p_msg    => 'Number of journal entries to be sequenced = '||SQL%ROWCOUNT,
1040             p_module => l_log_module,
1041             p_level  => C_LEVEL_STATEMENT);
1042    END IF;
1043 
1044    --
1045    -- Retrieve all primary, secondary, and ALC ledgers
1046    --
1047 
1048    SELECT xlr.ledger_id BULK COLLECT
1049      INTO l_seq_context_value
1050      FROM xla_ledger_relationships_v       xlr
1051          ,xla_subledger_options_v          xso
1052     WHERE xlr.relationship_enabled_flag    = 'Y'
1053       AND xlr.ledger_category_code         IN ('ALC','PRIMARY','SECONDARY')
1054       AND DECODE(xso.valuation_method_flag
1055                  ,'N',xlr.primary_ledger_id
1056                  ,DECODE(xlr.ledger_category_code
1057                          ,'ALC',xlr.primary_ledger_id
1058                          ,xlr.ledger_id)
1059                  )                         = g_ledger_id
1060       AND xso.application_id               = g_application_id
1061       AND xso.ledger_id                    = DECODE(xlr.ledger_category_code
1062                                                     ,'ALC',xlr.primary_ledger_id
1063                                                     ,xlr.ledger_id)
1064       AND xso.enabled_flag                  = 'Y';
1065 
1066    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1067       trace(p_msg    => 'Number of ledgers to be sequenced = '|| l_seq_context_value.COUNT
1068            ,p_module => l_log_module
1069            ,p_level  => C_LEVEL_STATEMENT);
1070    END IF;
1071 
1072    --
1073    -- Create sequence in batch mode
1074    --
1075 
1076    IF (C_LEVEL_EVENT>= g_log_level) THEN
1077       trace(p_msg      => 'Calling FUN_SEQ_BATCH.Batch_Init'
1078            ,p_level    => C_LEVEL_EVENT
1079            ,p_module   => l_log_module);
1080    END IF;
1081 
1082    fun_seq_batch.batch_init
1083          (p_application_id      => 602
1084          ,p_table_name          => 'XLA_AE_HEADERS'
1085          ,p_event_code          => 'COMPLETION'
1086          ,p_context_type        => 'LEDGER_AND_CURRENCY'
1087          ,p_context_value_tbl   => l_seq_context_value
1088          ,p_request_id          => g_request_id
1089          ,x_status              => l_xla_seq_status
1090          ,x_seq_context_id      => l_xla_seq_context_id);
1091 
1092    IF l_xla_seq_status <> 'NO_SEQUENCING' THEN
1093 
1094       fun_seq_batch.populate_acct_seq_info
1095          (p_calling_program        => 'ACCOUNTING'
1096          ,p_request_id             => g_request_id);
1097 
1098       fun_seq_batch.batch_exit
1099          (p_request_id             => g_request_id
1100          ,x_status                 => l_xla_seq_status);
1101 
1102    END IF;
1103 
1104    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1105       trace
1106          (p_msg      => 'END of procedure POPULATE_SEQUENCES '
1107          ,p_level    => C_LEVEL_PROCEDURE
1108          ,p_module   => l_log_module);
1109    END IF;
1110 
1111 EXCEPTION
1112    WHEN xla_exceptions_pkg.application_exception THEN
1113       RAISE;
1114 
1115    WHEN OTHERS THEN
1116       xla_accounting_err_pkg.build_message
1117       (p_appli_s_name   => 'XLA'
1118       ,p_msg_name       => 'XLA_AP_TECHNICAL_ERROR'
1119       ,p_token_1        => 'XLA_MULTIPERIOD_ACCOUNTING_PKG.Populate_Sequences'
1120       ,p_value_1        => 'SLA'
1121       ,p_entity_id      => NULL
1122       ,p_event_id       => NULL);
1123 
1124       xla_exceptions_pkg.raise_message
1125          (p_location       => 'xla_multiperiod_accounting_pkg.Populate_Sequences');
1126 END Populate_Sequences;
1127 
1128 
1129 
1130 --============================================================================
1131 --
1132 --   Private API which transfer the accounting entry to GL if required.
1133 --
1134 --============================================================================
1135 
1136 PROCEDURE Transfer_To_GL
1137 IS
1138    l_log_module                      VARCHAR2(240);
1139 BEGIN
1140    IF g_log_enabled THEN
1141       l_log_module := C_DEFAULT_MODULE||'.Transfer_To_GL';
1142    END IF;
1143 
1144    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1145       trace
1146          (p_msg      => 'BEGIN of procedure TRANSFER_TO_GL'
1147          ,p_level    => C_LEVEL_STATEMENT
1148          ,p_module   => l_log_module);
1149    END IF;
1150 
1151    xla_accounting_err_pkg.set_options
1152        (p_error_source     => xla_accounting_err_pkg.C_TRANSFER_TO_GL);
1153 
1154    IF (C_LEVEL_EVENT >= g_log_level) THEN
1155       trace
1156          (p_msg      => 'Calling transfer routine XLA_TRANSFER_PKG.GL_TRANSFER_MAIN'
1157          ,p_level    => C_LEVEL_EVENT
1158          ,p_module   => l_log_module);
1159    END IF;
1160 
1161    xla_transfer_pkg.gl_transfer_main
1162          (p_application_id        => g_application_id
1163          ,p_transfer_mode         => 'COMBINED'
1164          ,p_ledger_id             => g_ledger_id
1165          ,p_securiy_id_int_1      => NULL
1166          ,p_securiy_id_int_2      => NULL
1167          ,p_securiy_id_int_3      => NULL
1168          ,p_securiy_id_char_1     => NULL
1169          ,p_securiy_id_char_2     => NULL
1170          ,p_securiy_id_char_3     => NULL
1171          ,p_valuation_method      => NULL
1172          ,p_process_category      => g_process_category_code
1173          ,p_accounting_batch_id   => g_accounting_batch_id
1174          ,p_entity_id             => NULL
1175          ,p_batch_name            => g_gl_batch_name
1176          ,p_end_date              => g_end_date
1177          ,p_submit_gl_post        => g_post_in_gl_flag
1178          ,p_caller                => xla_transfer_pkg.C_MPA_COMPLETE); -- Bug 5056632
1179 
1180    IF (C_LEVEL_EVENT >= g_log_level) THEN
1181       trace
1182          (p_msg      => 'Transfer routine XLA_TRANSFER_PKG.GL_TRANSFER_MAIN executed'
1183          ,p_level    => C_LEVEL_EVENT
1184          ,p_module   => l_log_module);
1185    END IF;
1186 
1187    xla_accounting_err_pkg.set_options
1188        (p_error_source     => xla_accounting_err_pkg.C_ACCT_PROGRAM);
1189 
1190    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1191       trace
1192          (p_msg      => 'END of procedure TRANSFER_TO_GL '
1193          ,p_level    => C_LEVEL_PROCEDURE
1194          ,p_module   => l_log_module);
1195    END IF;
1196 
1197 EXCEPTION
1198    WHEN xla_exceptions_pkg.application_exception THEN
1199       RAISE;
1200    WHEN OTHERS THEN
1201       xla_accounting_err_pkg.build_message
1202          (p_appli_s_name   => 'XLA'
1203          ,p_msg_name       => 'XLA_AP_TECHNICAL_ERROR'
1204          ,p_token_1        => 'XLA_MULTIPERIOD_ACCOUNTING_PKG.Transfer_To_GL'
1205          ,p_value_1        => 'SLA'
1206          ,p_entity_id      => NULL
1207          ,p_event_id       => NULL);
1208 
1209       xla_exceptions_pkg.raise_message
1210          (p_location       => 'xla_multiperiod_accounting_pkg.Transfer_To_GL');
1211 END Transfer_To_GL;
1212 
1213 
1214 --=============================================================================
1215 --
1216 -- Following code is executed when the package body is referenced for the first
1217 -- time
1218 --
1219 --=============================================================================
1220 
1221 BEGIN
1222    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1223    g_log_enabled    := fnd_log.test
1224                           (log_level  => g_log_level
1225                           ,module     => C_DEFAULT_MODULE);
1226 
1227    IF NOT g_log_enabled  THEN
1228       g_log_level := C_LEVEL_LOG_DISABLED;
1229    END IF;
1230 
1231 END xla_multiperiod_accounting_pkg; -- end of package body