Mr. Smiss Sr.
Neues Mitglied
Hallo allerseits,
wir lösen den Druck von Belegen programmatisch nachträglich mit folgendem Aufruf erneut aus:
Bei vielen Systemen & Belegen funktioniert das wunderbar. In einem System dauert es bei bestimmten Belegen scheinbar unendlich lange, sodass wir nach 5 Min. abbrechen.
Hatte jemand schon Mal ein ähnliches Phänomen oder eine Idee?
wir lösen den Druck von Belegen programmatisch nachträglich mit folgendem Aufruf erneut aus:
C#:
sageBelegDruck.PrintReport(sprache, typ, mandant, countryId, sageDb, sageUser, psPwSage, belId, berichtName, sExportFileName, steuerCodeAusweisen, variante);
//...
public void PrintReport(string pSprache,
int pErfassungsart,
int pMandantId,
int pMandantCountryId,
string pDatabaseName,
string pUserName,
string pSagePassword,
int pTan,
string pReportName,
string pExportPath,
string pPrintSc,
string pVariante = "")
{
Log.Info($"PrintReport(Sprache = {pSprache}, Erfassungsart = {pErfassungsart}, Mandant ID = {pMandantId}, "
+ $"Country = {pMandantCountryId}, DB Name = {pDatabaseName}, User = {pUserName}, BelegID = {pTan}, "
+ $"Report Name = {pReportName}, Export Path = {pExportPath}, Variante = {pVariante}");
ErrorMessage = string.Empty;
viewermodel.ReportName = pReportName;
InsertReportNamedParameterValues(viewermodel.ReportNamedParameters, pMandantCountryId, pTan, pSprache, viewermodel.ReportName, Convert.ToInt16(pErfassungsart), pVariante, false, false, false, 0, false, pPrintSc);
endpoint = ServerConfigurationProxy.GetSDataHttpsEndpoint(false, 0, 0);
string endpointComplete = String.Join("/", endpoint.Address, "ol", "ControlCenterData", pDatabaseName + ";" + pMandantId);
SecureString securePassword = new SecureString();
pSagePassword.ToList().ForEach(c => securePassword.AppendChar(c));
viewermodel.OnSendEmail += (s, e) =>
{
viewermodel.Export(pExportPath);
};
viewermodel.OnError += (s, e) =>
{
ErrorMessage = $"Error bei viewermodel.PrintReport: Endpoint: {endpointComplete} " + Environment.NewLine
+ $"Report Name {pReportName}, Report Variante {pVariante}, Tan {pTan}, Mandant Country ID {pMandantCountryId}, Sprache {pSprache}, Erfassungsart {pErfassungsart}: Fehler: {e.Value}"
+ Environment.NewLine + e.ToString() + Environment.NewLine + e.Value.ToString();
Exception innerEx = e.Value.InnerException;
for (int i = 0; i < 100; i++)
{
ErrorMessage += Environment.NewLine + innerEx.ToString();
innerEx = innerEx.InnerException;
if (innerEx == null) break;
}
};
Log.Info($"Rufe Sage Funktion ViewerModel.PrintReport auf mit key={viewermodel.ReportName}, namedParameters wie oben, language={pSprache}, isInitial=null, trackingId=\"\"");
// Als ApplicationID muss "Abf" angegeben werden, sonst entsteht der Fehler "Unable to load Report
viewermodel.PrintReport(endpointComplete, pUserName, securePassword, "Abf", viewermodel.ReportName, viewermodel.ReportNamedParameters, pSprache, null);
}
Bei vielen Systemen & Belegen funktioniert das wunderbar. In einem System dauert es bei bestimmten Belegen scheinbar unendlich lange, sodass wir nach 5 Min. abbrechen.
Hatte jemand schon Mal ein ähnliches Phänomen oder eine Idee?
Zuletzt bearbeitet: