MSDN does document how to add a drill through action on a report.
http://msdn.microsoft.com/EN-US/library/cc582049.aspx
However I feel it is quite invasive and it could be done a lot cleaner without touching too many standard objects.
Open up the SRSDrillThroughCommon class.
Change the method GetDrillThroughUrl from a protected method to a public method.
Then from the business logic class write a drill through method like so.
[DataMethod(), PermissionSet(SecurityAction.Assert, Name ="FullTrust")]
publicstaticstring ToTermOfPayment(string reportContext, string termOfPayment)
{
conststring PaymTermMenuItem ="PaymTerm";
conststring PaymentTable ="Payment";
conststring PaymTermIdField ="PaymTermId";
returnDrillThroughCommonHelper.GetDrillthroughUrl(reportContext, PaymTermMenuItem, string.Empty, PaymentTable, PaymTermIdField, termOfPayment);
}