Printing a custom report from a button can be done with a simple event in your form layer (assuming you “generated an application” for the report).
Example:
I have a “War Room Report” which I have an application for (Menu Maint. image below):
Add a button on the form where ever you want/need it:
Add an onclick event (behavior) that calls app-open with the report’s application as the target:
Preview:
Passing Values in gets a little more involved…