XMLPort - wie Struktur aufbauen?

11. Juli 2012 08:13

Guten Morgen,

so bin nun ein bisschen weiter gekommen.

Mein Ziel ist es die Zeilen in der TXT Datei so zu bekommen

Name;Name2;Debitorennummer;Adresse;Land;PLZ;Ort;Angebotsnummer;Artikelnummer0;Artikelbeschreibung0
Name;Name2;Debitorennummer;Adresse;Land;PLZ;Ort;Angebotsnummer;Artikelnummer1;Artikelbeschreibung1
Name;Name2;Debitorennummer;Adresse;Land;PLZ;Ort;Angebotsnummer;Artikelnummer2;Artikelbeschreibung2
Name;Name2;Debitorennummer;Adresse;Land;PLZ;Ort;Angebotsnummer;Artikelnummer3;Artikelbeschreibung3
Name;Name2;Debitorennummer;Adresse;Land;PLZ;Ort;Angebotsnummer;Artikelnummer4;Artikelbeschreibung4

Zur Zeit bekomme ich das leider nur so

Name;Name2;Debitorennummer;Adresse;Land;PLZ;Ort;Angebotsnummer

Artikelnummer0;Artikelbeschreibung0
Artikelnummer1;Artikelbeschreibung1
Artikelnummer2;Artikelbeschreibung2
Artikelnummer3;Artikelbeschreibung3
Artikelnummer4;Artikelbeschreibung4

Meine XML Struktur sieht so aus

Bild

Wie muss ma die Struktur umbauen, damit die Informationen schön Zeile für Zeile ausgegeben werden (siehe "Mein Ziel")?
Hat jemand eine Idee?

Vielen Dank für eure Anregungen, Ideen, Lösungen

Beste Grüße
Robert

Re: Ungültiger Markenname XMLPort

11. Juli 2012 08:20

Hi,

eigentlich ist das eine andere Frage und gehört in einen seperaten Beitrag (vielleicht ist ja einer der Mods so nett das dann zu trennen :wink:)

Nun zur Lösung:
Verschiebe die quoteline direkt unter quote (Sales Header).
Quoteline sollte eingerückt sein und quote, derzeit scheinst du SalesHeader und SalesLine unabhängig voneinander zu durchlaufen.
Sämtliche Field-Elemente kommen dann eingerückt unter quoteline.

Re: Ungültiger Markenname XMLPort

11. Juli 2012 08:26

Danjo hat geschrieben:(vielleicht ist ja einer der Mods so nett das dann zu trennen :wink:)

Bittesehr ;-)

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 08:39

Danke Natalie :)

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 08:56

Sorry für's durcheinander bringen. Danke an Natalie.

Nun habe ich folgende Anordnung aber nach F11 kommt folgende Meldung und der Cursor springt in die Zeile ArtNr

Bild

Habe auch mal so probiert

Bild

oder so

Bild

oder so

Bild

bekomme immer die Meldung

hm..noch eine Idee?

Danke im voraus
Gruß

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 09:07

Vom Aussehen her sollte der letzte Screenshot stimmen.
Springt er hier auch auf die ArtNr?

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 09:31

bei dem letzten Bild kommt eine andere Meldung (sorry ich dachte das wäre die selbe)

Bild

dann springt der Cursor auf quoteline

Habe alle Zeilen darunter dann geändert und nach F11 kommt diese Meldung

Bild

und der Cursor springt auf ArtNr

die Eigenschaften von dem Feld sehen so aus

Bild

was ist wohl mit "TableVariableName" gemeint?

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 10:26

Benenne doch einmal deine Datasource bei quoteline um und füge dann die Datasource der SalesLineFelder neu über F5 ein.

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 11:16

Um es kurz zu machen: schmeiß den Sales Header als Data Source komplett aus dem Report raus. Die ehemaligen Sales Header-Felder werden einfach mit Source Type Text angelegt. Das sollte dann so aussehen:

xml50000.png


Dann im quoteline - Export::OnAfterGetRecord-Trigger den passenden Sales Header holen und die Text-Variablen entsprechend befüllen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 11:30

hab ich gemacht. Das selbe. Die Meldung kommt trotzdem. Uff, schwere Geburt.
Habe den XMLPort komplett neu erstellt, trozdem ich laufe immer auf den selben Fehler. :-x

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 11:32

Tim hat geschrieben:Um es kurz zu machen: schmeiß den Sales Header als Data Source komplett aus dem Report raus. Die ehemaligen Sales Header-Felder werden einfach mit Source Type Text angelegt. Das sollte dann so aussehen:

xml50000.png


Dann im quoteline - Export::OnAfterGetRecord-Trigger den passenden Sales Header holen und die Text-Variablen entsprechend befüllen.


ok. werde ich versuchen

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 11:35

Welche Meldung bekommst du weiterhin. Diese hier?

xml50000-1.png


Dann stimmt einfach was mit deinen Zuordnungen nicht. Die Meldung solltest du aber nicht bekommen, wenn du den XMLport so angelegt hast, wie ich es vorgeschlagen habe. Bitte mach mal einen Screenshot von dem Zustand, den du jetzt hast.

Edit: ah ok, das bezog sich auf den Vorschlag von Danjo.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 12:38

Tim hat geschrieben:Welche Meldung bekommst du weiterhin. Diese hier?

xml50000-1.png


Dann stimmt einfach was mit deinen Zuordnungen nicht. Die Meldung solltest du aber nicht bekommen, wenn du den XMLport so angelegt hast, wie ich es vorgeschlagen habe. Bitte mach mal einen Screenshot von dem Zustand, den du jetzt hast.

Edit: ah ok, das bezog sich auf den Vorschlag von Danjo.


Diese Meldung kommt nicht mehr

Zur Zeit sieht das so aus:

Bild

Variablen angelegt und im Code eingefügt

Code:
quote - Export::OnAfterGetRecord()

SalesHeaderg_REC.GET;
"<Sales Line>".SETRANGE("Document Type", "<Sales Line>"."Document Type"::Quote);
"<Sales Line>".SETRANGE("Document No.", "<Sales Line>"."Document No.");
Firmenname := SalesHeaderg_REC."Bill-to Name";
Name2 := SalesHeaderg_REC."Bill-to Name 2";
KdNr := SalesHeaderg_REC."Bill-to Customer No.";
Adress := SalesHeaderg_REC."Bill-to Address";
Land := SalesHeaderg_REC."Bill-to Country/Region Code";
PLZ := SalesHeaderg_REC."Bill-to Post Code";
Ort := SalesHeaderg_REC."Bill-to City";


dann rufe ich im RTC ein Angebot auf und lasse den XMLport laufen. Dabei kommt folgende Meldung

Bild

Irgendwie filtert er noch nicht auf dem aktuellen Angebot.

Gruß
Robert

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 13:09

Habe den Filter gesetzt. Scheint NAV09 nicht zu interessieren. Meldung bleibt


SalesHeaderg_REC.GET;
SalesHeaderg_REC.SETCURRENTKEY(SalesHeaderg_REC."No.");
SalesHeaderg_REC.SETFILTER(SalesHeaderg_REC."No.","<Sales Line>"."Document No.");

"<Sales Line>".SETRANGE("Document Type", "<Sales Line>"."Document Type"::Quote);
"<Sales Line>".SETRANGE("Document No.", "<Sales Line>"."Document No.");
Firmenname := SalesHeaderg_REC."Bill-to Name";
Name2 := SalesHeaderg_REC."Bill-to Name 2";
KdNr := SalesHeaderg_REC."Bill-to Customer No.";
Adress := SalesHeaderg_REC."Bill-to Address";
Land := SalesHeaderg_REC."Bill-to Country/Region Code";
PLZ := SalesHeaderg_REC."Bill-to Post Code";
Ort := SalesHeaderg_REC."Bill-to City";

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 13:30

Hi,

bei einem GET gibst du IMMER die Schlüsselfelder mit. In diesem Fall also "Document Type" und "Document No.".
In deinem Codestück verwendest du GET komplett ohne Parameter. D.h. NAV sucht jetzt den Datensatz bei dem alle Schlüsselfelder leer sind.
Schaue dir bitte auch einmal das hier an:
http://www.navision24.de/befehle/get.html

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 13:33

Ist nicht böse gemeint, aber da du dich offensichtlich gar nicht mit Programmierung auskennst, solltest du die Finger davon lassen, bis du die entsprechenden Kenntnisse aufgebaut hast. Um den passenden Sales Header zur Sales Line zu holen, brauchst du folgende Zeile:

Code:
SalesHeader.GET("Sales Line"."Document Type","Sales Line"."Document No.");


Den ganzen anderen Murks wieder raus.

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 14:19

Tim hat geschrieben:Ist nicht böse gemeint, aber da du dich offensichtlich gar nicht mit Programmierung auskennst, solltest du die Finger davon lassen, bis du die entsprechenden Kenntnisse aufgebaut hast. Um den passenden Sales Header zur Sales Line zu holen, brauchst du folgende Zeile:

Code:
SalesHeader.GET("Sales Line"."Document Type","Sales Line"."Document No.");


Den ganzen anderen Murks wieder raus.


wenn ich die Finger davon lasse, wie soll ich dann entsprechende Kenntnisse aufbauen? :wink:

Ich bin nun mal der jenige bei uns in der Firma der solche Sachen durchführen muss, weil der Chef das eben haben will. Es ist nicht so, dass ich mit der Anforderung hier ankomme und sage das und das will ich haben und dann erwarte ich die fertige Lösung. Mir ist bewust, dass hier die Hilfe zur Selbsthilfe angeboten wird und das weiss ich zu schätzen.

Es sind natürlich Stellen wo ich nicht mehr weiterkomme und hoffe dann, dass jemand mein Problem sich anschaut und durch eine Anregung hier oder Idee da mir dann weiterhilft. Bevor ich hier was poste habe ich schon etliche Versuche und Bücher durchwälzt nach einer passablen Lösung.

Ich hoffe ihr seht das nicht so eng. Jeder hat mal klein angefangen.

Dein Code habe ich eingebaut. Danke dafür. Es werden schon mal die Artikel aus der Sales Line erzeugt.
Leider nicht die anderen Felder

Firmenname;name2 etc

Bild

Hab folgendes ausprobiert (wie weiter oben empfohlen) :

Globale Variable erstellt

Bild

dann im Code eingebunden in
quote - Export::OnAfterGetRecord()

Variante A (funktioniert nicht)

Code:
IF SalesHeaderg_REC.GET(SalesHeaderg_REC."Document Type",SalesHeaderg_REC."No.") THEN BEGIN

Firmenname := SalesHeaderg_REC."Bill-to Name";
Name2 := SalesHeaderg_REC."Bill-to Name 2";
KdNr := SalesHeaderg_REC."Bill-to Customer No.";
Adress := SalesHeaderg_REC."Bill-to Address";
Land := SalesHeaderg_REC."Bill-to Country/Region Code";
PLZ := SalesHeaderg_REC."Bill-to Post Code";
Ort := SalesHeaderg_REC."Bill-to City";
END;


Variante B (funktioniert leider auch nicht)

Code:
IF SalesHeaderg_REC.GET THEN BEGIN

Firmenname := SalesHeaderg_REC."Bill-to Name";
Name2 := SalesHeaderg_REC."Bill-to Name 2";
KdNr := SalesHeaderg_REC."Bill-to Customer No.";
Adress := SalesHeaderg_REC."Bill-to Address";
Land := SalesHeaderg_REC."Bill-to Country/Region Code";
PLZ := SalesHeaderg_REC."Bill-to Post Code";
Ort := SalesHeaderg_REC."Bill-to City";
END;


Vielleicht gibt sich noch jemand ein Rück und schaut sich den Code mal, was falsch ist.
Vielen Dank für eure Mühe
Beste Grüße
Robert

PS: Der GesamtCode sieht zur Zeit so aus:

Code:
IF SalesHeaderg_REC.GET(SalesHeaderg_REC."Document Type",SalesHeaderg_REC."No.") THEN BEGIN

Firmenname := SalesHeaderg_REC."Bill-to Name";
Name2 := SalesHeaderg_REC."Bill-to Name 2";
KdNr := SalesHeaderg_REC."Bill-to Customer No.";
Adress := SalesHeaderg_REC."Bill-to Address";
Land := SalesHeaderg_REC."Bill-to Country/Region Code";
PLZ := SalesHeaderg_REC."Bill-to Post Code";
Ort := SalesHeaderg_REC."Bill-to City";
END;

SalesHeaderg_REC.GET("<Sales Line>"."Document Type","<Sales Line>"."Document No.");
"<Sales Line>".SETRANGE("Document Type", "<Sales Line>"."Document Type"::Quote);
"<Sales Line>".SETRANGE("Document No.", "<Sales Line>"."Document No.");

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 14:25

auch so probiert

Code:
SalesHeaderg_REC.GET("<Sales Line>"."Document Type","<Sales Line>"."Document No.");
"<Sales Line>".SETRANGE("Document Type", "<Sales Line>"."Document Type"::Quote);
"<Sales Line>".SETRANGE("Document No.", "<Sales Line>"."Document No.");

Firmenname := SalesHeaderg_REC."Bill-to Name";
Name2 := SalesHeaderg_REC."Bill-to Name 2";
KdNr := SalesHeaderg_REC."Bill-to Customer No.";
Adress := SalesHeaderg_REC."Bill-to Address";
Land := SalesHeaderg_REC."Bill-to Country/Region Code";
PLZ := SalesHeaderg_REC."Bill-to Post Code";
Ort := SalesHeaderg_REC."Bill-to City";


Die Felder aus dem Sales Header werden trotzdem nicht erzeugt

Re: XMLPort - wie Struktur aufbauen?

11. Juli 2012 14:30

Dein Problem ist, dass du den Code zu spät ausführst.
Wie der Name schon sagt wird OnAfterExport eben erst nach dem exportieren ausgeführt.
Was zur Zeit des Exports nicht da ist, kann auch nicht in eine Datei geschrieben werden.

Zusätzlich dazu bringt dein GET nach wie vor kein Ergebnis und der Fehler wird lediglich durch das IF unterdrückt.

Zu dem "Der Chef will es so" rate ich dir zu diesem Chef zu gehen und ihn nach einer C/Side Introduction und am besten auch NAV Essentials Schulung fragen, da es nun einmal unverantwortlich ist einen Mitarbeiter, der weder die Standardausbildung genossen, noch einen erfahrenen Kollegen für Rückfragen hat, in einem produktiven Warenwirtschaftssystem Anpassungen machen zu lassen.