<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Datenbanken Software eBooks Web CMS &#187; XML</title>
	<atom:link href="http://www.susss.at/tag/xml/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.susss.at</link>
	<description>Christian Suschegg =&#62; Datenbank-Architekt * Software-Entwickler * E-Book-Autor * Web-Redakteur</description>
	<lastBuildDate>Thu, 01 Nov 2012 15:54:36 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.39</generator>
	<item>
		<title>XML-Datei aus Navision erstellen</title>
		<link>http://www.susss.at/2012/10/19/xml-datei-aus-navision-erstellen/</link>
		<comments>http://www.susss.at/2012/10/19/xml-datei-aus-navision-erstellen/#comments</comments>
		<pubDate>Fri, 19 Oct 2012 14:00:35 +0000</pubDate>
		<dc:creator><![CDATA[ChriSu]]></dc:creator>
				<category><![CDATA[Navision]]></category>
		<category><![CDATA[NAV 5.0]]></category>
		<category><![CDATA[Navision. Programmierung]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.susss.at/?p=470</guid>
		<description><![CDATA[In meinem letzten Beitrag über XML-Ports in Navision habe ein sehr simples Grundmodell skizziert, wie man in Dynamics NAV 5.0 SP1 XML-Ports ansprechen kann. Heute möchte ich das Beispiel ein wenig ausbauen und vor allem auf die Gestaltung des XMLPorts mit einer variablen Anzahl von Unterknoten eingehen. &#160; XML-Datei Zum besseren Verständnis schauen wir uns [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>In meinem letzten Beitrag über <a title="XMLPort in Navision" href="http://www.susss.at/2012/10/17/xmlport-in-navision/" target="_blank">XML-Ports in Navision</a> habe ein sehr simples Grundmodell skizziert, wie man in Dynamics NAV 5.0 SP1 XML-Ports ansprechen kann.</p>
<p>Heute möchte ich das Beispiel ein wenig ausbauen und vor allem auf die Gestaltung des <strong>XMLPorts</strong> mit einer variablen Anzahl von <strong>Unterknoten</strong> eingehen.</p>
<p>&nbsp;</p>
<h2><span style="color: #800000">XML-Datei</span></h2>
<p>Zum besseren Verständnis schauen wir uns am Beginn gleich einmal das gewünschte <strong>Ergebnis</strong> an:</p>
<p><a href="http://www.susss.at/wp-content/uploads/2012/10/xml-datei-mitarbeiter.jpg"><img class="size-full wp-image-472" src="http://www.susss.at/wp-content/uploads/2012/10/xml-datei-mitarbeiter.jpg" alt="XML-Ergebnis-Datei" width="368" height="277" /></a></p>
<p>Zu einem <strong>Mitarbeiter</strong> soll neben den allgemeinen Daten (Name, Geburtsdatum, Gehalt) auch die <strong>variable Anzahl</strong> der Kinder mit Namen und Alter abgespeichert werden.</p>
<p>&nbsp;</p>
<h2><span style="color: #800000"><strong>XMLPort </strong></span></h2>
<h3><span style="color: #000080">Struktur</span></h3>
<p>Den entsprechenden <strong>XMLPort</strong> habe ich folgendermaßen aufgebaut:</p>
<div id="attachment_474" style="width: 325px" class="wp-caption alignnone"><a href="http://www.susss.at/wp-content/uploads/2012/10/xmlport_Mitarbeiter.jpg"><img class="size-full wp-image-474" src="http://www.susss.at/wp-content/uploads/2012/10/xmlport_Mitarbeiter.jpg" alt="XMLPort - Struktur" width="315" height="172" /></a><p class="wp-caption-text">XMLPort &#8211; Struktur</p></div>
<p>Zu beachten ist der <strong>SourceType Table</strong> beim dynamischen Unterknoten &#8222;Kind&#8220;. Die <strong>DataSource</strong> wurde dabei auf <strong>Integer</strong> festgelegt (und der Name statt &lt;Integer&gt;(Integer) auf Kind(Integer) abgeändert).</p>
<p>Ich habe auch dieses Beispiel wieder bewußt sehr einfach gehalten. So würde man z.B. in Navision mangels <strong>dynamischer Arrays</strong> wohl eher auf eine <strong>temporäre Tabelle</strong> zum Zwischenspeichern der Kinderdaten zurückgreifen.</p>
<p>Der Einfachheit halber setze ich aber voraus, dass es keine Mitarbeiter mit mehr als 10 Kindern geben wird, um dennoch auf ein Array (eben mit <strong>fixer Dimensionsanzahl</strong>) zurückgreifen zu können.</p>
<p>Das Feld &#8222;KinderAnzahl&#8220; soll nicht mit einem Fixwert beschickt sondern dynamisch aus der Anzahl der übergebenen Kinder-Daten errechnet werden.</p>
<h3><span style="color: #000080">Globale Variablen</span></h3>
<div id="attachment_477" style="width: 445px" class="wp-caption alignnone"><a href="http://www.susss.at/wp-content/uploads/2012/10/xmlport_mitarbeiter_globale_variable.jpg"><img class="size-full wp-image-477" src="http://www.susss.at/wp-content/uploads/2012/10/xmlport_mitarbeiter_globale_variable.jpg" alt="Globale Variablen für den dynamischen Unterknoten" width="435" height="86" /></a><p class="wp-caption-text">Globale Variablen für den dynamischen Unterknoten</p></div>
<p>&nbsp;</p>
<p>In g_intKinderZaehler wird automatisch die Anzahl der übergebenen Kinder hochgezählt.</p>
<p>Die Daten pro Kind (im Beispiel: Name und Alter) stehen im <strong>Array</strong> g_strKind. Die <strong>Länge</strong> dieser Variablen (im Beispiel: 20) muss der Länge des längsten &#8222;Unterfeldes&#8220; (z.B. KindName) entsprechen, ansonst kann ein Laufzeitfehler auftreten &#8211; Siehe auch Routine <strong><span style="color: #008000">AddKind</span></strong>.</p>
<p>Die <strong>Array-Dimensionen</strong> habe ich folgendermaßen festgelegt (wie gesagt: dynamsiche Arrays kennt NAV 5.0 SP1 nicht):</p>
<div id="attachment_478" style="width: 190px" class="wp-caption alignnone"><a href="http://www.susss.at/wp-content/uploads/2012/10/array_dimensionen.jpg"><img class="size-full wp-image-478" src="http://www.susss.at/wp-content/uploads/2012/10/array_dimensionen.jpg" alt="Festlegen der Array-Dimensionen für den Unterknoten" width="180" height="54" /></a><p class="wp-caption-text">Festlegen der Array-Dimensionen für den Unterknoten</p></div>
<p>&nbsp;</p>
<ul>
<li>Die 1. Dimension bezieht sich auf die maximale <strong>Anzahl der Kinder</strong>: 10</li>
<li>Die 2. Dimension muss der <strong>Anzahl der Unterknoten-Elemente</strong> entsprechen (pro Kind: Name und Alter)</li>
</ul>
<p>&nbsp;</p>
<h3><span style="color: #000080">Programmierung</span></h3>
<p><em>Wie wird nun die variable Anzahl an Kindern befüllt?</em></p>
<div id="attachment_480" style="width: 359px" class="wp-caption alignnone"><a href="http://www.susss.at/wp-content/uploads/2012/10/KinderAnzahl.jpg"><img class="size-full wp-image-480" src="http://www.susss.at/wp-content/uploads/2012/10/KinderAnzahl.jpg" alt="Ermittlung der Anzahl der Kinder" width="349" height="156" /></a><p class="wp-caption-text">Ermittlung der Anzahl der Kinder</p></div>
<p>&nbsp;</p>
<p>Im Trigger <strong>OnInitXMLPort()</strong> wird der &#8222;Kinder-Zähler&#8220; auf 0 gesetzt.</p>
<p>Bei der Ausgabe der Daten wird diese Zähler-Variable im Trigger <strong>OnPreXMLPort()</strong> dem Element &#8222;KinderAnzahl&#8220; zugewiesen.</p>
<p><em>Wie werden nun die Kind-Daten an den XML-Port übergeben?</em></p>
<p><a href="http://www.susss.at/wp-content/uploads/2012/10/AddKind.jpg"><img class="size-full wp-image-482" src="http://www.susss.at/wp-content/uploads/2012/10/AddKind.jpg" alt="Zuweisung der Kinder und Erhöhung des Zählers" width="475" height="140" /></a></p>
<p>Ich habe dazu eine Routine &#8222;AddKind&#8220; entwickelt, welche meine <strong>Array-Variable</strong> entsprechend befüllt und dabei auch den Kinder-Zähler hochzählt.</p>
<p><em>Wie erfolgt nun die Ausgabe dieser Kinddaten?</em></p>
<div id="attachment_484" style="width: 373px" class="wp-caption alignnone"><a href="http://www.susss.at/wp-content/uploads/2012/10/kind-ausgabe.jpg"><img class="size-full wp-image-484" src="http://www.susss.at/wp-content/uploads/2012/10/kind-ausgabe.jpg" alt="Ausgabe der dynamischen Kinder-Daten" width="363" height="154" /></a><p class="wp-caption-text">Ausgabe der dynamischen Kinder-Daten</p></div>
<p>&nbsp;</p>
<p>Im Trigger &#8222;Kind &#8211; Export::OnPreXMLItem()&#8220; wird festgelegt, wieviele Unter-Elemente auszugeben sind. Im Trigger &#8222;<strong>Kind &#8211; Export::OnAfterGetRecord()</strong>&#8220; erfolgt schließelich die Zuweisung der Array-Variablen an die XML-Unterknotenelemente.</p>
<p>&nbsp;</p>
<p>Nur der Vollständigkeit halber möchte ich auch noch den <strong>Programmcode</strong> zur Befüllung der <strong>Mitarbeiterdaten</strong> anführen, welche ich mittels meiner Routine &#8222;SetMitarbeiter&#8220; vornehme:</p>
<div id="attachment_485" style="width: 460px" class="wp-caption alignnone"><a href="http://www.susss.at/wp-content/uploads/2012/10/setmitarbeiter.jpg"><img class="size-full wp-image-485" src="http://www.susss.at/wp-content/uploads/2012/10/setmitarbeiter.jpg" alt="Befüllung der Mitarbeiterdaten" width="450" height="50" /></a><p class="wp-caption-text">Befüllung der Mitarbeiterdaten</p></div>
<p>&nbsp;</p>
<h2><span style="color: #800000">XMLPort-Aufruf</span></h2>
<p>Zu guter Letzt fehlt uns jetzt nur noch der <strong>Aufruf</strong> unseres XMLPorts.</p>
<p>Die grundsätzliche Vorgangsweise habe ich ja bereits in einem <a title="XMLPort in Navision" href="http://www.susss.at/2012/10/17/xmlport-in-navision/" target="_blank">früheren Artikel</a> beschrieben. Heute wollen wir aber auch noch die neuen Erweiterungen berücksichtigen und in unserer Aufruf-<strong>CodeUnit</strong> einbauen:</p>
<div id="attachment_487" style="width: 515px" class="wp-caption alignnone"><a href="http://www.susss.at/wp-content/uploads/2012/10/xmlport-aufruf.jpg"><img class="size-full wp-image-487" src="http://www.susss.at/wp-content/uploads/2012/10/xmlport-aufruf.jpg" alt="Aufruf des XML-Ports" width="505" height="273" /></a><p class="wp-caption-text">Aufruf des XML-Ports</p></div>
<p>&nbsp;</p>
<p>Schöne Grüße &#8211; Christian</p>
]]></content:encoded>
			<wfw:commentRss>http://www.susss.at/2012/10/19/xml-datei-aus-navision-erstellen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XMLPort in Navision</title>
		<link>http://www.susss.at/2012/10/17/xmlport-in-navision/</link>
		<comments>http://www.susss.at/2012/10/17/xmlport-in-navision/#comments</comments>
		<pubDate>Wed, 17 Oct 2012 13:35:40 +0000</pubDate>
		<dc:creator><![CDATA[ChriSu]]></dc:creator>
				<category><![CDATA[Befehle]]></category>
		<category><![CDATA[Dynamics NAV]]></category>
		<category><![CDATA[Navision]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.susss.at/?p=456</guid>
		<description><![CDATA[Codeschnipsel zum Ansprechen eines XMLPorts in Microsoft Dynamics NAV 5.0 SP 1: Ich habe einen XMLPort für einen Daten-Export benötigt. Dazu habe ich folgende Routine in eine CodeUnit eingebaut: PROCEDURE XMLAusgabeTest(); VAR XMLFile : File; sOut : OutStream; XMLPort : XMLport #ObjectID des XMLPorts#; BEGIN XMLFile.TEXTMODE(TRUE); XMLFile.CREATE(&#8218;C:\Temp\xmltest.xml&#8216;); XMLFile.CREATEOUTSTREAM(sOut); XMLPort.SETDESTINATION(sOut); XMLPort.EXPORT; XMLFile.CLOSE; END; Die Routine benötigt [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Codeschnipsel zum Ansprechen eines <strong>XMLPorts</strong> in Microsoft Dynamics <strong>NAV 5.0</strong> SP 1:</p>
<p>Ich habe einen XMLPort für einen <strong>Daten-Export</strong> benötigt.</p>
<p>Dazu habe ich folgende Routine in eine <strong>CodeUnit</strong> eingebaut:</p>
<p><span style="color: #800000"><strong>PROCEDURE XMLAusgabeTest();</strong></span></p>
<p><span style="color: #339966">VAR</span></p>
<p>XMLFile : File;<br />
sOut : OutStream;<br />
XMLPort : XMLport #ObjectID des XMLPorts#;</p>
<p><span style="color: #0000ff">BEGIN</span></p>
<p>XMLFile.TEXTMODE(TRUE);<br />
XMLFile.CREATE(&#8218;C:\Temp\xmltest.xml&#8216;);<br />
XMLFile.CREATEOUTSTREAM(sOut);<br />
XMLPort.SETDESTINATION(sOut);<br />
XMLPort.EXPORT;<br />
XMLFile.CLOSE;</p>
<p><span style="color: #0000ff">END;</span></p>
<p><span style="color: #0000ff"><span style="color: #000000">Die Routine benötigt in dieser einfachen Form <strong>3 Variablen:</strong></span></span></p>
<ul>
<li><span style="color: #0000ff"><span style="color: #000000">XMLFile &#8211; Datentyp File</span></span></li>
<li><span style="color: #0000ff"><span style="color: #000000">sOut &#8211; Datentyp OutStream</span></span></li>
<li><span style="color: #0000ff"><span style="color: #000000">XMLPort &#8211; Datentyp XMLPort (Verweis auf einen zuvor errichteten XMLPort)</span></span></li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.susss.at/2012/10/17/xmlport-in-navision/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->