Siehe auch: CSV-Import von Produktklassen
CSV-Import allgemeiner Daten
Hinweis: Bitte achten Sie darauf, dass die CSV-Dateien für den Import aus Fremdsystemen nach den JustRelate-CRM-Konventionen angelegt werden, damit kein mehrfacher Import erforderlich wird. Wir stellen Ihnen Importdateien als Vorlage zur Verfügung, an denen Sie sich bei der Aufbereitung der Importdaten orientieren können.
Das JustRelate CRM bietet ein spezielles CSV-Format, mit dem man bis zu 15.000 Datensätzen komfortabel importieren kann. Dieses Format ist an das CSV-Exportformat von Microsoft Excel angepasst, wodurch es leichter ist, Nacharbeiten wie Format-Änderungen durchzuführen oder Systemlogik abzubilden.
Zeilentyp
Das CSV-Format schreibt zwingend eine leere erste Spalte (ohne Daten) in der CSV-Datei vor (Verwaltungsspalte). Die erste Spalte kann pro Zelle ein Zeichen enthalten, das den Typ der Zeile spezifiziert:
C (Kommentar)
Kommentare werden beim Import ignoriert.
R (Relation)
Das zweite Feld in der Zeile hat folgendes Format: FAT_DTO#CHD_DTO#REL_DTOFAT_DTO: Das Vater-Datenobjekt (Bsp.: PSA_PRS_EXT)CHD_DTO: Das Kind-Datenobjekt (Bsp.: PSA_TSK)REL_DTO: Das Relationsdatenobjekt (Bsp.: PSA_CON_ACT_CLI_AGG)
M (Mapping)
Sollte dort ein Klassenname plus Methodenname stehen (psa.csv.PsaBasMap#mapDate), wird diese Methode der Klasse für das Mapping aufgerufen. Die Methode muss drei Parameter entgegennehmen (DTO, Feld und Daten) und einen String zurückgeben.
Es reicht nicht, nur den Klassennamen in der Mappingzeile anzugeben, sondern es muss immer Klassenname#Methodenname sein. Der Klassenname kann eine Klasse entweder direkt oder im dynamischen Java angeben, beispielsweise de.pisa.cst.csv.CsvMap für eine Klasse oder $CST_CSV_MAP für dynamisches Java.
Hinweis: Im JustRelate CRM gibt es derzeit nur eine Möglichkeit, eine Mappingklasse zu schreiben. Die Folge ist, dass bestehende Mappingklassen auf Konsistenz bezüglich der entsprechenden Konvention überprüft werden müssen. Ist dies nicht der Fall, würde spätestens beim Importvorgang eine Fehlermeldung erscheinen.
Vorgehensweise
Die Mappingklasse muss eine Methode implementieren, die folgende Parameter und folgenden Rückgabetyp haben muss:
public String map(PscDto dto, Integer row, PscFld fld, String dat)
Der Name map ist hier exemplarisch. Der tatsächliche Methodenname wird in der Mappingzeile der CSV-Datei angegeben. Folglich kann eine Klasse mehrere Mappingmethoden haben.
Die bisherige abstrakte Klasse CSVmap hat eine neue Rolle erhalten. Sie ist nun nicht mehr die Klasse, die die erforderliche Schnittstelle definiert, sondern bietet einige Servicemethoden. Um diese Methoden nutzen zu können, muss die Mappingklasse von CSVmap erben.
public void wriMsg(String msg)schreibt einen Text auf die Konsole und in das Logfile.public String getErrPos()generiert einen String, der die aktuelle Position beim Import angibt.public String getMapPar()liefert einen Parameter, der in der CSV-Datei festgelegt wird.
Der dritte Punkt stellt eine kleine Erweiterung der Mapping-Definition in der CSV-Datei dar. Hinter der eigentlichen Deklaration der Methode in der Mappingzeile kann, durch ein Leerzeichen getrennt, Text angegeben werden, der dann in der Mappingmethode mit getMapPar() abgerufen werden kann. Hat man eine komplexe Methode, die verschiedenste Werte bestimmen kann, und möchte man pro Spalte die Suchbedingungen festlegen, so kann diese Möglichkeit dafür verwendet werden.
Das JustRelate CRM liefert keine Standard-Mapping-Funktionen mit aus!
H (Kopfzeile)
Legt für jede Spalte das jeweilige Datenobjekt und Feld fest, in das die Daten eingetragen werden.
F (Anzahl der Spalten/Felder)
Gibt die Anzahl der Felder an, beginnend bei der zweiten Spalte (Spalte 2 hat den Index 1). Hiermit kann festgelegt werden, welche Daten importiert werden und folglich, dass Daten in Spalten hinter dem angegebenen Index nicht importiert werden (nicht benötigte Daten, Berechnungsspalten etc.).
S (Startdatensatz)
Gibt die absolute Zeile im CSV-Dokument an, ab der der Import starten soll. Kopfzeilen und auskommentierte Zeilen werden mitgezählt. Alle Datensätze davor werden übersprungen.
L (Anzahl der Zeilen)
Die absolute Zeile (inklusive), bei der der Import endet. Auch hier werden alle Zeilen berücksichtigt. Alle Daten, die nach der festgelegten Endzeile noch kommen, werden ignoriert und nicht mehr importiert. Damit können Sie die Anzahl der importierten Datensätze beeinflussen.
Vorteil: S und L sind die Zeilenangaben, die in Excel auf der linken Seite stehen. Es muss nichts abgezogen werden. Damit verbunden ist, dass sich die Zählung der Datensätze auch auf die Zeilen bezieht (1. Datensatz in der 8. Zeile von insgesamt 100 Datensätzen wird als 8 von 100 gezählt). Auskommentierte Zeilen im festgelegten Zeilenbereich werden nicht als Datensatz gezählt, der Import endet aber auf jeden Fall bei der letzten festgelegten Zeile.
D (Anzahl der Datensätze zwischen Nachrichten)
Gibt an, nach wie vielen Datensätzen eine Nachricht am Bildschirm ausgegeben werden soll.
T (Transaktionsklammer setzen)
"n" öffnet keine Transaktionsklammer. Alle anderen Werte verwenden eine Klammer. Das Öffnen der Transaktionsklammer kann gewollt und hilfreich sein, aber bei Fehlern werden alle Daten zurückgeschrieben, und der Import muss wiederholt werden. Prüfen Sie deshalb immer bereits vor dem Import die Qualität der Daten.
P (Protokoll schreiben)
Gibt den absoluten Pfad inklusive des Namens einer Datei an, in die alle Ausgaben geschrieben werden sollen. Falls kein Zielpfad angegeben wurde, wird der Pfad der zu importierenden CSV-Datei verwendet (das Schreibrecht für diesen Pfad muss gegeben worden sein).
O (Optionen)
Zusätzliche Optionen für den Import. Mehrere Optionen können angegeben werden und mit einem Komma getrennt werden. Ein Ausrufezeichen („!“) vor dem Buchstaben negiert die Aussage.
C: Relationscache verwenden
E: Bei Fehlern abbrechen
L: Locking beachten
A: Zugriffscheck
X: Userexits aktivieren
D:Dublettencheck ausführen
T: Transaktionsklammer öffnen
MI: Insert-Mode (kann nicht negiert werden)
MO: Overwrite-Mode (kann nicht negiert werden)
MU: Update-Mode (kann nicht negiert werden)
Hinweis: Alle Zeilen, die auf die Kopfzeile folgen und in der ersten Spalte ein Zeichen enthalten, werden beim Import ignoriert. Folglich müssen Relation, Mapping, Anzahl der Felder und Anzahl der Zeilen vor der Kopfzeile definiert werden. Nach der Kopfzeile folgen nur noch Daten und optional Kommentare.
U (Userexit)
Hiermit wird die Möglichkeit bereitgestellt, alle vom CSV-Import erzeugten oder geänderten Datensätze automatisch in ein Importpaket aufzunehmen.
Siehe auch: Informationen über den erweiterten CSV-Import durch Verwendung einer Klasse als Userexit für einen CSV-Import finden Sie in dem Dokument Erweiterter CSV-Import-userexit- (PDF).
Kopfzeilenformat (Header)
Die Mindestangabe ist Datenobjekt.Feldname (Bsp.: PSA_PRS.NAM). Also Datenbanktabelle.Feld.
Beginnend bei der zweiten Spalte wird importiert. Das erste Datenobjekt, das gefunden wird, ist das Datenobjekt des Hauptdatensatzes. Es folgen die Spalten mit den weiteren Feldern für das Hauptdatenobjekt. Wenn sich das Datenobjekt ändert, wird das vorige Datenobjekt gespeichert. Falls weitere Datenobjekte auf das Hauptdatenobjekt folgen, stehen diese in Relation zu dem Hauptdatensatz. Die Relation wird über die Relationsspalte (R) bestimmt.
Beispiel 1:
| R | PSA_PRS_EXT#PSA_TSK#PSA_CON_ACT_CLI_AGG | ||
| H | !PSA_PRS_EXT.NUM | PSA_PRS_EXT.CMP_NAM | !PSA_TSK.NAM |
| C-0012345 | Herr Manfred Wachtel | Bestellung auslösen |
Dieses Beispiel legt eine externe Person, Herr Manfred Wachtel (zusammengesetzter Name), an und speichert den Datensatz ab, da ein neues Datenobjekt beginnt (PSA_TSK). Zur Person wird eine Aufgabe angelegt. Die Aufgabe ist eine Aktivität und steht in Relation zu der Person über PSA_CON_ACT_CLI_AGG, also die Beziehung zwischen dem Kontakt und der Aktivität.
Beispiel 2:
R |
|
|
|
|
|
|
|
|
|
|
|
Dieses Beispiel legt eine Person mit Namen „Braunmüller“ und dem Vornamen „Harry“ an. Der Datensatz wird abgespeichert, ein neues Datenobjekt beginnt (Task), und der Beziehungsdatensatz wird zusätzlich angelegt (Relation). Es wird nun eine neue Aufgabe angelegt. Die Aufgabe steht in Relation zu der Person über PSA_CON_ACT_CLI_AGG.
Es ist außerdem möglich, einzelne Felder mit den Daten aus einem anderen Datenobjekt zu belegen. Es wird ein Datensatz in einem beliebigen Datenobjekt gesucht und ein bestimmtes Feld übernommen.
Format für Verweise
DTO1.FLD1=DTO2.FLD2#FLD3#NUM
DTO1.FLD1 ist das Ziel, DTO2.FLD2 ist das Feld, das übernommen wird, FLD3 ist das Feld, nach dem in DTO2 gesucht wird. Steht in dieser Spalte NUM, ist dies die Anzahl der folgenden Spalten, die sich auch auf die Suche in DTO2 beziehen. Wenn NUM 0 ist, können NUM und das #-Zeichen davor weggelassen werden.
Beispiel:
H |
|
|
|
|
|
|
|
Dieses Beispiel legt die Person „Braunmüller“ an. Das Feld CRE_PRS_GID ist der Wert, der sich aus der Suche nach „Henry Miller“ in PSA_CON ergibt. Das Feld PSC_GID wird in CRE_PRS_GID eingetragen.
Die Suche in anderen Datenobjekten ist nicht nur auf das Hauptdatenobjekt beschränkt. Sollte die Suche keinen oder mehrere Datensätze finden, bricht der Import bei dieser Zeile ab und wird bei der nächsten Zeile fortgesetzt, es sei denn, ein Defaultwert (siehe unten) wird verwendet. Dieser Wert würde dann in das Feld eingetragen werden.
Modifikatoren
Das erste Zeichen in einer Zelle in der Kopfzeile kann ein Modifikator ($ / ! / +) sein.
Hinweis: Es ist möglich, bei Bedarf zwei Modifikatoren einzutragen.
$
$ bedeutet, dass der Defaultwert des Feldes verwendet werden soll, falls keine Daten eingetragen werden (Zelle ist leer) oder die Suche in einem anderen Datenobjekt keinen Datensatz gefunden hat.
Beispiel:
H |
|
|
|
|
|
|
|
Hier wird für OPR_IDN der Defaultwert verwendet, weil die Zelle leer ist. Der Kontakt XYZ wird wahrscheinlich nicht gefunden, also wird der Defaultwert für CRE_PRS_GID eingetragen.
!
Dieser Modifikator bedeutet, dass dieses Feld ein Schlüsselfeld ist, das in die Suche einbezogen wird. Falls kein Feld in einem Datenobjekt als Schlüsselfeld angegeben ist, wird nicht gesucht, sondern immer ein neuer Datensatz eingefügt. Bei der Suche in anderen Datenobjekten kann vor FLD3 und in allen weiteren Spalten des anderen Datenobjekts ein „!“ stehen. Sollte vor keinem Feld eines anderen Datenobjekts ein ! stehen, werden alle Felder für die Suche genutzt.
+
Der Modifikator + zeigt an, dass die zu importierenden Daten dieses Feldes an die bestehenden Daten des definierten Feldes angehängt werden sollen.
BLOB-Import
Die CSV-Datei für den BLOB-Import hat nur zwei Spalten und keine Kopfzeilen. Hier gelten keine Vorschriften für den Zeilentyp. Es gibt nur den BLOB-Namen und den Pfad.
In der ersten Spalte steht der Name des BLOBs, und in der zweiten Spalte befindet sich der Dateiname des zu importierenden BLOBs. Wenn der BLOB-Name schon verwendet wird, dann wird der vorhandene BLOB ersetzt (Update). Ansonsten wird ein neuer BLOB angelegt (INSERT). BLOBs werden vornehmlich an Artikeln verwendet (technische Beschreibungen mit Grafik). Am Produkt wird die Referenz aufgebaut. Eine BLOB-Vorlage finden Sie demzufolge in der Excel-Vorlage für Artikel.
- Der Pfad muss vollständig angegeben werden.
- Wird kein Pfad angegeben, versucht das System, aus dem Pfad der CSV-Datei zu importieren.
- Vermeiden Sie relative Pfade.
Beispiele:
| C:\...\import\BLB_A-05.003136.jpg |
| C:\...\import\BLB_%.rtf |
| D:\Bilder\tst.png |
Siehe auch: Eigene Produkte und Leistungen, Konventionen CSV-Import für Produktklassen.
Unterbinden der Erstellung von Standardaktivitäten
Wenn Kontaktdatensätze per CSV-Import im JustRelate CRM erstellt werden, sind diese immer an einen Prozess gekoppelt (Lead, Kunde, Interessent ...), mit dem wiederum Standardaktivitäten verbunden sind. Die automatische Erstellung von Standardaktivitäten beim CSV-Import kann bei Bedarf mit der Umgebungsvariablen PSA_CPY_ACT_OPR_STD (y/n) unterbunden werden.