Прежде всего я должен отметить, что я ничего не знаю о ruby-on-rails или soap4r, но у меня была похожая проблема с использованием веб-службы ReportExecutionService2005 из Java, поэтому я могу указать вам правильное направление.
Идентификатор сеанса генерируется после загрузки отчета, поэтому вам нужно вызвать метод LoadReport веб-службы, который возвращает объект ExecutionInfo, для которого вы вызываете getExecutionID, который дает необходимый вам идентификатор сеанса.
Этот идентификатор должен входить в заголовки SOAP для всех последующих запросов к этому отчету (измените отчеты, и вам нужно изменить идентификатор в своем заголовке).Ваш SOAP-заголовок должен выглядеть примерно так:
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<env:Header>
<ssrs:ExecutionHeader xmlns:ssrs='http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices'>
<ssrs:ExecutionID>your-execution-id</SSRS:ExecutionID>
</ssrs:ExecutionHeader>
...
</env:Header>
...
</env:Envelope>
Очевидно, ваш-исполнительный идентификатор будет заменен на возвращаемый из getExecution ID.
Как вы получите заголовок вЯ не могу помочь с ruby и soap4r.