Home > Dynamics SL (Solomon) Technical Info > Dynamics SL (Solomon) Reporting framework (ROI.exe) – Part 2

Dynamics SL (Solomon) Reporting framework (ROI.exe) – Part 2

This article contains details relevant to versions up to 6.5. A future post will explain changes introduced by 7.0.

RPTRuntime record

How does SL communicate the choices you make on the ROI screen to Crystal?  By creating record in a table named RPTRuntime.  When you click Print or Print Preview in the ROI screen, ROI inserts a record into the RPTRuntime table and stores the values you entered into (or the default values from) the ROI screen.

Here’s a simple example.  In the General Ledger module, click the Trial Balance menu option in the Reports section and click the Print Preview button on the ROI screen (just accept all the default values).  While the Crystal Print Preview window is still open, run this query on your system database – select * from RptRuntime.  You should see at least one record. (If other users in your system are running reports at the same time, you will see more than one record. If there are multiple records, you should be able to find yours by looking for a record that’s UserID field value is the User Id that you’re logged on to SL with and the ReportNbr field value will be 01610.)

Notice that the values in the BegPerPost and EndPerPost fields are the values from the ROI screen.  Close the Print Preview window and re-run the query.  Notice that the RPTRuntime record is gone.  ROI deletes the RPTRuntime record it inserted either when the print job is finished or when the Print Preview window is closed.

Now enter different values for the Beginning and Ending Periods in the ROI screen and click Print Preview again.  If you re-run the query, you will see a new RPTRuntime record with the new values you just typed in the BegPerPost and EndPerPost fields.

This is how ROI communicates the SL users selections to Crystal – by storing the values in the RPTRuntime table.

 RI_ID value

I mentioned earlier that there can be multiple records in RPTRuntime at one time, if multiple users are running reports at the same time.  How does Crystal know which record is yours? 

The primary key of RptRuntime is an integer field named RI_ID.  When ROI inserts a record into RptRuntime, it specifies a unique RI_ID value.  It then passes that RI_ID value to Crystal. (Technically, it passes it to CRPEHLPR , but that’s beyond the scope of this post.)

User Function Libraries (UFLs) in Crystal

Crystal Reports includes support for User Function Libraries.  This always 3rd party developers that use Crystal (like Microsoft Dynamics) to write new functions that can then be used in formulas in a Crystal Report.  Dynamics SL ships with several of these.  One of the most-used UFL functions used by Dynamics SL is called RIPARAM.  RIPARAM takes 1 parameter – the name of a field in the RptRuntime table.

If you want to use the Beginning Period to Post value specified by a user (like we discussed earlier with the Trial Balance), you could call RIPARAM(“BegPerPost”).

  1. disgruntled
    July 29, 2009 at 10:19 pm

    We get Solomon screens crashing about 40-60 times a day. Is this normal? Solomon seems like a total dog of an application compared with systems like SAP.

    • July 30, 2009 at 11:33 am

      40-60 crashes a day is a lot. There are some things Solomon does that makes it a little more “brittle” than I think it should be, but what you’re describing isn’t normal. I’d need more information to give you a more specific reply, starting with – what version are you running? Are you getting consistent error messages? Only certain workstations and only certain screens and/or processes?

  2. Reece Mak
    October 26, 2009 at 10:09 pm

    Can you use a command line switch on ROI.exe then? I am really eager to see someone can post some detail on that. So I can silently print a group of report without manually doing it.

    • October 27, 2009 at 2:51 pm

      If you have the User Guides installed (typically in the UG subfolder under the main SL folder in Program Files\Microsoft Dynamics …), this is documented in sl_roi.pdf.

      Specifically, here are the command line arguments that ROI.exe can accept.

      ROI [{ReportNbr}/RUN]
      • [{ReportFormat}/FORMAT]
      • [{Condition}/WHERE]
      • [/PSCRN]
      • [/DEBUG]
      • [{Template ID}/TEMPLATE]
      • [{Report Date}/RPTDATE]
      • [{Filename}/EXPFILENAME]
      • [{Format ID}/EXPFORMAT]
      • [{BatchNumber}/BATCH]
      • [{Doc Number}/DOCNBR]
      ROI.EXE 0 01660/RUN 01660/FORMAT 0/EXPFORMAT c:1660.pdf/EXPFILNAME

      • Reece Mak
        November 11, 2009 at 4:37 pm

        Where can I get the sl_roi.pdf ??? I try google it. However, I cannot find it

  3. November 3, 2009 at 1:00 pm

    How can I use the ROI command-line to print inner companies? There are many, so I don’t want to login to each one then execute the command. Unless there is a way to auto-login (and I have been searching for that – signon.exe does seem to have any paramters).

    I noticed that multi-company selection populates the RptCompany table in the Application schema. Can I utilize this from the command-line ROI.EXE? One options is to get ROI to at lease print all companies then use the where clause to limit that list.

    Or, put the companies I need in RptCompany then tell ROI to use a certain report ID (or RI_ID). So, can I setup the report and make my own RI_ID and pass that to ROI.EXE?

    Also, I have Solomon 6.5 so the reporting user guide is called SIV_rptgd.pdf. The command-line documentation is not in there. There are no references to your example (EXPFILENAME, etc…).

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: