Skip to Content
0
Former Member
Sep 04, 2012 at 06:19 AM

Business Objects 4 FP3: .Net Webservice Application Translation problem

29 Views

Hello togehter,

I'm currently developing a webservice, with the DSWS consumer dlls, to get a WebI Report as PDF for our customerportal and I'm having a problem to get the translations, entered through the Translation Management Tool, reflected in report . If I'm opening the report in Info View the translations are all there. I'm opening the report in three steps: 1. Get an instance with refresh action, 2. Set the prompts, 3. Get the report in Binary View. I the set the locales for the the Credentials and I also set the PVL for the session, but no translation is displayed.

My code looks like the following:

private BusinessObjects.DSWS.Connection bo4Connection;
private BusinessObjects.DSWS.Session.Session bo4Session;
private BusinessObjects.DSWS.Session.SessionInfo bo4SessionInfo;
private BusinessObjects.DSWS.Session.EnterpriseCredential bo4Credential;
private BusinessObjects.DSWS.ReportEngine.DocumentInformation bo4DocInfoPreLoad;
private BusinessObjects.DSWS.ReportEngine.DocumentInformation bo4DocInfoPrompts;
private BusinessObjects.DSWS.ReportEngine.DocumentInformation bo4DocInfoReady;
private BusinessObjects.DSWS.ReportEngine.ReportEngine bo4ReportEngine;
private BusinessObjects.DSWS.ReportEngine.RetrieveData bo4ReportData;

bo4Connection = new BusinessObjects.DSWS.Connection(serviceSessionURL);
bo4Connection.TimeOut = Convert.ToInt32(biSettings.GetConfiguration(BIUtilities.BISettings.ConfigKeys.BO4SessionTimeout).ToString());
bo4Credential = new BusinessObjects.DSWS.Session.EnterpriseCredential();

bo4Credential.Login = username;
bo4Credential.Password = password;
bo4Credential.AuthType = "secEnterprise";
bo4Credential.Domain = repository;
bo4Credential.Locale = "de_DE";

// Webservice Session
bo4Session = new BusinessObjects.DSWS.Session.Session(bo4Connection);
bo4SessionInfo = bo4Session.Login(bo4Credential);
bo4Session.ResetSessionTimeOut();
bo4Session.setPVLocale("de_DE");

// Open Report and Refresh
bo4Connection.URL = biSettings.GetConfiguration(BIUtilities.BISettings.ConfigKeys.BO4WSReportEngine);
bo4ReportEngine = new BusinessObjects.DSWS.ReportEngine.ReportEngine(bo4Connection, bo4Session.ConnectionState);
BusinessObjects.DSWS.ReportEngine.ViewSupport charView = new BusinessObjects.DSWS.ReportEngine.ViewSupport();
charView.OutputFormat = BusinessObjects.DSWS.ReportEngine.OutputFormatType.HTML;
charView.ViewType = BusinessObjects.DSWS.ReportEngine.ViewType.CHARACTER;
charView.ViewMode = BusinessObjects.DSWS.ReportEngine.ViewModeType.REPORT;

BusinessObjects.DSWS.ReportEngine.RetrieveCharacterView retCharView = new BusinessObjects.DSWS.ReportEngine.RetrieveCharacterView();
retCharView.ViewSupport = charView;

bo4ReportData = new BusinessObjects.DSWS.ReportEngine.RetrieveData();
BusinessObjects.DSWS.ReportEngine.RetrieveReportList repList = new BusinessObjects.DSWS.ReportEngine.RetrieveReportList();
bo4ReportData.RetrieveReportList = repList;
bo4ReportData.RetrieveView = retCharView;
bo4ReportData.RetrieveViewSupport = new BusinessObjects.DSWS.ReportEngine.RetrieveViewSupport();

BusinessObjects.DSWS.ReportEngine.Action[] actions = new BusinessObjects.DSWS.ReportEngine.Action[1];
actions[0] = new BusinessObjects.DSWS.ReportEngine.Refresh();

BusinessObjects.DSWS.ReportEngine.RetrieveMustFillInfo boMustFill = new BusinessObjects.DSWS.ReportEngine.RetrieveMustFillInfo();
boMustFill.RetrievePromptsInfo = new BusinessObjects.DSWS.ReportEngine.RetrievePromptsInfo();

bo4DocInfoPreLoad = bo4ReportEngine.GetDocumentInformation(reportID.ToString(), boMustFill, actions, null, bo4ReportData);
BusinessObjects.DSWS.ReportEngine.CharacterView binView = (BusinessObjects.DSWS.ReportEngine.CharacterView)bo4DocInfoPreLoad.View;

// Set Prompts

BusinessObjects.DSWS.ReportEngine.Action[] actions = null;
// Fill Prompts
BusinessObjects.DSWS.ReportEngine.FillPrompt[] fillPromptList = new BusinessObjects.DSWS.ReportEngine.FillPrompt[bo4DocInfoPreLoad.PromptInfo.Length];
for (int i = 0; i < bo4DocInfoPreLoad.PromptInfo.Length; i++)
{
BusinessObjects.DSWS.ReportEngine.PromptInfo prmtInfo = bo4DocInfoPreLoad.PromptInfo[i];
String promptValues = (String)prompts[prmtInfo.Name];
String[] prmtValues = promptValues.Split(';');

BusinessObjects.DSWS.ReportEngine.DiscretePromptValue[] dPromptValues = new BusinessObjects.DSWS.ReportEngine.DiscretePromptValue[prmtValues.Length];
for (int j = 0; j < prmtValues.Length; j++)
{
dPromptValues[j] = new BusinessObjects.DSWS.ReportEngine.DiscretePromptValue();
dPromptValues[j].Value = prmtValues[j].ToString();
}
fillPromptList[i] = new BusinessObjects.DSWS.ReportEngine.FillPrompt();
fillPromptList[i].ID = prmtInfo.ID;
fillPromptList[i].Values = dPromptValues;
}
BusinessObjects.DSWS.ReportEngine.FillPrompts fillPrompts = new BusinessObjects.DSWS.ReportEngine.FillPrompts();
fillPrompts.FillPromptList = fillPromptList;

actions = new BusinessObjects.DSWS.ReportEngine.Action[1];
actions[0] = fillPrompts;

bo4DocInfoPrompts = bo4ReportEngine.GetDocumentInformation(bo4DocInfoPreLoad.DocumentReference, null, actions, null, bo4ReportData);

// Get the binary view
BusinessObjects.DSWS.ReportEngine.RetrieveData boBinReportData = new BusinessObjects.DSWS.ReportEngine.RetrieveData();
BusinessObjects.DSWS.ReportEngine.ViewSupport viewSupport = new BusinessObjects.DSWS.ReportEngine.ViewSupport();
viewSupport.OutputFormat = BusinessObjects.DSWS.ReportEngine.OutputFormatType.PDF;
viewSupport.ViewType = BusinessObjects.DSWS.ReportEngine.ViewType.BINARY;
viewSupport.ViewMode = BusinessObjects.DSWS.ReportEngine.ViewModeType.DOCUMENT;

BusinessObjects.DSWS.ReportEngine.RetrieveBinaryView retBinView = new BusinessObjects.DSWS.ReportEngine.RetrieveBinaryView();
retBinView.ViewSupport = viewSupport;
boBinReportData.RetrieveView = retBinView;

bo4DocInfoReady = bo4ReportEngine.GetDocumentInformation(bo4DocInfoPrompts.DocumentReference, null, null, null, boBinReportData);

// Rendering
BusinessObjects.DSWS.ReportEngine.BinaryView binView = (BusinessObjects.DSWS.ReportEngine.BinaryView)bo4DocInfoReady.View;

// Return PDF
return binView.Content;

Do I miss a step or what else can be done to get the translation displayed in the PDF?

Thanks in advance

Michael