SageBelegDruck.PrintReport wird nicht fertig

Mr. Smiss Sr.

Neues Mitglied
Hallo allerseits,

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:
Zurück
Oben