Hallo zusammen!
Wie bereits einige bemerkt haben werden Dataports NICHT unterstützt in der 3 Tier Architektur.
Aus diesem Grunde hat man mit NAV 2009 XML Ports erweitert sodass diese auch als eine “Art Dataport” verwenden werden können.
Wie muss man vorgehen?
Zunächst wie gewohnt die Grundstruktur der Feldabfolge festlegen

Woher weiß das XML Port das es ab sofort ein Dataport ist?
Eigenschaften festlegen

Gibt es bestimmte Sonderfälle in der Feldstruktur?
Ja, da ein XML Port eine Node gleichzeitig als Variable festgelegt muss für “leer” oder konstante Felder auch mit solchen gearbeitet werden

Hat man ASCII / ANSII Konvertierungen?
Bei Bedarf mittels integrierte Codeunit anpassen

Wie kann man den XML Port in der 3-Tier Architektur dazu bringen das er den Filenamen NICHT abfragt?
Am besten mit einer Codeunit oder ähnlichem mittels Stream arbeiten:
ffile = Fiel |oStream = OutStream |xml77777 = XML Port
ffile.CREATE('C:\temp\test.csv');
ffile.CREATEOUTSTREAM(ostream);
xml77777.SETDESTINATION(ostream);
xml77777.EXPORT;
Ich kann das File aber nicht finden?
Vorsicht! In der 3-Tier Architektur ist (wie in meinem Beispiel) C:\Temp am Server!
Möchte ich das File auf einer Client Maschine haben muss dieses heruntergeladen werden.
BeispielFunktion:
ClientFileName = Text |o bjScript = Automation 'Microsoft Script Control 1.0'.ScriptControl |CR Text 1
DownloadToClientFileName(ServerFileName : Text[250];ToFile : Text[250]) : Text[250]
ClientFileName := ToFile;
IF NOT DOWNLOAD(ServerFileName, '', '<TEMP>','', ClientFileName) THEN
EXIT('');
IF CREATE(objScript,TRUE,TRUE) THEN
BEGIN
CR := ' '; CR[1] := 13;
objScript.Language := 'VBScript';
objScript.AddCode(
'function RenameTempFile(fromFile, toFile)'+CR+
'set fso = createobject("Scripting.FileSystemObject")'+CR+
'set x = createobject("Scriptlet.TypeLib")'+CR+
'path = fso.getparentfoldername(fromFile)'+CR+
'toPath = path+"\"+left(x.GUID,38)'+CR+
'fso.CreateFolder toPath'+CR+
'fso.MoveFile fromFile, toPath+"\"+toFile'+CR+
'RenameTempFile = toPath'+CR+
'end function');
ClientFileName := objScript.Eval('RenameTempFile("'+ClientFileName+'","'+ToFile+'")');
ClientFileName := ClientFileName+'\'+ToFile;
END;
EXIT(ClientFileName);