Willkommen Gast, Sie befinden sich im Modul: Anmelden

ERP Wiki für eEvolution

RSS RSS

Navigation (ABiZi)




Im Wiki suchen
»

Warenwirtschaftssystem eEvolution – Hier Demo ausprobieren

Importieren von Aufträgen

Für den Import von Aufträgen ist es notwendig zu spezifizieren, wie ein Auftrag auszusehen hat und was importiert werden soll. Daher muss in einer Spezifikation bzw. Schemadefinition angegeben werden, was bei einem Auftrag importiert werden soll. Vor der Erstellung eines neuen Auftragsimportes sollte idealerweise erst einmal ein Auftrag per Hand angelegt werden, um anhand dieses Musters einen entsprechenden Auftragsimport zu entwickeln.    

 

Hinweis

Ab der Version 6.0 von eEvolution®-ABizI ist es möglich Aufträge, die in einem XML-Format vorliegen auch ohne einen Biztalk Server zu importieren. 
 

Es gibt verschiedene Formate mit Schemadefinitionen:

In früheren Zeiten war ebenfalls das Format "dtd" (Abkürzung für Document Type Definition) für die Definition von Spezifikationen gebräuchlich, allerdings wird es heutzutage nur noch selten verwendet.

Microsoft entwickelte ein Format mit Namen "xdr", welches für die so genannten docSpecs innerhalb der ABizI verwendet wurde. Allerdings ist dieses Format nur noch für den Biztalk Server 2002 interessant.

Hinweis:

Der Biztalk Server 2002 ist dazu in der Lage xdr-Formate in ein xsd-Format zu konvertieren. 

Das Format "xsd" ist das allgemein gebräuchliche Standard-Format bei der Definition von Schemata von XML. Es gibt noch weitere Formate, die die Funktionen von "xsd" erweitern können, diese wurden aber bisher noch nicht in der ABizI verwendet oder getestet.

 

Beispiele:

Historisch bedingt finden sich in dem Verzeichnis Fileserver/Projekte/Apertum.40/Module/ABizI/Vorgaenge einige Beispiele für mögliche Spezifikationen in unterschiedlichen Formaten.

 

Der Import eines Auftrages wird hier anhand einer xsd-Datei durchgeführt werden.

 

Importieren von Aufträgen

Hierbei handelt es sich um einen Beispieleintrag in einer xsd-Datei. Die Definition eines Elementes enthält nicht nur den Namen und Datentyp, sondern auch eine Dokumentation der Bedeutung dieses Elementes. Diese ist direkt der Datenbankdokumentation (DBDoku) entnommen, ist der Zusatz "(Kein Import)" der Erklärung angefügt, so wird dieses Element bei einem Auftragsimport nicht automatisch importiert. Ein mit diesem Zusatz versehendes Element kann nur importiert werden, wenn die SQL-Statements entsprechend angepasst werden.  

Achtung:

Nicht alle Elemente der xsd-Datei entstammen einer einzigen Tabelle. Bei der Erstellung des Beispielformates und der dazugehörigen SQL-Statements wurden die notwendigen Elemente verschiedenen Tabellen und Sichten entnommen.Daher ist ABIZI_Auftrag.xsd nicht identisch mit der Tabelle Auftrag in der Datenbank.  

Erstellung eines Auftrags

Für die Erstellung eines Auftrages braucht man zumindest einen zu bestellenden Artikel, die dazugehörige Menge, in der dieser bestellt werden soll und einen Kunden, der diesen Artikel bestellt. In der XML-Datei finden sich daher i.d.R. mindestens folgende Angaben:  
  • BESTMENGE, die Bestellmenge, in der der Artikel bestellt werden soll.
  • ARTNR1, die Artikelnummer, anhand der der Artikel eindeutig identifiziert werden kann.

Information:

Statt der Artikelnummer des Artikels (ARTNR1) kann auch die GTIN (EANNR) oder die kundenspezifische Artikelnummer (KNDARTNR) angegeben werden, um einen Artikel eindeutig zu identifizieren, wobei folgende Voraussetzungen zu beachten sind:
  • Ist die ARTNR1 im Import angegeben, dann wird immer diese für die Identifizierung des Artikels verwendet.
  • Die EANNR wird nur verwendet, wenn keine ARTNR1 angegeben im Import angegeben wurde.
  • Die KNDARTNR wird nur verwendet, wenn weder eine ARTNR1 noch eine EANNR im Import angegeben wurde.
  • KNDNR1, die Kundennummer, anhand welcher der Kunde eindeutig identifiziert werden kann.
 

Es können weitere Informationen an dieser Stelle hinterlegt werden, so kann z.B. mit < LFDLAGNR> das Lager angegeben werden, von welcher die jeweilige Auftragsposition entnommen werden soll.

Information:

Wird einer Auftragsposition keine LFDLAGNR beim Importieren mitgegeben, so greift an dieser Stelle dagegen die folgende Logik:
  • Ist die Option „Standard- oder Artikellager mit der niedrigsten laufenden Nummer verwenden“ auf dem Reiter „Auftragsimport“ in der Systemkonfiguration nicht aktiv, dann wird diesen Auftragspositionen immer das unter „Lager, das standardmäßig verwendet wird“ hinterlegte Lager im Auftrag zugewiesen.
  • Ist die Option „Standard- oder Artikellager mit der niedrigsten laufenden Nummer verwenden“ auf dem Reiter „Auftragsimport“ in der Systemkonfiguration aktiv, dann wird diesen Auftragspositionen, dann wird das passende Lager dagegen in folgender Reihenfolge ermittelt:
    1. Ist dem Artikel ein Standardlager zugeordnet, wird dieses verwendet.
    2. Ist dem Artikel kein Standardlager zugeordnet, wird das dem Artikel zugeordnete Lager mit der niedrigsten laufenden Nummer verwendet.
    3. Ist dem Artikel KEIN Lager zugeordnet, dann wird das unter „Lager, das standardmäßig verwendet wird“ hinterlegte Lager verwendet.
    Beim Import einer unaufgelösten Handelsstückliste über den ABizI-Auftragsimport wird automatisch die Lagerauswahl für die enthaltenen Handelsstücklistenartikeln vorgenommen, wenn es sich um lagergeführte Artikel handelt.

    Sollte dem Handelsstücklistenartikel kein Standardlager zugewiesen sein, so wird das Lager mit der niedrigsten laufenden Nummer verwendet.

Beispiel:

<ABizI typ="Auftrag" ver="000.001">
<AUFTRAG>
<KDNR1>297361</KDNR1>
<AUFTRAGPOSITION>
<ARTNR1>9100899</ARTNR1>
<BESTMENGE>15</BESTMENGE>
</AUFTRAGPOSITION>
</AUFTRAG>
</ABizI>
Die übrigen Daten des Auftrages werden beim Import entsprechend den unter "Auftragsimport" in den ABizI-Systemeinstellungenhinterlegten Einstellungen ermittelt und in den Auftrag eingetragen.

Optional kann pro Auftrag der Bereich "IMPORTEINSTELLUNGEN" hinzugefügt werden, um die Einstellungen aus den ABiZI-Systemeinstellungen auftragsspezifisch zu übersteuern. Es könnten dort aktuell folgende Einstellungen übersteuert werden:
  • PREISFINDUNG, mit Hilfe dieses Parameters kann die Preisfindung und von der Einstellung "Preisfindung beim Übertragen nochmal durchführen" auf dem Reiter "Auftragsimport"für einen Auftrag aktiviert oder deaktiviert werden:
    • Ist der Wert 0, wird keine Preisfindung für den Auftrag durchgeführt.
    • Ist der Wert 1, wird eine Preisfindung für den Auftrag durchgeführt.

Beispiel Preisfindung für Auftrag aktiviert:

<ABizI typ="Auftrag" ver="000.001">
<AUFTRAG>
<KDNR1>297361</KDNR1>
<AUFTRAGPOSITION>
<ARTNR1>9100899</ARTNR1>
<BESTMENGE>15</BESTMENGE>
</AUFTRAGPOSITION>
<IMPORTEINSTELLUNGEN>
<PREISFINDUNG>1</PREISFINDUNG>
</IMPORTEINSTELLUNGEN>
</AUFTRAG>
</ABizI>

Beispiel Preisfindung für Auftrag deaktiviert:

<ABizI typ="Auftrag" ver="000.001">
<AUFTRAG>
<KDNR1>297361</KDNR1>
<AUFTRAGPOSITION>
<ARTNR1>9100899</ARTNR1>
<BESTMENGE>15</BESTMENGE>
<PREIS>100.00</PREIS>
</AUFTRAGPOSITION>
<IMPORTEINSTELLUNGEN>
<PREISFINDUNG>1</PREISFINDUNG>
</IMPORTEINSTELLUNGEN>
</AUFTRAG>
</ABizI>
Die gewünschte Bestellmenge, Artikelnummer und Kundennummer muss nun in die XML-Datei eingefügt werden, optional kann der Bereich "IMPORTEINSTELLUNGEN" hinzugefügt werde, um beispielsweise die Preisfindung zu übersteuern. Wird im Anschluss diese Datei dann in dem Ordner abgelegt, der von der eEvolution®-ABizI überwacht wird, sollte ein Auftrag mit den gegebenen Daten angelegt werden. Die übrigen Daten des Auftrages werden entsprechend den ABizI-Systemeinstellungen unter "Auftragsimport" hinterlegten Eigenschaften für den Import von Aufträgen in den neuen Auftrag geschrieben.   

Hinweis:

Die Einrichtung eines Watchers können Sie unter Eigenschaften & Einrichten eines Watchers nachlesen.

 

Erscheint die Datei kurze Zeit später in dem Ordner, in dem die abgearbeiteten Vorgänge gespeichert werden, so ist kein technischer Fehler beim Import aufgetreten.

Achtung:

Die Angaben, die im Hauptfenster der ABizI gemacht werden sind identisch mit den Angaben, die in die Log-Datei geschrieben werden.

Hinweis:

Der Inhalt der Log-Datei wird alle 500KB durch sie selbst erneut überschrieben.  

 

Sobald der Watcher den Auftrag entdeckt, wird dieser gemäß den Einstellungen importiert. Die einzelnen Schritte zur Vorbereitung eines Imports werden detailliert in ABizIImportGUI.exe beschrieben, analog dazu wird hier dem Vorgang eine Tracking ID zugewiesen, der Vorgangstyp ermittelt, die Lizenzprüfung durchgeführt und nach erfolgreicher Lizenzprüfung der Vorgang entsprechend denen in der dazugehörigen XML-Datei gemachten Angaben importiert und erstellt.   

Hinweis:

In einer XML-Datei können auch mehrere, verschiedene Aufträge enthalten sein.

 

Beim Import des Auftrages werden ggf. auch die Kundendaten aktualisiert, falls entsprechende Angaben in der XML-Datei enthalten waren.

Hinweis

Das Aktualisieren der Kundendaten kommt aus dem Webshop, wo der Kunde seine Daten selbst pflegt und es daher sinnvoll ist, diese Daten stets unverzüglich mit dem Erhalt des letzten Auftrages zu aktualisieren.

 

Im Auftragsmodul sollte im Anschluss der auf diese Art importierte Auftrag mit den entsprechenden Daten aus der XML-Datei, den ABizI-Systemeinstellungen und den Default-Einstellungen des Kunden aus der eEvolution®-Auftragsverwaltung zu finden. Die XML-Datei wird im Anschluss an das erfolgreiche Importieren in ein Verzeichnis verschoben, wo alle verarbeiteten Importe gespeichert werden. Dieses Verzeichnis kann bei einem unter <processedpath>angegeben werden. Weitere Informationen hierzu finden Sie unter Eigenschaften & Einrichten von Watchern.  

 

In den ABizI-Systemeinstellungen, die unter System -> Systemeinstellungen erreichbar sind, können auf dem Tab Microsoft Biztalk Server an eEvolution® verschiedene Einstellungen und Optionen für den Import von Aufträgen festgelegt werden. Diese werden in jedem Fall beim Import von Aufträgen beachtet. Unter Systemeinstellungen - Microsoft Biztalk Server nach Evolution® sind detaillierte Informationen über diese Optionen und Einstellungen zu finden.  

 

Wichtiger Hinweis:

Fehlen die Preise bzw. ist der Preis eines Artikels auf 0 festgelegt, so liegt das i.d.R. daran, dass keine Preise aus der XML-Datei übermittelt wurden. Für den Fall, dass keine Preise über die XML-Datei übermittelt werden können/sollen, muss in den ABizI-Systemeinstellungen unter System -> Systemeinstellungen -> Microsoft Biztalk Server an eEvolution® ein Häkchen bei der Option "Preisfindung beim Übermitteln nochmal durchführen" in der Feldgruppe Sonstiges setzen.

Achtung:

Es ist möglicherweise notwendig zusätzlich zum Preis auch den Bruttopreis zu setzen.

 

Übersteuern der hinterlegten SQL-Befehle unter dem Menüpunkt "Einstellungen SQL-Statements" beim Import

Die in der Datenbank unter "Einstellungen SQL-Statements" hinterlegten SQL-Befehle können beim Import von Aufträgen über die ABizIImportModule.config durch die Anpassung der Settings in der Modulkonfiguration übersteuert werden, so dass die in der ABizIImportModule.config hinterlegten SQL-Befehle statt der unter "Einstellungen SQL-Statements" verwendet werden. So können mehrere Import-Module für Aufträge mit verschiedenen SQL-Statements implementiert werden.

Beispiel:

<Module name="Auftrag" version="*" type="nGroup.Info.eEvolution.Abizi.ABizIImport.Modules.Auftrag.AuftragImporter, nGroup.ABizI.ABizIImport.Modules.Auftrag">
<Settings>
<add name="Update_bei_Anlage" value="UPDATE auftrag SET vortext = :lsVortext, nachtext = :lsNachtext, bestnr = :oAuftrag[nA].sBESTNR, bestdatum = :oAuftrag[nA].dtBESTDATUM WHERE lfdangaufgutnr = :nlfdangaufgutnr"/>
<add name="Update_Pos" value="UPDATE ANGAUFPOS SET ABWEICH = 1, ABWABEZ1 = :oAuftrag[nA].oAuftragposition[nAp].sABWABEZ1, TEXT1 = :oAuftrag[nA].oAuftragposition[nAp].lsTEXT1, SEK = :oAuftrag[nA].oAuftragposition[nAp].nSEK, SEKPREIS = :oAuftrag[nA].oAuftragposition[nAp].nSEKPREIS, SEKLIEFNR = :oAuftrag[nA].oAuftragposition[nAp].nSEKLIEFNR, SEKDURCH = :oAuftrag[nA].oAuftragposition[nAp].sSEKDURCH WHERE ZUORDNR = :nZuordnr AND LFDANGAUFGUTNR = :AagLaufendeNummer"/>
<add name="Update_Pos_Langtext" value="UPDATE ANGAUFPOS SET LANGTEXT = 0 + CASE WHEN LEN(CONVERT(VARCHAR(MAX), TEXT1)) > 0 THEN 1 ELSE 0 END + CASE WHEN LEN(CONVERT(VARCHAR(MAX), TEXT2)) > 0 THEN 2 ELSE 0 END WHERE ZUORDNR = :nZuordnr AND LFDANGAUFGUTNR = :AagLaufendeNummer" />
<add name="Update_Kunde_Phase_Lesen" value="UPDATE kunde SET name1 = :sR_Name1, name2 = :sR_Name2,  strasse = :sR_StrHnr, ort = :sR_Ort, plz = :sR_Plz, land = :sR_Land,  telefon = :sR_Telefon, telefax = :sR_Telefax, email = :sEmail  WHERE kndnr = :KundenNummer"/>
<add name="Update_Pos_Rabatt" value="update angaufpos set rabatt = :uPos.discount, posrabatt4 = :uPos.discount where lfdangaufgutnr = :uBestellung.lfdangaufgutnr and zuordnr = :nZuordnr" />
<add name="Update_Kunde_Nach_Insert" value="UPDATE kunde SET text1 = text1  WHERE kndnr = :KundenNummer" />
<add name="Update_Pos_Liefertermin" value="UPDATE angaufpos SET liefertermin = :dtLiefertermin, lieferwoche = :nLiefWoche, lieferjahr = :nLiefJahr WHERE zuordnr = :nZuordnr AND lfdangaufgutnr = :AagLaufendeNummer" />
<add name="Lookup_Kunde_Exist" value="SELECT max(kdnr1) into :sKdnr FROM kunde WHERE kdnr1 = :sKdnr"/>
</Settings>
</Module>

Fehlerbehandlung

Wurde ein Auftragsimport nicht ordnungsgemäß durchgeführt, so wird i.d.R. kein Auftrag angelegt, allerdings die verwendete XML-Datei in das Verzeichnis gelegt, wo alle abgearbeiteten Vorgänge gespeichert werden. .

Bei einem technischen Fehler wird die entsprechende XML-Datei in das unter <errorpath> angegebene Verzeichnis verschoben. Die XML-Datei eines logischer Fehlers wird im Gegensatz zu einem Technischen in dasselbe unter<processedpath> angegebene Verzeichnis geschrieben, in das auch korrekt importierte XML-Datei gesammelt werden.  

In beiden Fällen werden keine Aufträge erzeugt. Auch bei einer Exception während des Auftragsimportes landet die XML-Datei in einem Verzeichnis mit den Aufträgen die korrekt importiert werden konnten. A allerdings wird bei einem fehlgeschlagenen Auftragsimport, der eine Exception geworfen hat ein neuer Auftrag angelegt, wenn dieser auch i.d.R. unvollständig ist. Im Unterschied zu einem normalen technischen oder logischen Fehler werden hier trotzdem die entsprechenden Aufträge angelegt, welche allerdings unvollständig sind. Es handelt sich dabei um einen Bug, da die Erzeugung von unvollständigen Aufträgen nicht erwünscht wird.

 

Verwandte Themen

Der Import aus anderen eEvolution®-Modulen

Der generische Import

Importieren von Gutschriftsvorgängen

Import von Kunden inklusive abw. Liefer- und Rechnungsempfänger

Import von Ansprechpartnern

Eigenschaften & Einrichten von Watchern

Systemeinstellungen - Microsoft Biztalk Server nach Apertum

ScrewTurn Wiki Version 3.0.5.600. Einige Icons wurden von FamFamFam erstellt.

Besuchen Sie uns auf: http://www.eevolution.de