Fehler im GDPdU-Export ...? (Classic Client)

12. September 2012 16:34

Es ist mal wieder so weit, dass ich Daten für den Steuerprüfer exportieren muss, und so wieder bei der CU11000 gelandet bin. Zwar arbeite ich noch unter einer 4er Version, der Code der 11000 scheint mir aber in Nav 9 keine für das Problem relevanten Änderungen erfahren zu haben.

Da mir beim Versuch, die Daten jeweils für ein Jahr zu exportieren (so wünscht es der Prüfer) das Ganze immer um die Ohren fliegt, was wohl an der Menge der Datensätze und der Verwendung von Temp-Tables liegt (glaube ich), habe ich mir einfach einen eigenen Export gebaut. Ist ja (eigentlich) auch nicht weiter schwierig; Alle Daten nach Vorgabe in .csv-Dateien schreiben, und parallel eine .XML-Datei generieren, die quasi als ein Daten-Katalog fungiert - fertig. Und dieser erwähnte XML Daten-Katalog ist von der Firma AUDICON definiert, die ja wohl das IDEA entwickelt haben. Und für die Verwendung durch IDEA wird der ganze Käse ja wohl letztlich exportiert.

Damit zu dem Punkt, der mich irritiert. Für den XML Daten-Katalog ist auch ein Node für den "ForeignKey" definiert. Diese Sektion innerhalb der XML-Datei soll einfach eine Relation zu einer anderen Tabelle herstellen. Hat man beispielsweise die Konto-Nummer in den Sachposten (17) im Feld "Sachkontonr.", so soll eine Verbindung zum Feld "Nr." in der Tabelle Sachkonto (15) hergestellt werden. So zumindest verstehe ich das, und das klingt ja irgendwie auch sinnvoll ...

Während die Audicon-Dokumentation (Download unter http://www.audicon.net/downloads) auf den Seiten 39 und 40 ausdrücklich beschreibt, dass für den XML-Tag "References" die Ziel-Tabelle der Relation anzugeben ist - in unserem beispiel also die Tabelle Sachkonto - schreibt Navision in diesen XML-TAG grundsätzlich den Namen des Primary Key Feldes dieser Tabelle, also "Nr."

Hier der Code aus einer über die CU11000 erzeugten Index.xml-Datei:
Code:
<ForeignKey>
  <Name>Sachkontonr.</Name>
  <References>Nr.</References>
</ForeignKey>


Dies ist auch nicht weiter verwunderlich, denn in der CU11000 findet sich folgender Code:
Code:
   IF AddElement(XMLCurrNode,'References',GDPdUTableRelField."From Field Name",'',XMLNewChild) > 0 THEN


Es wird also AUSDRÜCKLICH der Inhalt von "From Field Name" aus den GDPdU Tabellen-Relationen in das XML-TAG "References" geschrieben! Glaubt man jedoch Audicon - und das sollte man wohl - dann müsste hier wohl der Wert des Feldes "From Table Name" in den XML-TAG geschrieben werden ...

Was mich nun so struwelig macht sind 2 Dinge:
1. Wie kann solch ein offensichtlicher Fehler, durch den ja gar keine vernünftigen Relationen herstellbar sind (woher soll IDEA die Tabelle wissen?) seit Jahren im Nav Source enthalten sein. Werden diese Relationen etwa gar nicht verwendet?

2. Für die XML-Section "ForeignKey" muss in dem XML-TAG "Name" auch ein Feldname definiert werden. Dies kann eigentlich nur der Name des Feldes sein, von dem aus eine Relation in die referenzierte Tabelle gebildet werden soll. Anders könnte ein System wie IDEA gar nicht wissen, von welchem Feld aus die Relation zu bilden ist. In der Ziel-Tabelle hingegen sind die primären Key Felder ja definiert, so dass die Relation dort hergestellt werden kann. Leider sind die Feld-Namen in der Audicon Doku in den beteiligten Tabellen immer identisch, so dass dies dort nicht eindeutig draus zu erkennen ist ... aber es kann eigentlich nur so sein ...

Für unser Beispiel mit Sachposten und Sachkonto bedeutet das, dass der "ForeignKey" in jedem Fall so aussehen muss:
Code:
<ForeignKey>
   <Name>Sachkontonr.</Name>
   <References>Sachkonto</References>
</ForeignKey>

Also sozusagen "Quell-Feld" und "Ziel-Tabelle". Der Feldname "Nr." hat hier überhaupt nichts zu suchen.

Habe meine index.xml Dateien zum geforderten Daten-Export jetzt mal in dieser Form erzeugt, und bin gespannt, was der Prüfer sagt.

Pidi

Re: Fehler im GDPdU-Export ...? (Classic Client)

13. September 2012 08:50

Hi Pidi,

genügt es denn nicht einfach das "Temporary = NO" zu setzen?

Bei mir hat dies immer ausgreicht, um den Export erfolgreich durch zu führen.

Gruß Tom

Re: Fehler im GDPdU-Export ...? (Classic Client)

13. September 2012 09:34

Darüber hatte ich auch schon nachgedacht. Dann schreibt er halt die x Millionen Datensätze auf den Server, und die können ja später wieder gelöscht werden. Ich hatte mich aber nun mal für die Lösung entschieden, die Daten direkt in die .csv zu schreiben, und sehe auch nicht, wozu man die zuerst in eine Tabelle pumpen muss.

Das ist hier jedoch gar nicht das Thema, sondern dass Nav nach meiner Meinung die index.xml nicht korrekt schreibt!

Pidi

Re: Fehler im GDPdU-Export ...? (Classic Client)

13. September 2012 10:26

Hallo Pidi,

das Problem scheint auf beiden Seiten zu liegen.
In einem Whitepaper von Microsoft habe ich gelesen das hier der Beschreibungsstandard kritisiert wurde.
Im Beschreibungsstandard wird davon ausgegangen, das die verknüpften Felder immer die gleiche Bezeichnung haben, daher wurde vom Beschreibungsstandard abgewichen und der Prüfer muss das gegenbenfalls manuell anpassen. :shock:

Lies dazu mal hier im Whitepaper auf Seite 13: (Link)

Ferner werden die Verknüpfungen zwischen zwei Tabellenin der INDEX.XML nicht
beschreibungsstandardkonform dargestellt. Der Prüfer hat allerdings Informationen um die
Verknüpfungen manuell herstellen zu können.
[...]
Die aus Navision exportierten Daten können dennoch schon jetzt auf jeden Fall in IDEA
verarbeitet werden!
„Lediglich“ die Überprüfung der INDEX.XML weist momentan daraufhin, dass die INDEX.XML nicht
dem Beschreibungsstandard entspricht.


Das ist vermutlich auch der Grund das sie nicht den Tabellennamen als "References" angeben.
In dem Feld wollen sie dem Prüfer mitteilen das die Tabelle über dieses Feld verknüpft ist.

Vielleicht ist deine "index.xml" ja wirklich besser für den Prüfer und du hast einen eigentlich "offensichtlichen" Fehler gefixt? :-)

Komischerweise haben unsere Prüfer das nie angemahnt...

mfg,
winfy

Re: Fehler im GDPdU-Export ...? (Classic Client)

13. September 2012 10:50

Ich wusste das nicht, mein NSC wusste das nicht und ich frage mich, wie viele White Papers es eigentlich inzwischen zu dem Thema gibt.

Das erklärt die Angelegenheit. Tatsächlich hatte ich mich auch schon gewundert, dass nicht beide Feldnamen angegeben werden. Da in der Doku von Audicon immer die Feldnamen in beiden Tabellen gleich sind, hatte ich mir das so zusammengereimt, dass er in der Ziel-Tabelle anscheinend immer den Primary-Key verwendet. Anscheinend nicht, und ich bin mal gespannt, wann Audicon das erweitert, was bei einer XML-Datei doch gar nicht so schwierig sein dürfte.

Das MS sich nun entschieden hat, bei References den Namen des Ziel-Feldes und nicht den Tabellennamen anzugeben, wird schon irgendeinen Grund haben. Ich habe meine Daten gestern mit dem Tabellennamen im References TAG abgegeben, und jetzt bin ich mal gespannt, was passiert.

Besten Dank für den Hinweis an winfy :-D

Pidi