DBA Data[Home] [Help]

PACKAGE BODY: APPS.JA_CN_FSG_FORMULA_EXTRACT_PKG

Source


1 PACKAGE BODY JA_CN_FSG_FORMULA_EXTRACT_PKG AS
2 --$Header: JACNDFEB.pls 120.1 2011/01/28 11:38:11 choli noship $
3 --+=======================================================================+
4 --|               Copyright (c) 2006 Oracle Corporation
5 --|                       Redwood Shores, CA, USA
6 --|                         All rights reserved.
7 --+=======================================================================
8 --| FILENAME
9 --|     JACNDFEB.pls
10 --|
11 --| DESCRIPTION
12 --|
13 --|     This package contains the following PL/SQL tables/procedures/functions
14 --|     to extract formula for each row in the four FSG reports.
15 --|
16 --| TYPE LIEST
17 --|   G_PERIOD_NAME_TBL
18 --|
19 --| PROCEDURE LIST
20 --|   Extract_Row_Formula
21 --|
22 --| HISTORY
23 --|   19-JAN-2010     Wei Huang Created
24 --|   04-Feb-2010     Wei Huang Updated, add procedure Populate_formula
25 --|   28-JAN-2011     Jianchao Chi Update fix bug 11675682
26 --|
27 --+======================================================================*/
28 
29 
30 --==========================================================================
31 --  PROCEDURE NAME:
32 --
33 --    Extract_Row_Formula               Public
34 --
35 --  DESCRIPTION:
36 --
37 --      This funciton is to extract formula for each row in the four FSG
38 --      reports.
39 --
40 --  PARAMETERS:
41 --      In:  pn_report_id         Report ID
42 --           pn_ledger_id         Ledger ID
43 --           pn_axis_seq          Row Sequence
44 --
45 --     Out:
46 --
47 --  DESIGN REFERENCES:
48 --
49 --
50 --  CHANGE HISTORY:
51 --     19-JAN-2010     Wei Huang Created
52 --     28-JAN-2011     Jianchao Chi Updated fix bug 11675682
53 --
54 --==========================================================================
55 FUNCTION Extract_Row_Formula
56 (pn_coa             IN NUMBER
57 ,pn_axis_set_id     IN NUMBER
58 ,pn_axis_seq        IN NUMBER
59 ) RETURN VARCHAR2
60 IS
61 ln_coa                      Number              :=pn_coa;
62 ln_axis_set_id              rg_report_axis_sets.axis_set_id%TYPE     :=pn_axis_set_id;
63 
64 ln_axis_seq                 rg_report_axes.axis_seq%TYPE  :=pn_axis_seq;
65 lv_type                     VARCHAR2(1);
66 lv_change_sign_flag         VARCHAR2(1);
67 ln_row_count                NUMBER;
68 lv_rowcnt                   VARCHAR2(50);
69 lv_lincnt                   VARCHAR2(50);
70 lv_colcnt                   VARCHAR2(50) :='c1001';
71 
72 lv_operator                 VARCHAR2(10);
73 lv_operands                 VARCHAR2(4000);
74 lv_formula                  VARCHAR2(4000);
75 
76 --The following variables are added by Jianchao Chi on 28-Jan-2011 to fix bug 11675682
77 lv_seq_tag                  VARCHAR2(10) :='N';
78 ln_axis_seq_update          rg_report_axes.axis_seq%TYPE;
79 
80 --Added by Jianchao Chi on 28-Jan-2011 to fix bug 11675682
81 CURSOR c_axis_seq
82 IS
83 SELECT
84   axis_seq
85 FROM
86   ja_cn_cfs_row_cgs_gt
87 WHERE axis_set_id=ln_axis_set_id
88   AND display_flag='Y'
89 ORDER BY axis_seq
90 FOR UPDATE;
91 
92 CURSOR c_axis_row
93 IS
94 SELECT
95       type
96      ,change_sign_flag
97      ,rowcnt
98      ,lincnt
99 FROM
100   ja_cn_cfs_row_cgs_gt
101 WHERE axis_set_id=ln_axis_set_id
102   AND axis_seq = ln_axis_seq
103   AND display_flag='Y';
104 
105 CURSOR c_calculation_lines
106 IS
107 SELECT
108   jcccg.operator
109  ,jccrcg.lincnt
110  ,jccrcg.change_sign_flag
111 FROM
112   ja_cn_cfs_calculations_gt jcccg
113  ,ja_cn_cfs_row_cgs_gt jccrcg
114 WHERE jcccg.axis_set_id=ln_axis_set_id
115   AND jcccg.axis_seq=ln_axis_seq
116   AND jcccg.axis_set_id=jccrcg.axis_set_id
117   AND jcccg.cal_axis_seq=jccrcg.axis_seq
118 ORDER BY jcccg.calculation_seq;
119 
120 ln_dbg_level           NUMBER            :=FND_LOG.G_CURRENT_RUNTIME_LEVEL;
121 ln_proc_level          NUMBER            :=FND_LOG.LEVEL_PROCEDURE;
122 lv_proc_name           VARCHAR2(100)     :='Extract_Row_Formula';
123 
124 BEGIN
125 
126 --log
127   IF (ln_proc_level >= ln_dbg_level)
128     THEN
129      FND_LOG.String(ln_proc_level
130                   ,GV_MODULE_PREFIX||'.'||lv_proc_name||'.begin'
131                   ,'Enter procedure'
132                   );
133      FND_LOG.String(ln_proc_level
134                   ,GV_MODULE_PREFIX||'.'||lv_proc_name||'.parameters'
135                   ,'pn_coa '||ln_coa
136                   );
137      FND_LOG.String(ln_proc_level
138                   ,GV_MODULE_PREFIX||'.'||lv_proc_name||'.parameters'
139                   ,'pn_axis_set_id '||ln_axis_set_id
140                   );
141      FND_LOG.String(ln_proc_level
142                   ,GV_MODULE_PREFIX||'.'||lv_proc_name||'.parameters'
143                   ,'pn_axis_seq '||ln_axis_seq
144                   );
145      END IF;
146 
147      --Commented by Jianchao Chi for bug 11675682
148      --1.Populate formula data to table ja_cn_cfs_calculations_gt and
149      --ja_cn_cfs_row_cgs_gt according to parameters
150      --Populate_Formula(pn_coa  =>ln_coa
151        --             ,pn_axis_set_id   =>ln_axis_set_id
152          --           ,pn_axis_seq => ln_axis_seq);
153 
154 
155      --Added by Jianchao Chi on 28-Jan-2011 to fix bug 11675682
156       --Call the procedure 'JA_CN_CFS_CALCULATE_PKG.Populate_Fomula' to popluate most detailed
157       --calculation lines for FSG row with calculation.
158       JA_CN_CFS_CALCULATE_PKG.Populate_Formula(p_coa  =>ln_coa
159                                               ,p_axis_set_id      =>ln_axis_set_id
160                                               );
161 
162       --Added by Jianchao Chi on 28-Jan-2011 to fix bug 11675682
163       --Call the procedure 'JA_CN_CFS_CALCULATE_PKG.Categorize_Rows' to categorize FSG row
164       JA_CN_CFS_CALCULATE_PKG.Categorize_Rows(p_coa  =>ln_coa
165                                               ,p_axis_set_id      =>ln_axis_set_id
166                                               );
167                                               --commit;
168     --To populate row count and line count for each row in the rowset <l_axis_set_id>
169   ln_row_count:=0;
170   lv_seq_tag :='N';--Added by Jianchao Chi on 28-Jan-2011 to fix bug 11675682
171   OPEN c_axis_seq;
172   FETCH c_axis_seq INTO ln_axis_seq_update;
173 
174   WHILE c_axis_seq%FOUND--Added by Jianchao Chi on 28-Jan-2011 to fix bug 11675682
175   LOOP
176     --To number the row
177     ln_row_count:=ln_row_count+1;
178 
179     IF ln_row_count = ln_axis_seq/10 AND lv_seq_tag = 'N' THEN
180       ln_axis_seq := ln_axis_seq_update;
181       lv_seq_tag :='Y';
182       END IF;
183     --To populate rowcount and linecount for output xml like FSG
184     lv_rowcnt:='r1'||lpad(to_char(ln_row_count),5,'0');
185     lv_lincnt:='l1'||lpad(to_char(ln_row_count),5,'0');
186 
187    --Update current row with row count and line count
188     UPDATE
189       ja_cn_cfs_row_cgs_gt
190     SET
191       rowcnt=lv_rowcnt
192      ,lincnt=lv_lincnt
193     WHERE CURRENT OF c_axis_seq;
194 
195     FETCH c_axis_seq INTO ln_axis_seq_update;
196   END LOOP; --c_axis_seq%FOUND
197 
198   CLOSE c_axis_seq;
199 
200     SELECT COUNT(*)
201     INTO ln_row_count
202     FROM
203       ja_cn_cfs_row_cgs_gt
204     WHERE axis_set_id=ln_axis_set_id
205       AND axis_seq = ln_axis_seq
206       AND display_flag='Y'
207       AND calculation_flag='Y';
208 
209    IF ln_row_count > 0  THEN
210 
211     OPEN c_axis_row;
212     FETCH c_axis_row INTO lv_type,lv_change_sign_flag,lv_rowcnt,lv_lincnt;
213     CLOSE c_axis_row;
214 
215 
216      IF lv_type = 'E' -- lv_type = 'E' means that the formula of the row is wrong
217      THEN
218        lv_formula := '';
219      ELSE
220        lv_operands:='';
221        lv_formula:='';
222 
223 
224        --Retrieve calculation lines for current row
225        FOR l_calculation_lines IN c_calculation_lines
226        LOOP
227          --operator should be generated according to 'Change Sign Flag'
228          IF l_calculation_lines.change_sign_flag='Y'
229          THEN
230            SELECT
231              decode(l_calculation_lines.operator,'+','-','-','+','+')
232            INTO
233              lv_operator
234            FROM dual;
235          ELSE
236            lv_operator:=l_calculation_lines.operator;
237          END IF;
238 
239          --lv_operands IS NULL
240          IF lv_operands IS NULL
241          THEN
242            lv_operands:=lv_operator||l_calculation_lines.lincnt||':'||lv_colcnt;
243          ELSE
244            lv_operands:=lv_operands||lv_operator||l_calculation_lines.lincnt||':'||lv_colcnt;
245          END IF;
246        END LOOP;
247 
248        --Populate final formula
249        lv_formula:=lv_lincnt||':'||lv_colcnt||'='||lv_operands;
250 
251    END IF;
252 
253   END IF;
254 
255   -- Return the formula
256   RETURN lv_formula;
257 
258   --log for debug
259   IF ( ln_proc_level >= ln_dbg_level)
260   THEN
261     FND_LOG.STRING(ln_proc_level
262                   ,GV_MODULE_PREFIX||'.'||lv_proc_name||'.end'
263                   ,'Exit procedure'
264                   );
265   END IF;
266 
267 EXCEPTION
268 WHEN OTHERS THEN
269   IF (ln_proc_level >= ln_dbg_level)
270   THEN
271     FND_LOG.String(ln_proc_level
272                   ,GV_MODULE_PREFIX||'.'||lv_proc_name||'. Other_Exception '
273                   ,SQLCODE||':'||SQLERRM
274                   );
275   END IF;
276 
277 END Extract_Row_Formula;
278 
279 
280 --==========================================================================
281 --  PROCEDURE NAME:
282 --
283 --     Populate_Formula               Public
284 --
285 --  DESCRIPTION:
286 --
287 --      The procedure 'Populate_Formula' is used to populate the calculation
288 --      lines for a specified row.
289 --
290 --  PARAMETERS:
291 --      In:  pn_report_id         Report ID
292 --           pn_ledger_id         Ledger ID
293 --           pn_axis_seq          Row Sequence
294 --
295 --     Out:
296 --
297 --  DESIGN REFERENCES:
298 --
299 --
300 --  CHANGE HISTORY:
301 --     04-Feb-2010     Wei Huang Created
302 --
303 --==========================================================================
304 PROCEDURE Populate_Formula
305 (pn_coa              IN NUMBER
306 ,pn_axis_set_id      IN NUMBER
307 ,pn_axis_seq         IN NUMBER
308 )
309 IS
310 ln_coa                   NUMBER := pn_coa;
311 ln_axis_set_id           rg_report_axis_sets.axis_set_id%TYPE         :=pn_axis_set_id;
312 ln_axis_seq              rg_report_axes.axis_seq%TYPE :=pn_axis_seq;
313 
314 ln_calculation_seq       NUMBER;
315 ln_application_id        rg_report_axes.application_id%TYPE;
316 ln_axis_seq_low          rg_report_calculations.axis_seq_low%TYPE;
317 ln_axis_seq_high         rg_report_calculations.axis_seq_high%TYPE;
318 lv_axis_name_low         rg_report_calculations.axis_name_low%TYPE;
319 lv_operator              rg_report_calculations.operator%TYPE;
320 ln_operator_flag         NUMBER;
321 lv_exit_flag             VARCHAR2(1);
322 ln_cal_axis_seq          rg_report_axes.axis_seq%TYPE;
323 ln_constant              rg_report_calculations.constant%TYPE;
324 lv_type                  VARCHAR2(1);
325 lv_display_flag          VARCHAR2(1);
326 lv_display_zero_flag     VARCHAR2(1);
327 lv_change_sign_flag      VARCHAR2(1);
328 ln_row_count             NUMBER;
329 
330 
331 CURSOR c_report_axis
332 IS
333 SELECT
334   DISTINCT
335   rra.application_id
336  ,rra.display_flag
337  ,rra.display_zero_amount_flag
338  ,rra.change_sign_flag
339 FROM
340   rg_report_axes rra
341  ,rg_report_calculations rrc
342 WHERE rra.axis_set_id=ln_axis_set_id
343   AND rra.axis_set_id=rrc.axis_set_id
344   AND rra.axis_seq=rrc.axis_seq
345   AND rra.axis_seq=ln_axis_seq;
346 
347 CURSOR c_report_calculations
348 IS
349 SELECT
350   operator
351  ,axis_seq_low
352  ,axis_seq_high
353  ,axis_name_low
354  ,constant
355 FROM
356   rg_report_calculations
357 WHERE application_id=ln_application_id
358   AND axis_set_id=ln_axis_set_id
359   AND axis_seq=ln_axis_seq
360 ORDER BY calculation_seq;
361 
362 CURSOR c_axis_seqs_per_line
363 IS
364 SELECT
365   rra.axis_seq
366 FROM
367   rg_report_axes rra
368 WHERE rra.axis_set_id=ln_axis_set_id
369   AND rra.axis_seq BETWEEN ln_axis_seq_low AND ln_axis_seq_high
370   AND (EXISTS (SELECT
371                  rrac.axis_seq
372               FROM
373                 rg_report_axis_contents rrac
374               WHERE rrac.application_id=rra.application_id
375                 AND rrac.axis_set_id=rra.axis_set_id
376                 AND rrac.axis_seq=rra.axis_seq
377              )
378      OR
379         EXISTS (SELECT
380                   jccaa.axis_seq
381                FROM
382                  ja_cn_cfs_assignments_all jccaa
383                WHERE jccaa.chart_of_accounts_id=ln_coa
384                  AND rra.axis_set_id=jccaa.axis_set_id
385                  AND jccaa.axis_seq=rra.axis_seq
386               )
387       OR
388         EXISTS (SELECT
389                   rrc.axis_seq
390 FROM
391                  rg_report_calculations rrc
392                WHERE rrc.application_id=rra.application_id
393                  AND rra.axis_set_id=rrc.axis_set_id
394                  AND rrc.axis_seq=rra.axis_seq
395               )
396         );
397 
398 CURSOR c_axis_seq
399 IS
400 SELECT
401   axis_seq
402 FROM
403   rg_report_axes
404 WHERE application_id=ln_application_id
405   AND axis_set_id=ln_axis_set_id
406   AND axis_name=lv_axis_name_low;
407 
408 
409 ln_dbg_level           NUMBER            :=FND_LOG.G_Current_Runtime_Level;
410 ln_proc_level          NUMBER            :=FND_LOG.Level_Procedure;
411 lv_proc_name           VARCHAR2(100)     :='Populate_Formula';
412 
413 
414 BEGIN
415 
416   --log for debug
417   IF (ln_proc_level >= ln_dbg_level)
418     THEN
419      FND_LOG.String(ln_proc_level
420                   ,GV_MODULE_PREFIX||'.'||lv_proc_name||'.begin'
421                   ,'Enter procedure'
422                   );
423      FND_LOG.String(ln_proc_level
424                   ,GV_MODULE_PREFIX||'.'||lv_proc_name||'.parameters'
425                   ,'pn_coa '||ln_coa
426                   );
427      FND_LOG.String(ln_proc_level
428                   ,GV_MODULE_PREFIX||'.'||lv_proc_name||'.parameters'
429                   ,'pn_axis_set_id '||ln_axis_set_id
430                   );
431      FND_LOG.String(ln_proc_level
432                   ,GV_MODULE_PREFIX||'.'||lv_proc_name||'.parameters'
433                   ,'pn_axis_seq '||ln_axis_seq
434                   );
435      END IF;
436 
437   --Retrive initial canculation lines from RG_REPORT_CALCULATIONS table for
438   --specify item(row) in FSG Row Set that have calculation definition.
439   --If a calculation line contain sequence number range that perform calculation,
440   --then split this calculation line to multiple calculation lines and each line only
441   --have one sequence number that perform calcluation, instead of a range.
442 
443   --Retrive all rows that have calculation definition for current FSG Row Set
444   OPEN c_report_axis;
445   --hw FETCH c_report_axis INTO ln_application_id,ln_axis_seq,lv_display_flag,lv_display_zero_flag,lv_change_sign_flag;
446   FETCH c_report_axis INTO ln_application_id,lv_display_flag,lv_display_zero_flag,lv_change_sign_flag;
447   WHILE c_report_axis%FOUND
448   LOOP
449     ln_calculation_seq:=1;
450     lv_exit_flag:='N';
451 
452     --Retrive calculation lines for current row
453     OPEN c_report_calculations;
454     FETCH c_report_calculations INTO lv_operator,ln_axis_seq_low,ln_axis_seq_high,lv_axis_name_low,ln_constant;
455     WHILE c_report_calculations%FOUND
456     LOOP
457 
458       --Calculation for Cash flow statment only supports '+'/'-'/Enter as operator, if operator is '*'/'/'
459       --or any other operaters, then program would not perform calcuation for current FSG row and will show
460       --an error message in correspondng item of Cash Flow Statement that is ultimately generated
461       --by xml publisher
462 
463       --If lv_operator is not '+'/'-'/'Enter', then doesn't continue checking curent cash flow item
464       --and marked calculation for this item as error
465       IF lv_operator NOT IN ('+','-','ENTER')
466       THEN
467            lv_exit_flag:='Y';
468            EXIT;
469       ELSE
470 
471         --If current calculation line is defined by sequence number range,then
472         --Convert the range to multiple single sequence number, so the calculation line
473         --would be split to multiple calculation line and inserted into temporary table
474         --'JA_CN_CFS_CALCULATION_GBLTEMP
475 
476         --Operator 'Enter' has the same function as'+'
477          IF lv_operator='ENTER'
478          THEN
479            lv_operator:='+';
480          END IF;  --lv_operator='ENTER'
481 
482          --To set operator flag
483          IF lv_operator='+'
484          THEN
485            ln_operator_flag:=1;
486          ELSIF lv_operator='-'
487          THEN
488            ln_operator_flag:=-1;
489          END IF;--lv_operator='+'
490 
491 
492          IF  (ln_axis_seq_low IS NOT NULL) AND
493              (ln_axis_seq_high IS NOT NULL)
494          THEN
495 
496            --Split current line to multiple lines by sequence number range,
497            --each line only contain one sequence number
498 
499            OPEN c_axis_seqs_per_line;
500            FETCH c_axis_seqs_per_line INTO ln_cal_axis_seq;
501            WHILE c_axis_seqs_per_line%FOUND
502            LOOP
503 
504 
505              INSERT
506              INTO
507                ja_cn_cfs_calculations_gt
508                (application_id,axis_set_id
509                ,axis_seq
510                ,calculation_seq
511                ,operator
512                ,operator_flag
513                ,cal_axis_seq
514                ,constant
515                )
516              VALUES
517                (ln_application_id
518                ,ln_axis_set_id
519                ,ln_axis_seq
520                ,ln_calculation_seq
521                ,lv_operator
522                ,ln_operator_flag
523                ,ln_cal_axis_seq
524                ,''
525                );
526 
527               ln_calculation_seq:=ln_calculation_seq+1;
528               FETCH c_axis_seqs_per_line INTO ln_cal_axis_seq;
529            END LOOP;
530 
531            CLOSE c_axis_seqs_per_line;
532 
533           --If current calculation line only contains one row name as operand,
534           --then retrieve sequence number by row name and insert it into temporary table
535           --'JA_CN_CFS_CALCULATION_GBLTEMP'
536          ELSIF lv_axis_name_low IS NOT NULL
537          THEN
538            OPEN c_axis_seq;
539            FETCH c_axis_seq INTO ln_cal_axis_seq;
540            CLOSE c_axis_seq;
541 
542            INSERT
543            INTO
544              ja_cn_cfs_calculations_gt
545                (application_id,axis_set_id
546                ,axis_seq
547                ,calculation_seq
548                ,operator
549                ,operator_flag
550                ,cal_axis_seq
551                ,constant
552                )
553            VALUES
554              (ln_application_id
555              ,ln_axis_set_id
556              ,ln_axis_seq
557              ,ln_calculation_seq
558              ,lv_operator
559              ,ln_operator_flag
560              ,ln_cal_axis_seq
561              ,''
562              );
563 
564            ln_calculation_seq:=ln_calculation_seq+1;
565 
566            --If current calculation line only constains a constant,then directly insert this
567            --line into temporary table 'JA_CN_CFS_CALCULATION_GBLTEMP'
568          ELSIF ln_constant IS NOT NULL THEN
569 
570 
571            INSERT
572            INTO
573              ja_cn_cfs_calculations_gt
574               (application_id,axis_set_id
575               ,axis_seq
576               ,calculation_seq
577               ,operator
578               ,operator_flag
579               ,cal_axis_seq
580               ,constant
581                )
582            VALUES
583              (ln_application_id
584              ,ln_axis_set_id
585              ,ln_axis_seq
586              ,ln_calculation_seq
587              ,lv_operator
588              ,ln_operator_flag
589              ,''
590              ,ln_constant
591              );
592 
593            ln_calculation_seq:=ln_calculation_seq+1;
594          END IF; --(ln_axis_seq_low IS NOT NULL)
595       END IF;  --lv_operator<>'+' or lv_operator<>'-' or lv_operator <> 'ENTER'
596       FETCH c_report_calculations INTO lv_operator,ln_axis_seq_low,ln_axis_seq_high,lv_axis_name_low,ln_constant;
597     END LOOP;  --WHILE c_report_calculation%FOUND
598 
599     CLOSE c_report_calculations;
600 
601    --Insert current item(Row) into the tempoary table 'ja_cn_cfs_row_cgs_gt'
602    --and set value of the column 'CALCULATION_FLAG' as 'Y'. If current item(Row) has calcuation lines with
603    --wrong operator, then set value of the column 'TYPE' as 'E'
604 
605     IF lv_exit_flag='Y'
606     THEN
607       lv_type:='E';
608     ELSE
609       lv_type:='';
610     END IF;  --lv_exit_flag='Y'
611 
612     INSERT
613       INTO
614         ja_cn_cfs_row_cgs_gt
615         (application_id
616         ,axis_set_id
617         ,axis_seq
618         ,type
619         ,calculation_flag
620         ,display_flag
621         ,display_zero_amount_flag
622         ,change_sign_flag
623         )
624     VALUES
625      (ln_application_id
626      ,ln_axis_set_id
627      ,ln_axis_seq
628      ,lv_type
629      ,'Y'
630      ,lv_display_flag
631      ,lv_display_zero_flag
632      ,lv_change_sign_flag
633      );
634 
635     --Get the sequence of current row in it's row set
636     SELECT COUNT(DISTINCT rra.axis_seq)
637     INTO ln_row_count
638     FROM
639       rg_report_axes rra
640      ,rg_report_calculations rrc
641     WHERE rra.axis_set_id=ln_axis_set_id
642       AND rra.axis_set_id=rrc.axis_set_id
643       AND rra.axis_seq=rrc.axis_seq
644       AND rrc.axis_seq<=ln_axis_seq;
645 
646      --Update current row with row count and line count
647      UPDATE
648         ja_cn_cfs_row_cgs_gt
649       SET
650         rowcnt='r1'||lpad(to_char(ln_row_count),5,'0')
651        ,lincnt='l1'||lpad(to_char(ln_row_count),5,'0')
652       WHERE
653             application_id=ln_application_id
654         AND axis_set_id=ln_axis_set_id
655         AND axis_seq=ln_axis_seq;
656 
657 
658     FETCH c_report_axis INTO ln_application_id,lv_display_flag,lv_display_zero_flag,lv_change_sign_flag;
659   END LOOP;  --c_report_axis%FOUND
660 
661   CLOSE c_report_axis;
662 
663   --log for debug
664   IF ( ln_proc_level >= ln_dbg_level)
665   THEN
666     FND_LOG.STRING(ln_proc_level
667                   ,GV_MODULE_PREFIX||'.'||lv_proc_name||'.end'
668                   ,'Exit procedure'
669                   );
670   END IF;
671 
672 EXCEPTION
673 WHEN OTHERS THEN
674   IF (ln_proc_level >= ln_dbg_level)
675   THEN
676     FND_LOG.String(ln_proc_level
677                   ,GV_module_prefix||'.'||lv_proc_name||'.Other_Exception '
678                   ,SQLCODE||':'||SQLERRM
679                   );
680   END IF;  --(ln_proc_level >= ln_dbg_level)
681 
682 END Populate_Formula;
683 
684 END JA_CN_FSG_FORMULA_EXTRACT_PKG;
685