Wednesday 23 November 2011

Journal import in oracle Apps R12

We have standard interface for journal import. we can use web ADI to load journals from front end itself.
We can use our custom package as well, in order to import journals for PTD or YTD.
Below is a sample script to import journals from backend.

-->


CREATE OR REPLACE  PROCEDURE load_glbalances
   IS
      CURSOR gl_balance_cur
      IS
         SELECT journal_batch_name, journal_batch_description, journal_name,
                period, effective_date, CATEGORY, SOURCE, reference_date,
                journal_description, REFERENCE, currency_code,
                conversion_rate_date, conversion_type, conversion_rate,
                ledger_name, of_balseg, of_dept_code, of_lob_code,
                of_product, of_natural_ac, of_intercoseg, of_channel_code,
                of_futureseg1, of_futureseg2, lopbaldb, lopbalcr, opbaldb,
                opbalcr, journal_line_description
           FROM xxran_gl_bal_stg where  status is null;

      l_set_of_books_id         gl_sets_of_books.set_of_books_id%TYPE;
      l_user_je_source_name     gl_je_sources.user_je_source_name%TYPE;
      l_user_je_category_name   gl_je_categories.user_je_category_name%TYPE;
      l_user_id                 NUMBER;
      l_currency_code           fnd_currencies.currency_code%TYPE;
      l_conversion_date         DATE;
      l_conversion_type         gl_interface.user_currency_conversion_type%TYPE;
      l_conversion_rate         gl_interface.currency_conversion_rate%TYPE;
      l_period_name             VARCHAR2 (20);
      l_accounted_dr            gl_interface.accounted_dr%TYPE;
      l_accounted_cr            gl_interface.accounted_cr%TYPE;
      l_entered_dr              gl_interface.entered_dr%TYPE;
      l_entered_cr              gl_interface.entered_cr%TYPE;
      l_segment1                gl_interface.segment1%TYPE;
      l_segment2                gl_interface.segment2%TYPE;
      l_segment3                gl_interface.segment3%TYPE;
      l_segment4                gl_interface.segment4%TYPE;
      l_segment5                gl_interface.segment5%TYPE;
      l_segment6                gl_interface.segment6%TYPE;
      l_segment7                gl_interface.segment7%TYPE;
      l_segment8                gl_interface.segment8%TYPE;
      l_segment9                gl_interface.segment9%TYPE;
      l_actual_flag             gl_interface.actual_flag%TYPE;
      accounting_dt             DATE;
      lc_error_loc              VARCHAR2 (50);
      lc_error_msg              VARCHAR2 (500);
      lc_program_name           VARCHAR2 (150);
      lc_error_flag             VARCHAR2 (1);
      lc_code_comb              VARCHAR2(100);
      ln_receivable_code_comb_id NUMBER;
      --lc_error_msg              VARCHAR2 (240);
      lb_valid_source           BOOLEAN;
      lb_valid_category         BOOLEAN;
      lb_valid_currency         BOOLEAN;
      lb_valid_period           BOOLEAN;
      lb_code_comb              BOOLEAN;
      lc_dummy_var              VARCHAR2(5);
   BEGIN

      lc_program_name := 'GL opening balance upload';

      FOR lr_journal_rec IN gl_balance_cur
      LOOP
        
         lc_error_flag := 'N';
         l_user_je_source_name := lr_journal_rec.SOURCE;
         l_user_je_category_name := lr_journal_rec.CATEGORY;
         l_set_of_books_id := /*get set of books ID  */;
         l_period_name := lr_journal_rec.period;
         l_accounted_dr := lr_journal_rec.lopbaldb;
         l_accounted_cr := lr_journal_rec.lopbalcr;
         l_entered_dr := lr_journal_rec.opbaldb;
         l_entered_cr := lr_journal_rec.opbalcr;
         l_segment1 := lr_journal_rec.of_balseg;
         l_segment2 := lr_journal_rec.of_dept_code;
         l_segment3 := lr_journal_rec.of_lob_code;
         l_segment4 := lr_journal_rec.of_product;
         l_segment5 := lr_journal_rec.of_natural_ac;
         l_segment6 := lr_journal_rec.of_intercoseg;
         l_segment7 := lr_journal_rec.of_channel_code;
         l_segment8 := lr_journal_rec.of_futureseg1;
         l_segment9 := lr_journal_rec.of_futureseg2;
         l_actual_flag := 'A';
         l_currency_code := lr_journal_rec.currency_code;
         l_conversion_type := lr_journal_rec.conversion_type;
         l_conversion_rate := lr_journal_rec.conversion_rate;
         /*-- Check for Valid Source
         SELECT 'X'
           INTO lc_dummy_var
           FROM gl_je_sources gjs
          WHERE gjs.user_je_source_name = p_source;
         */
         /*-- Check for Valid Category
         SELECT 'X'
           INTO lc_dummy_var
           FROM gl_je_categories gjc
          WHERE gjc.user_je_category_name = p_category;
         */

         /*-- Check for Valid Currency
         fnd_currencies
         */

         /*-- Check for Valid Period
         SELECT 'X'
           INTO lc_dummy_var
           FROM gl_period_statuses gps
          WHERE gps.period_name = p_period
            AND gps.application_id = p_appl_id
            AND gps.set_of_books_id = p_sob_id
            AND gps.closing_status NOT IN ('C', 'N');
            */
         lc_code_comb := l_segment1 ||'.'|| l_segment2 ||'.'|| '000' ||'.'|| '0000' ||'.'||  l_segment5 ||'.'||
                            l_segment6 ||'.'|| '00000' ||'.'|| '0000' ||'.'||  '0000';
         lb_code_comb :=
               check_code_combination (lc_code_comb,
                                       lc_error_loc,
                                       lc_error_msg,
                                       ln_receivable_code_comb_id
                                      );
         IF NOT lb_code_comb
         THEN
            lc_error_flag := 'Y';
            lc_error_msg := ('error during code combination  validation.'||lc_error_msg);
         END IF;

         IF lc_error_flag = 'N'
         THEN
            BEGIN
               INSERT INTO gl_interface
                           (status, set_of_books_id,
                            accounting_date, currency_code,
                            USER_CURRENCY_CONVERSION_TYPE,
                            CURRENCY_CONVERSION_RATE,CURRENCY_CONVERSION_DATE,
                            date_created, created_by, actual_flag,
                            user_je_source_name, user_je_category_name,
                            period_name, entered_dr, entered_cr,
                            accounted_dr, accounted_cr, /*segment1,
                            segment2, segment3, segment4, segment5,
                            segment6, segment7,l_segment8, l_segment9*/
                            CODE_COMBINATION_ID
                           )
                    VALUES ('NEW', l_set_of_books_id,
                            NVL (accounting_dt, SYSDATE), l_currency_code,
                            l_conversion_type,l_conversion_rate,NVL (accounting_dt, SYSDATE),
                            SYSDATE, l_user_id, l_actual_flag,
                            l_user_je_source_name, l_user_je_category_name,
                            l_period_name, l_entered_dr, l_entered_cr,
                            l_accounted_dr, l_accounted_cr, /*l_segment1,
                            l_segment2, l_segment3, l_segment4, l_segment5,
                            l_segment6, l_segment7,l_segment8, l_segment9*/
                            ln_receivable_code_comb_id
                           );
            EXCEPTION
               WHEN OTHERS
               THEN
                  lc_error_flag := 'Y';
                  lc_error_msg := ('error during source validation.');
            END;
         END IF;

         DBMS_OUTPUT.put_line ('Success');
      END LOOP;
   END;
/

-- Call Journal import standard concurrent program to import data from interface table to GL base tables

No comments:

Post a Comment