Report generation system and method
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     This invention relates to computer-implemented report generation, and, more particularly, to a system and method of generating a secondary report containing detailed information concerning a selected data element in a primary report. 
     2. Description of the Related Art 
     Many computer-implemented software packages are able to generate reports based on stored information and user-specified parameters. Typically, in such packages, the user selects a type of report from a menu or by way of keyboard commands. The system then prompts the user to provide parameters, such as the range of dates desired, account selection criteria, etc. The user typically provides these parameters using an input device such as a keyboard or a mouse. Once the user has provided the parameters, the system accesses a storage device, such as a hard disk, to obtain previously-stored information relating to the user-specified parameters. The system uses this information to generate a report, which it then displays on a video display screen. The user is then given an opportunity to view the report, print it, or generate further reports. 
     An example of such an on-screen report 100 for an accounting application, according to the prior art, is shown in FIG. 1. Here, the user has selected a Cash Flow report for accounts entitled Bank, Cash, and CC, for the range Jan. 1, 1992 through Mar. 31, 1992. The report parameters are indicated by title 101. Column headers 102 provide identifying information for each column of report 100. Underneath column headers 102 is a summary of all transactions for the selected range and accounts. In this particular report, transactions are summarized by transaction category, so that each row of the report contains a row header 103 identifying the transaction category, and a data element 104 giving summarized information for the transaction category. Report 100 may also provide multiple data elements 104 for each row, particularly if a plurality of date ranges are being represented. Report 100 also provides subtotals 105. Since report 100 is too large to fit on the screen, a conventional scroll bar 106 is provided to allow the user to view other parts of report 100. 
     Once a report has been generated and displayed on the screen, a user may wish to see more detailed information concerning a particular data element on the report. For example, in report 100 shown in FIG. 1, the user may wish to see the individual transactions that contributed to data element 107. In conventional report generating systems, the user would have to generate a new report, such as a Transaction report, specifying the single category he is interested in. In the example of FIG. 1, the user would have to request a new Transaction report for Interest Income for the range Jan. 1, 1992 to Mar. 31, 1992 for the accounts Bank, Cash, and CC. This procedure requires entry of several additional report parameters, which can become overly cumbersome, particularly when several such reports are generated in succession. 
     What is needed is a system that permits a user to easily generate a secondary report containing more detailed information concerning a specific data element of an on-screen primary report, without having to provide additional report parameters. 
     SUMMARY OF THE INVENTION 
     In accordance with the present invention, there is provided a system and method of generating a secondary report containing detailed information concerning a specific data element of a primary report. To generate the secondary report, the user first selects a data element on the on-screen primary report using either a mouse or a keyboard. The user then activates a command by either selecting from a menu, typing a command keystroke, or clicking the mouse. 
     Once the user has activated the command, the system generates a secondary report using new parameters determined by the particular data element selected by the user. Typically, the secondary report contains a number of line items, the sum of which yields the user-selected data element of the primary report. The secondary report may appear in a separate window on the screen, either overlapping or adjacent to the primary report, or it may replace the primary report on the screen. The user may be given further options, such as printing the secondary report, obtaining still more detailed information on one of the elements of the secondary report, or closing the secondary report&#39;s window to return to the primary report. 
     The technique of the current invention may be extended to other, non-tabular report formats, such as text-based reports and graphics-based reports. For example, in a graphics-based report, the system may generate a secondary report showing detailed information concerning a selected graphical data element, such as a wedge in a pie chart or a bar in a bar graph. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a diagram of a primary report, according to the prior art. 
     FIG. 2 is a diagram of a secondary report, containing detailed information concerning a selected data element of the primary report. 
     FIG. 3 is a block diagram of apparatus for practicing the present invention. 
     FIG. 4 is a flowchart showing a method of generating and displaying the primary report. 
     FIG. 5 is a flowchart showing a method of generating and displaying the secondary report. 
     FIG. 6 is a flowchart showing a method of escaping the secondary report. 
     FIG. 7 is a block diagram showing the data structures used in generating reports. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     The Figures depict a preferred embodiment of the present invention for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein. 
     Referring now to FIG. 3, there is shown a functional block diagram of apparatus 300 for practicing the present invention. In the preferred embodiment, one or more central processing units (CPU) 301 perform the steps of the method, although any type of processor or multiple processors may be used. CPU 301 typically is a conventional personal computer that reads and executes program instructions that define the steps of the method of the invention. The program instructions are stored in data storage 304 as a software program (not shown). CPU 301 receives user input from input device 302, which may be a keyboard, mouse, electronic pen, or other device. CPU 301 provides output to output device 303, which typically is a video display screen. Data used to generate reports is stored in data storage 304, which is typically a hard disk or other mass storage device. CPU 301 uses random access memory (RAM) 305 to temporarily store program instructions as well as data while generating primary and secondary reports. 
     In the following description of the preferred embodiment, the system is described in terms of report generation for a financial accounting software package with stored information regarding past transactions. However, the system and method of the present invention may be extended to any other type of computer-implemented report generation system. 
     Referring now to FIG. 4, there is shown a flowchart of a method of generating a primary report. Referring now also to FIG. 7, there is shown a block diagram of the data structures used in generating reports. The system prompts the user 402 for report parameters 702 that will be used in generating the primary report. The user then supplies 403 these parameters 702. Report parameters 702 typically include various constraints on the type of data to be included in the report. For example, the user may specify a particular range of dates, account types, transaction categories, and payees. Other types of constraints may also be specified, such as a series of match characters forming a text string, to further limit the items to be included in the report. 
     From the user-supplied parameters 702, the system generates 404 primary report filters 703. The system then scans 405 historical transaction array 701 that contains a previously-stored serial listing of data describing past transactions. Data fields within historical transaction array 701 typically include the transaction date, the payee, the type of action (deposit or withdrawal), the affected account, the categorization of the transaction, the amount of the transaction, and a comment field. As the system scans array 701, it applies primary report filters 703 to extract those transactions that fall within the user-specified parameters. 
     The system creates 406 spreadsheet index array 704 summarizing the filtered items (i.e., those that match the user-specified parameters) from historical transaction array 701. It also creates 407 a spreadsheet row array 705 that lists the delimiting criteria associated with each specific row in spreadsheet index array 704, and a spreadsheet column array 706 that lists the delimiting criteria associated with each specific column in spreadsheet index array 704. 
     The system then displays 408 the primary report comprising data from spreadsheet index array 704 using output device 303, typically a video display screen. FIG. 1 shows an example of a displayed primary report 100, including a title 101 indicating the type of report and user-specified parameters, column headings 102, row headings 103, data elements 104, subtotals 105, and a scroll bar 106 if necessary to permit access to other parts of the report. 
     Referring now also to FIG. 5, there is shown a flowchart of a method of generating a secondary report. Once the system has displayed the primary report on the screen, the user is given an opportunity to select a particular data element in the report. Typically, the user specifies 502 a particular data element 707 by moving an on-screen cursor using a mouse or keyboard cursor control. In FIG. 1, the position of the on-screen cursor is shown by the use of inverse video at the location of selected data element 107. 
     Once the user has specified 502 data element 707, he or she activates 503 secondary report generation, either by clicking the mouse, selecting from a menu, or typing a command. The system sets 504 row pointer register 708 and column pointer register 710 to match the row and column location of specified data element 707. Each of these pointer registers 708 and 710 point to an entry in previously-created spreadsheet pointer arrays 705 and 706: row pointer register 708 points to entry 709 in spreadsheet row array 705, and column pointer register 710 points to entry 711 in spreadsheet column array 706. 
     The system checks 505 to see if the specified row contains data describing either transaction amounts or total amounts. It performs this check by examining the delimiting criteria associated with specified row 709 in spreadsheet row array 705. If the specified row does not contain data (for example, it may contain a subheading or a blank line), the system displays 506 a message informing the user that it is unable to generate a secondary report based on selected data element 707, and stops 507. 
     If the specified row does contain data, the system checks 506 to see if the specified column contains data describing either transaction amounts or total amounts. It performs this check by examining the delimiting criteria associated with specified column 711 in spreadsheet column array 706. If the specified column does not contain data (for example, it may contain category descriptions or a blank column), the system displays 506 a message informing the user that it is unable to generate a secondary report based on selected data element 707, and stops 507. 
     If the specified column does contain data, the system clears 509 transaction reference list 714, which is a sorted list used to store selected items from historical transaction array 701. Data fields within transaction reference list 714 contain similar types of information to those stored in historical transaction array 701. Transaction reference list 714 differs from spreadsheet index array 704 in that spreadsheet index array 704 contains summarized data wherein each individual row typically contains data summarizing multiple transactions, while transaction reference list 714 contains data describing individual transactions. 
     The system saves 510 previously-generated primary report filters 703, and generates 511 secondary report filters 712 and 713. It generates secondary row report filter 712 from row register 708, and secondary column report filter 713 from column register 710. The system then scans 512 historical transaction array 701. As the system scans, it applies secondary report filters 712 and 713 to extract those transactions that pertain to selected data element 707. The system creates 513 sorted transaction reference list 714 using extracted transactions from historical transaction array 701. 
     The system displays 514 a secondary report showing sorted transaction reference list 714, typically in a secondary window on the display. Generally, the amounts 715 shown in the secondary report add up to a total corresponding to selected data element 707. 
     Referring now to FIG. 2, there is shown an example of a secondary report 200 based on selected data element 107 from primary report 100. Secondary report 200 contains column headings 201 and a list of transactions 202 showing detailed information for each transaction. Scroll bar 203 is provided in case report 200 does not fit in the on-screen window. 
     Secondary report 200 is created as follows. The user specifies data element 107 from primary report 100, and activates secondary report generation. Row and column registers 708 and 710 are set to point to the appropriate entries 709 and 711 in spreadsheet row and column arrays 705 and 706, respectively. In this case, entry 709 specifies a filter indicating &#34;Interest Income&#34; transactions, and entry 711 specifies a filter indicating the dates Jan. 1,1992-Mar. 31, 1992. The system scans historical transaction array 701 and extracts transactions matching these parameters, namely all Interest Income transactions between Jan. 1, 1992 and Mar. 31, 1992. These transactions are placed in sorted transaction reference list 714 are displayed in secondary report 200. In this example, the amounts of the eight transactions shown add up to $312.44, which corresponds to the amount in selected data element 107 of primary report 100. 
     Once the secondary report is displayed on the screen, the user may request the system to &#34;escape&#34; the secondary report, print it out, or generate an additional report containing information concerning one data element of the secondary report. Referring now to FIG. 6, there is shown a flowchart of a method of escaping the secondary report. The system restores 602 the primary report filters as they were before the secondary report was generated. It then removes 603 the secondary report from the screen, and, if necessary, refreshes 604 the display of the primary report. 
     If, while viewing the secondary report, the user requests the system to print it out, the system does so according to conventional printing methods. If the user requests generation of an additional report containing information concerning a selected data element of the secondary report, the additional report is generated according to the method described above for generation of the secondary report. Multiple &#34;levels&#34; of additional reports may be generated in this manner. 
     From the above description, it will be apparent that the invention disclosed herein provides a novel and advantageous system and method of generating a secondary report containing detailed information concerning a specific data element of a primary report. The foregoing discussion discloses and describes merely exemplary methods and embodiments of the present invention. As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. For example, any or all of the reports may contain graphical data representations, rather than tabular ones. For graphical reports, the above-described system generates the secondary report based on a selected graphical element of the primary report, such as a wedge in a pie chart or a bar in a bar graph. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.