File mit BigText auslesen (NAV Webservice)

22. März 2012 23:17

Hallo zusammen,
ich möchte eine Datei mit dem File-Objekt und einer BigText-Variable auslesen. Die Ausführung passiert in einer Codeunit das über ein NAV-Webservice aufgerufen wird.

Folgender Code:
Code:
Fl -> File Variable
TxtLine -> BigText Variable

Fl.OPEN(FileName);
Fl.TEXTMODE(TRUE);

REPEAT
  Fl.READ(TxtLine);
UNTIL Fl.POS = Fl.LEN;

Fl.CLOSE;


In der Codezeile Fl.READ(TxtLine);(wird versucht in einer BigText-Variable zu schreiben) schmeißt der NAV-Webservice folgende Exception:

Unhandled Exception: System.Web.Services.Protocols.SoapException: Die angegebene Methode wird nicht unterstützt.
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at NAVObjectInterface.NAVObjInterface.RunObject(String objectType, Int32 objectNo, String functionName)
at NavConnector.ExecuteObject(String objecttype, Int32 objectno, String functionname)
at Class.Main(String[] args)

Im Classic-Client funtioniert alles wunderbar. Kennt jemand eine Lösung für das Problem?

Re: File mit BigText auslesen (NAV Webservice)

23. März 2012 12:03

Was ist eigentlich das Ziel des Ganzen?

Gruß
Aydin

Re: File mit BigText auslesen (NAV Webservice)

23. März 2012 12:40

Es geht um eine Flat-Datei mit fixen Positionen(keine Trennzeichen vorhanden). Dessen Inhalt wie folgt aussehen könnte:

TESTSATZ0234 301220121200 3000 667893 301220120000 Eine Testbeschreibung für Import 201220121200 9656782112 301220121200 3000 667893 301220120000 761 KG 8326342 546
TESTSATZ0234 301220121221 4000 667893 301220120000 Eine Testbeschreibung für Import 201220121212 9656741112 301220121221 3000 667893 301220121200 385 KG 8233342 381
....

Eine Zeile, in der Datei, entspricht einem Datensatz. Die Positionierung der einzelnen Felder ist nicht dynamisch, sondern fix vorgegeben(z.B: Feld Beschreibung ist von der Pos. 50 bis 100 auszulesen).

Da die Dataports in RTC und in WebServices nicht mehr gehen, dachte ich, ich lese es in innerhalb einer Codeunit ein(File und BigText). In CC funktioniert es wunderbar, nur in NAV-WebService nicht. :cry:

Re: File mit BigText auslesen (NAV Webservice)

23. März 2012 13:13

Aber XML-Ports gehen doch.
Also du kannst im Property ("Format", XML, Fixed Text,Varable Text) das Format bestimmten.
Ich habe es zwar selber nie versucht, aber es sollten irgendwo Beispiele dafür geben.
Wenn es der Webservice ehe nicht zulässt, dann man es keinen Sinn den Kopf darüber zu zerbrechen:-)

Alternative wäre doch auch ein Report oder nicht (Processing only)?

Möglichkeiten und Alternativen gibt es genug:-)


Gruß
Aydin

Re: File mit BigText auslesen (NAV Webservice)

23. März 2012 13:41

Über die Möglichkeit ein XMLPort dafür zu verwenden habe ich auch schon gehört, aber ich habe es leider an keiner Stelle, im XMLPort, entdeckt wie ich sagen kann von Stelle X bis Stelle Y steht die Zeilennummer drin. Kennst du eine Gute Anleitung für sowas? Ich kann es leider nirigendwo finden...

Und wie soll es mit dem Report genau funktionieren?

Re: File mit BigText auslesen (NAV Webservice)

23. März 2012 15:23

Du kannst ja deine Programmierung, die du hast einfach in einen Report überführen (oder mit einer Codeunit Variable deine Fkt. aufrufen.).
Property vom Report muss "Processing only" sein (also nur zum ausführen nichtzum drucken gedacht).

Ziel ist ja eigentlich nur deine fertige Funktion aufzurufen.

Gruß
Aydin

Re: File mit BigText auslesen (NAV Webservice)

23. März 2012 15:33

aydina81 hat geschrieben:Ziel ist ja eigentlich nur deine fertige Funktion aufzurufen.


Ach so... Von diesen, ehrlich gesagt unschönen, Trick habe auch schon mal gehört, aber ist denn somit gewährleistet, dass es in der weiteren NAV-Version immer noch funktioniert? Ich denke nicht - aber was ist schon sicher in dieser Welt :-?

Übrigens, habe ich mal gelesen, dass das Einlesen von Flat-Files nur im RTC bzw. NAV-WebService sauber funktioniert. Oh man, irgendwie sehe ich bis jetzt keine vernünftige Lösung für das Problem...

Re: File mit BigText auslesen (NAV Webservice)

23. März 2012 15:41

Reports kann man doch im RTC aufrufen.
Warum solte es in Zukunft nicht gehen.

Du müsstest nur darauf achten, wo die Datei liegt (wenn der RTC und NAV Server auf verschiedenen Servern liegt).
Ausführende Instanz ist immer die Mittelschicht, Anosnten musst du die Datei auf die Serverseite übertragen.

Re: File mit BigText auslesen (NAV Webservice)

11. März 2013 13:36

aydina81 hat geschrieben:Aber XML-Ports gehen doch.
...
Du kannst ja deine Programmierung, die du hast einfach in einen Report überführen (oder mit einer Codeunit Variable deine Fkt. aufrufen.).
Property vom Report muss "Processing only" sein (also nur zum ausführen nichtzum drucken gedacht).
...


Ich habe den gesamten Code meiner Codeunit in ein ProzessOnly-Report verlagert und bekomme immer noch die selbe Fehlermeldung:

..Die angegebene Methode wird nicht unterstützt...

beim Aufruf von Fl.READ(TxtLine);

Kann es sein, dass es an der Variable TxtLine liegt, da diese von Typ BigText ist und diese nicht mehr unterstützt wird? Wie kann man das alternativ machen wenn die Zeile länger als 1024-Zeichen lang sein kann?

Am liebsten würde ich es ja mit dem XMLPort(Format="Fixed Text") machen, aber ich finde nirgendwo die Angabe der Zeichenlängen(Start- und Endpostion innerhalb einer Zeile) für ein Feld.