Skip to main content

Hey all,

Pretty sure this is not possible, but is there any way in APPS10 IEE to attach a Custom Menu to a RMB click in Quick Report output? We have a request to run an external program for a line of output in a specific Quick Report, but as far as I can tell, Quick Report output is transient and not linked to any LU. Is there some sort of clever way to implement this I am not seeing?

Thanks!

Joe Kaufman

Hi Joe,

What is the external program you are trying to output to? May be you can try configure an output channel. 

 

Thanks,

Kasun


Kasun.

I am not trying to send data to an external program, I would want to use a column on the clicked row as a parameter to send to an external program that gets executed.

Business scenario: Quick Report output lists AP invoices, and we want to fire up our document management system with the invoice number as a parameter (to view scanned documents related to the invoice). I can do that from the Manual Supplier Invoice screen as a Custom Menu option, but we want to do that from a RMB click on a line of Quick Report output.

The output channel idea is interesting if we were to have some sort of polling mechanism running on the user’s client workstation, but that sounds pretty involved. Still, I will look into that…

 

Thanks,

Joe Kaufman


Hi Joe,

What is the external program you are trying to output to? May be you can try configure an output channel. 

 

Thanks,

Kasun

 

@Kasun Balasooriya

After looking into this a bit more, I think it could work. If I call our integrator program with the file, and the user exports “Selected Row Only”, the external program could parse the file and grab the fields it needs, then fire up our document management software with the correct key fields.

I will play more with it, but do you know how the “Advanced” command line field works? Does it send those values first, then the name of the file? Or is the file somehow sent as a stream to the called program? I will have to call my program and see what comes through as parameters.

I didn’t think this would work until I remembered “Selected Rows Only” which can make this a selected-row operation instead of processing everything in the output…

 

EDIT: After some further analysis...this idea definitely has legs! The “Advanced” command line parameters let me pass whatever strings I want, then the file name with “@FILENAME”. So, I can explicitly tell my custom program what mode to run in and where the file is, then parse the first row/node of the file (I will probably use XML) to get the data I need. I should be able to set up output channels for whatever integrations I want in that way.

EDIT 2: Even better, the file that is output starts with “QuickReport<report name>” so I will know what type of data is heading my way!

 

Thanks!

Joe Kaufman

 


Hi Joe,

What is the external program you are trying to output to? May be you can try configure an output channel. 

 

Thanks,

Kasun

 

@Kasun Balasooriya

After looking into this a bit more, I think it could work. If I call our integrator program with the file, and the user exports “Selected Row Only”, the external program could parse the file and grab the fields it needs, then fire up our document management software with the correct key fields.

I will play more with it, but do you know how the “Advanced” command line field works? Does it send those values first, then the name of the file? Or is the file somehow sent as a stream to the called program? I will have to call my program and see what comes through as parameters.

I didn’t think this would work until I remembered “Selected Rows Only” which can make this a selected-row operation instead of processing everything in the output…

 

EDIT: After some further analysis...this idea definitely has legs! The “Advanced” command line parameters let me pass whatever strings I want, then the file name with “@FILENAME”. So, I can explicitly tell my custom program what mode to run in and where the file is, then parse the first row/node of the file (I will probably use XML) to get the data I need. I should be able to set up output channels for whatever integrations I want in that way.

EDIT 2: Even better, the file that is output starts with “QuickReport<report name>” so I will know what type of data is heading my way!

 

Thanks!

Joe Kaufman

 

Glad this worked out! 😊


Glad this worked out! 😊

 

Yes, and thank you for the Output Channel idea -- I wouldn’t have gone down this path if you hadn’t! A clear “win” for the IFS Community…

To summarize how it all works now (which is quite effectively!) in case someone else likes this idea:

  • You need to start with your own custom application that you can send the output file name to. That is kind of the whole point of making this work, since you need something that can take the file name, process the file, and do whatever needs doing. We use a C# application called IFSImp (short for “IFS Implementation”, not a little mischievous creature living inside IFS.  *smile*)
  • Set your output channel’s Application to Start to your custom application. Ours is an executable on a network-mapped drive called IFSImp.exe::

 

  • Set Advanced settings for the Application to Start so that your custom application knows what is coming. IFSImp already takes command-line parameters, so I set up a special one for this new mode of operation. Advanced settings end up looking like this:
CL_DWViewFromQuickReport is an IFSImp command-line parameter.
@FILENAME is the name of the temporary file IFS outputs.
  • Use XML as the output type:
XML is useful

(Of course, you can use whatever you want, but using XML means you can parse the contents of the file to get the number of rows and the data in the exported rows. Knowing the number of rows is important because…)

  • ...You will probably want to enforce single-row operation. For this type of process, I want to make sure only one row is being analyzed at a time because in our document management software I just want to see images for the selected row. You may have processes where you don’t care how many rows there are, and the XML output will serve you well as a usable data listing. In our case, I stop execution and tell the user they need to export a single row to have the operation succeed (if they output multiple or all rows.)
  • Use the XML file name to insure you have the data you expect. IFS appears to name the output file QuickReport<report name> <timestamp>.xml. For example, if the Quick Report being run is called “AP Invoice Query”, the filename starts with QuickReportAPInvoiceQuery. This can be validated by the custom application, and if the name is not something recognized, the application can alert the user that this particular Quick Report output cannot be operated upon.
  • Clean up the XML output files. Once you verify the Quick Report XML file and get what you need out of it, you can delete it in order to keep temporary files cleaned up. IFS also sends along an XSD file, so you can clean that up, too. This can all be handled by the custom application.

Once the output channel is created it becomes available when a user right-clicks on a row of Quick Report output:

Buried a bit more than a Custom Menu, but still a usable RMB option!

The standard row selection dialog appears:

 

Another extra thing to click through (compared to a Custom Menu, but still not bad!

 

If the user then exports Selected rows only, that creates an XML file with a single row in it, the XML data goes to IFSImp, and IFSImp gets data from the XML that links to related documents to display. There is obviously a lot of coding and validating in the XML processing, and if the Quick Report ever changes it could mess up the XML data, but that can all be handled by the custom application, too.

We essentially have a Custom Menu system for Quick Report output now!

 

Thanks,

Joe Kaufman