Symptom
- How is a report generated?
-
What is the order in which a report is processed in Crystal Reports?
-
What is the multi-pass reporting flow used in Crystal Reports?
Environment
- SAP Crystal Reports 2013
- SAP Crystal Reports 2016
- SAP Crystal Reports 2020
- SAP Crystal Reports for Enterprise 4.1
- SAP Crystal Reports for Enterprise 4.2
- SAP Crystal Reports for Enterprise 4.3
Resolution
-
When a report is refreshed, Crystal Reports uses multi-pass to generate the report.
- What is a pass?
A pass is a process that Crystal Reports uses each time the data is read or manipulated. Depending on the complexity of the report Crystal Reports may make 1, 2, or 3 passes over the data. This feature allows for complex reporting and formula manipulation.
- Below is the flow-chart of the pass used by Crystal Reports, with a brief explanation of what happen in each pass.
- Pre-pass #1
When previewing a report, the first elements to be evaluated are "constant" formulas. Constant formulas are those that have a constant value for the entire report. They do not change from record to record.
For example, 100* 30 would be a constant formula. Constant formulas are evaluated at the beginning of the print generation process and are never evaluated again. This process is known as "BeforeReadingRecords." If you were to place a constant formula field (i.e., 100*30) in the Details section, the result would be 3000 for each record displayed.
- Pass #1
After the "BeforeReadingRecords" process has taken place, Crystal Reports begins reading the database records. During the record reading process, the following will occur:
-
Record retrieval. Where possible record selection and sorting are pushed down to the database in this step.
-
Evaluation of recurring formulas. These formulas are those that contain database fields but do not contain references to subtotals or summary information. This evaluation time is known as "WhileReadingRecords." Formulas that contain references to subtotals or summary information are processed in the second pass.
-
Application of the record selection locally. If the record selection is too complex to be pushed down to the database, it is applied by Crystal Reports in this step.
-
Application of the saved data record selection formulas. When records return to the report, they are further filtered through any existing saved data formulas.
-
Sorting, grouping, and totaling. In this step, Crystal Reports sorts the records, separates them into groups, and then calculates the subtotals and summaries needed for each group.
-
Cross-Tab, chart, and map generation. Only Cross-Tabs, charts, and maps that are based entirely on database fields and recurring formulas are generated in Pass 1. If these objects include running totals and/or PrintTime formulas, they are generated in Pass 2.
-
Storage of saved data. After the totaling process is complete, all of the records and totals are stored in memory and to temporary files. Crystal Reports does not read the database again, but instead uses this saved data during all subsequent processing.
-
- Pre-pass #2
During Pre-Pass 2, Crystal Reports orders the groups in the report for Top/Bottom N or Hierarchical Grouping. The records are not read in this process, instead Crystal Reports only looks at group instances from Pass 1, and takes the Top N as appropriate, or orders the groups based on the Hierarchical Grouping settings specified.
- Pass #2
Crystal Reports enters the second pass through the data to format pages. The pages are formatted on demand. This means that Crystal Reports will not format a page until it is requested by the user, or until it is required for the total page count in Pass 3.
During page formatting, Crystal Reports does the following:
-
Group selection formulas.
-
Running totals.
-
Calculation of formulas marked "WhilePrintingRecords."
These are formulas that contain references to subtotals or summary information, also known as "PrintTime" formulas. This evaluation time is known as "WhilePrintingRecords."
-
Cross-Tabs, charts, and maps.
Cross-Tabs, charts, and maps that include running totals and/or PrintTime formulas, and charts that are based on Cross-Tabs are generated in Pass 2.
-
OLAP grids.
-
Subreports.
-
Generation of Pages on Demand.
-
- Pass #3
This pass is only used when the total page number is used on the report. This means, the whole report needs to be generated, in order to be able to display the total page number on the report.
Keywords
CR, Flow-Chart, Evaluation Time Formula , KBA , BI-RA-CR , Crystal Reports designer or Business View Manager , How To