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")]
public static string ToTermOfPayment(string reportContext, string termOfPayment)
{
const string PaymTermMenuItem = "PaymTerm";
const string PaymentTable = "Payment";
const string PaymTermIdField = "PaymTermId";
return DrillThroughCommonHelper.GetDrillthroughUrl(reportContext, PaymTermMenuItem, string.Empty, PaymentTable, PaymTermIdField, termOfPayment);
}