Report braucht 20 Sek wenn Aufruf über Webservice

25. Januar 2019 22:16

Hallo Kollegen!
Ich habe ein ziemlich zähes Problem worauf hoffentlich jemand einen Tip hat:
Folgender Block wird in ca. 2 Sek ausgeführt, vom Run bis zur Regung am Drucker:
Code:
 SalesInvHeader.GET('DD-RG14+00036');
 SalesInvHeader.SETRECFILTER;
 ReportSelection.SETRANGE(Usage,ReportSelection.Usage::"S.Invoice");
 ReportSelection.SETFILTER("Report ID",'<>0');
 IF ReportSelection.FINDSET THEN
  REPORT.RUNMODAL(ReportSelection."Report ID", FALSE, FALSE, SalesInvHeader);


Folgendes Szenario:
Über einen SOAP-Webservice wird der Warenausgang (aus einem externen Lagerverwaltungssystem) gefüllt mit den tatsächlich gelieferten Mengen (XMLPort).
In der WebService Codeunit wird anschließend der Warenausgang gebucht (Liefern und fakturieren). Zeitaufwand bis hierhin: ca 2 Sek.
Anschließend hole ich mir die gebuchte Rechnung und übergebe diese zum Druck (gleiche Vorgehensweise wie oben).
Die Verarbeitungszeit würde ich also auf ca 4-6 Sek schätzen, 2-3 fürs Buchen, 2-3 fürs Drucken.

Allerdings hängt der Prozess im Gesamtprozess (also WebService-Request -> Buchen -> Drucken) ganze 20 Sekunden an dieser Stelle:
Code:
  REPORT.RUNMODAL(ReportSelection."Report ID", FALSE, FALSE, SalesInvHeader);


Hat jemand eine Idee, warum der exakt gleiche Druck separat ausgeführt 2 Sek, als Folgeprozess einer vorgelagerten Buchung aber 20 Sek dauert?

Viele Grüße und vielen Dank im Voraus!

Re: Report braucht 20 Sek wenn Aufruf über Webservice

29. Januar 2019 08:54

Hallo,

hast du diesen Prozess direkt in NAV durchgeführt? Wenn ja, wie war dort die Performance? Befindet sich der NST-Dienst für den Webservice auf der gleichen Kiste wie der normale NST-Dienst?

Gruß

Michael

Re: Report braucht 20 Sek wenn Aufruf über Webservice

29. Januar 2019 09:23

Hallo,

was man auch noch wissen muss ist, das der Webservice für jeden Aufruf eine neue NAV- Session startet. D.h. der Cache könnte nicht gefüllt sein.

Wie lange benötigt der Report denn, wenn du Ihn manuell auf einem frisch gestarteten NST ausführst?

Gruß Fiddi

Re: Report braucht 20 Sek wenn Aufruf über Webservice

30. Januar 2019 23:28

Hallo zusammen!
Vielen Dank für eure Antworten.

@Michael: Der Prozess in NAV selbst (also im RTC client) braucht auch pro Vorgang (also Buchung und Druck) jeweils 2-3 Sekunden. Da es noch eine Entwicklungskiste ist, läuft nur 1 NST, auf welchen nur ich selbst per RTC zugreife und per SOAP die Anfragen an dieses NST.

@Fiddi: Ja es wird eine neue Hintergrund-Session für die WebService-Anfrage gestartet, aber kein NST. Die Rechnung ist in 2 Sekunden verbucht, deswegen glaube ich nicht dass es daran liegt. Das NST läuft ja bereits und ist "warm".

Ich bin jedoch mittlerweile etwas schlauer, und zwar sobald ich einige der zahlreichen Felder im RDLC-Layout im Standard Bericht 206 (oder war es 207?) entferne, wird der Druck deutlich schneller. (1Sek nur mit Rechnungsadress-Feldern). Auf diesem baut man ja in der Regel auf.
Scheinbar wird der Hintergrund-Session nicht genug "Power" gegeben, den umfangreichen Report in angemessener Zeit zu rendern.
Da bleibt wohl nur Strg+a, Entf und nur die benötigten Felder einfügen, oder habt ihr noch eine Idee?

Vielen Dank nochmal und viele Grüße
Thanassi