[gelöst[ Dataport von zwei Tabellen

20. April 2011 13:19

Hallo,

ich habe ein Problem mit einem Dataport.
Ich möchte aus dem Sales Header und der Sales Line bestimmte Daten auswerten.

Die Daten aus dem Sales Header bekomme ich auch, aber die der Sales Line erscheinen einfach nicht.
Scheinbar reicht ein DataItemlink nicht aus.
Was muss ich machen, damit ich zu dem entsprechenden Sales Header auch die Daten der Sales Line bekomme.

Vielen Dank
Zuletzt geändert von marcolde am 21. Oktober 2011 11:57, insgesamt 2-mal geändert.

Re: Dataport von zwei Tabellen

20. April 2011 13:38

Wenn du versuchst eine Kopf-Zeilen-Struktur zu exportieren (über Indent eines DataItems) wirst du kläglich scheitern. Man kann zwar Data-Items einrücken, das hat aber keinerlei Effekt. Es gibt nur zwei Möglichkeiten: XMLport oder ein Dataport, welcher zuerst alle (benötigten) Köpfe und dann nachgelagert alle (benötigten) Zeilen exportiert.

Re: Dataport von zwei Tabellen

20. April 2011 13:44

was wäre die einfachste Variante.

Eigentlich benötige ich "nur" folgende Auflistung

Verkauf an Name/Adresse/PLZ/Ort
und aus der Zeile Menge, Einheit, Nr, Beschreibung

Es sollte aus der Datei dann schon zu erkennen sein, dass es sich um einen Datensatz handelt. Also zu dem Auftragskopf darunter die entsprechenden Auftragszeilen.

XMLport habe ich noch nie benutzt

Re: Dataport von zwei Tabellen

20. April 2011 14:15

Mit dem Dataport wirst du das eher weniger lösen können.
Bei dem Dataport würde es so aussehen:
Code:
Kopfinformation;Kopfinformation;Kopfinformation;Kopfinformation
Kopfinformation;Kopfinformation;Kopfinformation;Kopfinformation
Kopfinformation;Kopfinformation;Kopfinformation;Kopfinformation

Zeileninformation;Zeileninformation;Zeileninformation;Zeileninformation
Zeileninformation;Zeileninformation;Zeileninformation;Zeileninformation
Zeileninformation;Zeileninformation;Zeileninformation;Zeileninformation
Zeileninformation;Zeileninformation;Zeileninformation;Zeileninformation
Zeileninformation;Zeileninformation;Zeileninformation;Zeileninformation
Zeileninformation;Zeileninformation;Zeileninformation;Zeileninformation


Du könntest dir aber auch besonders Mühe geben und eine Codeunit schreiben, welche die Daten im gewünschten Muster manuell rausschreibt. Hat dann halt keinen Luxus wie DataportFields etc.

Und wie gesagt die Möglichkeit über einen XMLport.

Es kommt halt ganz darauf an für was du die Daten benötigst (zum Beispiel Import in anderes System).

Re: Dataport von zwei Tabellen

20. April 2011 14:20

okay,

die Daten benötige ich, damit die unsere Logistiker (externe Firma) bei sich die Auftragsdaten einspielen können und diese die nicht abtippen müssen.

Jetzt die Frage, da ich selbst noch nie einen XMLport gemacht habe... wie funktioniert das?

Re: Dataport von zwei Tabellen

20. April 2011 14:39

Hallo,

weist du denn schon, wie deine Logistiker die Daten gerne formatiert hätten? Wenn die von XML noch nichts gehört haben, nützt dir ein XML-Port auch nichts.

Du kannst im Dataport auch folgendes ausgeben:
Code:
KopfDaten1;Zeile1Daten
KopfDaten1;Zeile2Daten
KopfDaten1;Zeile3Daten
              :
              :
KopfDaten2;Zeile1Daten
KopfDaten2;Zeile2Daten
              :
              :


Gruß, Fiddi

Re: Dataport von zwei Tabellen

20. April 2011 15:03

Sebastian Pfliegel hat geschrieben:Wenn du versuchst eine Kopf-Zeilen-Struktur zu exportieren (über Indent eines DataItems) wirst du kläglich scheitern. Man kann zwar Data-Items einrücken, das hat aber keinerlei Effekt. Es gibt nur zwei Möglichkeiten: XMLport oder ein Dataport, welcher zuerst alle (benötigten) Köpfe und dann nachgelagert alle (benötigten) Zeilen exportiert.


Ich möchte mal auf einen anderen Post verweisen, der erklärt, wie man mit eingerückten DataItems einen Dataport (Export) erstellt: http://www.msdynamics.de/viewtopic.php?f=17&t=12413

Re: Dataport von zwei Tabellen

20. April 2011 15:48

Hallo Sebastian,

er würde eigentlich CSV, Excel oder Text bevorzugen. Ich glaube mit XML kann der wenig anfangen.

das andere Thema hatte ich auch gesehen und danach probiert.
Er gibt mir dann zwar den richtigen Kopf aus, aber nicht die richtigen Zeilen oder er gibt alle möglichen Zeilen aus.
Beide Varianten sind doof.

Re: Dataport von zwei Tabellen

20. April 2011 16:06

Wobei XML auch nix weiter als ein Text-Dokument ist ;-)

Re: Dataport von zwei Tabellen

20. April 2011 17:16

marcolde hat geschrieben:das andere Thema hatte ich auch gesehen und danach probiert.
Er gibt mir dann zwar den richtigen Kopf aus, aber nicht die richtigen Zeilen oder er gibt alle möglichen Zeilen aus.
Beide Varianten sind doof.


Dann überprüf doch bitte einmal den DataItemLink, den du im eingerückten DataItem angegeben hast.

Re: Dataport von zwei Tabellen

20. April 2011 22:47

Hi Alex,

wie lässt es sich einrücken?
Der Dataitemlink stimmt, aber er rückt nicht ein sondern bleibt eben auch vornen stehen.


XML ist auch nur ein Textdokument?

Also der Logistiker könnte mit beiden Varianten arbeiten.
Welche sollte ich ihm sinnvollerweise schicken?
Bin etwas ratlos...

Re: Dataport von zwei Tabellen

21. April 2011 08:09

Hallo Marco,

mit einer Textdatei meint euer Logistiker wahrscheinlich eine TAB-Stopp getrennte Datei, ähnlich einer CSV-Datei. Das hat mit XML nichts zu tun.
Kann er außerdem mit Zeilen unterschiedlicher Bedeutung umgehen. D.h. du müsstest dann Satzarten einführen z.B. 'K' für Kopfsatz (Sales Header) und 'Z' für Zeile (Sales Line) damit man unterscheiden kann was denn jetzt Daten aus dem Kopf sind, und was für Daten aus der Zeile Kommen. Wenn das nicht geht, bleibt dir nur die Methode, wie ich sie schon weiter oben beschrieben habe-> in jeder Zeile alle Kopfdaten auszugeben, und danach die Zeilendaten.

Gruß, Fiddi

Re: Dataport von zwei Tabellen

21. April 2011 10:37

marcolde hat geschrieben:was wäre die einfachste Variante.

Eigentlich benötige ich "nur" folgende Auflistung

Verkauf an Name/Adresse/PLZ/Ort
und aus der Zeile Menge, Einheit, Nr, Beschreibung

Es sollte aus der Datei dann schon zu erkennen sein, dass es sich um einen Datensatz handelt. Also zu dem Auftragskopf darunter die entsprechenden Auftragszeilen.

XMLport habe ich noch nie benutzt


Also wenn du das wirklich in dem obigen Format möchtest:

Code:
Kopf1
Zeile1zuKopf1
Zeile2zuKopf1
Kopf2
Zeile1zuKopf2


Kann man das auch umsetzen mit einem eingerückten Dataport!

Für eine elektronische Verabeitung fände ich wahrscheinlich die Variante von Fiddi besser für die Zeilen die Kopfdaten zu holen, aber deine obige Variante kann man natürlich auch umsetzen (siehe Screenshot).

DataPort_Salesheader_Salesline.JPG


P.S.: Wie schon in den NAV-Tricks beschrieben mit den Problemen in der ersten/letzten Zeile vom Dataport.

mfg,
winfy
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Dataport von zwei Tabellen

21. April 2011 14:17

es funktioniert nicht. ich gebe die Properties genauso ein, aber er gibt mir nur den Header aus und die lines sind nicht vorhanden.

woran kann es noch liegen?

Re: Dataport von zwei Tabellen

21. April 2011 14:24

Hallo,

nochmal die Frage: kann dein Logistiker mit Kopf und Zeilendaten getrennt in in einer Datei umgehen?


Gruß, Fiddi

Re: Dataport von zwei Tabellen

21. April 2011 14:25

und es muss halt nicht zwingend in irgendeinem format sein, nur eben so das jemand anderes damit arbeiten kann.
ob es nun nebeneinander oder untereinander steht ist dabei egal. auh die Rehenfolge der Felder ist nicht so wichtig.

Es müssen halt nur irgendwie daten heraus kommen.

Re: Dataport von zwei Tabellen

21. April 2011 14:34

marcolde hat geschrieben:es funktioniert nicht. ich gebe die Properties genauso ein, aber er gibt mir nur den Header aus und die lines sind nicht vorhanden.

woran kann es noch liegen?


Ich habe es aber mit den obigen Einstellungen realisiert und es werden auch die richtigen Zeilen zu den Köpfen exportiert.

Anmerkungen:
1. Hast du auch das DataItem mit dem Property DataItemIndent=1 eingerückt?
2. DataItemLink angegeben "Documen No." in Rechnungszeile = "No" in Rechnungskopf?
Nicht vergessen "No." in der Rechnungszeile ist die Artikelnummer bzw. Sachkontonummer usw.! :wink:
3. DataItemSeparator und RecordSeparator = <New Line> ?
4. Im Integer DataItem DataItemTableView = SORTING(Number) WHERE(Number=CONST(1)) angegeben?

Übrigens an die gesamte Community Frohe Ostern! :mrgreen:

mfg,
winfy
Zuletzt geändert von winfy am 21. April 2011 15:04, insgesamt 1-mal geändert.

Re: Dataport von zwei Tabellen

21. April 2011 15:03

ja alles gemacht, bis auf Data Itemident 1 kann ich nicht setzen.

wo mache ich das und wie?

Re: Dataport von zwei Tabellen

21. April 2011 15:08

marcolde hat geschrieben:ja alles gemacht, bis auf Data Itemident 1 kann ich nicht setzen.

wo mache ich das und wie?


Das ist ja das Wichtigste! ;)

Ich gehe mal davon aus du hast NAV 5.0, oder?

Dort gehst du zu dem DataItem "Sales Invoice Line" und dort steht ganz oben in dem Property DataItemIndent dort wählst du rechts den Wert 1, dann wird das DataItem auch eingerückt.

DataPort_Salesline.JPG


mfg,
winfy
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Dataport von zwei Tabellen

21. April 2011 16:39

Hallo erst mal !

Ich hatte das gleiche Problem mit den zwei Tabellen. Meine Anforderung war jedoch recht gering. Soll bedeuten: Nur wenige Spalten aus jeder Tabelle.
Habe einen netten Tip erhalten, der vielleicht helfen könnte.

Das war der Tip... selbsterklärend

(Ist nur ein Beispiel!!! Sinn egal.. :)
Bild

Re: Dataport von zwei Tabellen

21. April 2011 16:59

Hallo,

Modde hat geschrieben:Das war der Tip... selbsterklärend


Dieser Tipp funktioniert aber nur, wenn du Kopf- und Zeilendaten in einer Zeile ausgeben willst. Außerdem ist er ein wenig Aufwendig :mrgreen:

Auf dieses Beispiel SalesHeader/SalesLine bezogen, läuft der Dataport auf die Sales Line.

Im "Before Export"-Trigger der Sales Line steht nur folgender Code: (SH ist als globaler Record auf die Tabelle "Sales Header" definiert.
Code:
CLEAR(SH);
if SH.GET("Document Type","Document no.") then;


In den Dataport- Fields sparst du dir die Hilfsvariablen, sondern greifst direkt auf den SH (Sales Header) zu
dtaportfields.jpg


Gruß, Fiddi
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Dataport von zwei Tabellen

28. April 2011 09:25

Hallo,

entschuldigt die späte Antwort, hatte ein paar Tage frei und da ging es leider nicht früher,

Mit dem Dataitemindent funktioniert nicht, da das Feld nicht da ist.
Wir haben NAV 5.0 richtig.

Re: Dataport von zwei Tabellen

28. April 2011 11:02

marcolde hat geschrieben:Hallo,

ich habe ein Problem mit einem Dataport.
Ich möchte aus dem Sales Header und der Sales Line bestimmte Daten auswerten.

Die Daten aus dem Sales Header bekomme ich auch, aber die der Sales Line erscheinen einfach nicht.
Scheinbar reicht ein DataItemlink nicht aus.
Was muss ich machen, damit ich zu dem entsprechenden Sales Header auch die Daten der Sales Line bekomme.

Vielen Dank


Ach ist das so - ja?
Wir haben den Sprung von 4.x auf 2009 gemacht.
Dort ist mir erst aufgefallen das dieses Property nicht mehr angezeigt wird.

Habt ihr noch eine ältere NAV Version?
Dort könntest du den Dataport erstellen und dann in die NAV 5.x importieren.

Oder du fragst deinen Partner ob er dir einen TXT Ex/Import von dem DataPort erstellt und das DataItemIndent=1 beim abhängigen DataItem manuell hinzufügt. Das sollte in wenigen Minuten erledigt sein.

Alternativ, wenn du das nicht anders hinbekommst, kannst du natürlich auch einen Report schreiben, welcher dir die benötigten Daten in eine Datei schreibt.

mfg,
winfy

Re: Dataport von zwei Tabellen

28. April 2011 12:32

Also ich weiß ja nicht, warum das ein dataport sein muss. Das kann man doch auch als Report mit einem Export an Excel erledigen.
Die Funktionen des Excel-Buffers sind ja ziemlich einfach und man kann da auch mit eingerückten Dataitems arbeiten.

Schon einmal daran gedacht?

Re: Dataport von zwei Tabellen

28. April 2011 13:38

Hallo an alle,

wie wäre es denn, wenn Marco zuerst einmal klärt, ob und wie sein Logistiker getrennte BelegKopf- und Belegzeilendaten überhaupt verarbeiten kann? In CSV und TXT ist das eigentlich nicht vorgesehen.

Gruß, Fiddi