Import von Kundenadressen per XML

fxbe

Mitglied
Hallo,
dies ist meine erste Frage in diesem Forum bezüglich Sage100. An mich wurde die Anforderung herangetragen Messeleads nach Sage100 zu importieren. Laut "Sage Flyer" ist das auch über Administration>Datenaustausch>Import>Kunden per XML Datei möglich. Was allerdings nicht so wirklich funktioniert.

Mein aktueller Stand...

1) Zum Test habe ich erste einmal einen Kunden exportiert...

was zu einer XML Datei CUSTOMER002.XML führte

<!DOCTYPE CUSTS SYSTEM "Customer.dtd"[]>
<CUSTS>
<CUST>
<CUSTID>D124290</CUSTID>
<DESC>Ampezzan Fiori &amp; Casa</DESC>
<CURR>EUR</CURR>
<TAX>2</TAX>
<EUVAT>IT00763360252</EUVAT>
<A1TAXATION>0</A1TAXATION>
<PLACEOFUNLOADING />
<PLANTKEY />
<PAYTERMS>Vorkasse</PAYTERMS>


2) Die zugehörige Customer.dtd Datei habe ich dann auch gefunden. Nach dieser Vorgabe habe ich dann die Daten als XML aufgebaut. Wobei ich mich allerdings bei einigen Vorgaben nach dem Sinn frage. Aber wie auch immer, die XML Datei wurde entsprechend versorgt und aufgebaut.

1666348428137.png

So frage ich mich gerade wieso die Kundennummer CUSTID? zwingend erforderlich ist. Aber wie auch immer, die XML Datei wurde entsprechend versorgt und aufgebaut.

1666348695010.png

Ein Test der XML Datei ergab keine Fehler im Aufbau, also konform. Der Import der Datei über die erwähnte Option verlief allerdings ohne Erfolg.

1666349423413.png

Das anschließende Fehlerprotokoll ist dann eher was für die Tonne...

1666349562960.png
Da hätte Sage auch gleich schreiben können "Abbruch wegen falschem Fehler " :)

Gibt es eigentlich hierzu eine genauere Dokumentation ?

Zu meinem Background. Bin nicht ganz unbedarft im Bereich ERP [Dipl. Informatiker(FH) mit 30 Jahre Programmierung, Projektleitungen - MOVEX / Infor / Navision / SAGE 50... jetzt auch (vermutlich) SAGE 100 ].
Eigentlich wollte ich es mir ja einfacher machen und den Standard verwenden. Von diesem hätte ich eigentlich erwartet das diese Schnittstelle mir eine Adressensatz anlegt mit entsprechenden ID's und dazu passend einen oder auch mehrere Ansprechpartner.

Bevor ich mich aber nun an die Arbeit mache und wie bereits bei Sage50 ( wo es diese Möglichkeit auch nicht gibt ) eine entsprechende Schnittstelle implementiere nun die Frage in die Runde.

Grüße Franz Balleis
 
So auf den ersten Blick würde ich sagen:

Sie haben eine Kundennummer "I200012" angegeben.

1666351385026.png

Kundennummern fangen - je nach Einstellung - mit D oder "ohne Buchstabe" an.
In Ihrem Fall also: D200012
 
Das dachte ich eigentlich auch. Aber wenn ich einen Lead also einen Interessenten eingebe dann habe ich eigentlich auch keine Kundennummer.
Innerhalb des Programmes scheint dies jedoch möglich.
Es ist schon beim Import von externen Kunden ein Problem hier eine Kundennummer anzugeben. Diese soll ja eigentlich erst beim Import generiert werden.
 
Der Kundenimport importiert - wie der Name ja schon sage - immer nur Kunden.
Diese haben schon eine Kundennummer zB von einer externen Anwendung bekommen.

Sie möchten aber Adressen importieren, die dann als Interessenten im Angebot verwendet werden können.

Das geht mit dem Standardimport leider nicht, soweit ich das weiß.

Dazu gibt es u.a. von uns ein Zusatzmodul (gerne anfragen).
Aber vermutlich hat auch ihr betreuender Partner eine entsprechende Lösung.
 
Das ist so richtig, denn im Standard ( Kontenplan und Kontenplanformat egal ) interpretiert die Sage 100 einen Datensatz mit dem Präfix I als Inventar, sprich Anlagegut. Das wird so nicht funktionieren, auch weil diese Funktion zum (Aus)-tauschen von Sage 100 Daten von einem Mandanten in einen anderen Mandanten vorgesehen ist. Meine Empfehlung ist deshalb auch, hier lieber eine Sage Partner Lösung zu verwenden, da hat eigentlich jeder bereits was in der Schublade.
 
Der Kundenimport importiert - wie der Name ja schon sage - immer nur Kunden.
Diese haben schon eine Kundennummer zB von einer externen Anwendung bekommen.

Sie möchten aber Adressen importieren, die dann als Interessenten im Angebot verwendet werden können.

Das geht mit dem Standardimport leider nicht, soweit ich das weiß.

Dazu gibt es u.a. von uns ein Zusatzmodul (gerne anfragen).
Aber vermutlich hat auch ihr betreuender Partner eine entsprechende Lösung.
Erst einmal Danke für die schnelle Antwort.

Aber wie schon auch in Sage50, stelle ich mir hier genauso die Frage nach der Sinnhaftigkeit einer Aussage. Denn gebe ich eine aus einer externen Anwendung definierten Debitorennummer an, muss das noch lange nicht heißen, das diese nicht bereits in Sage100 vorhanden ist oder?

Das bedeutet dann im Umkehrschluss, das ich diese Nummern nach dem IT-Verfahren Try&Error einspielen muss, denn das Fehlerprotokoll ist ja so aussagekräftig wie wenn gar nichts ausgebe.

Natürlich kann ich auf vorhandene Notlösungen diverser Partner zurückgreifen, ohne dabei die sicherlich gute Qualität dieser Lösungen anzuzweifeln. Denn dieses Module sind vermutlich genau aus den gleichen Gründen endstanden die meiner Fragestellung entspricht. Aber das ist hier nicht das Thema. Ich verschaffe mir aktuell einen ersten Eindruck über das System Sage100.

Und vermutlich werde ich noch einige von Insidern als total dumm gestellte Fragen ins Forum stellen. ;)

Bei der Sage50 Hotline war ich schon, wie soll ich es sagen, nicht ganz beliebt. Denn meistens wenn ich diese Truppe konsultierte ( 300 Tickets !) hatte ich fast immer ein kleines Fass aufgemacht. Hier ein kleines Beispiel .
 
Das ist so richtig, denn im Standard ( Kontenplan und Kontenplanformat egal ) interpretiert die Sage 100 einen Datensatz mit dem Präfix I als Inventar, sprich Anlagegut. Das wird so nicht funktionieren, auch weil diese Funktion zum (Aus)-tauschen von Sage 100 Daten von einem Mandanten in einen anderen Mandanten vorgesehen ist. Meine Empfehlung ist deshalb auch, hier lieber eine Sage Partner Lösung zu verwenden, da hat eigentlich jeder bereits was in der Schublade.
Vielen Dank Timo,
eine Info die mir sehr weiterhilft, denn Beschrieben ist dieser Umstand eigentlich niergendwo.
Danke
 
OK, dann hilft das bestimmt auch weiter. Bitte im Sage Installverzeichnis mal auf diesen Pfad gehen:
C:\Program Files (x86)\Sage\Sage 100\9.0\DBAdmin\Demo\900\1\ReweAbf und da die mdb öffnen, und z.B. mal auf die Tabelle KHKBuchungserfassung und diese im Entwurfsmodus öffnen. So sehe ich was z.B. welcher Status einer Buchung bedeutet. Das klappt natürlich auch bei allen anderen Tabellen, wenn ich deren Feldinhalte verstehen möchte. KHKVKBelegarten: welche Belegart funktioniert wie ?

Genauso steht im Doku Ordner das pdf mit der DB Dokumentation, also hier: C:\Program Files (x86)\Sage\Sage 100\9.0\Dokumente
Die Feldformatierungen sind im Sage 100 Admin pro Mandant festgelegt: hier u.a. das I für Inventar, oder dass Kunden ( buchhalterisch "Debitoren") mit D beginnen... je nach Einstellung.

Viel Erfolg mit der Sage 100... ist schon 'ne coole Software. Ich ändere einen Tabelleneintrag und erreiche ein komplett anderes Programmverhalten ohne Code schreiben zu müssen.
 

Anhänge

  • Feldformatierungen.JPG
    Feldformatierungen.JPG
    33,5 KB · Aufrufe: 5
Hallo Timo,

vielen Dank für deine Hinweise. Ich gehe ERP-Systeme eigentlich immer erst einmal positiv an, so auch SAGE100 ;).
Natürlich muss ich mich auch etwas in meinen Erwartungen zurücknehmen, im Vergleich zu wirklich teuren und aufwendigen Systemen wie SAP / Infor / etc.. mit 100'erten oder 1000'senden von Usern und in einer anderen Preisklasse.

Insoweit ich das jetzt gelesen habe, finde ich das Konzept von Sage100 schon einmal stimmig und eigentlich ganz nach meinem Geschmack.
Ich bin ein echter Verfechter der Release Fähigkeit von Softwaresystemen. Und man mag es kaum Glauben, aber alle meine Modifikationen, die ich seit 2014 an mehr als 20 Sage50 Systemen extern "drangebastelt" habe, haben bis jetzt alle Releasewechsel ohne eine einzige nachträgliche Modifikation überstanden. Das macht mich etwas Stoltz, hilft mir bei SAGE100 aber gar nichts.

Da will ich natürlich auch mit Sage100 hin. aber warten wir einmal erst ab.
 
Hallo das Thema,

Import von Kundenadressen per XML​

ist nun für mich und meinem Kunden in der Stufe 1 erfolgreich abgeschlossen. Er hat nun seine Adresen und Ansprechpartner dort wo er sie haben wollte. Ich möchte mich nochmals bei allen für die Tips und Hinweise bedanken. Das Interessenten ja nicht importiert werden können wie in den Vorbeiträgen nachzulesen, haben wir uns für eine unkonventionelle Vorgehensweise entschieden, zumal seitens des Sage100-Businesspartners der Zugang zum Sage Appdesigner des Kunden noch aktuell gesperrt ist. Aber lassen wir das momentan einfach beiseite. Da wird gerade daran gearbeitet.

Das Problem wurde inzwischen über das Open Source Tool Talend OpenStudio for Data Integration 7.4 gelöst. Dabei wurden die Daten direkt ohne Sage100 aber mit der vollen Unterstüzung der MSSQL Datenbank in das System eingespielt. Wobei ich natürlich auf die Datenkonformität und Plausibilität geachtet habe.


1670255896831.png

Alle Tabellen ID's die über die Systemtabelle dbo.KHKTan verwaltet werden, wurden dabei nicht von mir sondern vor der endgültigen Speicherung, direkt über die entsprechende Stored Procedure (dbo.sp_sysTan) der Sage Datenbank generiert. Damit ist gewährleistet das die Datensätze auch im laufenden Betrieb eingespielt werden können. ( Der Mandant 99 war für mich der Entwicklungsmandant und wird nun auch wieder entfernt. ) .

Das Ergebnis dieses Talendprogrammes ist ein plattformunabhäniges Java Runtimeobjekt das nach Einspielen direkt aufrufbar seinen Job erledigt.

Aus diesem Ergebnis resultieren nun sofort meine neuen Fragen. Wobei ich mir nicht sicher bin ob es nicht besser ist neue Topics hierzu anzulegen.

In Stufe 1 ging es zuerst einmal darum, dringend benötigte Daten in das System zu pumpen. In Stufe 2 und 3 soll der ganze Vorgang automatisiert und am besten direkt von den Mitarbeitern selber aus Sage100 abgerufen werden können.

Daraus nun direkt meine neue Fragen ?

1) mit kundenspezifischen Dateien arbeiten.
So wie ich das gelesen habe ist es in Sage100 möglich, auch eigene Datentabellen einzubinden und entsprechende Masken hierzu aufzubauen. Welche Dokumentation gibt es hierzu in die ich mich einarbeiten kann.
Hintergrund: Beim Einlesen und Erzeugen der Sage Adressdaten arbeite ich mit drei temporären Zwischendateien die vom Programm per DROP and CREATE TABLE in der Sage Datenbank erzeugt werden. In diesen Dateien wird das benötigte Datenformat inclusive SetID's zusammengestellt und geprüft bevor sie endgültig eingespielt werden. Anstatt nun eine Fehlerdatei auszugeben welche Datzensätze nicht und aus welchem Grund eingespielt werden konnten, wäre es aus meiner Sicht natürlich viel einfacher diese Daten direkt mit Sage Bordmitteln zu korrigieren.

2) Eigene Menüpunkte erzeugen und Programmaufrufe einbinden
Ja ich weis, dass es die Möglichkeit gibt eigene Menüpunkte zu generieren, jedoch noch nicht wie das geht. Meine Frage ist jedoch..besteht die Möglichkeit bei diesen Menüpunkten auch externe Programme aufzurufen ?

mit freundlichen Grüßen
Franz Balleis

PS: Wer Interesse an diesem Javaprogramm für den Adressenimport für Leads hat, kann mich gerne kontaktieren. Ich sende Ihm das entsprechende Programm ( Version 0.5) zum Import kostenlos zu.

Die Steuerung des Programm erfolgt über eine normal *.ini Datei
1670261520994.png

Die Vorgabe der CSV bekommt Ihr nach Vorgabe.
 

Anhänge

  • 1670261911333.png
    1670261911333.png
    107,7 KB · Aufrufe: 9
Zurück
Oben