Report Writer
Report Writer
Limitation of liability This document is provided “as-is”. Information and views expressed in this document, including
URL and other Internet Web site references, may change without notice. You bear the risk of using
it.
Some examples depicted herein are provided for illustration only and are fictitious. No real
association or connection is intended or should be inferred.
Intellectual property This document does not provide you with any legal rights to any intellectual property in any
Microsoft product.
You may copy and use this document for your internal, reference purposes.
Trademarks Microsoft, Dexterity, Excel, Microsoft Dynamics, Visual Basic, Windows, and Windows Vista are
trademarks of the Microsoft group of companies. FairCom and c-tree Plus are trademarks of
FairCom Corporation and are registered in the United States and other countries.
Warranty disclaimer Microsoft Corporation disclaims any warranty regarding the sample code contained in this
documentation, including the warranties of merchantability and fitness for a particular purpose.
License agreement Use of this product is covered by a license agreement provided with the software product. If you
have any questions, please call the Microsoft Dynamics GPCustomer Assistance Department at
800-456-0025 (in the U.S. or Canada) or +1-701-281-6500.
USER’S GUIDE i
C O N T E N T S
ii U S E R ’ S G U I D E
C O N T E N T S
iv U S E R ’ S G U I D E
C O N T E N T S
USER’S GUIDE v
C O N T E N T S
vi U S E R ’ S G U I D E
INTRODUCTION
Introduction
Welcome to the Report Writer, the tool you can use to create and customize reports.
With the Report Writer, you can change the appearance of existing reports, make
global changes that affect all reports, or create your own new reports. If you have
the Modifier with Visual Basic® for Applications (VBA), you can use scripting to
further customize your reports.
• Part 1, Basics, describes how to get started with the Report Writer, and
describes the Report Writer interface.
• Part 2, Creating Reports, explains how to create the various elements that make
up a report.
• Part 3, Gathering Data, describes how data is stored in the accounting system
and how to assemble the data you need to create a report.
• Part 6, Printing and Mailing Reports, describes how to print reports, export
data from them, and mail them to other users.
• Part 7, Report Design, provides guidelines for creating reports and describes
common design elements of reports.
• Part 8, Storing and Accessing Reports, describes the Reports dictionary. It also
explains how to control access to reports you have modified with the Report
Writer. Packaging reports is also described.
You can also refer to the Report Writer online help for more information about using
the Report Writer.
2 U S E R ’ S G U I D E
IN T RO D U C T IO N
Symbol Description
The light bulb symbol indicates helpful tips, shortcuts
and suggestions.
Margin notes summarize Margin notes call attention to critical information, and
important information. direct you to other areas of the documentation where a
topic is explained.
Convention Description
Product support
Technical support for the Report Writer can be accessed using the following
methods.
• Telephone support – Technical Support at (888) 477-7877 between 8:00 a.m. and
5:00 p.m. Central Time, Monday through Friday. International users can contact
Technical Support at (701) 281-0555.
• Internet – Report Writer Technical Support is also available online through Cus-
tomerSource or PartnerSource, and is accessible from www.microsoft.com/
Dynamics/GP.
USER’S GUIDE 3
4 U S E R ’ S G U I D E
PART 1: BASICS
Part 1: Basics
This portion of the documentation contains basic information you should know
before you begin using the Report Writer. The following information is discussed:
• Chapter 1, “Getting Started with the Report Writer,” describes the basic tasks
you can perform with the Report Writer, the terminology used to describe
reports, and how reports are stored. It also describes how to start the Report
Writer.
• Chapter 2, “The Report Writer Interface,” describes the interface for the Report
Writer.
6 U S E R ’ S G U I D E
Chapter 1: Getting Started with the Report Writer
Before you begin working with the Report Writer, you should have a basic
understanding of the types of tasks you can perform, terminology used in the
Report Writer, and how reports are stored. Information is divided into the following
sections:
Terminology
To get the most benefit from the Report Writer, you need to understand some basic
terminology used to describe reports.
Original reports
An original report is one that was provided with the accounting system. Original
reports are stored in the main application dictionary.
Modified reports
A modified report is a copy of an original report that you have made changes to.
Modified reports are stored in the Reports dictionary. A modified report can be
substituted for an original report in the accounting system. When a user prints the
report, they’re actually using the modified report, rather than the original.
Custom reports
A custom report is one that was created using the Report Writer. You can start with a
blank report, or you can start by making a copy of a report that already exists in the
accounting system. Custom reports are stored in the Reports dictionary. You must
use a special procedure to print custom reports in the accounting system.
USER’S GUIDE 7
PA RT 1 B A S I C S
Storing reports
All changes and additions you make using the Report Writer are stored in the
reports dictionary for the application. By storing the new and modified resources in
a separate dictionary, the integrity of the system can be maintained. For example,
the following illustration shows the dictionary for Microsoft Dynamics GP and its
associated reports dictionary.
You will learn more about the reports dictionary in Chapter 30, “Storing Reports.”
If the Report Writer item is dimmed, you have not been granted access through system
security. Refer to Chapter 31, “Accessing Reports,” for more information about setting
access to the Report Writer.
Select the product whose reports you want to access, then click OK. If Microsoft
Dynamics GP is the only product available, this window won’t appear.
8 U S E R ’ S G U I D E
Chapter 2: The Report Writer Interface
This portion of the documentation describes the basic elements of the Report Writer
interface. It is divided into the following sections:
Button Description
Opens the Data Types window, where you can view or edit existing data
types.
Opens the Fields window, where you can view a list of fields in the
application.
Opens the Tables or Virtual Tables window, where you can view
information about tables or virtual tables in the application.
Opens the Report Writer window, which allows you to create new or
modified reports.
Menus
The following items are available in the Report Writer menu bar.
USER’S GUIDE 9
PA RT 1 B A S I C S
File: Exit
This menu item allows you to exit the application.
Edit: Undo
This menu item will undo the last keyboard entry in an editable field. It will also
undo field movement and sizing in a layout window, but not the addition or
removal of fields, text or graphics from a layout window.
Edit: Cut/Copy/Paste
These menu items allow you to copy text or graphics to the Clipboard, then paste it
in a different location. You cannot cut, copy or paste fields.
Edit: Clear
This menu item allows you to remove text from an editable field, or remove selected
items from the layout area.
Macro: (all)
The items available from the Macro menu allow you to record and play macros.
Resources: (all)
The items in the Resources menu allow you to access the various resources in the
application. Resources available from this menu include all resources accessed from
the toolbar, as well as other resources (such as formats and strings).
Windows:
This menu displays a list of the windows currently open. Selecting a window from
this menu makes the window active.
Help: Lookup
This menu item opens any lookup window for the current field.
Help: Contents
This menu item displays the contents topic for the Report Writer online help.
Help: About
This menu item displays the About window for the main application.
10 U S E R ’ S G U I D E
C H A P T E R 2 T HE R E PO R T W R IT ER IN T E R F AC E
Windows
The Report Writer uses several types of windows. Review the following
descriptions to learn how each is used.
Definition windows
Definition windows allow you to customize individual resources. For example, you
will use the Format Definition window to customize how data is displayed on
reports.
USER’S GUIDE 11
PA RT 1 B A S I C S
Layout window
You will use the Layout window to specify the layout of reports in the application.
The Layout window uses a graphics metaphor you may already be familiar with: an
assortment of tools you can use for drawing and creating objects; a built-in grid that
allows easy alignment of objects; moveable objects in a layout like an object-
oriented drawing program; and standard cut-copy-and-paste techniques so you can
import graphics you create in other applications.
The Toolbox is available whenever the Layout window is open. It contains tools you
will use to add objects to the layout.
Standard buttons
The following buttons are used throughout the Report Writer:
Button Description
Saves changes and closes the current window.
12 U S E R ’ S G U I D E
PART 2: CREATING REPORTS
Part 2: Creating Reports
This portion of the documentation describes the various resources used to create
new reports. The following is a list of the topics discussed, along with a brief
explanation of each:
• Chapter 4, “Report Layout,” explains how to use the Report Layout window to
design the appearance of a report.
• Chapter 7, “Calculated Fields,” explains how to create and use calculated fields
in a report.
• Chapter 10, “Modifying Fields,” describes how to modify how fields appear in
a report.
14 U S E R ’ S G U I D E
Chapter 3: Report Definition
Before you can work with the layout of a report, you must open an existing report
definition or create a new one. The report definition specifies important
characteristics of the report, such as its name. Many of these characteristics can be
adjusted after you begin designing the report layout. Information about the report
definition is divided into the following sections:
To create a new report definition, start the Report Writer. In the Report Writer, click
the Reports button on the toolbar to open the Report Writer window. Click the New
button to open the Report Definition window.
USER’S GUIDE 15
PA RT 2 C R E A TI N G R E P O R T S
Refer to Chapter 12, Click New to add another table to the report. The Related Tables window will
“Table Relationships,” open. This window contains a list of all tables that have a relationship with the
for more information main table already defined using the Table Relationship Definition window. An
about creating table asterisk appearing next to the table name denotes a one-to-many relationship.
relationships. Select the desired table and click OK. Each table that is added to the report and
is directly linked to the main table will be listed below the main table in the
Report Table Relationships window, with a single dash to the left of the table
name.
To add a table that is linked to a table other than the main table, select the
secondary table’s name in the Report Table Relationships window and click
New. Select the name of the table to be added and click OK. This table will
appear in the Report Table Relationships window below the table that it is
linked to, and will have two dashes to the left of its name.
The following illustration of the Report Table Relationships window shows the
dashes that denote levels of linking.
Main table
You can have only one one-to-many relationship among the tables used for the
report. For example, if the Customer Master Address File table has a one-to-
many relationship with another table used in the report, all of the other
relationships must be one-to-one.
Once you have added all the necessary additional tables, click Close to close the
Report Table Relationships window.
If you enter the number 10 in the Max Records field, for example, only the first
10 records in the report will be printed, unless a restriction has been created to
specify another number. Any limit set using a restriction overrides the limit set
using the Max Records field.
16 U S E R ’ S G U I D E
C H A P T E R 3 R EP O R T D E FI N IT IO N
You may want to enter a relatively small number while you’re creating the report, so
that test reports will be generated more quickly. Be sure to change the number to 0 or
another appropriate number when you are finished testing.
What is an appropriate number depends upon the type of report and how it will
be used. For example, you could generate a report that lists all sales statistics by
salesperson. If the user will only want to view the top ten salespersons, you
could set the Max Records field to 10.
Report options
Several options are available to control characteristics of a report. Use the following
procedure to set options for the report.
Text Report Mark this option if you want to create a text report. Text reports
do not allow you to specify fonts or use graphical items in your report, such as
lines and pictures. However, text reports are less likely to be adversely affected
by different printer configurations.
We suggest you create graphics reports only when creating custom reports for specific
clients, where you can be sure of the type of printer the report will be printed to. If you
create graphics reports for general distribution, be sure to test the reports with a wide
variety of printers.
Skip Blank Records Mark this option to include only records for which
there is corresponding data in the main and related tables. If there isn’t a
corresponding record in each of the related tables, the entire record won’t be
included in the report.
Printer Setting Choose this option to use the page orientation as specified
for the printer currently selected.
Portrait Choose this option to have the report printed in portrait mode,
regardless of the current printer setting.
Landscape Choose this option to have the report printed in landscape mode,
regardless of the current printer setting.
USER’S GUIDE 17
PA RT 2 C R E A TI N G R E P O R T S
Best Text Fit Choose this option to have the report printed using the largest
printer font that will allow all of the information to be printed on the paper size
and paper orientation specified for the printer to which the report will be sent.
Six Lines/Inch Choose this option to ensure that six lines of the report will
print in each inch of report height, regardless of which other text option is
selected.
This option is most useful when Best Text Fit is selected. It will prevent the font from
becoming too small when the text is compressed. The font will shrink in width so that
the entire report can be printed on the available paper, but no more than six lines of text
will be printed per vertical inch.
To access the Report First Page Header Choose this option if you want the page header to be
Section Options printed on the first page of the report. If you don’t want to print page headers
window, open the on any page of the report, use the Report Section Options window to inactivate
Report Layout window page headers. If page headers have been inactivated, the Page Header check
and select Report box will appear dimmed.
Section Options from
the Tools menu. Last Page Footer Choose this option if you want the page footer to print on
the last page of the report. If you don’t want to print page footers on any page
of the report, use the Report Section Options window to inactivate page footers.
If page footers have been inactivated, the Page Footer check box will appear
dimmed.
Preprinted Form Select this option to remove the built-in margin from the
layout area when designing a text report. With this option selected, you can
place fields anywhere in the layout area. However, if you place fields outside of
the printer’s predefined margins, data outside of the margin will not print.
If Preprinted Form is not selected, a margin will appear in the report layout
area; the margin is drawn to show the default printer margins of the currently-
selected printer. The Report Writer will not allow you to place fields outside of
this margin.
If Preprinted Form is not selected and you lay out a report while you have one
printer selected, then save the report layout, select a different printer and
reopen the report layout, the margins may shift, depending on the default
margins of the new printer. If the margins shift, fields in the layout area will
shift with the left and top margins. This shift may force fields outside of the area
bounded by the right margin.
18 U S E R ’ S G U I D E
C H A P T E R 3 R EP O R T D E FI N IT IO N
The Preprinted Form selection isn’t available if the Best Text Fit option is
selected. The use of preprinted forms isn’t an option when Best Text Fit is
selected because the size and spacing of the font used for Best Text Fit reports
varies based on the data in the report. Therefore, you can never be certain that
text will appear in the appropriate position on a preprinted form.
Use RF for Last PF Mark this option to replace the last page footer on the
report with the report footer. The report footer will be printed in the area
designated for the page footer. If you mark this option, the page footer and
report footer must be the same size, and both sections must be active.
To access the Footer Mark this option if the report will contain totals in the report footer. For
Options window, open instance, an invoice report containing invoice numbers, invoice items and an
the Report Layout additional footer could have a Sum type field in the additional footer (which
window, select Report breaks on the invoice number field) to display the sum of the invoice items. If
Options from the Tools you wish to display an overall sum at the bottom of the report as well, you must
menu, and click Add or place it in the report footer, then mark Use RF For Last PF, as well as Suppress
Open in the Additional Last Record’s Footer in the Footer Options window for the additional footer.
Footers section.
Mark the options indicating what type of information you want included on the
report, and then click OK. The report will be generated.
Printing report definitions for existing reports is a good way to learn about the report.
USER’S GUIDE 19
20 U S E R ’ S G U I D E
Chapter 4: Report Layout
Once you’ve planned and defined your report, you’re ready to design the report
layout. Use the information provided here to create a report layout using the Report
Layout window. Information about the report layout is divided into the following
sections:
Toolbox
The type of report being created is displayed in the Toolbox, next to the arrow tool.
Also, several tools are available only when creating graphics reports, such as the
line and picture tools.
Layout area
For a text report, the layout area includes a left border, a right border, and two
intermediate vertical guides. These guides mark the positions 80 characters and 132
characters from the left margin. They can help you more precisely place fields in the
layout area and are especially useful if you’re using a preprinted form and have
specified a fixed-pitch text option. Then, regardless of the printer printed to, you are
assured of proper placement of fields.
For graphics reports, the layout area simply includes the left and right borders.
USER’S GUIDE 21
PA RT 2 C R E A TI N G R E P O R T S
To make the various sections of the layout area easier to distinguish, you can mark
the Colorize Report Sections item in the Layout menu. This makes the various
sections of the report appear lightly shaded.
Layout sections
Before you can add fields and data to the report layout, you must decide where to
place that information in the layout area. The Report Layout window for a new
report contains four evenly-spaced blank sections, separated by border lines. Each
border has a handle in the left margin that is labeled using a one- or two-letter
abbreviation. Each section can be resized by dragging the handle up or down. Once
fields have been placed in a section, you can’t drag the lower border of a section
above the lowest field in the section.
Additional headers and Seven types of sections can appear in the Report Layout window, depending on
additional footers are which options are selected in the Report Section Options window. Once the Report
described in Chapter 8, Layout window has been opened, you can access the Report Section Options
“Additional Headers window by choosing Report Section Options from the Tools menu. Each section is
and Footers.” described in the following table.
Section Use
Page Header Items in this section are placed at the top of every report page. Page number, date, and time fields are
(PH) commonly placed in this section of a report. You can prevent the Page Header from being included on
the first page of a report by unmarking the First Page Header option in the Report Definition window.
To exclude page headers from a report, unmark the Page Header option in the Report Section Options
window.
Report Header Items in this section appear only on the first page of a report. The title of the report and introductory
(RH) information are often included in this section. If a page header is also included on the first page, the
report header will appear after the page header.
To exclude a report header from a report, unmark the Report Header option in the Report Section
Options window.
Additional Headers Additional headers and footers allow you to create groupings in your report. Each header will print
(H1, H2, H3...) when the data in the field it is based on changes. Therefore, the sorting order used will affect the
order in which the headers appear on the report. For example, if the field related to header 2 is sorted
before the field for header 1, header 2 will print before header 1.
Use the Report Section Options window to add additional headers. You can have up to 15 additional
headers in a report.
Body (B) The report body normally contains the bulk of the report. Depending on the number of additional
headers and the sorting order used, there could be a body section for each additional header section.
Additional Footers Additional headers and footers allow you to create groupings in your report. Footers should
(F1, F2, F3...) correspond to headers and break on the same fields. They are often used to display summary data,
such as a total of all records in the report’s body under the footer’s related header.
Use the Report Section Options window to add additional footers. You can have up to 15 additional
footers in a report.
Report Footer Items in this section appear only on the last page of a report. Summary information is often included
(RF) in this section. If a page footer is also included on the last page, the report footer will appear before
the page footer.
To exclude a report footer from a report, unmark the Report Footer option in the Report Section
Options window.
Page Footer Items in this section are placed at the bottom of every report page. This section often includes
(PF) administrative information, such as the name of the person running the report. You can prevent this
section from being included on the last page of a report by unmarking the Last Page Footer option in
the Report Definition window.
To exclude page footers from a report, unmark the Page Footer option in the Report Section Options
window.
22 U S E R ’ S G U I D E
C H A P T E R 4 R E P O R T L AY O U T
The Toolbox
Use the Toolbox to place the fields and other items in the report layout area. The
Toolbox window’s Layout and Arrange tabs let you toggle between two different
sets of tools. Tools in the Layout tab help you place information in the layout area,
while tools in the Arrange tab are used to arrange selected items in the layout area.
To activate the Toolbox window, simply move the pointer from the Layout window
to the Toolbox window. The following illustration shows the Toolbox for a graphical
report when the Layout tab is displayed and a field in the Layout area is selected.
Each of the Layout and Arrange tools, as well as the Pos and Size fields, are
described in the following sections.
USER’S GUIDE 23
PA RT 2 C R E A TI N G R E P O R T S
Size Size to Shortest Shrinks the selected objects to the height of the
shortest object in the group.
24 U S E R ’ S G U I D E
C H A P T E R 4 R E P O R T L AY O U T
Arranging objects can’t be undone. Be sure to save your report layout before arranging
objects. If you aren’t satisfied with the result of an arrangement, you can close the window
without saving the changes.
If a table field is selected, the name of the table from which the field was selected
will appear below the Size field. If the selected field is a global variable, calculated
field, or legend, the resource type (Global, Calculated Field, or Legend) will appear
below the Size field.
The arrow tool is selected by default when you open the window. Use it to select
each desired field from the fields list and drag it to the report layout area. If you
inadvertently drag the wrong field to the layout area, select the field using the
arrow key, then press DELETE or BACKSPACE. This will remove the field from the
layout area without affecting the field in the table.
Refer to Part 3, Gathering Data, for information about finding the data you want to
include in your report.
If you add an array field to the layout, the Report Field Options window will
appear, allowing you to specify the element of the field being placed on the report.
In the Array Index field, enter the number of the array element, and then click OK.
If necessary, you can use the Report Field Options window to change the array
index to a different element of the array.
Fields placed in the layout area will automatically appear sized according to the
maximum keyable length of the field. You can resize each field as you wish;
however, if you shorten a field, the information in that field may not be displayed in
its entirety when the report is printed. If you resize a field by vertically enlarging it,
the field’s text will be centered. If you reduce a field’s height, it will not display
properly.
USER’S GUIDE 25
PA RT 2 C R E A TI N G R E P O R T S
You can click and drag with the Arrow tool to select multiple fields in the layout. By
default, the selection rectangle will be limited to the current group. Hold down the
CTRL key to allow the selection rectangle to expand beyond the current group.
In general, fields placed in the body of the report should be placed at the very top of
the body section, since any white space between the top of the body and the field
below it will be repeated for every record that’s printed. Similarly, once you’ve
finished placing fields in the report body, you should resize the body section so that
excess space is removed from the bottom of the section.
Select an object in the layout area and click the tab indicating which type of
property you want to view. Select Object or Visual. To set a property, select it in the
list and then change its value in the settings box.
Setting the property value involves choosing a value from a drop-down list, typing
a value, or using a lookup. Some properties listed can’t have their values changed.
Double-clicking a property in the properties list is a shortcut to setting its value. For
instance, double-clicking a property whose value is set with a drop-down list will set the
property to the next value in the list.
26 U S E R ’ S G U I D E
C H A P T E R 4 R E P O R T L AY O U T
Report properties
To view report properties, be sure the Properties window is open. Select the arrow
tool from the Toolbox and click anywhere in the background of the layout area to
select the report. The following table lists the report properties.
Field properties
The following table lists the field properties.
USER’S GUIDE 27
PA RT 2 C R E A TI N G R E P O R T S
28 U S E R ’ S G U I D E
C H A P T E R 4 R E P O R T L AY O U T
Booleans
When a boolean is added to a report, the string “Yes” is printed on the report if the
field contains the value true. The string “No” is printed on the report if the field
contains the value false.
Check boxes
When a check box is added to a report, an X is printed if the check box is marked.
Nothing is printed on the report if the check box is not marked.
Combo boxes
When a combo box field is added to a report, the text string selected or entered in
the field is printed on the report.
Dates
When a date field is added to a report, the short version of the date value is printed
on the report. The date value is formatted based on the regional settings for the
operating system.
Drop-down lists
When a drop-down list field is added to a report, the static text value corresponding
to the field’s value is printed on the report. If the drop-down list field doesn’t have
any static text items defined for its data type, no text is displayed on the report. In
this case, you must create a calculated field to display a value based on the value of
the drop-down list field.
List boxes
When a list box field is added to a report, the static text value corresponding to the
field’s value is printed on the report. If the list box field doesn’t have any static text
items defined for its data type, no text is printed on the report. In this case, you
must create a calculated field to display a value based on the value of the list box
field.
Pictures
Picture fields should not be added to the report layout.
Radio groups
When a radio group is added to a report, the integer value of the field is printed on
the report. If you want to display some other value in the report, you must create a
calculated field to display a value based on the value of the radio group field.
Text fields
When you add text fields to a report layout, you should be aware that they can
display no more than 10K of data, even though text fields can hold up to 32K of
data. Text fields should only be placed in the body of a report.
USER’S GUIDE 29
PA RT 2 C R E A TI N G R E P O R T S
Resizing a text field will have different results, depending on whether the report is a
graphics or text report. If you resize a text field in a graphics report, data will be
printed to fill the resized area. However, if the text field is larger than the amount of
data in that field for a given record, the unused space for that field will still be
included in the report. If you resize a text field in a text report, the field width you
specify will be used, but the field height will be adjusted automatically to
accommodate the text in the text field, up to the 10K limit.
For example, you could resize a text field to be two inches wide and tall enough to
include 18 rows of data. If the data in that field for a given record will fill only 12
rows, then only those 12 rows will be included if it’s a text report, while those 12
rows plus 6 blank rows will be included if it’s a graphics report. Similarly, if the data
in that same field for a different record contains 20K of data, up to 10K will be
included if it’s a text report, while only the first 18 rows will be included if it’s a
graphics report.
Times
When a time field is added to a report, the time value is printed on the report. The
time value is formatted based on the regional settings for the operating system.
Visual switches
If the visual switch field has static text values defined, the static text value
corresponding to the field’s value is printed on the report. If the visual switch field
has picture or native picture static values defined, the integer value of the field is
printed on the report. If the visual switch field has no static values defined, it can’t
be used on the report. Instead, you must create a calculated field to display a value
based on the value of the visual switch field.
If several items are selected in the layout area when you open the Drawing Options
window, the options you specify will apply to all of them. If no items are selected
when you open this window, the options defined will be applied to all new objects
placed in the layout area.
For many objects, such as text, lines, and rectangles, you can open the Drawing Options
window by double-clicking the object.
30 U S E R ’ S G U I D E
C H A P T E R 4 R E P O R T L AY O U T
Fonts
Use items in the Font section to specify font characteristics for items in the report.
For graphics reports, you can choose any font installed on the current system.
Keep in mind that if the report is used on another system that doesn’t have the appropriate
fonts installed, the missing fonts will be substituted.
Three “generic” fonts are always available for every report. These are:
• Courier (generic)
• Helvetica (generic)
• Times (generic)
These fonts correspond to the fonts that were available in earlier versions of the
Report Writer. If you want your reports to be independent of the fonts installed on a
particular system, use these generic fonts.
If you are creating a text report and have marked the Variable Characters/Inch
option in the report definition, the Font section in the Drawing Options window
allows you to specify the characters per inch to use for each line. Simply select a
field in the line and display the Drawing Options window. You can choose 5, 6, 10,
12, or 17 characters per inch.
Once you set the characters per inch for a field on the report, any other field you
move to that line will also be printed in that size. To see how your text report will
appear when printed, be sure the Show Field Names item in the Layout menu is not
marked. The report will be displayed as it will appear when printed.
Patterns
Use the Patterns section to select the fill pattern for fields, text items or shapes in the
layout.
Color
Use the Color section to select the font/line, background and foreground colors of
items you’ve added to the layout. The line color is used for lines and field borders.
The font color is used for text. The foreground color is used to draw the pattern
selected in the Patterns section. The background color is used to fill in the remaining
area of the object. The line size specifies the size of the line used to draw lines,
rectangles, circles, and other shapes.
When specifying colors, you can select one of the predefined colors in the list. To
use a custom color, select User Defined as the color and then click More Colors to
display the Color dialog. Select a color and click OK. The color you selected will be
applied to the current color selection.
Alignment
Use the Alignment setting to specify the horizontal alignment of text in fields or of
text items you’ve added using the text tool.
USER’S GUIDE 31
32 U S E R ’ S G U I D E
Chapter 5: Sorting
There are two methods for specifying how the data in a report is sorted. In the first
method, the report is sorted based on a key you select for the main table used for the
report. In the second method, you create a sorting definition based on the fields in
the tables used for the report. Information about sorting is divided into the
following sections:
This is the preferred method for sorting the report, because an index already exists
for each table key. In effect, the order of the data is already known. The Report
Writer simply retrieves data from the primary table using the key you specified.
To create a sorting definition, click the Sort button in the Report Definition window
to open the Sorting Definition window, shown in the following illustration. Use this
window to define a sorting order that includes fields from any of the tables
associated with the report.
USER’S GUIDE 33
PA RT 2 C R E A TI N G R E P O R T S
From the Report Table drop-down list, select the table containing the field you wish
to use to specify the sorting order. The name of each field in the selected table will
appear in the Table Fields list. Select the desired field, and click Insert. The field
name will be added to the Sort By list. Subsequently-added fields will be added to
the top of the Sort By list, unless an item in the list is selected. If an item is selected,
newly-added fields will be added below the selected item.
The sorting order will be based on the fields listed in the Sort By list. The data will
be sorted based on the first field, then, if a secondary sorting order is needed, the
second field, and so on. Be sure to include all fields necessary to fully define the
desired order.
For each field selected, you can specify whether you want the data to be sorted in
ascending or descending order (ascending is the default order) and whether to
ignore the case of any string fields used as sorting criteria. If you ignore case, the
strings will be sorted in strict alphabetical order. If you don’t ignore case and you
are sorting in ascending order, all strings beginning with lowercase letters will
appear in alphabetical order, followed by all strings beginning with uppercase
letters, also in alphabetical order. In descending order, all of the uppercase strings
will appear before the lowercase strings.
To select the Descending and/or Ignore Case options for a given field, select the
desired field in the Sort By list and check the appropriate sorting options. Once you
have specified all the sorting options, click OK to close the Sorting Definition
window.
If none of the fields used to define the sorting order are from a secondary table, the report
information drawn from that table will be sorted according to the key used to define that
secondary table’s relationship with the report’s main table.
Once you have created a sorting definition for a report, it will override the sort
order specified by the key selected for the report’s main table. To use the main
table’s key as the sorting method, you must remove all of the items from the Sort By
list in the Sorting Definition window.
34 U S E R ’ S G U I D E
Chapter 6: Restrictions
Use restrictions to limit the amount and scope of data included in your report. For
example, you could create a report with a restriction based upon the State field, so
that the report will contain only sales data for a specific state.
Before defining a restriction, it’s a good idea to plan the restriction and write it out
completely. Decide which fields, operators, constants and functions you’ll need to express
the restriction properly. Some restrictions may require that the steps defined below be
performed in a slightly different order.
For a detailed description of each function available for use when defining a
restriction, refer to Restriction functions on page 36.
USER’S GUIDE 35
PA RT 2 C R E A TI N G R E P O R T S
Restriction functions
This section describes the functions available when defining a restriction for a
report. It includes a definition of each function, an example of how the function is
used in a restriction expression, and an explanation of how you can use such an
expression in a report. Also included is information about the storage types that can
be used with each function, since some functions can be used only in expressions
with fields of a certain storage type.
SUBSTRING and Most of these functions can be used only with fields from a report table that has a
WILDCARD are the one-to-many relationship with another report table, such as a secondary table with a
only functions that can one-to-many relationship with the report’s main table. Records in secondary tables
be used with table with a one-to-many relationship with the main table are sometimes referred to as
fields from all report detail records. Using one of these functions with any other fields will cause an error
tables. at runtime. Only two functions can be use with fields from any of the report tables:
SUBSTRING and WILDCARD.
AVERAGE
The AVERAGE function calculates the average of an expression for all detail
records. It can be used with expressions containing fields of all storage types except
strings.
Example
You can use the AVERAGE function to create a restriction on an invoice list so that it
will print only invoices for which the invoice’s items average a markup of at least
20% over cost.
36 U S E R ’ S G U I D E
C H A P T E R 6 R E S T R I C T I O N S
EXISTS
The EXISTS function ascertains whether at least one record in a group of detail
records makes the expression true. The expression the EXISTS function evaluates
should be a comparison as shown in the following example. This function can be
used with all boolean expressions.
You can use the NOT operator with this function to increase its scope and create
expressions restricting the information on your reports according to expressions
that aren’t true.
Example
You can use the EXISTS function to create a restriction on an order list to list
customers whose orders include at least one item over $100.
Unlike other functions, EXISTS and FORALL must be used to evaluate an expression where
the comparison operator is inside parentheses, as shown. This causes the function to
evaluate the entire expression, rather than only the item following it.
FIRST
The FIRST function finds the first occurrence of an expression in a group of detail
records. It can be used with expressions containing fields of any storage type.
Restrictions are evaluated before the report is sorted, so the item designated by the
FIRST function may not be the same as the first item in a group on the report once
it’s been sorted and printed. The first item will be the first value in the table, sorted
by the key used to link the secondary table to the report’s main table.
For example, you could print a report that lists invoices and corresponding line
items, then create a restriction to print only invoices for which the first line item’s
price was more than $1,000. If you then sort the report in ascending order by line
item price, the line item that the FIRST function finds won’t necessarily be the line
item listed first on the report. It will be the first line item in the table, which depends
on the key used to create the table relationship. If the key is composed of the invoice
number and the line item number, the first line item will be the item with the
smallest (or largest, depending upon the key’s sorting method) line item number.
The following example shows an invoice and its line items as they’re sorted within
the tables, by invoice number and by item number.
USER’S GUIDE 37
PA RT 2 C R E A TI N G R E P O R T S
Since the line items are sorted by item and not by price, the record identified by the
FIRST function is item 1201. If you sort the report by the price of each line item,
that’s how the information will appear on the report, but the FIRST function will
still identify item 1201 as the first item.
Invoice 5005
Records on the report are
Item Price
sorted by the Price.
1205 $3,900.00
1211 $5,250.00
1201 $5,300.00
Example
The following example shows how to use the function to create the expression
explained in the previous paragraphs and illustrations.
FIRST (Item) > 1000
FORALL
The FORALL function prints only those records for which all of the detail records
meet the expression’s requirements. This function can be used with all boolean
expressions.
You can use the NOT operator with this function to increase its scope and create
expressions restricting the information on your reports according to expressions
that aren’t true.
Example
You can use the FORALL function to create a restriction on an invoice list to display
only invoices containing items that all cost more than $500.
FORALL ((Item Price) > 500)
Unlike other functions, EXISTS and FORALL must be used to evaluate an expression where
the comparison operator is inside parentheses, as shown. This causes the function to
evaluate the entire expression, rather than only the item following it.
FREQUENCY
The FREQUENCY function counts the number of detail records. The FREQUENCY
function can be used with expressions containing fields of any storage type.
Example
You can create a restriction on a customer order list to print only orders containing
more than five items.
LAST
The LAST function finds the last occurrence of an expression in a group of detail
records. The LAST function can be used with expressions containing fields of any
storage type except string.
Restrictions are evaluated before the report is sorted, so the item designated by the
LAST function may not be the same as the last item in a group on the report once it’s
been sorted and printed. The last item will be the last value in the table, sorted by
the key used to link the secondary table to the report’s main table.
38 U S E R ’ S G U I D E
C H A P T E R 6 R E S T R I C T I O N S
The LAST function For example, you could print a report that lists Salesperson IDs and corresponding
performs much like the line items containing dates upon which they’ve made sales and the total amount of
FIRST function. For each sale. You could then create a restriction to print only the records for
more information, salespeople whose most recent sale totaled more than $1,000. If you then sort the
refer to the description report in ascending order by the amount of the sale, the record that the LAST
of the FIRST function function finds won’t necessarily be the one listed last on the report. The last record
earlier in this section. on the report will be the item with the largest total sale amount.
The following example shows the records for Salesperson ID 001 as they’re sorted
within the tables, by salesperson ID and sale date.
Since the salesperson records are sorted by sale date and not by sale total, the record
identified by the LAST function is the 4/12/97 sale. If you sort the report by the sale
total, that is how the information will appear on the report, but the LAST function
will still identify the 4/12/97 sale as the last item.
Salesperson ID 001
Sale Date Sale Total
Records on the report are 4/12/97 $1,000.01
sorted by the Sale Total.
1/2/97 $1,200.00
2/6/97 $1,400.00
2/4/97 $2,300.00
Example
The following example shows how to use the function to create the expression
explained in the previous paragraphs and illustrations.
LAST (Sale Total) > 1000
MAXIMUM
The MAXIMUM function finds the detail record with the highest value that satisfies
the given expression. The MAXIMUM function can be used with fields of any
storage type except strings.
Example
You could create a restriction on an invoice list that prints only invoices that include
items priced over $100.
USER’S GUIDE 39
PA RT 2 C R E A TI N G R E P O R T S
MINIMUM
The MINIMUM function finds the detail record with the lowest value that satisfies
the given expression. The MINIMUM function can be used with fields of any
storage type except strings.
Example
You could create a restriction on an invoice list that prints only invoices that include
items priced under $100.
MINIMUM (Item Price) < 100
SUBSTRING
The SUBSTRING function is used to search fields with a string storage type for a
match to a specified pattern. The SUBSTRING function will find a match if the
specified pattern appears anywhere within the specified field. It is case-sensitive.
Only the equality (=) and inequality (<>) operators can be used with the
SUBSTRING function. The data in the specified field either matches or doesn’t
match the pattern. No other operators can be used.
This function is used to restrict the data on the report to information that matches a
set of characters specified as the search pattern. Three special characters can be used
in the search pattern to indicate the type of match you’re searching for: the asterisk
(*), the question mark (?), and the backslash (\).
The SUBSTRING function implicitly adds an asterisk to the beginning and end of
the pattern you specify, so that a match will be found even if the pattern occurs
within the information in the field. For example, the SUBSTRING function would
find a match for the pattern P*L in the word APPLE, while the WILDCARD
function wouldn’t.
The backslash is used in front of special characters, such as quotation marks, that
have specific meaning in Report Writer. A quotation mark indicates the beginning
or end of a field. If you wish to search for fields containing, among other characters,
a quotation mark, you’ll need to place a backslash in front of it to indicate that the
quotation mark is simply a character, and not the sign for the end of the field. Most
symbols and non-alphanumeric characters are special characters and should be
used with backslashes.
Example
You could use this function to print a list of companies in a particular sales region
whose names contain the string John’s. The following example shows an expression
for which “John’s Fish Market” and “Mabel and John’s Deli” would both be valid
matches.
SUBSTRING ("John\'s") = Company_Name
40 U S E R ’ S G U I D E
C H A P T E R 6 R E S T R I C T I O N S
SUMMATION
The SUMMATION function calculates the sum of a specified expression for each
record in a set of detail records. The SUMMATION function can be used with fields
of any storage type except strings.
Example
You can use the SUMMATION function on a report listing invoices and the items on
each invoice to print only the invoices where the total of all item extended prices is
greater than $1,000. The extended price is the price of each item multiplied by the
number of items that were purchased. The SUMMATION function would first
calculate the extended price for each item on the invoice, then sum those extended
prices and compare the sum to the specified $1,000 value. The following expression
demonstrates how this restriction would be written.
SUMMATION (Quantity Ordered * Item Price) > 1,000
WILDCARD
The WILDCARD function is used to search fields with a string storage type for a
match to a specified pattern. The WILDCARD function will find a match only if the
specified pattern appears in the specified field exactly as stated. The asterisk,
question mark and backslash special characters, described in the explanation of the
SUBSTRING function, can also be used with this function.
By using these special characters, you can expand the scope of the search conducted
by the WILDCARD function. Without the special characters, the specified field
must contain exactly the specified pattern, and only the specified pattern, for a
match to occur. For example, the expression WILDCARD (Apple) = Snack Type
would not find a match if the value in the Snack Type field was Apples.
Only the equality (=) and inequality (<>) operators can be used with the
WILDCARD function. The data in the specified field either matches or doesn’t
match the pattern. No other operators can be used.
Example
You could use this function to print a list of users whose IDs begin with the letter A.
WILDCARD ("A*") = User ID
USER’S GUIDE 41
42 U S E R ’ S G U I D E
Chapter 7: Calculated Fields
Calculated fields are a powerful tool you can use to manipulate data in your report.
Calculated fields are defined using fields, constants and operators, as well as
system-defined or user-defined functions. The following illustration shows the
Calculated Field Definition window.
When defining an expression for a calculated field, the expression can’t be typed in
directly. Instead, the expression must be built by adding the elements to the
expression from the Fields, Constants, or Functions tabs and the Operators keypads.
USER’S GUIDE 43
PA RT 2 C R E A TI N G R E P O R T S
Click the Reports button on the toolbar. In the Report Writer window, select and
open a report definition. Click Layout in the Report Definition window. The Report
Layout and Toolbox window will open. From the Layout tab in the Toolbox window
select Calculated Fields from the drop-down list, then click New.
If the calculated field is based upon a conditional expression, both the True Case
and False Case values must be of the same storage type as the result type.
Operators
Operators allow you to specify the relationships between the various components
of expressions. Some operators are only enabled if you are creating a conditional
expression.
Parentheses ()
Indicate the beginning and end of an expression that should be evaluated as a unit,
separate from the rest of the expression. In general, you should use parentheses to
enclose parts of the whole expression when you’re using two or more operators and
you wish to control the order of evaluation.
44 U S E R ’ S G U I D E
C H A P T E R 7 C AL C U LA T ED F IE LD S
Addition (+)
Adds the value to the left of the addition operator to the value to the right of the
operator.
Subtraction (-)
Subtracts the value to the right of the operator from the value to the left of the
operator.
Multiplication (*)
Multiplies the value to the left of the operator by the value to the right of the
operator.
Division (/)
Divides the value to the left of the operator by the value to the right of the operator.
CAT
Joins the data in two fields with a string storage type into one string of characters.
CAT stands for “concatenate,” and is symbolized by the pound (#) sign when
displayed in an expression. You may want to use the CAT operator in conjunction
with the STRIP function so that only the data in each field is displayed, and not
empty blanks following the data.
The following operators are enabled only when you’re creating conditional
expressions.
Equality (=)
Indicates that if the two values to either side of the operator are equal, the
expression is true.
Inequality (<>)
Indicates that if the values to either side of the operator aren’t equal, the expression
is true.
AND
Joins a series of expressions within a conditional expression. All of the expressions
joined by an AND operator must be true for the entire expression to be true.
OR
Joins a series of expressions within a whole condition or restriction. Only one of
these expressions must be true for the entire expression to be true.
USER’S GUIDE 45
PA RT 2 C R E A TI N G R E P O R T S
NOT
Reverses the meaning of the expression following it. For example, the following
expressions are written differently but have the same result:
Fields tab
The Fields tab contains two drop-down lists: Resources and Field. Once a resource
is selected, the Field drop-down list is enabled, displaying all available choices of
the selected resource type. If there are no values for the selected resource type, the
Field drop-down list will remain disabled.
The Resources drop-down list always begins with four system entries: Report
Fields, Calculated Fields, RW Legends, and Globals. These are followed by the
name of each table associated with the current report. If a table name is selected,
each field in that table will be listed in the Field drop-down list. The following
describes each system entry, and what appears in the Field drop-down list if that
entry is selected.
Calculated Fields
Calculated Fields fills the Field drop-down list with all calculated fields the current
calculated field can reference. Under special circumstances, dependencies between
calculated fields can that prevent them from being used by the current calculated
field. If a calculated field can’t be used, it won’t be displayed in the list.
A legend is passed into the calculated field as a string. If you need the legend value to have
some other storage type, you will need to use one of the system-defined functions to convert
the legend value. System-defined functions are described in System-defined functions on
page 48.
Often, legends are used in a calculated field to specify the array index of an array
field. The following procedure describes how to use a legend to specify the array
index in a calculated field.
46 U S E R ’ S G U I D E
C H A P T E R 7 C AL C U LA T ED F IE LD S
The value you passed to the first legend will specify which array element value to
display. If the value 1 is passed to the first legend, the first quarter’s bonus value is
displayed. If the value 2 is passed to the legend, the second quarter’s value is
displayed, and so on.
Globals
Globals populates the Field drop-down list with all of the fields declared as global
variables in the current dictionary.
Constants tab
Constants are values you set. Typically, they are used in the True Case and False
Case fields, or as a value against which fields are compared in the expression. This
tab contains two fields: the Type drop-down list and the Constant field.
The Type drop-down list contains five choices: Integer, Currency, String, Date, and
Time. The value you are allowed to enter in the Constant field depends on the
constant type selected. For example, if you select Integer as the constant type, you
will be able to enter only numeric values in the Constant field.
The following expression shows the use of two different constant types. The
12:00:00 PM value is a constant of the Time type, while the True Case and False Case
fields’ values of Morning and Afternoon are String type constants.
USER’S GUIDE 47
PA RT 2 C R E A TI N G R E P O R T S
Functions tab
Within the Functions tab, you must select the type of function you want to use,
either System-Defined or User-Defined. System-Defined is the default.
Depending on which type of function is selected, one or two drop-down lists will
appear below the radio group. If System-Defined is selected, the Function drop-
down list will appear, allowing you to choose one of the predefined functions. If
User-Defined is selected, two drop-down lists will appear, Core and Function. To
select a function you’ve created, you must first select the core with which the
function is associated. You can then select the desired user-defined function from
the Function drop-down list.
Many of the system-defined functions convert a field’s storage type. For example, the
CUR_STR function converts a currency control type field to a string control type field. The
conversion doesn’t affect the way the field is stored in the table, only how its data is
evaluated in the calculated or conditional expression.
System-defined functions
To use system-defined functions in expressions, select a function from the drop-
down list and click Add. Then, from the Fields tab, select the field you wish to use
with the function and click Add. The field will appear in the expression, enclosed in
parentheses.
You can’t apply one system-defined function to another, or “nest” one function
within another. For example, if you’re using the CUR_STR function to convert a
currency field to a string, you can’t use the STRIP function to remove extra spaces
from the same field. For example, the following is not permitted:
If the field you want to create requires using two system-defined functions, first
create a calculated field using the first function, then create another calculated field
that applies a second function to the first calculated field, as in the following
example:
Each system-defined function takes only one parameter. The following briefly
explains each of these functions:
CUR_STR
Converts a field with a currency storage type to a string.
DAY
Takes a date value and returns the day portion of the date. The integer value
returned will range from 1 to the maximum number of days in the month.
DAY_NAME
Takes a date value and returns a string containing the name the day of the week for
the date value.
48 U S E R ’ S G U I D E
C H A P T E R 7 C AL C U LA T ED F IE LD S
DOW
Takes a date value and returns an integer representing the day of the week the
specified date falls on. The following table lists the integer values and the
corresponding day:
INT_STR
Converts a field with an integer storage type to a string type.
LFT_STR
Prints only the data that lies to the left of the caret (^) in a field with a string storage
type. If there is more than one caret in the field, the function will print only the
characters to the left of the leftmost caret. The caret must be part of the field, not
part of a format applied to the field’s data type. If there is no caret in the string, the
entire string will be printed, provided enough space is allocated in the layout area.
LNG_STR
Converts a field with an integer or long integer storage type to a string type.
MONTH
Takes a date value and returns the month portion of the date. The integer value
returned will range from 1 to 12.
MONTH_NAME
Takes a date value and returns a string containing the name of the month for the
date value.
POWER_10
Multiplies 10 to the power specified as this function’s parameter. For example, the
value of POWER_10(2) is 10 to the power 2, or 100. This function is useful for
dealing with currency fields and decimal placement.
RGT_STR
Prints only the data that lies to the right of the caret (^) in a field with a string
storage type. If there is more than one caret in the field, the function will print all the
characters to the right of the leftmost caret. The caret must be part of the field, not
part of a format applied to the field’s data type. If there is no caret in the string, no
data will be printed.
STR_DAT
Converts a field with a string storage type to a date. The string of characters you
convert to a date must be in MM/DD/YY format. If the year listed is 35 or less, the
year will be preceded by “20,” so that the year will be 2035, for example, instead of
1935.
USER’S GUIDE 49
PA RT 2 C R E A TI N G R E P O R T S
STR_CUR
Converts a field with a string storage type to a currency type. The current control
panel settings for the currency symbol, thousands separator, decimal symbol, and
negative currency format will be used as the basis for analyzing the string. If the
string cannot be properly interpreted based on the current control panel settings, it
will be interpreted using the following rules:
• No currency symbol
• The current control panel setting for the decimal separator
• No thousands separator
• A minus sign as the negative indicator at the beginning of the value
STR_LEN
Counts the number of characters, excluding blanks at the end of the string of
characters, in a field with a string storage type. Blanks within a string are counted.
STR_LNG
Converts a field with a string storage type to a long integer. This function can be
used to compare a string field to a long integer field. Since Report Writer can’t
compare two fields with different storage types, using the STR_LNG function to
convert the string field to a long integer field allows you to compare it to other long
integer fields.
STR_VCUR
Converts a field with a string storage type to a variable currency type. The string
will be interpreted using the following rules:
• No currency symbol
• The current control panel setting for the decimal separator
• No thousands separator
• A minus sign as the negative indicator at the beginning of the value
STRIP
Removes trailing blank spaces from fields with string storage types. The STRIP
function can be used with the CAT operator, but can’t be applied to an expression
containing the CAT operator.
SUBSTRING
Searches fields of the string storage type for a match of the specified string pattern,
regardless of whether that match occurs at the beginning of or within the string
field. Searches are case-sensitive.
50 U S E R ’ S G U I D E
C H A P T E R 7 C AL C U LA T ED F IE LD S
Three special characters can be used in the search pattern: the asterisk (*), the
question mark (?), and the backslash (\), as indicated in the following table.
The backslash is used in front of special characters that have specific meaning in
Report Writer, such as quotation marks that indicate the beginning or end of a field.
If you want to search for fields containing a quotation mark, you’ll need to place a
backslash in front of it to indicate that the quotation mark is simply a character, and
not the sign for the end of the field. Most symbols, such as the pound sign (#) or the
at sign (@), are special characters and should be preceded by backslashes if you
want them to be evaluated literally in an expression.
The difference between this function and the WILDCARD function is that this
function implicitly adds an asterisk to the beginning and end of the pattern you
specify. For example, the SUBSTRING function would find a match for the pattern
P*L in the word APPLE, while the WILDCARD function wouldn’t.
You must use the SUBSTRING and WILDCARD functions with the equality (=) and
inequality (<>) operators in conditional expressions, to ascertain whether the data
in the field matches or doesn’t match the pattern.
The following example checks the First_Name field for all names containing the
letter “t” separated from the letter “n” by one other character. Names that would
match this search include “Astin”, “Barton”, and “Antonette”.
UCASE
Prints the alphabetic characters in the specified string field in uppercase. Numeric
characters won’t be affected.
WILDCARD
Searches fields of the string storage type for an exact match of the specified string
pattern. Searches are case-sensitive.
You can use the *, ?, or \ special characters to indicate the type of match you’re
searching for. These special characters have the same effect as they do with the
SUBSTRING function.
USER’S GUIDE 51
PA RT 2 C R E A TI N G R E P O R T S
Unlike the SUBSTRING function, this function does not implicitly add an asterisk to
the beginning and end of the pattern you specify. Therefore, this function is useful
when you want to search for strings that begin with a certain character or set of
characters.
The following example checks the First_Name field for all names beginning with
the letters “To”. Names that would match this search include “Tony”, “Tonya”, and
“Tomas”.
The following example checks the Local_Businesses field for all stores beginning
with the string “Tommy’s”. Note that this search uses both the \ and * special
characters. Business names that would match this search include “Tommy’s
Pizzeria” and “Tommy’s Bait and Tackle Shop”.
YEAR
Takes a date value and returns the year portion of the date. The integer value
returned will be a four-digit year, such as 2001.
User-defined functions
In addition to the system-defined functions, you can use functions that have
specifically been added to the application for use in calculated fields. The names of
user-defined functions intended for use in calculated fields begin with the letters
“RW” so they are recognized by the Report Writer.
A document with descriptions of the user-defined functions available for the Report Writer
is found in the Microsoft Dynamics GP SDK in the “Procedures and functions” category.
You can find the document by searching for “Report Writer”.
To add a user-defined function to an expression, select the core the function is part
of from the Core drop-down list. Once a core is selected, the Function drop-down
list will become active. You can then select the desired user-defined function from
the Function drop-down list. Click Add to add the function to the expression.
The Report Writer automatically adds the selected function to the expression
enclosed in parentheses and preceded by the system-defined function
FUNCTION_SCRIPT. This system-defined function is used only to process user-
defined functions. It is added to the expression by the Report Writer, and can’t be
added to the expression from the System-Defined Function drop-down list.
Once the user-defined function is added to the expression, add any needed
parameters using the fields and constants tabs. Table fields, calculated fields and
constants can be used as parameters for a user-defined function included in a
calculated field. Be sure the parameters are placed before the closing parenthesis.
Be sure to add the appropriate number and type of parameters for the selected function. The
Report Writer will not check the compatibility of the specified parameters until runtime.
To use a report field value as parameter for a user-defined function, create a calculated field
with that report field as the only element of the calculated expression. Then, use that
calculated field as the parameter for the user-defined function in another calculated field.
52 U S E R ’ S G U I D E
C H A P T E R 7 C AL C U LA T ED F IE LD S
Using this user-defined function allows you to easily use an account number on a
report without having to attach the Account Master table to the report.
USER’S GUIDE 53
54 U S E R ’ S G U I D E
Chapter 8: Additional Headers and Footers
Additional headers and footers are used primarily to create groups on your report,
grouping all records that contain the same value for a particular field. Information
about additional headers and footers is divided into the following sections:
For instance, if you want to create a report listing each of your user classes and the
users in each class, you could use an additional header to print the name of each
class, followed by a list of the users in that class. Once all the records for the first
user class are printed, the additional footer will be printed. Next, the additional
header will be printed again, containing the name of the second user class, and so
on.
The following illustration displays an example report that uses additional headers
and footers.
USER’S GUIDE 55
PA RT 2 C R E A TI N G R E P O R T S
You can specify where an additional header or footer should appear. In the Report
Section Options window, highlight the additional header or footer that should
appear directly above the one you’re adding, then create the section as usual.
If you aren’t satisfied with the order of your additional headers or footers, you must delete
the header or footer you want to move, then re-create it in the desired location.
Be sure to consider the report’s sorting order when determining the placement of
your additional headers and footers. Remember that an additional header or footer
prints when the data in the field it’s based on changes. For example, if the field that
Header 2 is based on changes before the field that Header 1 is based on, Header 2
will print first. Therefore, if you always want Header 1 to appear before Header 2,
be sure that the field you base Header 1 upon appears in the sorting order before the
field Header 2 is based on.
56 U S E R ’ S G U I D E
C H A P T E R 8 A D D I T I O N A L H E A D E R S A N D F O O T E R S
If you haven’t created a sorting definition for the report, only fields that are part
of the key for the report table you’ve selected will be displayed in the Table
Field list. If you’ve created a sorting definition for the report, only fields from
the selected table that are part of that sorting definition will appear.
If an additional header or footer is based on a field used in a sorting definition, and that
sorting definition is later deleted, the additional header or footer must be deleted as well.
Page Break Starts a new page after the additional footer is printed. You can
use this option even if you don’t display any data in this additional footer.
Reset Report Begins a new report each time this additional footer completes
printing. The page footer and report footer, if active, will print after this
additional footer, before the new report begins printing. Once the new report
begins, the page numbers will begin again at 1, and the report header, if active,
will be printed.
For example, you may want to mark this option if you’re creating a layout for
checks with a stub both on the top and bottom. The stubs would be placed in
the body, while the check would be placed in an additional footer. Since only
one check should be printed, the second additional footer should be
suppressed.
USER’S GUIDE 57
PA RT 2 C R E A TI N G R E P O R T S
58 U S E R ’ S G U I D E
Chapter 9: Legends
Legends are fields you can add to your report to display information that is passed
to the report when it is printed. Typically, legends are used to display string values
representing the sorting and restriction options selected by the user running the
report. Legend values can also be used as elements in calculated fields.
Since legend values must be passed into the report by the application, they are
generally available only for modified reports. Any new reports you create won’t be
able to use legends, unless you have Visual Basic for Applications (VBA) and have
set up scripts that set the legend values.
• Using legends
• Legends example
Using legends
To add legends to the Report Layout area, follow these steps:
1. Select Legends from the drop-down list in the Layout tab of the
Toolbox.
The scrolling window below the list will be filled with the word Legend
followed by an array index (such as Legend[1] and Legend[2]).
If you don’t have specific information about the values passed into legends for a report,
you can find out how the legends are used. Add the legends to the report layout and
print the report. If legend values are passed into the report, they will be printed on the
report.
To add additional legends, drag a legend from the toolbox to the layout area,
and double-click it to open the Report Field Options window. Use this window
to change the array index of the legend. To change the array index, change the
value of the Array Index field to appropriate index number, and click OK.
Be sure to resize each of your legends to accommodate the largest amount of information that
could be included in it. If legends aren’t sized properly, information will be truncated.
USER’S GUIDE 59
PA RT 2 C R E A TI N G R E P O R T S
Legends example
The following illustration shows the Item List report. This report uses legends to list
the ranges of items that are included in the report. It also uses a legend to indicate
how items are sorted. Two other legends are used to indicate whether discontinued
items and vendor information are included in the report.
60 U S E R ’ S G U I D E
Chapter 10: Modifying Fields
Fields in the report layout can be modified in three ways: a format can be applied to
them, their visibility setting can be altered, and their display type can be changed.
Use the Report Field Options window, shown in the following illustration, to make
these modifications.
• Field visibility
• Specifying a format resource
• Specifying a format field
• Changing display types
• Display type summary
Field visibility
Fields in the report layout area can have their visibility set to one of three options:
visible, invisible, and hide when empty. Fields added to the layout area are
automatically set to visible.
Visible fields are always displayed on the report, even if the field is blank for a given
record. If a visible field is blank but has a format applied to it, the formatting will be
displayed on the report without any data. For example, a ZIP code field could be
formatted to include a dash between the fifth and sixth characters. If this field is
included on a report and is visible, and a given record has no ZIP code data, only a
dash will appear in the ZIP code field for that record on the report.
A hide when empty field will not be included on a report for a specific record if the
field is blank. For example, if a customer record doesn’t include a telephone
number, and the phone number field is marked as hide when empty, then for that
customer record, the empty phone number field and any related formatting won’t
be included on the report.
Selecting hide when empty prevents formatting from appearing on a report when the field
contains no data.
USER’S GUIDE 61
PA RT 2 C R E A TI N G R E P O R T S
An invisible field will never be shown on the report output. When a field is
invisible, it will appear in the report layout in gray with a dashed border, as shown
in the following illustration:
Commonly, fields are marked as invisible when their values are needed for use in
calculated fields, but are not needed for display on the report. For example, you
may want to display a field on the report showing the difference between the
highest and lowest values of specific field. To accomplish this, add the field to a
footer in the report layout twice. Change the display type of one instance to
Minimum, and the display type of the other to Maximum. Then, create a calculated
field that subtracts the minimum value from the maximum value. Since only the
calculated field needs to be displayed on the report, set the visibility of the
minimum value and maximum value fields to invisible.
Refer to Chapter 18, You can apply formats created with the Format Definition window to string,
“Formats,” for more currency, composite, and numeric fields that appear in the report layout. To apply a
information about format to a field, click the Format lookup button in the Report Field Options
creating formats. window to display a list of formats that can be applied to the field. Select a format in
this list, or click New to create a new format. When you have finished, the name of
the format applied will appear in the Format field in the Report Field Options
window.
62 U S E R ’ S G U I D E
C H A P T E R 1 0 M O D IFY IN G F IE LD S
The integer value used to indicate the format used can be stored in a table along
with the currency field being formatted. When the record is retrieved from the table,
the currency field will display as it did when the record was saved. The format field
can also be used for a report, allowing the currency field to appear in the report as it
did when it was saved in the table.
Microsoft Dynamics GP can define its own formats, in addition to those shown in the
previous table. This capability is used to define currency format information for
multicurrency support.
The following example describes a Part Number field that has three different format
strings. The user selects the format to apply by selecting the corresponding format
in a drop-down list linked to the Part Number field. The three format strings for the
Part Number field, entered in the Format Definition window, are shown in the
following illustration.
USER’S GUIDE 63
PA RT 2 C R E A TI N G R E P O R T S
To change a field’s display type, select the desired type from the Display Type list in
the Report Field Options window. The following describes each display type,
including information about the storage types each type can or can’t be used with:
Average
Prints the average value of the data printed in a group or on a report. This display
type should not be used with fields having string, date, or time storage types.
Control Count
Prints the number of times the additional footer immediately above the footer
containing the Control Count field is printed on a report. The Control Count display
type can be used only when you’re printing information in groups using additional
footers. This display type should not be used with fields having date or time storage
types.
Count
Prints the number of times a field is printed in a group or on a report. This display
type can be used with fields of all storage types. If you’re printing a report with
groups and counting categories, use the Control Count display type instead.
Data
Prints data without modifications, as it’s stored in the table. All fields in the body of
the report whose display types have not been modified have the display type Data.
Calculated fields placed in footers should have their display type changed from
Last Occurrence to Data, so that the calculations will perform properly. This display
type can be used with fields of all storage types.
The Report Writer allows you to assign the Data display type to fields other than calculated
fields in a footer; however, calculated fields are the only fields that should have the Data
display type in a footer. The Report Writer sets the default display type for fields placed in
footers to Last Occurrence. The Sum display type is another display type commonly used in
footers.
64 U S E R ’ S G U I D E
C H A P T E R 1 0 M O D IFY IN G F IE LD S
Last Occurrence
Prints the last value of the field that was printed in a group or on a report. It also can
be thought of as the current occurrence. All fields placed in footers are
automatically assigned a Last Occurrence display type. Calculated fields placed in
footers should have their display type changed from Last Occurrence to Data, so
that the calculations will perform properly. This display type should not be used
with fields having date, time, or text storage types.
Maximum
Prints the greatest value of the field that was printed in a group or on a report. This
display type should not be used with fields having string, date, or time storage
types.
Minimum
Prints the smallest value of the field that was printed in a group or on a report. This
display type should not be used with fields having string, date, or time storage
types.
Previous Occurrence
Prints the value of the field printed immediately before the last occurrence in a
group or on a report. This display type should not be used with fields having date
or time storage types.
Running Sum
Prints the total of the field’s values at the point where the field is placed within the
entire report. This display type should not be used with fields having string, date,
or time storage types.
Sum
Prints the sum within a group or on a report. This display type should not be used
with fields having string, date or time storage types.
USER’S GUIDE 65
PA RT 2 C R E A TI N G R E P O R T S
Additional Headers
Additional Footers
Report Header
Report Footer
Page Header
Page Footer
Body
Average X X X X
Control Count X X
Count X X X X
Data X X X X X X X
First Item In Group X X
First Occurrence Only X*
Last Occurrence X X
Maximum X X
Minimum X X
Previous Occurrence X X
Running Sum X X X X
Sum X X X X
* Refer to notes in text
You can use a First Occurrence Only display type in the body of a report if one of the
following conditions in true:
• The field is in the selected key for the main table of the report.
• If you use an alternate sorting definition for the report, the field must be one of
the segments in the sorting definition.
The value of any report fields you use in the page header or page footer, such as
Average or Sum, will be based on records used for the body of the report. They
won’t take into account records used for additional headers or additional footers.
66 U S E R ’ S G U I D E
PART 3: GATHERING DATA
Part 3: Gathering Data
This portion of the documentation describes the structure of data for Microsoft
Dynamics GP, and explains how to gather data from various tables for use in
reports. The following is a list of the topics discussed, along with a brief explanation
of each:
• Chapter 11, “Data Storage,” explains how data is stored in Microsoft Dynamics
GP.
• Chapter 12, “Table Relationships,” explains how to create and use table
relationships to gather data to use in a report.
• Chapter 13, “Virtual Tables,” describes virtual tables and how to use them for
reports.
68 U S E R ’ S G U I D E
Chapter 11: Data Storage
This portion of the documentation describes how data is stored in Microsoft
Dynamics GP. It also describes how to determine which tables you need to use to
gather the data for your report. Information is divided into the following sections:
• Terminology
• Table names
• Table types
• Table groups
Terminology
The following terms describe the basic parts of a database. You should become
familiar with these terms to better understand how the accounting system stores
data.
Fields A field represents one category of information that can be stored in a table,
such as a customer name or a customer address. For instance, if you were to track
customer names and addresses, you could use the following fields:
Fields
Records A record is made up of one instance of each field in a table. All of the
records in a table contain the same fields (categories of data). For keeping track of
customer names and addresses, think of a record as one row in a table containing
the information. Each row (record) contains the information for one customer.
USER’S GUIDE 69
PA RT 3 G A T H E R I N G D A TA
Table
For instance, to locate a particular customer in the customer name and address
table, you could search the table alphabetically using the customer name column. In
this case, the customer name field is used as the key.
Key
The following example shows how a database application could store information
for customer records in a table:
Fields
Key 1 Customer ID Customer Address State
City
Key 2 Name
Table
70 U S E R ’ S G U I D E
C H A P T E R 1 1 D A T A S T O R A G E
This table has five fields: Customer ID, Customer Name, Address, City, and State. It
also has four records, each containing one Customer ID, Customer Name, Address,
City, and State field. The table has two keys. The first key is composed of the
Customer ID field. Because no two customers can have the same Customer ID, this
key ensures each customer is uniquely identified. The second key is composed of
the Customer Name field. This key allows a customer record to be easily located,
based upon the customer’s name.
Table names
You can use the Table Each table has three names: a display name, a technical name, and a physical name.
Descriptions window
to find the names of Display name The display name is the name you see in a window, such as
tables. Rebuild or Pathnames.
Technical name The technical name is used internally to refer to the table.
Physical name The physical name is the name under which the table is stored
by the operating system or database.
The following table lists three names for one of the tables that stores account
category information.
Table types
To work with the Microsoft Dynamics GP database, you need to know some specific
information about tables in the database. Most of the information you’ll need to
access when creating reports will be stored in one of the following types of tables.
Knowing which type of table contains the information you want will help you find
the data you need.
Setup tables contain all the default settings and module options you’ve specified
in the setup windows for each series.
Master tables contain all the permanent data about your business. These may
include information about accounts, vendors, customers, items, and so on.
Open tables contain posted transactions for the current year, of which some may
be unpaid. Information in open tables is moved to history tables when the
transactions are paid.
USER’S GUIDE 71
PA RT 3 G A T H E R I N G D A TA
Table groups
To create a report, you need to decide which tables data will come from. If all the
data for your report is stored in a single table, you can select the table as the main
table for the report and begin creating your report.
If a single table doesn’t contain all the data you need for your report, you must
choose one table as the primary table, and then link additional tables to it. You can
select either the table that contains the majority of the fields for your report or the
table that contains the most general information as your main table. Once you’ve
selected a main table, link other tables to that table as needed.
The table types described in Table types on page 71 – setup, master, work, open and
history – are actually table groups. These table groups are actually composed of
information stored in several separate tables. For example, the General Ledger
Transaction Work Table is a table group, made up of the following tables:
Technical table names are shown above in parentheses. General information about
each transaction, such as the audit trail code and date, are stored in the Transaction
Work (GL_TRX_HDR_WORK) table, and transaction amounts are stored in the
Transaction Amounts Work (GL_TRX_LINE_WORK) or Transaction Clearing
Amounts Work (GL_TRX_Clearing_WORK) table, depending upon whether you’ve
entered a standard transaction or a clearing transaction.
Transaction Audit
Transaction
Transaction Clearing Trail
Amounts
Work Amounts Code
Work
table Work Temporary
table
table table
In some cases, a table group will contain only one table. For many system tables, the
table group is made up of a single table with the same name as the table group.
You can use the Software Development Kit (SDK) to find additional information about
tables in Microsoft Dynamics GP.
72 U S E R ’ S G U I D E
Chapter 12: Table Relationships
Table relationships allow the Report Writer to gather data from related tables and
use the data in a single report. Information about table relationships is divided into
the following sections:
For example, a relationship could be defined between the Sales table and the
Customer List table, based upon the Buyer Name field in the Sales table and the
Customer Name field in the Customer List table.
The following illustration shows the differences between one-to-one and one-to-
many relationships.
Customer_Master Customer_Info
Cust_ID Name Cust_ID City State
one-to-one 0001 Greg Wilson 0001 Valhalla NY
relationship 0002 Pam Anderson 0002 Indianapolis IN
0003 Jose Martin 0003 Phoenix AZ
Customer_Master Invoice_Data
Cust_ID Name Invoice_ID Cust_ID Invoice_Total
one-to-many 0001 Greg Wilson 31-1964 0001 223.75
relationship 0002 Pam Anderson 65-1296 0003 658.20
0003 Jose Martin 77-4538 0001 439.50
USER’S GUIDE 73
PA RT 3 G A T H E R I N G D A TA
The Customer_Master table is the primary table in both examples. In the one-to-one
relationship, there can be only one record in both the Customer_Master and
Customer_Info tables with the Cust_ID 0001. In the one-to-many relationship, there
can be only one record in the Customer_Master table with the Cust_ID 0001, but
there can be multiple invoices associated with that Cust_ID in the Invoice_Data
table.
You do not need to specify the type of relationship when you use the Table
Relationship Definition window to define a relationship between two tables. The
Report Writer automatically chooses the appropriate type of relationship based
upon the fields you use to link the tables. It is still important to understand
relationship types because the type of relationship between tables will affect the
type and quantity of data that you can use in your report.
Use the following procedure to access the Table Relationship Definition window
and define a new relationship. As an example, a table relationship will be created
between the Sales Transaction Work (SOP_HDR_WORK) table and the Record
Notes Master table. This table relationship allows the record-level note for an
invoice to be printed on the invoice.
74 U S E R ’ S G U I D E
C H A P T E R 1 2 T AB L E R E LA T IO N S H IP S
If you are defining a one-to-many relationship, selecting a key that places records from
the secondary table in the desired order will optimize performance.
USER’S GUIDE 75
PA RT 3 G A T H E R I N G D A TA
If the key contains multiple segments, you don’t need to select a corresponding
primary table field for each key segment. However, the key segments for which
you do select corresponding fields must be consecutive key segments. For
example, if a key has four segments, you could select corresponding fields for
the first two segments, but not for the first and third segments only.
If the secondary table’s key upon which this relationship is based allows
duplicates, the relationship will be one-to-many, and Multiple Records will
appear in the Relationship Type field.
If the selected secondary table’s key doesn’t allow duplicates, and you select a
corresponding field for each key segment, the relationship type will be one-to-
one, and One Record will appear in the Relationship Type field. If you select a
corresponding field for only some of the key segments, the relationship type
will be one-to-many, and Multiple Records will appear in the Relationship Type
field.
To change the primary table field you’ve selected, simply choose a different
field from the drop-down list. To deselect fields you’ve selected and not replace
them with different selections, click Clear.
76 U S E R ’ S G U I D E
Chapter 13: Virtual Tables
Virtual tables are special types of tables that allow data stored in separate tables to
be read as if it had been stored in a single table. Information about virtual tables is
divided into the following sections:
A virtual table is composed of member tables, member fields, and member keys. A
virtual table simplifies gathering data from the member tables, because it contains
the information about how the tables are linked together. The fields in the virtual
table are selected from the member tables, and typically are a subset of all the fields
available in those tables. The keys for the virtual table are selected from the primary
table’s keys.
You can’t create virtual tables with the Report Writer. They must be created by the
application developer.
USER’S GUIDE 77
PA RT 3 G A T H E R I N G D A TA
When you specify the primary table for a report, any virtual tables that exist for the
application will be included in the list of available tables. They are indistinguishable
from standard tables, so you can use them the same way you would use standard
tables. If necessary, you can create a table relationship that links an existing
standard table to a virtual table defined in the dictionary.
78 U S E R ’ S G U I D E
PART 4: MODIFYING REPORTS
Part 4: Modifying Reports
This portion of the documentation contains information about how to make
modifications to existing reports in the accounting system. The following topics are
discussed:
• Chapter 14, “Selecting a Report to Modify,” explains how to select and create a
modified report.
• Chapter 15, “Viewing a Modified Report,” describes how to view a report after
you have made modifications to it.
80 U S E R ’ S G U I D E
Chapter 14: Selecting a Report to Modify
Much of the work you do with the Report Writer will be modifying existing reports
in the accounting system to better meet the needs of your business. Before you can
make modifications, you must first locate the report you want to modify.
Information about selecting reports to modify is divided into the following sections:
In this example, the report name is “SOP Blank Back Order Form”.
A copy of the report you selected to modify was added to the Reports dictionary,
allowing you to make modifications to it. In Part 8, Storing and Accessing Reports,
you will learn more about how modified reports are stored and accessed.
USER’S GUIDE 81
PA RT 4 M O D I F Y I N G R EP O R T S
You can also click the Modify button to open the current report in the Report Writer.
82 U S E R ’ S G U I D E
Chapter 15: Viewing a Modified Report
After you have made modifications to a report, you will want to print the report to
verify its appearance. How the data for the report is generated determines how you
can display the report. Most reports read data directly from tables in the database
for the accounting system. However, some reports retrieve their data from special
“temporary” tables that are created by the accounting system. Reports that read
data directly from tables in the database can be viewed and printed from within the
Report Writer. Reports that use temporary tables cannot, because the Report Writer
has no way to add data to temporary tables.
If you have selected the modified report, but the Print button is disabled, the report
uses temporary tables. This means you can’t print the report from within the Report
Writer, and must return to the accounting system to print the report. This is
described in Viewing from the application.
USER’S GUIDE 83
PA RT 4 M O D I F Y I N G R EP O R T S
Reports printed from within the Report Writer may not have exactly the same
appearance they would printed from the accounting system. Some of the
differences when reports are printed from the Report Writer include:
• No legend values will be included on the report, because these must be passed
in by the application.
Complete the following procedure to specify that a modified report should be used.
84 U S E R ’ S G U I D E
C H A P T E R 1 5 VI EW IN G A M O D IFI ED R EP O RT
If you later wanted to use the original version of the report, you would mark the original
report instead.
After you have set access to the modified report, print it as you typically would. Be
sure the user printing the report is assigned to the appropriate set of modified/
alternate forms and reports. For more information about printing reports, refer to
Part 6, Printing and Mailing Reports.
USER’S GUIDE 85
86 U S E R ’ S G U I D E
Chapter 16: Common Modifications
Modifying existing reports is the most common task performed with the Report
Writer. This portion of the documentation describes some of the common
modifications, provides information about how to perform them, and describes
where you can access reports that have already been modified. Information is
divided into the following sections:
You can make most layout modifications using the tools in the Toolbox and the
display options in the Drawing Options window. Both are described in Chapter 4,
“Report Layout.”
Some reports that are included with Microsoft Dynamics GP are text reports, so
fewer tools and drawing options will be available. You can change a report to be a
graphics report, and all of the tools and drawing options will be available to modify
the layout.
Graphics reports can take longer to print than text reports, so if a report is used to print
large quantities of information, you may want to continue using a text report.
USER’S GUIDE 87
PA RT 4 M O D I F Y I N G R EP O R T S
Adding fields
If the tables that contain the necessary fields are already part of the report, adding
fields to the report layout is as simple as dragging them from the Toolbox to the
Layout window. Just select the appropriate table in the Toolbox and drag the fields
to the appropriate section of the report layout.
If the necessary tables aren’t linked to the tables already used for report, you will
need to link them. Linking tables is described in Creating a new report definition on
page 15. If the appropriate table relationships aren’t set up between the tables you
need to link to your report, you will need to create the relationships. This is
described in Chapter 12, “Table Relationships.”
Removing fields
If a report contains fields you don’t need, you may want to remove them from the
report layout. To ensure that the report continues to work properly, we recommend
that you don’t remove fields from the report. Rather, we suggest that you set the
Field Options for the report to make the field invisible.
Refer to the VBA Developer’s Guide for complete information about using VBA
with the Report Writer.
88 U S E R ’ S G U I D E
C H A P T E R 1 6 C O M M O N M O D I F I C A T I O N S
Reports Library
The Reports Library is a special area of the Microsoft Dynamics web site that
contains reports which have already had common modifications made to them.
Most of the reports available are graphic reports. You can access the Reports Library
at the following address:
https://mbs.microsoft.com/customersource/support/downloads/reportslibrary/
Browse the Reports library and download the reports you want. Most of the reports
in the Reports Library are modified versions of existing reports. To install a report
from a package file, follow the procedure described in Importing a package file on
page 148. After you have used the Customization Maintenance window to install
the reports, use the Alternate/Modified Forms and Reports window to provide
access to them. Setting security for modified reports is described in Chapter 31,
“Accessing Reports.”
USER’S GUIDE 89
90 U S E R ’ S G U I D E
PART 5: GLOBAL MODIFICATIONS
Part 5: Global Modifications
The Report Writer also allows you to make changes that will affect all of the reports
in an application. This portion of the documentation provides detailed information
about the various global resources you can modify in Microsoft Dynamics GP. The
following topics are discussed:
• Chapter 17, “Data Types,” describes data types and how they control character-
istics of fields.
• Chapter 18, “Formats,” describes how formats are used to control how data
appears when printed on reports.
• Chapter 19, “Global Fields,” explains how to examine global fields in the
accounting system.
• Chapter 22, “Tables,” describes how to view information about tables in the
application.
92 U S E R ’ S G U I D E
Chapter 17: Data Types
Data type resources specify the characteristics of all fields used in an application. If
you want to change the characteristics of a field, you need to change its
corresponding data type. Keep in mind that a single data type can be used by
multiple fields. When you change the data type, you change the characteristics of all
the fields that use it. Information about data types is divided into the following
sections:
The data type’s name appears at the top of the window. The Control Type field
specifies the function of the data type, indicating how it will display and store data.
The other fields in the window specify the additional characteristics of the data
type. The following sections describe the data type characteristics you can change
with the Report Writer.
Keyable length
The keyable length is the number of characters that can be displayed in a field that
uses this data type. Control types such as currency, integer, and string have a
keyable length. You can use the Report Writer to change the keyable length. For
example, you may want to increase the keyable length for the STR10_Phone data
type to allow the user to enter more digits. The following table lists control types for
which you can set the keyable length.
USER’S GUIDE 93
PA RT 5 G L O B A L M O D I F I C A TI O N S
Static values
Certain control types allow you to specify static values for the data type. Static
values are any text or pictures associated with a data type that are displayed by a
field using that data type. For example, the text on a push button and the items in a
list box are static values. To view the static values for a data type, click the Static
Values lookup button.
The following table lists the control types that use static text values which can
appear on reports.
The Static Text Values window is used to specify the static text for drop-down lists,
list boxes, and visual switches.
To edit a static text value, select it in the Static Text Values list. Make the appropriate
changes in the New Value field, then click Replace.
Format
A format contains extra characters, spacing, and attributes that can be applied to a
data type when data is printed on a report. Refer to Chapter 18, “Formats,” for more
information.
94 U S E R ’ S G U I D E
Chapter 18: Formats
Formats are the extra characters, spacing and attributes that can be applied to a data
type to format data when it is displayed or printed on a report. For example, a
string data type for a phone number can have a format applied to it so a field using
the data type will print a phone number as (555) 123-4567 instead of 5551234567.
Formats are stored as separate resources, but are applied to data types to help
define how information is displayed. A single format resource can be used by
several data types. Perhaps the easiest way to understand what formats are is to
view them as data “masks” that simply change the look of the information in a field
without changing the actual information itself. Information about formats is
divided into the following sections:
• Opening a format
• Formatting options
• Format string
Opening a format
To open a list of formats, choose Formats from the Resources menu. The Formats
window will appear. To create a new format, click New. To open an existing format,
select one in the list and click Open. The Format Definition window will appear, as
shown in the following illustration.
Each format has a name. Typically, the name indicates the data type the format is
applied to. For instance, the name STR_Employer_ID_Number indicates a format
that will be applied to a data type used for an Employer ID number.
Formatting options
You can use several formatting options to change how specific types of data will
appear. You can use them to specify the following characteristics:
USER’S GUIDE 95
PA RT 5 G L O B A L M O D I F I C A TI O N S
Numeric formats
Decimal Digits Number of decimal places (0 to 5).
Negative Symbol The operating system setting, a minus sign, the letters CR, or
parentheses.
Alignment Number is left-, center-, or right-aligned.
Fill Unused spaces are filled with asterisks, zeros, or spaces.
Unsigned If marked, the negative symbol won’t be displayed.
Show Thousands If marked, the field will show thousands separators in the number.
Separator
Show Percent Sign If marked, the field will show the percent sign.
Currency formats
Decimal Digits Number of decimal places (0 to 5).
Negative Symbol The operating system setting, a minus sign, the letters CR, or
parentheses.
Alignment Number is left-, center-, or right-aligned.
Fill Unused spaces are filled with asterisks, zeros, or spaces.
Unsigned If marked, the negative symbol won’t be displayed.
Show Thousands If marked, the field will show thousands separators in the number.
Separator
Relative Decimal If marked, the number of decimal digits selected is added to the number
Position in the operating system setting. The total can be up to 5 decimal digits.
Show Currency If marked, the currency symbol specified in the operating system settings
Symbol is displayed.
Format string
The Format Definition window allows you to specify a format string for string and
composite data types.
String formats
Format strings are used with string data types to add static elements to a field, such
as parentheses or static text. The Report Writer uses the capital X as a placeholder to
represent alphanumeric characters that will appear in the field. All other characters
will be displayed as you type them.
96 U S E R ’ S G U I D E
C H A P T E R 1 8 F O R M A T S
Example 1
For instance, suppose you’re using a specific data type to store information entered
in phone number fields. This Phone_Number data type uses a format and a format
string to determine how phone numbers will appear on a report:
The Xs are placeholders indicating where the digits will be displayed, while the
parentheses and dash are displayed just as you typed them. Also note that a
lowercase x is used in the “ext.” abbreviation in the second format string. Only
uppercase Xs are treated as placeholders, so the lowercase x is displayed in the field,
instead of being replaced when data is entered.
Static characters in a format string aren’t actually stored with the data in the table. This
allows you to change the format string without affecting how data is stored.
Composite formats
A format string is used with a composite data type to indicate the size and order of
the components of the composite, and to add static elements, such as parentheses or
static text. The numeric characters 1 through 9 are used to represent the characters
of each component of the composite. All other characters will be displayed just as
you type them.
Not all composites use a format string. Some composite fields, such as the Microsoft
Dynamics GP Account Number, have their format defined through program code.
Example 2
The following example shows the use of a format for a standard composite. A
composite must have a format and a format string. This composite contains three
parts, as indicated by the format string.
USER’S GUIDE 97
98 U S E R ’ S G U I D E
Chapter 19: Global Fields
Fields represent the individual pieces of information in an application. They can
appear in windows, be stored in tables, and appear on reports. Each field uses a
data type to specify its characteristics. Information about global fields is divided
into the following sections:
You can also open the Global Field Definition window from the Layout window.
Choose the name of a table in the Toolbox to display the fields from that table. Select
a field name in the list and click Open.
USER’S GUIDE 99
100 U S E R ’ S G U I D E
Chapter 20: Pictures
Pictures are typically used to display large graphics and logos in reports. The
Report Writer can convert Windows metafiles to a form that can be stored in the
picture library. Pictures up to 32K in size can be stored. Pictures are stored only once,
but can be placed in several reports by using the picture tool from the Toolbox in the
Layout window.
2. Click in the layout area where you want the picture to appear.
After you click in the layout area, the Pictures window will appear, allowing
you to select a picture to paste into the layout.
You can paste a picture directly into the report layout, bypassing the step of adding
the picture to the picture library. Simply copy the picture to the Clipboard and
choose Paste from the Edit menu to paste it into a report layout. You’ll be asked to
name the picture. The picture will appear in the layout and will be added to the
picture library automatically.
• In the Report Writer, the graphic will become a bitmap. To find out how the
graphic will appear when printed, try printing it from a “paint” application
such as Windows Paint.
• If you will be using a non-PostScript printer, use a black and white image. On
these printers, any non-white pixels will be printed as black.
• Make the graphic as large as possible, staying within the 32k limit. This allows
the graphic to contain maximum detail. When you add the graphic to a report,
it will be very large. Scale the graphic down to the desired size.
For example, the following illustration shows the Microsoft logo that was
added to a report in the Report Writer. The logo is black and white, and is 1580
pixels wide and 267 pixels tall. After adding the logo, it appeared at full size.
After the logo was added to the report, the resize handles on the graphic were
used to reduce the size of the illustration to 2 inches wide, or 144 pixels. This is
shown in the following illustration.
You can use the horizontal and vertical size indication in the Toolbox to
maintain the aspect ratio of the logo when you reduce its size. For example,
when the Microsoft Business Solutions logo was reduced from 1580 to 144
pixels wide, the corresponding height was reduced from 267 to 25 pixels.
102 U S E R ’ S G U I D E
Chapter 21: Strings
A string is a sequence of up to 79 characters that doesn’t contain carriage returns.
Strings are used throughout the accounting system for window names, field
prompts, static text values, and text that appears in reports. Information about
strings is divided into the following sections:
• Using strings
• Modifying a string
Using strings
The strings resource allows you to update all occurrences of a string in one step
instead of changing the same string in each place it occurs.
For example, to change all occurrences of the words “Customer Name” to “Client
Name,” you could select the Customer Name string and change it to Client Name
instead of changing each individual text value.
Note that changing a string with the Report Writer will change it only for reports. The
string won’t be changed in any windows in the accounting system. To change strings in
windows, you must use the Modifier.
Modifying a string
Choose Strings from the Resources menu. The Strings window will open, allowing
you to select the string to edit.
The Microsoft Dynamics GP dictionary contains several thousand strings. The Strings
window may take a few moments to open.
• Table elements
• Keys
• Key segments
• Key options
• Segment options
Table elements
Each table has several names, a series, database type, table fields, keys, key options,
segment options, and table relationships. Use the Table Definition window to view
information about tables.
You can also use the Resource Descriptions tool to view information about tables.
Names
Three names are required for each table. The table name is the name that is used in
scripts to refer to the table.
The display name is the name that appears when the name of the table is displayed
on the screen in an application.
The physical name is the name under which the table is stored by the operating
system or database. The appropriate extension, if required, is added automatically.
Table series
The table series groups related tables in the application together using series
categories like Sales, Financial, and System.
Database type
Tables can use the following database types: c-tree Plus, Pervasive.SQL, and
Microsoft SQL Server. If the setting Default is used, the application will determine
which database type to use at runtime, based upon several system settings
Table fields
These are the fields that are stored in the table. The Record Size field in the Table
Definition window contains the total size of each record in the table.
Table relationships
Table relationships link related tables that share common information. Table
relationships are required to allow the Report Writer to access information from
multiple tables for a single report. Refer to Chapter 12, “Table Relationships,” for
more information about creating and using table relationships.
Keys
A key is a field or combination of fields in a table used to sort and locate specific
records in the table. Typically, the value of the key field or fields is unique for each
record in a table so a specific record can be located. You will use the keys for a table
when you specify how report information is sorted. You will also use keys when
you create table relationships to link related tables together.
Key segments
The Key Definition window shows the fields that make up the keys used to sort,
store, and retrieve records in each table. Each field in a key is referred to as a key
segment. Each table can have multiple keys, and each key can have multiple
segments.
For example, a customer table typically would have two keys defined for it. One
key could contain the Customer Name field, because this is the field a user would
most likely use to search for a record. However, a customer name may not be
unique. For instance, there may be more than one “John Smith”. To avoid this
problem, each customer could be assigned a unique customer ID. A second key
composed of the Customer ID field could be added to the table. This key would
uniquely identify customers, even if they have the same name.
The Key Segments list displays the list of fields that will be used as segments in the
key. Records will be sorted primarily according to the first key segment. Records
that are identical for the first key segment will be sorted again by the second key
segment. For example, if the Key Segments list contains two segments:
[last_name, first_name], in that order, records will be sorted primarily by the
last name, and records with the same last name entry would be sorted again by the
first name.
Key options
The database type specified for a table determines which sets of key options are
available for each key. The following key options are important to understand in the
Report Writer:
Duplicates Specifies whether multiple records in the table can have the same key
value. If this option is marked, new records that have the same key values as
records already in the table can be saved. If the option isn’t marked, new records
with the same key values as existing records won’t be saved.
When you create a table relationship based a key that allows duplicate records, you are
creating a one-to-many relationship.
Create Index If this option for SQL tables is marked, an index in the SQL
database will be created for the table based upon this key definition. The index
contains a copy of the data in the key’s key segments and pointers to the associated
records in the table. An index allows data to be retrieved from the table more
quickly.
• Unique Marking this option ensures that the records in this table will have
unique values for this key.
• Clustered Marking this option sorts and physically stores the data in the
table according to the order defined by this key. For example, the Customer
table has a key based upon the Customer Name field. If this key was based on
the Customer Name field, and the Clustered option were marked for the key,
the data in the Customer table would be physically stored in the order indicated
by the key. Only one key per table can have the Clustered option marked.
106 U S E R ’ S G U I D E
C H A P T E R 2 2 T A B LE S
Segment options
The segment options specify how the key will handle the contents of the selected
key segment.
Descending This option specifies the order in which the records will be sorted. If
the option is marked, records will be sorted in order of highest value to lowest (3, 2,
1 or c, b, a). If the option isn’t marked, records will be sorted lowest to highest (1, 2,
3 or a, b, c).
Ignore Case This option is available only if the selected segment is a string field.
The Ignore Case option specifies whether case determines how the table will be
sorted. If the option is marked, the case of the data in the key segment won’t affect
the sorting process. If the option isn’t marked, uppercase characters will have a
lower value than lowercase characters for sorting purposes. This option does not
apply for tables that use the SQL database type.
The following table shows how a set of last names would be sorted, depending
upon how the Ignore Case option is marked.
• Chapter 23, “Printing Reports,” describes how to print modified and custom
reports.
• Chapter 24, “Mailing Reports,” describes how to mail reports you have created
to other users.
• Chapter 25, “Exporting Data,” explains how to use reports to export data to
external files for use in other applications.
110 U S E R ’ S G U I D E
Chapter 23: Printing Reports
After you have created or modified a report, you will want to print and use the
report output. Information about printing reports is divided into the following
sections:
Refer to the documentation for each module for detailed information about printing
specific reports.
Refer to the online help for each report options window for more information about
setting options for a specific report.
You can print custom reports from two places within Microsoft Dynamics GP. The
first is the Custom Report List, which is accessed from the Administration group in
the Navigation Pane. This report list will contain all of the custom reports the
current user has been granted access to. The second location is the Custom Reports
window. To print custom reports through this window, complete the following
procedure.
112 U S E R ’ S G U I D E
C H A P T E R 2 3 P R I N TI N G R E P O R T S
Report security
To be able to print a report from within the Report Writer, you must have been
granted access to the report. This includes any custom reports the user has created.
If access isn’t granted, the user will encounter a “privilege” error when they try to
display the report. Refer to Accessing modified reports on page 142 and Accessing
custom reports on page 143 for details about granting access to reports.
If a user will be creating or modifying numerous reports in the Report Writer, you may want
to assign the user the POWERUSER security role. This role grants them access to all of the
custom reports they are creating.
Temporary tables
Most reports read data directly from tables in the database for the accounting
system. However, some reports retrieve their data from special “temporary” tables
that are created by the accounting system. Reports that read data directly from
tables in the database can be viewed and printed from within the Report Writer.
Reports that use temporary tables cannot, because the Report Writer has no way to
add data to temporary tables.
If you have selected the modified report in the Report Writer window, but the Print
button is disabled, the report uses temporary tables. This means you can’t print the
report from within the Report Writer, and must return to the accounting system to
print the report.
Report differences
Reports printed from within the Report Writer may not have exactly the same
appearance they would printed from the accounting system. Some of the
differences when reports are printed from the Report Writer include:
• No legend values will be included on the report, because these must be passed
in by the application.
• Mail connectivity
• Attachment types
• Mailing a report
Mail connectivity
The Report Writer allows you to mail reports using standard e-mail applications.
Microsoft Dynamics GP supports Microsoft’s Mail Application Program Interface
(MAPI), which allows you to send mail to other users with a MAPI mailbox.
Microsoft Dynamics GP also supports connecting to a mail server through
Exchange Web Services. If your workstation has a MAPI-enabled e-mail client, or
you have configured the Microsoft Dynamics GP connection to Exchange Web
Services, then you can mail reports from the Screen Output window.
Attachment types
Reports you send as e-mail attachments can be in text format or PDF (Portable
Document Format) format.
Text format
All reports can be mailed as a text attachment. The text representation of the report
generated by the Report Writer will match the report layout as closely as possible.
However, complex report layouts may not have an ideal appearance. If you want to
use the text attachment for reports you e-mail, we suggest making a modified or
custom report that is simplified and designed to be represented with text.
PDF format
If you have the PDFWriter printer driver installed (included with Adobe Acrobat 5
and earlier), or Acrobat Distiller from Acrobat 6 or later, you can also mail the report
as a PDF attachment. Information about Adobe Acrobat is available at
www.adobe.com. PDF provides a very accurate representation of the report, and
works well for graphics reports.
Mailing a report
To mail a report to another user, complete the following procedure:
If you chose a text attachment, the report will be sent with a .TXT extension. The
user receiving the report can use the application that’s associated with this
extension to view the file. If you chose a PDF attachment, the report can be read
with Adobe’s Acrobat Reader.
116 U S E R ’ S G U I D E
Chapter 25: Exporting Data
The Report Writer can be a useful tool for exporting data from the accounting
system to external files that can be used in other applications. For example, a list of
customer names and addresses could be exported to a file for use with word
processing software as a mailing list. Information about exporting data is divided
into the following sections:
• Export formats
• Creating reports for exporting
Export formats
The following export formats are available from the Report Writer:
Format Description
Text file The report will be saved as text without any formatting. This option
should be used when the application to which you’re converting the
document is unable to read any of the other file formats.
Tab-delimited This is the tab-separated ASCII character format used by programs
such as Microsoft Excel®.
Comma-delimited This is the standard comma-separated ASCII character format often
used by database programs.
HTML The report will be saved in HTML format to be viewed in a web
browser.
PDF File This format is available if you have the Acrobat PDFWriter print
driver or Acrobat Distiller installed. PDF (Portable Document Format)
files can be read using the Acrobat Reader software available from
Adobe.
You must also add the ExportOneLineBody=TRUE setting to the defaults file. This
setting causes the items in the report body to be exported to a single line in the
export file. The following illustration shows the output file when the report above is
exported to a comma-delimited file.
118 U S E R ’ S G U I D E
PART 7: REPORT DESIGN
Part 7: Report Design
Good report design has several benefits such as making reports generate more
quickly, and making them more useful for the intended audience. The following
topics are discussed:
• Chapter 27, “Preprinted Forms,” explains how to design reports to work with
preprinted forms.
• Chapter 28, “Groups,” describes how to use groups on your reports to organize
information.
• Chapter 29, “Checks, Invoices, and Labels,” describes special design consider-
ations when creating or modifying these types of reports.
120 U S E R ’ S G U I D E
Chapter 26: Report Design Guidelines
This portion of the documentation contains information about designing reports to
improve their utility and optimize their performance. Information is divided into
the following sections:
• Report design
• Optimizing reports
Report design
A report is a tool that turns data into useful information. Careful design can greatly
improve the utility of the reports you create. Keep the following guidelines in mind
when creating reports.
Purpose
Before you begin creating a report, clearly state what the purpose of the report is.
State who will use the report and what they will use the report for. This will help
you determine what information is needed for the report, and which tables the
information will come from. This process can also provide an early indication that a
report is becoming too complex, or is trying to meet several needs that would be
better met by separate reports.
Name
The report’s name is the primary way that users will be able to find the report. Be
sure the name is descriptive, and that the report is assigned to a an appropriate
series in the accounting system.
• Consider leaving enough room in the margin so the report can be bound.
• Limit the number of fonts used for the report. Though you can use any fonts
installed on the current workstation, it’s best to limit the number of fonts used
to two.
• Use common fonts. If you will be distributing reports to other users, remember
that they may not have the same set of fonts installed that you did when you
created the report. If a font isn’t available, one will be substituted, but the report
may not have the appearance you intended.
• Graphic elements, such as lines and boxes, can help group the items in a report
and make it easier to read.
Optimizing reports
How you design and set up a report can directly impact the performance of the
report as it’s printed. Use the following guidelines to optimize the reports you
create.
Page layout
An efficient page layout can improve performance by reducing the total number of
pages used to print the report. Don’t use a landscape layout unless the information
on the report requires the wider format. Using columns can also increase the
amount of information on a page.
122 U S E R ’ S G U I D E
Chapter 27: Preprinted Forms
You may have existing forms that are already printed, but that you would like to
have filled out by the Report Writer. These are typically referred to as preprinted
forms. The most common preprinted forms are checks and invoices, which are
described in Chapter 29, “Checks, Invoices, and Labels.” Information about setting
up your own preprinted forms is divided into the following sections:
Preprinted Form This setting allows you to remove the built-in margin from the
report layout, so you can print fields as close to the edge of the form you’re using as
your printer permits. When this setting is marked, items are printed on paper
exactly where you placed them in the layout.
Six Lines Per Inch This setting allows you to specify that exactly six lines of text
will be printed in each inch of space on a text report. Many preprinted forms are
based on six lines per inch, so this makes it simpler to match the report layout to the
preprinted form.
This setting also prevents fonts from becoming too small when printed in
compressed text. The font will shrink in width so that each line of the report will fit
in the space available, but doesn’t shrink in height so that more than six lines of text
will be printed in an inch.
First Page Header and Last Page Footer These settings typically should be
unmarked when you are using preprinted forms.
Report layout
Careful planning is required when creating a report layout for use with a preprinted
form. The following hints that can help ensure success.
Page size
Keep in mind the total size of the page when you’re creating the layout for a
preprinted form. A report layout is based on 72 points per inch, and each pixel on
the report layout represents one point. If you are developing a preprinted report for
standard US Letter size page, the total size for each page of the report must be 612
by 792 points (8.5 inches by 11 inches).
Remember that there are no built-in margins for a preprinted report, so you must account for
any margins you need for your report.
To determine the total size for each page of a report, add up the sizes of each section
of the report. You can find the height of a report section by clicking the handle for
the section in the Report Layout window, and viewing the section size at the bottom
of the Toolbox.
If the total size of a page for a report is larger than the maximum page size, extra
pages will be generated when the report is printed. If a page only slightly exceeds
the maximum size, an extra blank page may appear in the printed output. If the
total size of a page for a report is smaller than the maximum page size, the report
may “creep” as it is printed. When a report creeps, information on subsequent
pages of the report will tend to move up as pages are printed.
Report sections
If the report for a preprinted form contains additional headers and footers, it’s
important to know exactly when these headers and footers will be printed. If an
additional header or additional footer is printed at an unexpected time, your report
may print extra pages or exhibit page creep. If this occurs, check each section of the
report to verify that they are printed when expected.
You can use the Records Per Report Body setting in the Header Options or Footer
Options for a section to specify the total number of times the additional header or
footer will appear for each report body printed. This setting limits the number of
times a report section can print on a specific page, and will also fill the page with the
appropriate number of empty sections to reach the number specified. This setting is
useful for reports that contain a fixed number of line items, such as invoices.
Special characters
For some preprinted reports, you may want to print special characters such as Xs.
To do this, you will need to create calculated fields that will print the appropriate
characters, based on field values for the report. Refer to Chapter 7, “Calculated
Fields,” for more information about creating calculated fields.
124 U S E R ’ S G U I D E
C H A P T E R 2 7 PR EP RI N TE D F O RM S
The horizontal and vertical alignment settings apply only to reports that have the
Preprinted option marked in the report definition. Other reports aren’t affected by
these settings.
A separate set of alignment settings for each printer you access is saved in the
DEX.INI file on each workstation, so you don’t need to type in the alignment
settings each time you print a preprinted report. Because all preprinted reports will
use the same alignment settings for the selected printer, it’s a good idea to use
consistent left and top margins for all of the preprinted reports you create. That way,
users won’t have to change the alignment settings depending on the report being
printed.
• Group overview
• Sorting for groups
• Group headers
• Group footers
• Counting items in a group
• Counting groups
• Totaling and subtotaling
• Advanced groups
Group overview
To group information on a report, you will do the following:
• Determine the items to appear in the group. Determine which table or tables
contain the information you want to appear in the group. List the fields that you
want to appear in the group, and the fields that will used to determine the
members of each group.
• Sort the report data in an order appropriate for creating the group. You need to
sort the data for the report so that the report items appear in an order that
allows them to be grouped.
• Create additional headers for each group category. Additional headers for the
report will contain the information that describes each group.
For optimal performance when printing the report, you should use an existing key
from the primary table to specify how the data for the report is sorted. However,
when you are creating groups for a report, there often isn’t a key available for the
primary table that sorts the data appropriately. This is especially true when you
want to create groups based on data in secondary tables for the report. In this case,
you must create a sort order to indicate how to sort the data for the report. This is
described in Chapter 5, “Sorting.”
Group headers
To add header information to a group, create an additional header for the report.
Refer to Chapter 8, “Additional Headers and Footers,” for more information about
creating additional headers. The additional header contains the field or fields that
each group is based on, and will be printed once for each group on the report. It also
typically contains descriptive column headers for the information that appears in
each group.
For example, the following illustration shows the layout for the User Classes report.
Notice that user information is grouped according to the User Class, and then
Account Access, and so on. An additional header is used for each group category
for the report.
Group footers
Use footers for groups to add summary information for the group, such as totals,
subtotals, or average values. To add footer information to a group, create an
additional footer for the report. Refer to Chapter 8, “Additional Headers and
Footers,” for more information about creating additional footers.
Any additional footers for a group should typically “break” on the same field as any
additional headers for the group. This keeps the headers and footers with the
group, and allows the items in the group to be counted.
When you add a field to an additional footer, it is automatically assigned the Last
Occurrence display type. If you don’t use the Last Occurrence display type, the field
will appear to be looking ahead to the next record for the report. This occurs
because the next record for the report has already been read to determine whether a
group should be considered complete.
If you place calculated fields in footers, you change their display type from Last
Occurrence to Data, so that the calculations are performed properly.
128 U S E R ’ S G U I D E
C H A P T E R 2 8 G R O U P S
For example, the Customers by State report lists all of the customers by each state.
To count the number of customers in each state, an additional footer is added that is
printed each time the State changes. A field that occurs for each customer, such as
the Customer Name is added to the additional footer, and the display type is set to
Count.
Counting groups
If you have several groups on a report, you may find it useful to count the
individual types of groups. To count the number of groups in a report, you need to
use a Control Count field.
A Control Count field is designed to count the number of times an additional footer
appears in a report. This means that the group you are counting must have an
additional footer that indicates the end of the group. Next, create an additional
footer immediately below the additional footer that indicates the end of the group.
This additional footer must contain an instance of the field on which the group you
are counting is based, and you must set the field’s type to Control Count.
For example, the Customers by City and State report groups all of the customers by
State, and then further groups them by City. To count the number of cities in each
state, an additional footer is used that appears at the end of each City group.
Another additional footer is added that will contain the City field, but with the
display type set to Control Count. This field will count the number of times the
additional footer at the end of the City group appears, which is the same as the
number of cities for each state.
The field to which you apply the Control Count display type must be the same field that the
footer immediately above the footer containing the Control Count field breaks on.
Sum fields
Fields with the Sum display type print the total of the field’s values within a group,
or within the entire report. If you add a Sum field to an additional footer for a
group, it will total the items for the group. Adding Sum fields to the report footer
will total all values for the entire report.
Advanced groups
Some groups for reports may be too complex to be implemented with the basic
additional header and additional footer capabilities of the Report Writer. If you
have the Modifier with VBA, you can use VBA (Visual Basic for Applications) code
to further control when additional headers and footers appear in a report. Refer to
the VBA Developer’s Guide for more information about using VBA with the Report
Writer.
130 U S E R ’ S G U I D E
Chapter 29: Checks, Invoices, and Labels
Checks, invoices, and labels are common reports that have layouts that require
modifications with the Report Writer. This portion of the documentation describes
the design of these reports and provides information about how the design affects
the modifications you can make. Information is divided into the following sections:
• Checks
• Invoices
• Labels
Checks
Depending on the design of the checks you are using, the check layout can be
simple, or very complex. A basic check layout doesn’t have a check stub, or has the
check stub either above or below the check. A complex check layout has a check
stub both above and below the check.
Check types
Microsoft Dynamics GP has separate check layouts for Payables Management and
for Payroll. For Payables Management, the following table lists the check formats
that are available, along with the corresponding report used for the check.
For Payroll, the following table lists the check formats that are available, along with
the corresponding report used for the check.
• Avoid editing the layout for any “Stub on Top and Bottom” check. The layout
for these checks is hard-coded to the software, which prevents most
modifications from working properly. You can make some cosmetic
modifications to these check layouts, such as adding graphics or text.
• When modifying checks, don’t move fields from one section of a report to
another. This can cause the checks to not print properly.
• Don’t remove fields from the check layout. When you’re modifying checks, use
the Report Field Options window to set a field to be invisible, rather than
removing the field from the report. Removing fields can prevent a check from
printing properly.
Invoices
Invoices are some of the most complex reports that are commonly modified. They
use several additional headers and additional footers to display line items. Invoices
must also print properly when they require only a single page or span multiple
pages.
Labels
Microsoft Dynamics GP can produce several types of labels, such as those for
customers, vendors, or employees. You can print labels by choosing Company in
the Reports menu, and then choosing Mailing Labels. The Mailing Labels window
will appear, allowing you select the labels you want to print.
When you create the report option for the mailing labels, you must select the format
to use for the labels. You can choose Continuous or Laser. If you choose Continuous,
you can select the number of labels that will be printed across the page. This value
will range from 1 to 5. If you choose Laser, the report will be printed with two labels
across each page.
132 U S E R ’ S G U I D E
C H A P T E R 2 9 C H E C K S , I N V O I C E S , A N D L A B E L S
To have labels print properly on your printer and with your label stock, you may
need to make modifications to the layouts for the reports used to print labels. The
following table lists the reports that correspond the Format and Number Across
options you can specify in the Mailing Label Report Options window.
To easily select the appropriate mailing label report to modify, print the mailing labels to the
screen, and then choose to modify the current report.
If you are using the Laser format, and want to have more than two labels across the
page, you will need to use the Divider tool to add additional columns to the report
layout.
When information is printed in columns, it will be printed from the left column to
the right column, and then down to the next row. This is shown in the following
illustration.
When setting up mailing labels the first time, it is useful to test the layout on blank
paper before you print the actual labels. It’s also a good idea to print several pages
of labels to verify that the labels aren’t creeping up or down as multiple pages are
printed. If this occurs, you will need to modify the report layout to add or remove
space from the report section containing the labels.
• Chapter 30, “Storing Reports,” explains how new and modified reports are
stored and describes two common Report Writer configurations.
• Chapter 31, “Accessing Reports,” describes how to control access to the Report
Writer and to the reports that you have created or modified.
• Chapter 32, “Packaging Reports,” explains how you can package and distribute
modifications to other users.
• Chapter 33, “Importing Reports,” describes how to import reports from another
reports dictionary into the current reports dictionary.
136 U S E R ’ S G U I D E
Chapter 30: Storing Reports
All new reports and modifications you make with the Report Writer are stored in
the Reports dictionary. Information about storing reports is divided into the
following sections:
• Reports dictionary
• Launch file
• Report Writer configurations
Reports dictionary
All changes and additions you make using the Report Writer are stored in the
reports dictionary for the application. By storing the new and modified resources in
a separate dictionary, the integrity of the main dictionary can be maintained. For
example, the following illustration shows the dictionary for Microsoft Dynamics GP
and its associated reports dictionary.
When you access the Report Writer for the first time, all of the core resources for the
application dictionary are copied to the reports dictionary. Core resources include
strings, data types, and global fields that are used by several parts of the system.
After core resources have been copied to the Reports dictionary, the runtime engine
will look there first when it retrieves resources from the dictionary. Any additions or
modifications you make to core resources will be stored in the reports dictionary.
The modifications will be accessed automatically when you use Microsoft
Dynamics GP.
When you create a new report, or select a report to modify, that report is copied into
the reports dictionary. Any modifications or additions you make to that report will
be stored only in the reports dictionary. To access the modifications you make to
reports, you must set security in the accounting system to access the modified
report. This is described in Chapter 31, “Accessing Reports.”
Launch file
When you start Microsoft Dynamics GP, you use the launch file that tells the runtime
engine which dictionaries will be used by the application. The launch file stores the
location of the application dictionary as well as the names and locations of any
forms or reports dictionaries.
By default, the reports dictionary is named Reports.dic and is located in the Data
folder for the Microsoft Dynamics GP installation. You can use the Edit Launch File
window to change the name or location of the reports dictionary.
To update the launch file, you must have appropriate user privileges. Typically, this means
being part of the Administrators group or the Power Users group. On operating systems
with User Account Control (UAC) active, it means launching Microsoft Dynamics GP with
Administrative privileges.
To display this window, choose Microsoft Dynamics GP >> Tools >> Setup >>
System >> Edit Launch File.
Be sure that you have correctly specified the name and location of the reports dictionary.
Otherwise, the accounting system may not start properly.
• Each workstation can have its own unique set of new and modified reports.
• New and modified reports can’t easily be shared by multiple users. This issue
can be partially resolved by making modifications on one workstation and then
distributing the modifications to other workstations.
• The same new and modified reports are available to all users.
• Any new reports or modifications users make are available to other users.
138 U S E R ’ S G U I D E
C H A P T E R 3 0 S T O R I N G R E P O R T S
• Only one user can access the Report Writer at one time.
The configuration you choose depends on how many reports you want to modify,
whether individual users will be creating new reports or modifying existing reports,
and how you want to share new and modified reports among users.
Complete the following procedure to specify that a modified report should be used.
If you later wanted to use the original version of the report, you would mark the original
report instead.
142 U S E R ’ S G U I D E
C H A P T E R 3 1 A C C E S S I N G R E P O R T S
After you have set access to the modified report, print it as you typically would. Be
sure the user printing the report is assigned to the appropriate set of modified/
alternate forms and reports. For more information about printing reports, refer to
Part 6, Printing and Mailing Reports.
Be sure to activate security once you've made your selections by marking the
Security option in the Company Setup window in Microsoft Dynamics GP. When
the user chooses to display the report, the modified version of the report will be
displayed instead.
Changes made to core resources like strings and data types are seen by all users.
To open this window, choose Microsoft Dynamics GP menu >> Tools >> Setup >>
System >> Security Tasks. Name the new security task. Select the product for which
the custom report was defined. Select Custom Reports as the resource type, and
choose the series. The custom reports in the selected series will be shown. Mark the
custom reports to include in the new task.
After the task is defined, you can assign it to a new or existing security role. Any
user assigned to that role will be able to access the custom report.
Be sure to activate security by marking the Security option in the Company Setup window
in Microsoft Dynamics GP.
Modified reports
Any modifications you make to the reports for a third-party product will be stored
in a separate reports dictionary for that product. To access these modified reports,
you must select the third-party product in the Alternate/Modified Forms and
Reports window. You can then choose to use the modified version of the report.
Alternate reports
Some third-party developers create alternate reports. These are Microsoft Dynamics
GP reports that the third-party developer has enhanced and transferred to their
own dictionary. By choosing the third-party dictionary when you start the Report
Writer, you can make modifications to these alternate reports.
When using the Alternate/Modified Forms and Reports window to set access to
these reports, choose the modified version of the alternate report to display the
modifications you made. For example, the following illustration shows how you
would display a modified version of the alternate Purchase Order History Report
provided by the Purchase Order Enhancements dictionary.
144 U S E R ’ S G U I D E
C H A P T E R 3 1 A C C E S S I N G R E P O R T S
• Package files
• Exporting a package file
• Importing a package file
• Package file import/export issues
Package files
Package files are special text files that are used to deliver customizations made with
the Modifier, VBA, and the Report Writer. A developer can create a package file that
contains their customizations, move the package file to the destination workstation,
then import the customizations into the installation.
Modified forms Forms that have been customized with the Modifier.
New or modified reports Reports that have been created or customized with
the Report Writer.
VBA components User forms, code modules, or class modules created with the
VBA development environment.
To select non-contiguous items in the list, hold down the CTRL key and click the items.
Click Export. A file dialog will appear, allowing you to specify the name of the
package file. Be sure the file has the .package extension. The results of the
export operation will be displayed in the status area at the bottom of the
window.
Note that some global changes you make with the Modifier and Report Writer can’t be
included in a package file. For instance, changes to picture resources or global data types
won’t be included in package files.
148 U S E R ’ S G U I D E
C H A P T E R 3 2 P AC K AG I N G R E P O R T S
If any of the package file items contain VBA code, the user importing them must have
appropriate user privileges to update the .vba files in the Microsoft Dynamics GP
installation. Typically, this means being part of the Administrators group or the Power
Users group. On operating systems with User Account Control (UAC) active, it means
launching Microsoft Dynamics GP with Administrative privileges.
Click OK to start the import process. If any errors occur during the import
process, the Errors window will be displayed. The results of the import
operation will also be displayed in the status bar of the Customization
Maintenance window. To view the list of the last errors that occurred, click the
Errors button in the status bar.
4. Set access to any modified forms or reports that are part of the
customization.
If necessary, use the security features in Microsoft Dynamics GP to grant access
to any modified forms or modified reports that are part of your customization.
Microsoft Dynamics GP contains forms, which are groups of windows, menus and
other resources that work together for a common purpose. A form can have several
windows, but you can make customizations to individual windows with the
Modifier and VBA. When you export a form to a package file, you are exporting all
of the windows in that form, not just the windows you modified or applied VBA
code to.
This fact is important to keep in mind when you import a package file that contains
customized forms. If a customized version of the form already exists in the system
and you import another set of customizations for that same form, the original
customizations will be overwritten. This occurs even if the customizations are made
for different windows in the form.
A similar issue occurs for reports. If you’ve made customizations to a report, then
import a package that contains customizations for that same report, the existing
customizations will be overwritten.
The Import Reports capability is no longer the preferred method for transferring reports from
one reports dictionary to another. Instead, we recommend that you use package files, as
described in Chapter 32, “Packaging Reports.”
It’s important that both the source dictionary and the destination dictionary be based on
the same version of the Microsoft Dynamics GP dictionary, and that they use the same
account framework. Otherwise, reports may not be imported correctly.
Validating reports
After you have imported reports from another reports dictionary, it’s important to
verify that the report’s references to tables and other resources are still valid. To
validate a report, use the following procedure:
Message Cause
No invalid references found The report contains only valid references, so
no changes are required.
Report XXX: Report XXX references a field A field in the layout of the specified report no
that does not exist in table XXX. longer exists in the specified table.
Report XXX: Restriction XXX references a A field in the restriction definition for the
field that does not exist in table XXX. specified report no longer exists in the
specified table.
Report XXX: Expression XXX references a A table field that’s used as part of a
field that does not exist in table XXX. calculated or conditional expression no
longer exists in the specified table.
Report XXX: Field XXX in sort segment not A field in the sorting method for the
in table XXX. specified report no longer exists in the
specified table.
Report XXX: Field XXX in header is not part A field in the specified header no longer
of table XXX. exists in the specified table.
Report XXX: Field XXX in footer is not part of A field in the specified footer no longer
table XXX. exists in the specified table.
152 U S E R ’ S G U I D E
PART 9: WORD TEMPLATES
Part 9: Word Templates
This portion of the documentation contains information about producing report
output in Microsoft Word format. The following topics are discussed:
• Chapter 38, “Report Templates for Modified Reports,” describes how to create a
report template document for a report that you have modified in Microsoft
Dynamics GP.
• Chapter 39, “Word Template Generator,” explains how to use the Word
Template Generator tool to create a report template document for a report.
154 U S E R ’ S G U I D E
Chapter 34: Overview of Word Templates
In Microsoft Dynamics GP, the Report Writer is used to render the output of most
reports. Beginning with Microsoft Dynamics GP 2010, several reports can also be
rendered in Microsoft Word format. General information about Word templates is
divided into the following sections:
• Template-enabled reports
• Report definition
• Report template document
• How Word Templates are processed
• Capabilities of Word templates
Template-enabled reports
Template-enabled reports are Report Writer reports that have Microsoft Word report
template documents associated with them. When these template-enabled reports
are printed, the appropriate Microsoft Word report template document is retrieved
and used to render the output in Microsoft Word format. The Reports window in
Microsoft Dynamics GP is used to select a report that you want to define a template
for.
Report definition
A report that is rendered as a Microsoft Word document is still based on a standard
report definition in the Report Writer. The report definition is needed for things like:
Microsoft Word does not perform any of these standard report actions. It is used
only to display the report that has been rendered in Microsoft Word format.
The Microsoft Word Add-in for Microsoft Dynamics GP is used to access this report
definition information in the report template. It makes the information available so
it can be used when the layout of the report template document is defined.
Choosing Template when no report template is assigned will display the HTML version of
the report.
When you choose Template as the Report Type, the assigned Microsoft Word
document will be used to generate the output of the report. The following
illustration shows the basic process used to process the report.
Report Definition in
Microsoft Dynamics GP
XML Document
Contains Report Definition
and Data
Completed Report in
Microsoft Word
156 U S E R ’ S G U I D E
C H A P T E R 3 4 O V E R V I EW O F W O R D T E M PL AT E S
The Microsoft Dynamics GP runtime uses the report definition for the report to
generate an XML document that contains both the report definition and the data for
the report. The appropriate Microsoft Word report template document that was
created for the report is retrieved. This template document defines how the data in
the report is to be rendered. The XML and template documents are passed to the
Template Processing Engine, which combines them to produce the completed
Microsoft Word document for the report.
• Portability of the report. Any user with Microsoft Word can view the report.
Microsoft Word is not designed to have the features of a report writer. The following
is a list of the capabilities of the Microsoft Dynamics GP Report Writer rendering
engine that are not available in the reports generated in Microsoft Word format:
• No page headers or page footers in the report. All page headers and page
footers must be implemented using feature provided by Microsoft Word.
This add-in is an additional product that can be installed. It is accessed from the
main Microsoft Dynamics GP installer.
If you have installed the Microsoft Dynamics GP Add-in for Microsoft Word from a
previous release of Microsoft Dynamics GP, be sure that you remove the add-in and install
the most recent version for the current Microsoft Dynamics GP release.
After installing the Microsoft Word add-in, you access it through the Developer tab
in the Ribbon.
• To display the Developer tab in Word 2007, go to the Office menu and choose
Word Options. In the Word Options window, select the Popular category. Mark
Show Developer Tab in the Ribbon, and then click OK.
• To display the Developer tab in Word 2010, go to the File menu and choose
Options. In the Word Options window, select Customize Ribbon. In the Main
Tabs list, mark Developer, and then click OK.
The following illustration shows the group that is added to the Ribbon.
The Microsoft Dynamics GP Add-in is used to add fields, captions, and legends
from the various sections of the report to the report template layout. It is also used
to work with the data sources (report definition information) that is embedded in
the report template document.
Display options
In the Word Options window, select the Display category. Mark the following
options:
• Paragraph marks
• Hidden text
• Object anchors
Advanced options
In the Word Options window, select the Advanced category. Mark the following
options:
• Show bookmarks
• Show text boundaries
160 U S E R ’ S G U I D E
Chapter 36: Report Template Design
The report template documents that are used for rendering reports in Microsoft
Word format must conform to several guidelines so that they can be processed by
the template processing engine. The following sections describe how a report
template document is designed:
• Document structure
• Creating a report template layout with tables
• Fields, captions, and legends
• Bookmarks
• Company image
• Tips for working with report template documents
• Common report template patterns
• Making report templates read-only
Document structure
The report template document is a standard Microsoft Word document. When it is
created from with Microsoft Dynamics GP, the additional information about the
report definition is embedded into the document. The document is a single-sided,
which means that there are no left-hand or right-hand pages.
Several tables in the report template document define the overall structure. All of
the content that is displayed in the generated Word document is placed inside these
tables. The following illustration shows the structure of a report template
document.
Report Header
Report Footer
Any text that is not within one of these single-cell tables will not be included in the
generated Microsoft Word document for the report. It is common to add text to the
document in the areas outside of the single-cell tables to describe the report
template.
Body table
The body table is a table that is located after the report header table of the Microsoft
Word document. It contains the main content of the report. This includes the report
body content, any additional headers, and any additional footers.
Each report field, caption, and legend value should be in its own table cell. For
example, the following illustration shows a caption and a report field in the page
header table of a report template. Notice how each is placed in its own table cell.
162 U S E R ’ S G U I D E
C H A P T E R 3 6 R E P O R T T EM PL AT E D E S IG N
Body table
The body table is located between the report header and report footer tables in the
Microsoft Word report template document. It contains values from the Body section,
and from any additional header and additional footer sections of the report
definition.
The body table has multiple rows. The table has one row for the actual report body.
There is also one row for each additional header and one row for each additional
footer. There can also be a rows that are used for captions, such as column headers.
Typically, additional tables are used within the rows of the body table to create the layout for
the row.
A basic body table is shown in the following illustration. The first row in this body
table contains captions for the column headings. The next row contains data for an
additional header. The third row contains data from the report body. The last row
contains data for an additional footer.
The row of the body table that contains items from the report body must have a
special Microsoft Word bookmark that the template processing engine in Microsoft
Dynamics GP uses to identify this row. You can see this bookmark located on the
left side of the body row in the previous illustration. Refer to Bookmarks on page 166
for details about adding bookmarks to the report template document.
If the body table contains a row with column headers, this row of the body table
should be set to repeat as the header row at the top of each page. This is a Microsoft
Word feature that is applied to a specific row of the body table.
Adding an item
To add a field, caption, or legend, complete the following steps:
164 U S E R ’ S G U I D E
C H A P T E R 3 6 R E P O R T T EM PL AT E D E S IG N
Use the guidelines in the following table when deciding which section of the
Field List in the Custom XML Mapping pane to drag items from when you
place them in the layout of the report template.
If you place items from the field list into an inappropriate location in the report
template, their values will not appear in the generated report.
Removing an item
To remove a field, caption, or legend, complete the following steps:
To display the properties, click on the item in the document. In the Developer tab,
click Properties.
Bookmarks
Microsoft Word bookmarks are used to identify three of the tables that define the
structure of the report template document. The following table lists these
bookmarks.
Bookmark Description
StartTemplateDocumentHeaderBookmark This bookmark identifies the Page Header table. The
bookmark is placed inside the table located in the
header of the report template document.
StartTemplateSectionRepeating This bookmark is located within one row of the Body
table of the report template document. It identifies
what row of the Body table will be repeated for each
record of the report.
EndTemplateDocumentFooterBookmark This bookmark identifies the Page Footer table. The
bookmark is placed inside the table located in the
footer of the report template document.
You must define these bookmarks in Microsoft Word, and then insert them into the
report template document in the appropriate locations.
Some of the report template documents for reports in Microsoft Dynamics GP, have
bookmarks that are named StartTemplateDocumentBookmark and
EndTemplateDocumentBookmark. These bookmarks are used only for calculating page
numbers for these reports. They do not identify tables in the report template document.
166 U S E R ’ S G U I D E
C H A P T E R 3 6 R E P O R T T EM PL AT E D E S IG N
Company image
Each company in Microsoft Dynamics GP can have an image assigned that is to be
displayed on the Microsoft Word template reports. When you run the report for a
specific company, the image assigned for that company will be displayed on the
generated document. Typically, this logo is placed in the Page Header table for the
report template document. To add a company image to a report template, complete
the following steps:
Click OK.
• Get the basic report template layout working first. Do the intricate layout work
such removing extra space and aligning data values after the report template is
retrieving data and displaying it correctly.
• Press and hold the Alt key when moving table borders to prevent them from
snapping to the grid in Microsoft Word.
• Use the Design Mode that can be activated from the Developer tab to see
quickly which sections the items in the report template layout come from.
• Make regular backups of your template as you are working, in case you make a
change that you would like to revert.
Form pattern
In the form pattern, the data is displayed as a block of values for each record in the
table. The block typically contains several pairs of labels and data values that are
arranged in the block. The following illustration shows this pattern.
StartTemplateSectionRepeating
xxx xxx xx x
bookmark xx xxxxx xxxx xxxxx
Body table (single-cell)
Nested table inside the xxx xxx
Body table, with multiple xx xxxxx
rows and columns
containing the data from Report Footer table (optional)
each record.
• The Body table has another table nested in it that contains the rows and
columns that define the layout of the data.
• The captions and fields for the report are placed in the cells of the nested table.
The Body table may also have rows for additional headers and additional footers.
The Report Footer table and Page Footer table are optional in this pattern.
168 U S E R ’ S G U I D E
C H A P T E R 3 6 R E P O R T T EM PL AT E D E S IG N
Column pattern
In the column pattern, the data for the report is divided into columns, with one row
for each record in the table. A set of column headers appears at the top of each page.
The following illustration shows this pattern.
• The first row of the Body table is divided into columns that contain the captions
for the values in the report. The properties for the row are set in Microsoft Word
to make the column repeat at the beginning of each page.
• The Body table can contain rows for additional header data and additional
footer data.
• The Body table has a row that contains a nested table. This nested table is
divided into columns, and the fields for the report are placed in these columns.
The Report Footer table and Page Footer table are optional in this pattern.
You may want to include “read only” in the name to indicate how the template is to be
used.
Click Create.
In Microsoft Word 2007 Display the Review tab. In the Protect group,
click Protect Document and choose Restricted Access. Mark the option to
restrict permission to this document. Click More Options. In the Permissions
window, specify the options needed, such as only allowing the document to be
viewed. Typically, you will want to give all users read-access. Click OK.
In Microsoft Word 2010 Display the Review tab. In the Protect group, click
Restrict Editing. Mark the check box for item 2, Editing restrictions, and choose
No changes (Read only). Click Yes, Start Enforcing Protection. Enter a password
for the document. Click OK.
170 U S E R ’ S G U I D E
Chapter 37: Creating Report Templates
You can create your own report template documents for reports. Information about
how to do this is contained in the following sections:
You can create report template documenta manually, or you can use the Word Template
Generator tool included with Microsoft Dynamics GP to create them. For information about
the Word Template Generator, see Chapter 39, “Word Template Generator.”
You can also create report templates that can be used with modified versions of
reports. Refer to Chapter 38, “Report Templates for Modified Reports,” for details
about how to do this.
Click Select.
• For reports that have no existing report template documents, the new
report template will be blank (no layout).
• For reports that have existing report template documents, the new template
can be created based on the template you select. In most cases, you will
choose to create the template based on an existing template, because then
you don’t have to re-create the report template layout.
You must also supply a name for the report template you are creating. The
name should indicate how the report template is intended to be used.
Click Create.
Using the techniques and guidelines described in Chapter 36, “Report Template
Design,” add to or modify the report template document as needed.
172 U S E R ’ S G U I D E
C H A P T E R 3 7 C R E AT IN G R E P O R T T E M PL AT E S
The new report template is ready to be assigned and used in Microsoft Dynamics
GP.
Be sure that your modified report is working correctly when it is run as a standard
report from Microsoft Dynamics GP. If the modified report does not display
correctly as a standard report, it will not display correctly as a generated Microsoft
Word document.
The following example demonstrates the end-to-end process for making a report
template for a modified report. Assume the SOP Blank Quote Form report is being
modified to include the e-mail address of the person for whom the quote is being
generated. A calculated field can be defined for the modified report that will
retrieve the e-mail address for the quote recipient. This calculated field has the
following calculated expression:
FUNCTION_SCRIPT(RW_GetInternetInfo "CUS"
RM_Customer_MSTR_ADDR.Customer Number
RM_Customer_MSTR_ADDR.Address Code 1 )
This calculated field with the e-mail address is added to the report layout, as shown
in the following illustration.
This EMailAddress calculated field was added to both the Report Header and Page
Header sections of the report layout.
Click Select.
You must also supply a name for the report template you are creating. The
name should indicate that the template is for a modified version of the report.
Click Create.
176 U S E R ’ S G U I D E
C H A P T E R 3 8 R E P O R T T E M PL AT E S FO R M O DI FIE D R E P O R T S
Continuing the example for the modified Sales Blank Quote Document report,
the EMailAddress field was added to the report template document. Following
the guidelines, the value was dragged from the ReportHeader section in the
Custom XML Mapping pane.
Continuing the example from the previous sections, the modified report template
for the SOP Blank Quote Form was assigned to the Fabrikam sample company.
When the modified SOP Blank Quote Form report is run, and Template is chosen as
the report type, the modified report template is used to generate the output as a
Microsoft Word document. In this example, the output contains the e-mail address
that was added to the modified report.
178 U S E R ’ S G U I D E
C H A P T E R 3 8 R E P O R T T E M PL AT E S FO R M O DI FIE D R E P O R T S
Rather than having to re-create the report template document, you can replace the
embedded report definition data with an updated version. To do this, complete the
following procedure.
The XML data file for the report has two main sections. The first section
contains the report definition information, while the second section has actual
data for the report. The updated report definition section is what must be
embedded into the report template document.
180 U S E R ’ S G U I D E
Chapter 39: Word Template Generator
The Microsoft Dynamics GP Word Template Generator is a utility that can help you
create Word templates for Microsoft Dynamics GP reports. The following sections
describe how to use this utility:
• Overview
• Accessing the Word Template Generator
• Using the Word Template Generator
• Generated template expectations
Overview
In Microsoft Dynamics it is possible to create a Word template for any report.
However, Microsoft Dynamics GP does not include a template for every report. You
can use the Word Template Generator to create the initial Word Template for a
report in Microsoft Dynamics GP.
The Word Template Generator utility saves development time because you don’t
need to create the report template from scratch. The utility creates a template
document that closely matches the design of the Report Writer report.
See Generated template expectations on page 184 for information about the results you can
expect from the template generator. You will also find a list of the specific types of reports for
which generated templates are not supported.
The Report Template Generator is run from the command prompt. To make it more
convenient to use the utility, consider adding the location of the AddIns folder to
the PATH variable for your system.
TemplateGenerator.exe filename.xml
If you didn’t add the AddIns folder to the PATH variable for your system, you will need
to supply the complete path to the TemplateGenerator.exe file..
A Word template document with the same name as the .xml file will be
generated. If you supply a second parameter with different name for the output
file, that name will be used instead.
You can also use a drag-and-drop operation to generate the template document. Simply
drop the .xml report document onto the TemplateGenerator.exe file. A Word template
document will be created in the same location as the .xml report document.
182 U S E R ’ S G U I D E
C H A P T E R 3 9 W O R D TE M P L A T E G E N ER AT O R
Typical reports
The Word Template Generator can create a template for any Report Writer report in
Microsoft Dynamics GP. Most of these Word Templates will produce the results you
expect when they are used in Microsoft Dynamics GP.
Specific reports
The following is a list of the reports and report types in Microsoft Dynamics GP that
have known issues with the Template Processing Engine. Word templates that you
create for these reports and report types likely won’t produce acceptable output,
and are not supported.
• PM checks
• Payroll checks
• Some reports that use temporary table fields to generate report content
Third-party reports
The Word Template Generator can be used with third-party reports for integrating
applications that have been installed with Microsoft Dynamics GP. Because these
third-party reports may not conform to the same standards as Microsoft Dynamics
GP reports, the Word Template Processing Engine may not produce the output you
expect. The report templates created for these reports could require extensive
manual modification to work correctly.
184 U S E R ’ S G U I D E
Chapter 40: Troubleshooting Templates
Use the following information to help you troubleshoot issues you may encounter
when working with report template documents. The following items are discussed:
• Verify that the standard version of the report is working correctly. If the
standard version of the report isn’t displaying data correctly, the template
version will not either. This problem is more likely to occur if you have made a
modified version of a report.
• Be sure the bookmarks for the report template document are defined with the
correct names.
• Verify that the bookmarks are not located inside of a field you added to the
report template document. If they are, the template processing engine won’t be
able to find the bookmarks.
• Verify the item was dragged to the report template document from the
appropriate report section of the XML data. If the item comes from the wrong
section, it will not contain any data.
• Be sure that you have all of the tables needed for the report template document.
Data values may not appear in a report if the report is missing one of the
standard tables, such as the Report Header table.
• Be sure that an image has been assigned for the company. You may also want to
run another report for the company to verify that the image is displayed.
• Be sure that the Picture Content Control has been properly defined. If the
properties for that control are not set to the proper values, the template
processing engine will not be able to find the control.
• Be sure that the SQL Server Browser service is running on the machine. This
service is necessary for template processing to complete successfully.
• Remove any non-typical controls that may have been added to the template
layout. For example, templates cannot be processed if they contain the “Rich
Text Control” that can be added from the Developer ribbon.
186 U S E R ’ S G U I D E
C H A P T E R 4 0 T R O U B L E S H O O T I N G T E M PL A T E S
KeepTemplateFiles=TRUE
TPELogging=TRUE
When you add these settings, a log file that has a name beginning with
TemplateProcessing, as well as the intermediate template documents are stored
in the current user’s temporary folder. To access the temporary folder, type the
following in the Run command:
explorer %temp%
Sort the contents of the temporary folder by the modified date. Examine to files
related to the report that won’t process. They will contain information that can
be helpful when troubleshooting.
Typically, this problem occurs because the report processing code is expecting a
specific configuration for the “break” field in the header and/or footer for the
report. If the definition of the report section has been edited to specify a different
table for the “break” field, then an error will occur during processing and the report
cannot be emailed. You must edit the specific header and footer options for the
report to be sure the Report Table and Field are set to their original values.
The following table lists the reports from the Sales series that can be emailed. For
each report, the header and footer are listed with the corresponding value for the
Report Table and Field. These are the settings that must be used so that the report
template output can be emailed.
188 U S E R ’ S G U I D E
C H A P T E R 4 0 T R O U B L E S H O O T I N G T E M PL A T E S
The following table lists the reports from the Purchasing series that can be emailed.
For each report, the header and footer are listed with the corresponding value for
the Report Table and Field. These are the settings that must be used so that the
report template output can be emailed.
192 U S E R ’ S G U I D E
Appendix A: User-defined Functions
This appendix describes the common user-defined functions that are available for
use in calculated fields. The following functions are described:
• RW_Address
• RW_CityStateZip
• RW_GetAccountNumber
A document with descriptions of the user-defined functions available for the Report Writer
is found in the Microsoft Dynamics GP SDK in the “Procedures and functions” category.
You can find the document by searching for “Report Writer”.
RW_Address
Most addresses in Microsoft Dynamics GP allow up to three address lines. In some
cases, you may want to suppress the address lines that are empty, and have the
remaining lines of the address move up to occupy the unused space. In earlier
versions of the Report Writer, you needed several calculated fields to accomplish
this. The RW_Address user-defined function provides this functionality with only
four calculated fields, one for each line of the address. The function takes the
following parameters:
in integer Line_Number
in string Line1
in string Line2
in string Line3
in string City
in string State
in string PostalCode
The Line_Number parameter indicates which line of the address the calculated field
will be producing. The value ranges from 1 to 4. The remaining lines are string
values that are used to pass address information into the function.
FUNCTION_SCRIPT(RW_Address 1 RM_Customer_MSTR.Address 1
RM_Customer_MSTR.Address 2 RM_Customer_MSTR.Address 3 RM_Customer_MSTR.City
RM_Customer_MSTR.State RM_Customer_MSTR.Zip )
The following calculated field is used to display the second line of the address.
Notice that the first parameter is the integer value 2, indicating this is the second
line of the address. All of the other parameters remain the same.
FUNCTION_SCRIPT(RW_Address 2 RM_Customer_MSTR.Address 1
RM_Customer_MSTR.Address 2 RM_Customer_MSTR.Address 3 RM_Customer_MSTR.City
RM_Customer_MSTR.State RM_Customer_MSTR.Zip )
The third and fourth calculated fields are similar. The only difference is the first
parameter is either the integer value 3 or 4, indicating the third or fourth line of the
address. When all of the calculated fields are complete, add them to the report
layout in place of the standard address fields.
RW_CityStateZip
The RW_CityStateZip user-defined function strips the space from between the City,
State, and Zip Code fields of an address. It takes the following parameters:
in string City
in string State
in string ZipCode
The following calculated field uses the function to remove the extra spaces from the
City, State, and Zip fields retrieved from the RM_Customer_MSTR table:
RW_GetAccountNumber
The RW_GetAccountNumber user-defined function retrieves an account number
based on the account index. This allows you to retrieve an account number without
having to link the Account Master table to your report. The function takes the
following parameter:
in string AccountIndex
The following example shows an account number being retrieved, based on the
Account Index field from the Year-To-Date Transaction Open table.
194 U S E R ’ S G U I D E
Glossary Conditional expression
A boolean expression used to print the
Format
The extra characters, spacing, and attributes
corresponding true or false case in a that can be applied to a data type when data
Additional headers and footers calculated field. Conditional expressions are is displayed.
Report sections that are printed when a written in the Calculated Field Definition
specified field changes. Additional headers window. Format field
and footers are created using the Report An integer field that specifies the format to
Options and Header/Footer Options Control type use for a string or currency field.
windows. The main characteristic of a data type,
controlling the type of information that can Format string
Alphanumeric be stored in fields that use that data type, A data “mask” used for string and
A combination of numbers and letters. and some aspects of how the information composite formats. The format string allows
will be displayed. extra characters to appear in a field without
Array field affecting the way data in the field is stored.
A field containing multiple occurrences of Custom report
the same type of information. The individual A new report that you make. You can start Global variable
pieces of information stored by an array field with a blank report, or you can start by A variable available to any report or
are called elements. For example, a seven- making a copy of a report that already exists. calculated field in the application at any
element array field could be used to store time.
daily sales totals instead of seven individual Defaults file
A file that stores information specific to the Graphics report
fields. A report on which graphics, colors (if the
current workstation. This file is named
Array index DEX.INI for Windows. printer has color capabilities), patterns, and
The number designating a specific element fonts other than the default font can be
within an array field. Each component field Definition window printed.
within an array field has an array index. A window that allows you to create a
resource and specify its functional Header
Boolean expression characteristics. A report section that is printed at the top of a
An expression that results in a value of true report, page, or group. Reports can include
or false. DEX.INI file report headers, page headers, and additional
A file that stores information specific to the headers.
“Break on” field current workstation. Also referred to as the
A field on a report, that when the value defaults file. HTML
changes, causes an additional header or HyperText Markup Language. Reports
additional footer to be printed. Dictionary created with the Report Writer can be
A group of resources that, when interpreted exported to HTML files.
Calculated field by the runtime engine, present a complete
A field containing an expression that functioning application. See also Reports Key
combines fields in a report’s table, report dictionary. A field or combination of fields within a
fields, constants, functions, and operators. record that is used as a basis by which to
The result of the calculation is displayed in Drop-down list store, retrieve, and sort records.
the field if the field is placed on the report. A control type used to define data types that
allow users to select one item from a list. The Key segment
Calculated fields are created in the One field of a group of fields that compose a
Calculated Field Definition window. integer value corresponding to the position
of the item chosen, not the item’s static text key.
Check box value, is stored when the user’s selection is Keyable length
A control type used to define data types that saved.
The number of characters that can be
allow users to mark or unmark an option.
Exchange Web Services displayed by a field.
Check boxes have boolean storage types.
An API that allows connecting to an Launch file
Combo box Exchange server to send e-mail. If you have
A file that is used to start an application with
A control type used to define data types that configured the Microsoft Dynamics GP the runtime engine. This file stores the
allow users to enter a text value or choose connection to Exchange Web Services, you
location of the dictionaries that will be used,
that value from a list. The items in the list are can mail reports to other users.
including the application dictionary and the
determined by the static text values in the reports dictionary.
data type definition. Expression
A sequence of operands and operators that Layout window
Component are evaluated to return a value. A window that allows you to design the
One field of a composite field.
Field layout of a report.
Composite A field contains a single piece of information List box
A group of fields and their associated data used by the application dictionary.
A control type used to define data types that
types that form a single data type.
Footer allow users to select one static text value
Composite data types are defined by the from a list.
composite control type and the fields that A report section that is printed at the bottom
make up the composite. of a report, page, or group. Reports can MAPI
include report footers, page footers and An acronym for Mail Application Program
Concatenate additional footers.
Interface. If you have a MAPI-compliant
To connect two strings to form a single
mail system, you can mail reports to other
string. users.
196 U S E R ’ S G U I D E
G L O S S A R Y
Table relationship
A link between tables that have fields in
common. These relationships allow the
Report Writer to select fields from all of the
related tables and use them on a single
report. Table relationships are set up using
the Table Relationship Definition window.
Template-enabled report
A report that can have Microsoft Word
report template documents associated with
it, and generate the report output in
Microsoft Word format.
Text report
A report that can display only characters in a
native printer font.
Toolbox
A window that opens in conjunction with
the Report Layout window. It contains tools
used to place and arrange items in the layout
area.
Virtual table
A special type of table that allows data
stored in separate tables to be read as if it
had been stored in a single table.
WYSIWYG
An acronym meaning “what you see is what
you get.” This applies to intuitive design
tools used to create reports in the Report
Writer.
200 U S E R ’ S G U I D E
I N D E X
form pattern, for report document greater than operator, use in calculated keys (continued)
templates 168 fields 45 example 106
Format, field property 27 greater than or equal to operator, use in key segments, described 106
Format Definition window 95 calculated fields 45 multisegment keys, described 106
format fields groups options 106
defined 195 advanced groups 130
described 62 chapter 127-130 L
example 64 counting 129 labels
use 64 counting items in 129 adding columns 133
format strings creating in reports using headers and overview 132
composite formats 97 footers 55 printing 132
defined 195 described 55, 127 landscape pages, for reports 17
described 96 footers 128 LAST, report restriction function 38
example 97 headers 128 Last Occurrence, report display type 65
string formats 96 sorting information for 127 launch files
using to add static elements 96 defined 195
FormatField, field property 27 H described 137
FormatFieldSrc, field property 27 Header Options window 56 layout
formats headers design issues 121
aligning field information 95 see also additional headers for preprinted forms 123
applying to report fields 62 defined 195 issues for report template documents
chapter 95-97 for groups 128 185
composite formats 96, 97 Help menu, described 10 modifying for reports 87
currency, format options 96 history tables, described 71 Layout menu, Colorize Report Sections 22
defined 195 horizontal alignment, for preprinted layout windows
described 95 reports 125 defined 195
format strings 96 HTML described 12
naming 95 defined 195 for reports 21
numeric, format options 96 saving reports to 117 legends
opening 95 adding to report template documents
options 95 I 164
string formats 96 Ignore Case, key segment option 107 chapter 59-60
FREQUENCY, report restriction function images, in Word Template reports 167 example 60
38 Import Package File window 148 setting with VBA 59
functions, see restriction functions, Import Reports window 151 using in calculated fields 46
system-defined functions, user-defined importing less than operator, use in calculated fields
functions package files 148 46
reports from other dictionaries 151 less than or equal to operator, use in
G validating results 152 calculated fields 45
Gathering Data, part 68-78 Importing Reports, chapter 151-152 LFT_STR, calculated field function 49
Generate Resource Reports, menu item 9 indexes, for tables 106 light bulb symbol 3
generic fonts, for reports 31 inequality operator, use in calculated line tool, using in report layout 24
Getting Started with the Report Writer, fields 45 LineColor, drawn object property 28
chapter 7-8 Insert button, how used in Report Writer LineSize, drawn object property 28
global fields 12 list boxes
chapter 99 INT_STR, calculated field function 49 defined 195
opening 99 invoices use in reports 29
opening data type 99 overview 132 LNG_STR, calculated field function 49
Global Modifications, part 92-107 printing 132 logging, in Template Processing Engine
global variables 187
defined 195 K logical AND operator, use in calculated
using in calculated fields 47 key segments fields 45
graphics defined 195 logical NOT operator, use in calculated
design issues 122 described 106 fields 46
in Word Template reports 167 options 107 logical OR operator, use in calculated
graphics reports keyable length fields 45
aligning text items 31 defined 195 logos
applying drawing options 30 described 93 guidelines 102
defined 195 keys in report template documents 167
tools specific to, described 23 creating indexes for 106 sample 102
defined 195 Lookup, menu item 10
described 70, 105
lookup buttons, described 12 modified reports (continued) Overview of Word Templates, chapter
removing 145 155-157
M report template documents for 176 overwriting customizations with package
Macro menu, described 10 setting security access 84 files 149
mailing labels 132 storing 8
mailing reports third-party reports 144 P
chapter 115-116 viewing 83, 142 package files
procedure 115 Word Templates for 175 contents 147
mailing template reports, unsuccessful Modifying Fields, chapter 61-66 defined 196
187 Modifying Reports, part 80-89 described 147
MainTable, report property 27 MONTH, calculated field function 49 exporting 147
MainTableKey, report property 27 MONTH_NAME, calculated field import/export issues 149
MainTableName, report property 27 function 49 importing 148
MAPI mouse symbol 3 overwriting customizations 149
defined 195 multiplication operator, use in calculated Packaging Reports, chapter 147-149
mailing reports 115 fields 45 page creep, described 124
using with reports 115 multisegment keys 106 Page Footer table
margin notes 3 multi-select list box in report template document 162
master tables, described 71 defined 196 layout of 162
matching patterns in report restrictions 40 use in reports 29 page footers, use in reports 22
MAXIMUM, report restriction function 39 Page Header table
Maximum, report display type 65 N example 162
maximum records for a report 16 Name, report property 27 in report template document 161
MaxRecords, report property 27 names layout of 162
menus in Report Writer finding for reports 81 page headers, use in reports 22
Edit menu 10 formats 95 page number tool, using in report layout
File menu 9 tables 105 23
Help menu 10 New button, how used in Report Writer 12 page orientation 17, changing for reports
Macro menu 10 New Template window 172, 176 87
Resources menu 10 numeric expressions, defined 196 page size, for preprinted forms 123
Windows menu 10 numeric formats, format options 96 parentheses, use in calculated fields 44
metafiles, as pictures 101 Paste, menu item 10
Microsoft Dynamics GP Add-in for O Pattern
Microsoft Word object properties, for fields 27 drawn object property 28
accessing 159 offsets, for preprinted reports 125 field property 28
described 159 OK button, how used in Report Writer 12 PatternColor
installing 159 one-to-many relationship drawn object property 28
Microsoft Dynamics GP Report Writer, see defined 196 field property 28
Report Writer described 73 patterns, for layout of report template
Microsoft Word one-to-one relationship documents 168
add-in for editing report templates defined 196 PDF
159 described 73 mailing reports as 115
advanced options 160 Open button, how used in Report Writer saving reports to 117
bookmarks used 166 12 physical names
Design Mode 167 open tables, described 71 described 71
Developer tab 159 operands, defined 196 for tables 105
display options 160 operators Picture Definition window 101
settings for editing report template defined 196 picture library
documents 160 parentheses, use in calculated fields adding pictures to 24, 101
setup for editing report templates 159 44 defined 196
MINIMUM, report restriction function 40 used in calculated fields 44-46 using pictures from 101-102
Minimum, report display type 65 optimizing reports 122 picture tool, using in report layout 24
modified reports options, for reports 17 pictures (resource)
accessing 142 order of precedence, defined 196 adding to picture library 24, 101
creating 81 Orientation, report property 27 adding to reports 24, 101
defined 196 orientation, for report pages 17 chapter 101-102
described 7 original reports described 101
distributing 147 defined 196 logos on reports 102
fields missing in Word template 186 described 7 pixel, defined 196
from Reports Library 89 overflow, defined 196 point size, defined 196
printing 111 portable documents, see PDF
202 U S E R ’ S G U I D E
I N D E X
204 U S E R ’ S G U I D E
I N D E X
206 U S E R ’ S G U I D E