KomA - Robotron Datenbank

Transcription

KomA - Robotron Datenbank
robotron*ecount
robotron*esales
robotron*ecollect
Kommunikationsautomatisierung - KomA
Komponentenbeschreibung
Version:
Stand:
8.0
19.09.2016
Seite 2 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Änderungsnachweis
Änderungen
Datum
Version
21.05.2014
1.0
09.03.2016
7.0
19.09.2016
Geänderte Kapitel Grund der Änderung
Erstellung Dokument
DOCID-20-6860
Alle
Überarbeitung Layout, Dokument für Auslieferung
aufbereiten
13.5.6
13.10.3
14.6.1
15.1.4
7.4.1
12.20
12.6
16.3.3
7.1.2.1
16.3.4
10.1.7
10.20
5.4.2
7.1 – 7.47 5.8.3
11.12
3.3.2.1.4
13.8.10
12.22
10.14.1
11.6.4.8
14.6.2
10.11.2.5
13.8.5
13.11.1
3.3.5.5
14.2
13.8.11
Spracheinstellungen
Datenbank-Fehler / Übermittlung von KENNUNG_ORIG
Bausteinfehler bei getProfileValues/getProfiles
Bereinigung der COM-Import-Tabellen
FTPSender2 – Timeout
Abschlüsse KVASY (Format KVASY)
CSV_MEMI2016_RV (Format CSV_MEMIRV)
Datenversand-ABO über EAU_ID identifizieren
Manipulation des Betreffs
Fehler beim E-Mail-Versand
Zeichenkodierung in der Datei
Zusammenspiel mit EDIFACT-Cockpit (MF_EDIFMON)
Beispielkonfiguration für SMB-Verzeichnis
Monitoring – Importkonto
LPEX
Auswertung der .profile unter Linux
Importkonfigurator – toDate und dateCompare
MMMKVASY (MEMI_SST_KVASY)
Zusammenspiel mit EDIFACT-Cockpit (MF_EDIFMON)
AFTER_FILE_CLOSE_TRIGGER und TRANSACTION_MODE
Workaround EXCEL-Reports Formatierung
Importkonfigurator-Beispiel ergänzt
Export MSCONS
Import von Zählerständen per CSV
Einrichtung Excel-Reports-Versand-KomA
Excel-Reports Zeilen-/Spaltengrenzen
Importkonfigurator - Beispiel
8.0
Überarbeitung Layout, Dokument für Auslieferung
aufbereiten
Alle
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 3 von 384
Alle Rechte dieser Dokumentation unterliegen dem deutschen Urheberrecht. Die Vervielfältigung,
Bearbeitung, Verbreitung und jede Art der Verwertung bedürfen der schriftlichen Zustimmung der
Robotron Datenbank-Software GmbH.
Die Robotron Datenbank-Software GmbH übernimmt keine Haftung für Fehler in diesem Dokument und
behält sich das Recht vor, dieses Dokument ohne weitere Ankündigungen jederzeit zu ändern.
Über Hinweise und Vorschläge zur Verbesserung bzw. Erweiterung des Dokumentes sind wir jederzeit
dankbar. Bitte wenden Sie sich hierfür direkt über die E-Mail-Adresse
[email protected] an uns.
Robotron Datenbank-Software GmbH
Stuttgarter Straße 29
01189 Dresden
Tel.:
Fax:
E-Mail:
Internet:
+49 351 25859-0
+49 351 25859-3699
[email protected]
www.robotron.de
Seite 4 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Inhaltsverzeichnis
1
Allgemeines/Zweck des Dokumentes ................................................................................ 22
2
Architektur ....................................................................................................................... 23
3
Installation und Konfiguration ........................................................................................... 24
3.1
3.1.1
Neuinstallation und Basis-Konfiguration ............................................................................... 24
Config. properties .................................................................................................................. 24
3.1.2
Java-Version ........................................................................................................................... 25
3.1.3
Anpassung des Arbeitsspeichers (RAM) ................................................................................ 26
3.2
3.2.1
3.2.2
Update-Installation ................................................................................................................ 26
Update einzelner Module ...................................................................................................... 26
Komplettupdate ..................................................................................................................... 26
3.3
3.3.1
Konfiguration ......................................................................................................................... 26
Allgemeine Konfigurationsparameter.................................................................................... 27
3.3.2
Einrichtung der Java-Optionen .............................................................................................. 33
3.3.3
3.3.4
3.3.5
Einrichtung der Sperr-Ports ................................................................................................... 37
Einstellung bezüglich des Speicherbedarfes der jeweiligen Prozesse ................................... 38
Parallelbetrieb KomA ............................................................................................................. 38
3.3.6
Einrichtung Automatisches Starten und Stoppen .................................................................. 42
3.3.7
Advanced Features – Wiederverwendung von LIB-Ordner, … .............................................. 45
3.4
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
3.4.7
3.4.8
Verzeichnisstruktur / Skripte ................................................................................................. 45
startjob ................................................................................................................................... 47
archivierung ........................................................................................................................... 47
comimport ............................................................................................................................. 47
comimport_console ............................................................................................................... 47
comimport_stop .................................................................................................................... 47
comimport_background ........................................................................................................ 47
comimport_keytool ............................................................................................................... 47
checkVersions ........................................................................................................................ 48
3.1.1.1
3.1.1.2
3.1.2.1
3.3.1.1
3.3.1.2
3.3.1.3
3.3.1.4
3.3.1.5
3.3.1.6
3.3.2.1
3.3.2.2
3.3.5.1
3.3.5.2
3.3.5.3
3.3.5.4
3.3.5.5
3.3.6.1
3.3.6.2
Import
Export
25
25
Java-Version mittels symbolischen Link einrichten
26
Einrichtung der Java-Umgebung
Besonderheiten bei Windows-Rechnern
Setzen der Java-Version unter Linux
Zeitzonen-Informationen der Java-Runtime
Allgemeine Speicherplatzoptimierungen
Spracheinstellung KomA-Module
29
30
31
31
32
33
Initialisierungsskript env.(cmd|sh)
Benutzerspezifisches Initialisierungsskript user_env.(cmd|sh)
33
36
Import
Export
Ohne SQL_Select_Next_EAU.sql
Mit SQL_Select_Next_EAU.sql
Beispiel eigener KomA-Server für Excel-Reports
38
39
40
40
41
Beispiel Linux (crontab)
Beispiel Windows
42
42
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
3.4.9
3.4.10
3.4.11
3.4.12
3.4.13
3.4.14
3.4.15
3.4.16
3.4.17
3.4.18
3.4.19
3.4.20
3.4.21
3.4.22
4
4.1
4.1.1
4.1.2
4.1.3
4.1.4
4.1.5
4.1.6
4.1.7
Seite 5 von 384
datenimport ........................................................................................................................... 48
datenimport_convert ............................................................................................................ 48
datenimport_stop .................................................................................................................. 48
datenversand ......................................................................................................................... 48
datenversand_datei ............................................................................................................... 48
datenversand_eau_id ............................................................................................................ 48
datenversand_stop ................................................................................................................ 48
setup_xch_pwd ...................................................................................................................... 49
PasswordCoding..................................................................................................................... 49
install_updates....................................................................................................................... 50
listversions ............................................................................................................................. 50
lplspool................................................................................................................................... 50
listlicenses .............................................................................................................................. 50
Importkonfigurator ................................................................................................................ 50
Allgemeingültige Informationen ........................................................................................ 51
Allgemeine Hinweise ............................................................................................................. 51
Groß- und Kleinschreibung bei Parametern .......................................................................... 51
Parameterwert (Y/N vs. true/false) ....................................................................................... 51
Zeichenkodierung (Default Cp1252) ...................................................................................... 51
„ALIAS“-Verweis auf andere Properties-Datei....................................................................... 52
Information zu globalen Parametern .................................................................................... 52
ShutdownServer.debug=FALSE/TRUE.................................................................................... 52
Task liefert als Ergebnis der letzten Ausführung die Zeichenfolge 0xFFFFFFFF .................... 53
4.2
Allgemeine Probleme/Lösungen............................................................................................ 53
4.2.1
OutOfMemory – Fehler.......................................................................................................... 53
4.2.2
BindException: Nicht startende Jobs (Datenimport, Datenversand, …) ................................ 54
4.2.3
ClassNotFoundException: com.*XMLGregorianCalendarImpl .............................................. 56
4.2.4
Incompatible Version of libocijdbc… / no ocijdbc in java.library.path .................................. 56
4.2.5
java.lang.UnsupportedClassVersionError: Bad version number in .class file ........................ 56
4.2.6
java.lang.ClassFormatError - SetupException........................................................................ 56
4.2.7
Ungeklärte Abstürze des Servers / überfüllte Festplatte ...................................................... 57
4.2.8
javax.activation.UnsupportedDataTypeException ................................................................ 57
4.2.9
ClassNotFoundException: oracle.xml.parser.v2.XSLException .............................................. 58
4.2.10
Non supported character set: oracle-character-set-178 ....................................................... 58
4.2.11
Meldung: Provider for class javax.xml.transform.TransformerFactory cannot be created und
Interner Fehler: org/apache/xerces/jaxp/SAXParserFactoryImpl: java.lang.ClassNotFoundException .... 58
4.2.12
Warnung wegen falscher Textressource ............................................................................... 61
4.2.13
ArrayIndexOutOfBoundsException: at
oracle.jdbc.driver.T4CTTIoauthenticate.setSessionFields ......................................................................... 61
4.2.14
java.lang.SecurityException: sealing violation: package oracle.jdbc.internal is sealed ........ 61
5
5.1
5.1.1
5.1.2
5.1.3
5.1.4
5.1.4.1
Datenempfang (Comimport).............................................................................................. 63
Konfiguration ......................................................................................................................... 63
Allgemeine Konfigurationsparameter ................................................................................... 63
Kommunikationsverbindungen ............................................................................................. 66
Importformate ....................................................................................................................... 68
Importkonto ........................................................................................................................... 69
Verarbeitung von nicht zuordenbaren Nachrichten
69
Seite 6 von 384
5.1.4.2
5.1.4.3
5.1.4.4
5.1.4.5
5.1.4.6
5.1.4.7
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Aktionen
Übersicht – Unterstützte Aktionen pro Konto
ZIP-Funktionalität
Dateinamen-Generierung
Filter
Übersicht – Unterstützte Filter je Konto
70
71
72
72
73
74
${DATE}
77
5.1.5
5.1.6
5.1.7
Start des Comimports ............................................................................................................ 76
Wichtiger Hinweis bezüglich Performance ............................................................................ 76
Dynamische Pfadangaben...................................................................................................... 77
5.2
5.2.1
5.2.2
5.2.3
5.2.4
5.2.5
5.2.6
Abarbeitungslogik der Importkonten .................................................................................... 80
Abfrage der Importkonten ..................................................................................................... 80
Abfrage der Importformate ................................................................................................... 81
Abfrage der Konten + Konteneinstellungen .......................................................................... 81
Abfrage der Aktionen für jedes Importkonto ........................................................................ 81
Überprüfung der Importkonten ............................................................................................. 82
Besonderheiten bei „read only“ Importkonten ..................................................................... 82
5.3
5.3.1
E-Mail-Konto (POP / IMAP) .................................................................................................... 82
Allgemeine Hinweise.............................................................................................................. 82
5.3.2
Konfigurationsparameter....................................................................................................... 83
5.3.3
5.3.4
5.3.5
5.3.6
5.3.7
Weiterleitung nicht zu verarbeitender E-Mails ..................................................................... 88
E-Mail-Anhänge: Beschränkungen ......................................................................................... 89
Verschiebeoperation - Zielordner .......................................................................................... 90
Abarbeitungsreihenfolge bei E-Mails..................................................................................... 90
Probleme/Lösungen ............................................................................................................... 90
5.4
5.4.1
5.4.2
5.4.3
FILE-Konto .............................................................................................................................. 97
Konfigurationsparameter....................................................................................................... 97
Beispielkonfiguration für SMB-Verzeichnis ........................................................................... 97
Probleme/Lösungen ............................................................................................................... 98
5.5
5.5.1
5.5.2
FTP-Konto ............................................................................................................................... 98
Konfigurationsparameter....................................................................................................... 99
PROXY_TYPE=FTP_ACCT ...................................................................................................... 101
5.1.7.1
5.3.1.1
5.3.2.1
5.3.7.1
5.3.7.2
5.3.7.3
5.3.7.4
5.3.7.5
5.3.7.6
5.3.7.7
5.3.7.8
5.3.7.9
5.3.7.10
5.3.7.11
5.3.7.12
5.3.7.13
5.3.7.14
5.4.3.1
5.4.3.2
Filterung von E-Mails
82
Exchange – FAQ
87
Kontinuierliche Verschlechterung der Performance
Stillstand Comimport
Anhänge werden als Winmail.dat gespeichert
Update auf JavaMail 1.5.0
MessageRemovedException
Timeout bei großen Mails (Dateianhänge ca. 10MB)
Problem mit Nachrichtentext (Msg.)
IMAP - Ordnername mit /
Connection dropped by server?
Problem beim Bestimmen des Content-Type (RFC1341)
Anhänge werden als GZIP (*.gz) abgelegt obwohl diese gar nicht komprimiert sind
Anhänge mit Umlauten werden nicht korrekt angezeigt
Warnung bei mehr als 1000 E-Mails im Postfach
ConnectionException: No login methods supported
90
91
92
92
93
93
94
95
95
95
95
95
96
96
Cannot run program "net use …“
jcifs.smb.SmbAuthException: Logon failure: account currently disabled
98
98
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 7 von 384
5.5.3
5.5.4
Dynamische Pfadangaben ................................................................................................... 102
Probleme/Lösungen............................................................................................................. 102
5.6
5.6.1
5.6.2
5.6.3
5.6.4
SFTP-Konto ........................................................................................................................... 104
Konfigurationsparameter .................................................................................................... 104
Reihenfolge der abzuholenden Dateien .............................................................................. 106
Dynamische Pfadangaben ................................................................................................... 106
ImportCommunicationKeytool ............................................................................................ 106
5.6.5
Probleme/Lösungen............................................................................................................. 108
5.7
5.7.1
5.7.2
5.7.3
5.7.4
HTTP-Konto .......................................................................................................................... 108
NTLM-Support (NT LAN Manager) ....................................................................................... 109
Dynamische Pfadangaben ................................................................................................... 109
Beispiel HTTP-/HTTPS-Verbindung einrichten ..................................................................... 110
Probleme/Lösungen............................................................................................................. 111
5.8
5.8.1
5.8.2
Probleme/Lösungen/Hinweise ............................................................................................ 113
Bereinigungsroutine (Comimport - Importtabellen) ........................................................... 113
Comimport-Importformat vs Datenimport-Format (datenimport.ini) ................................ 113
5.8.3
Monitoring – Importkonto ................................................................................................... 116
5.5.4.1
5.5.4.2
5.5.4.3
5.5.4.4
5.5.4.5
5.6.4.1
5.6.4.2
5.6.5.1
5.6.5.2
5.7.4.1
5.7.4.2
5.7.4.3
5.8.2.1
5.8.2.2
5.8.2.3
6
FTP Hardware
Passives FTP
FTPListParseException (eCount- 00044835)
Fehler wegen falscher Dateigröße (eCount- 00044975)
FTP-Fehler: 425 Unable to build data connection
102
103
103
103
104
Voraussetzungen
Vorgehen
106
107
Endaktion „umbenennen“: no action value for action RENAME
Endaktion „umbenennen“: Error renaming files to … no wildcard in action value
108
108
Der Downloadpfad enthält Leerzeichen
No subject alternative DNS name matching x found
Übertragungsfehler: java.net.ConnectException: Connection timed out: connect
Beispiel
Weitere Beispiele
Änderung mit eCount- 00053244
111
112
112
114
115
116
Datenimport ................................................................................................................... 117
6.1
Hinweise zur Zeitzone der Import-Dateien.......................................................................... 117
6.2
6.2.1
Konfigurationsparameter .................................................................................................... 118
Benachrichtigung E-Mail für die Import-Datei..................................................................... 121
6.3
6.3.1
6.3.2
6.3.3
datenimport.ini .................................................................................................................... 123
Strukturierung der Import-Dateien (z.B. nach Kunden) ...................................................... 124
Leerzeichen in Verzeichnis-Pfaden ...................................................................................... 125
Feature Import-Datei in anderes Verzeichnis kopieren ...................................................... 125
6.4
Standard-Verzeichnis-Konventionen ................................................................................... 125
6.5
Abarbeitungsreihenfolge der Import-Dateien ..................................................................... 126
6.6
6.6.1
6.6.2
Konvertierung und Import der Daten .................................................................................. 127
Konfiguration von Import-Dateien in datenimport.ini ........................................................ 128
Konfiguration der Import-Formate ...................................................................................... 129
6.7
Verarbeitung von ZIP-Dateien ............................................................................................. 130
6.8
Verarbeitung von TMP-Dateien ........................................................................................... 131
Seite 8 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
6.9
Wiederholung abgeschlossener Importvorgänge ................................................................ 131
6.10
6.10.1
6.10.2
6.10.3
6.10.4
Probleme/Lösungen ............................................................................................................. 132
No matching data found in ZIP file ...................................................................................... 132
FileNotFoundException beim Datenimport ......................................................................... 132
Configuration error: Import filter class x not found for format y ........................................ 133
Nicht alle Dateien aus einer ZIP-Datei werden importiert .................................................. 133
7
Datenversand (ExportCom) ..............................................................................................135
7.1
7.1.1
7.1.2
Platzhalter ............................................................................................................................ 135
Dateinamen (Anhang Dateiname) ....................................................................................... 136
Betreff (bei E-Mails) ............................................................................................................. 136
7.2
Allgemeine Export-Parameter ............................................................................................. 137
7.3
7.3.1
7.3.2
7.3.3
7.3.4
7.3.5
7.3.6
Sendemodul E-Mail - MailSender (MEX).............................................................................. 142
Konfigurationsparameter..................................................................................................... 142
E-Mail-Signatur hinterlegen ................................................................................................. 149
Dateinamen als Betreff verwenden ..................................................................................... 149
Debugging ............................................................................................................................ 149
Sicherheitshinweis - CSNC-2014-001 ................................................................................... 149
Probleme/Lösungen ............................................................................................................. 150
7.4
7.4.1
7.4.2
Sendemodul FTP .................................................................................................................. 152
Konfigurationsparameter..................................................................................................... 153
FTPS / FTPES ......................................................................................................................... 154
7.4.3
Feature PROXY_TYPE=FTP_ACCT ......................................................................................... 155
7.4.4
7.4.5
7.4.6
Feature – Überschreiben ..................................................................................................... 156
Feature – „hidden-store“ ..................................................................................................... 156
Probleme/Lösungen ............................................................................................................. 157
7.5
7.5.1
7.5.2
7.5.3
Sendemodul SFTP................................................................................................................. 158
Konfigurationsparameter..................................................................................................... 158
Konfiguration – ecount (Nachrichtenadresse pflegen) ................................................... 159
Feature Überschreiben ........................................................................................................ 160
7.6
7.6.1
7.6.2
Sendemodul FILE (Dateiverzeichnis) .................................................................................... 160
Technische Vorgehensweise ................................................................................................ 161
Konfigurationsparameter..................................................................................................... 161
7.1.2.1
7.3.6.1
7.3.6.2
7.3.6.3
7.3.6.4
7.3.6.5
7.3.6.6
7.3.6.7
7.4.2.1
7.4.2.2
7.4.2.3
7.4.3.1
7.4.3.2
7.4.6.1
7.4.6.2
7.4.6.3
Manipulation des Betreffs
Base64-Kodierung für E-Mail-Anhänge
Message-ID (MAIL-ID) bei mehreren KomA-Instanzen
Datenversand bleibt hängen
NTLM-Domain (bad username or password)
Sonderzeichen werden verstümmelt (z. B. kyrillisch)
SMIME – NullPointerException (SMIME_EncryptionHandler:200)
5.7.1 Client does not have permissions to send as this sender
137
150
151
151
151
151
151
152
FTPES (FTP over explicit TLS/SSL) security level
FTPS (FTP over implicit TLS/SSL) security level
Unterschied SSL und TLS
154
155
155
Variante 1
Variante 2
155
156
Allgemein – Verbindungsprobleme
Allgemein – FTP-Bibliothek
Timeout bei großen Dateien
157
157
158
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 9 von 384
7.6.3
Probleme/Lösungen............................................................................................................. 161
7.7
7.7.1
7.7.2
7.7.3
7.7.4
Sendemodul SMB: Samba .................................................................................................... 162
Konfigurationsparameter .................................................................................................... 163
NTLM .................................................................................................................................... 164
Beispiel SMB-URL ................................................................................................................. 164
Features ............................................................................................................................... 165
7.8
7.8.1
7.8.2
7.8.3
7.8.4
7.8.5
Allgemeine Probleme/Lösungen.......................................................................................... 165
Erzeuger der Exportaufträge (Abo) finden .......................................................................... 166
SELECT EAU did not finish in 10000 ms, so temporarily release lock .................................. 166
Datenversand erstellt zahlreiche Dateien im E-Mail-Ordner .............................................. 166
Error: Encrypt/Sign failed (in SMIME_EncryptionHandler/MailSender) ............................. 167
Schlechte Performance bei Abfrage der Export-Aufträge ................................................... 167
7.6.3.1
7.6.3.2
7.7.4.1
7.7.4.2
8
8.1
8.1.1
9
Zielverzeichnis X existiert nicht und konnte nicht angelegt werden
Fehler beim Umbenennen der temporären Datei (kurzzeitige Netzwerküberlastung)
Dateien überschreiben
Dateien umbenennen (wenn bereits vorhanden)
161
162
165
165
LPL-Spool (Lineare Protokolle) ......................................................................................... 168
Probleme/Lösungen............................................................................................................. 169
LOG-Datei wird nicht archiviert ........................................................................................... 169
Archivierung ................................................................................................................... 170
9.1
Konfigurationsparameter .................................................................................................... 172
9.2
Relevante Ordner für die Archivierung ................................................................................ 172
9.3
9.3.1
9.3.2
9.3.3
9.3.4
9.3.5
9.3.6
9.3.7
9.3.8
9.3.9
Beispiele (archive.ini) ........................................................................................................... 173
Löschen aller Daten die älter als 6 Monate sind.................................................................. 173
Verschieben aller Daten die älter als 1 Monat sind ............................................................. 173
Lösche alle Daten ohne Fehler............................................................................................. 174
Daten verschieben ............................................................................................................... 174
Alle E-Mail-XML-Dateien sofort in eine Zip-Datei packen: .................................................. 174
Alle E-Mail-Format-Dateien sofort in eine Zip-Datei packen:.............................................. 174
Alle E-Mail-Format-Dateien nach einer Woche löschen: .................................................... 174
Alle Archiv-Dateien, die älter als 1 Jahr sind, löschen: ........................................................ 174
Alle Dateien Zippen und Verschieben die älter als 10 Tage sind: ........................................ 174
10
10.1
10.1.1
10.1.2
10.1.3
10.1.4
10.1.5
10.1.6
10.1.6.1
10.1.6.2
10.1.6.3
10.1.6.4
10.1.6.5
10.1.6.6
10.1.6.7
EDIFACT .......................................................................................................................... 176
Allgemeine Hinweise ........................................................................................................... 177
Reihenfolge der Segmente .................................................................................................. 177
GZIP-Komprimierung ........................................................................................................... 177
Codenummern (ILN) ............................................................................................................ 177
Präfix für die UNB-ID ............................................................................................................ 178
UNB.0020 Datenaustauschreferenz – Generierung ............................................................ 178
BGM.1004 Dokumentennummer – Generierung ................................................................ 179
IFTSTA
INVOIC
INSRPT
ORDERS
ORDRSP
REMADV
REQOTE
179
179
179
180
180
180
180
Seite 10 von 384
10.1.6.8
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
QUOTES
180
10.1.7
Zeichenkodierung in der Datei ............................................................................................. 180
10.2
10.2.1
10.2.2
10.2.3
Kurzanleitung Formatwechsel ............................................................................................. 181
Anleitung zum Vorabtest des Formatwechsels ................................................................... 181
Import von „ALT“ - Versionen während der Übergangszeit (KomA) ................................... 182
Datenquelleneinstellungen (Maske Import-Dateien) .......................................................... 183
10.3
Import-Standardparameter (Config.properties) .................................................................. 184
10.4
Export-Standardparameter (Config.properties) .................................................................. 184
10.5
Import-Standardparameter (Datenquelle) .......................................................................... 184
10.6
Export-Standardparameter (Datenquelle) ........................................................................... 187
10.7
Einrichtung der EDI-Datenquelle ......................................................................................... 187
10.8
10.8.1
10.8.2
10.8.3
ALOCAT ................................................................................................................................ 188
Export-Parameter................................................................................................................. 188
Import-Parameter ................................................................................................................ 188
Probleme/Lösungen ............................................................................................................. 190
10.9
10.9.1
10.9.2
10.9.3
CONTRL ................................................................................................................................ 191
Lizenz / Datenquelle (Format).............................................................................................. 191
Parameter ............................................................................................................................ 192
CONTRL 2.0 (01.10.2014) ..................................................................................................... 195
10.9.4
Probleme/Lösungen ............................................................................................................. 195
10.10
10.10.1
IMBNOT (Imbalance Mitteilung) .......................................................................................... 198
Import-Parameter ................................................................................................................ 198
10.11
10.11.1
MSCONS ............................................................................................................................... 199
Import .................................................................................................................................. 199
10.11.2
Export ................................................................................................................................... 208
10.11.3
Probleme/Lösungen ............................................................................................................. 212
10.12
10.12.1
NOMINT ............................................................................................................................... 214
Import-Parameter ................................................................................................................ 214
10.8.3.1
10.8.3.2
10.9.3.1
10.9.3.2
10.9.4.1
10.9.4.2
10.9.4.3
10.11.1.1
10.11.1.2
10.11.1.3
10.11.1.4
10.11.2.1
10.11.2.2
10.11.2.3
10.11.2.4
10.11.2.5
10.11.3.1
10.11.3.2
10.11.3.3
10.11.3.4
NAD+ZES/NAD+ZSH fehlt
Export – Splitmerkmale: Größe bei Zählpunkt nicht umgesetzt
190
191
Syntaxprüfung für Datenelemente die es laut MIG nicht gibt
Besonderheit zu DE0062 im UNH-Segment
195
195
Import „Alle passenden Nachrichten sind bereits beantwortet.“
Keine Nachricht mit Referenz xyz, Absender <null> gefunden
CONTRL wird mit falschem Absender generiert
195
196
197
Konfigurationsparameter
MSCONS-Format spezifische Prüfungen (AHB) auf dem KomA
Verwendung der MSCONS-Segment-Felder in ecount
Medienart (Bestimmung im KomA)
200
207
208
208
Konfigurationsparameter
Split von MSCONS beim Export
Brennwert-Versand – OBIS-Kennzahl
Export-Tabellen - Struktur
Export Allokationslisten Gas (BGM+Z24, RFF+Z13+13013)
208
210
211
211
212
Negative Werte
Unbekannte OBIS-Kennzahlen sind nicht marktkonform
Import
Export
212
212
213
213
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 11 von 384
10.13
10.13.1
NOMRES ............................................................................................................................... 216
Import-Parameter ................................................................................................................ 216
10.14
10.14.1
ORDRSP ................................................................................................................................ 218
Zusammenspiel mit EDIFACT-Cockpit (MF_EDIFMON) ....................................................... 218
10.15
10.15.1
PRICAT .................................................................................................................................. 219
Export ................................................................................................................................... 219
10.16
10.16.1
TRANOT ................................................................................................................................ 219
Import-Parameter ................................................................................................................ 219
10.17
10.17.1
10.17.2
UTILMD ................................................................................................................................ 220
Export-Parameter ................................................................................................................ 220
Import von gesplitteten UTILMD-Nachrichten .................................................................... 220
10.18
10.18.1
Verschlüsselung und Signatur .............................................................................................. 221
Besonderheit CONTRL.......................................................................................................... 222
10.19
10.19.1
10.19.2
10.19.3
Allgemeine EDIFACT Probleme/Lösungen ........................................................................... 222
Doppelimport in zwei Mandanten ....................................................................................... 222
Änderungen in EDIFACT_Tabellen protokollieren/nachvollziehen ..................................... 223
Probleme bei Dateinamen im Gas-Umfeld .......................................................................... 223
10.20
Zusammenspiel mit EDIFACT-Cockpit (MF_EDIFMON) ....................................................... 223
11
Importfilter ..................................................................................................................... 225
11.1
Allgemeine Einheitenkonvertierung .................................................................................... 225
11.2
Wichtige Hinweise zur Nutzung der Import-API (Nachkommastellen) ............................... 226
11.3
CSV (Universeller Importkonfigurator) ................................................................................ 226
11.4
DWD_ELE (Temperaturdaten - IST und PROGNOSE – im XML-Format) .............................. 227
11.5
11.5.1
EBIX ...................................................................................................................................... 229
GZIP-Support ........................................................................................................................ 229
11.6
11.6.1
11.6.2
11.6.3
ELDR (EcountLoader) ........................................................................................................... 229
Mandantenfähigkeit ............................................................................................................ 240
Hinweise bei der Nutzung von Excel (XLS, XLSX) ................................................................. 241
Beispielkonfigurationen ....................................................................................................... 241
11.6.4
Probleme/Lösungen............................................................................................................. 241
11.7
EEX-Daten (.xls - Dateien) .................................................................................................... 246
11.8
11.8.1
EEX_XML .............................................................................................................................. 246
Fremdkanal-ID 1(FK-ID1)...................................................................................................... 254
11.9
ESS_LG (nur Import von Daten ohne Fahrplan) ................................................................... 255
11.10
GASX (von Mummert Consulting) ........................................................................................ 255
11.6.3.1
11.6.4.1
11.6.4.2
11.6.4.3
11.6.4.4
11.6.4.5
11.6.4.6
11.6.4.7
11.6.4.8
CSV mit Komma als Trennzeichen
241
Zeichenkodierung (encoding)
Zeichenproblem bei Excel-Dateien
Zieltabelle xyz nicht gefunden
Sequence xyz nicht gefunden
Spalten mit Anführungszeichen ("SPALTE_X")
Performance bei großen Datenmengen (BATCH_COUNT)
Problem mit Umlauten und Sonderzeichen
AFTER_FILE_CLOSE_TRIGGER und TRANSACTION_MODE
241
242
242
243
244
244
245
245
Seite 12 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
11.11
INVCC ................................................................................................................................... 258
11.12
LPEX ...................................................................................................................................... 258
11.13
11.13.1
LOADER_BCX ........................................................................................................................ 258
Beispiele ............................................................................................................................... 260
11.14
MCW (Wetterdaten in XML-Format) ................................................................................... 261
11.15
VESP_EXCEL.......................................................................................................................... 262
11.16
11.16.1
11.16.2
11.16.3
11.16.4
ZVW (Geräteverwaltung) ..................................................................................................... 262
ELS-Format (eCount- 00047331) .......................................................................................... 263
WEMAG-Format ................................................................................................................... 263
EC-Format (eCount- 00052357) ........................................................................................... 268
INTERN_EXCEL-Format (eCount- 00053633) ....................................................................... 270
11.13.1.1
11.13.1.2
11.13.1.3
11.13.1.4
12
Import einer Datei in eine XMLTYPE-Spalte
Import einer Datei in BLOB
Import einer Datei in XMLTYPE mit impliziter Kodierung
Import einer Datei in XMLTYPE mit expliziter Kodierung
260
260
261
261
Exportfilter ......................................................................................................................271
12.1
12.1.1
Globale Export-Parameter ................................................................................................... 271
ObisMapping ........................................................................................................................ 271
12.2
Abschlüsse CSV (Format ABSCSV) ........................................................................................ 272
12.3
BELVIS (BELVIS CSV Lastgänge) ............................................................................................ 273
12.4
12.4.1
12.4.2
12.4.3
12.4.4
12.4.5
12.4.6
12.4.7
CSV/XML (Format CSV) ........................................................................................................ 273
Beispiel: Metering-Code und OBIS als Kopfspalten mit Legende ........................................ 275
Beispiel: Metering-Code und OBIS als Kopfspalten ohne Legende ..................................... 275
Beispiel: Trennzeichen_Zwischen_Datum_Zeit = Y ............................................................. 276
Beispiel: Exportiere_Kopfdaten = Y...................................................................................... 276
Beispiel: Exportiere_Kopfdaten = N ..................................................................................... 276
Beispiel: Exportiere_Header = Y........................................................................................... 277
Beispiel: Header1 bis Header5 ............................................................................................. 277
12.5
CSV2 ..................................................................................................................................... 278
12.6
CSV_MEMI2016_RV (Format CSV_MEMIRV)....................................................................... 278
12.7
CSV_MMM (CSV für Rahmenverträge) ................................................................................ 279
12.8
CSV_ROHDAT ....................................................................................................................... 280
12.9
12.9.1
12.9.2
12.9.3
CSV_ZST (CSV Zählerstandsversand).................................................................................... 280
Export-Attribute ................................................................................................................... 281
Beispiel-Konfiguration (Properties-Datei auf dem KomA) ................................................... 281
Beispiel zusätzliche Ausgabe von Schwachlast und Zählwerkskennzeichen ....................... 284
12.10
DATENREBAP........................................................................................................................ 284
12.11
EDIS_INVC ............................................................................................................................ 284
12.12
EEX (European Energy Exchange Excel) ............................................................................... 285
12.13
ESS-XML-Fahrpläne (ETSO Scheduling System) ................................................................... 286
12.14
Excel-Reports (XLS_REP) ...................................................................................................... 287
12.15
EXP/XML (Format EXP)......................................................................................................... 287
12.16
Fröschl Flat File (Format FFF) ............................................................................................... 287
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 13 von 384
12.17
GAS-XML (Format GASX)...................................................................................................... 287
12.18
INVCC ................................................................................................................................... 288
12.19
KISS....................................................................................................................................... 292
12.20
Abschlüsse KVASY (Format KVASY) ...................................................................................... 292
12.21
LPEX/XML (Format LPEX) ..................................................................................................... 293
12.22
MMMKVASY (MEMI_SST_KVASY)........................................................................................ 294
12.23
OBM_VD_CSV ...................................................................................................................... 295
12.24
Reports (Format REPORT) .................................................................................................... 295
12.25
12.25.1
SAPEDM ............................................................................................................................... 297
Zeilenumbruch ..................................................................................................................... 298
12.26
12.26.1
12.26.2
12.26.3
12.26.4
STD_XML .............................................................................................................................. 298
Zusammenspiel Abo – Export-Tabelle – XML-Output ......................................................... 298
Konfigurationsparameter .................................................................................................... 298
XSLT – Transformation ......................................................................................................... 300
XML-Elemente: .................................................................................................................... 301
12.26.4.1
12.26.4.2
12.26.4.3
12.26.4.4
12.26.4.5
13
TIMEZONE
DATETIMEFORMAT
NUMBERFORMAT
EMISSION
PERIOD
301
301
301
301
302
Importkonfigurator ......................................................................................................... 303
13.1
Mehrsprachenfähigkeit........................................................................................................ 303
13.2
Unterschied FILTER=CSV vs. FILTER=CSV2 ........................................................................... 303
13.3
Grundmodell ........................................................................................................................ 304
13.4
13.4.1
Funktionen ........................................................................................................................... 305
Datumsformat / Zeitformat ................................................................................................. 310
13.5
13.5.1
Eigenschaften....................................................................................................................... 311
Zeitzonen ............................................................................................................................. 311
13.5.2
13.5.3
13.5.4
13.5.5
13.5.6
13.5.7
13.5.8
13.5.9
13.5.10
13.5.11
13.5.12
13.5.13
Zeitstempel als Intervallbeginn............................................................................................ 313
Demultiplex (DEMUX_CHANNELS) ...................................................................................... 313
Zeitstempel rückwärts ......................................................................................................... 314
Tabulator als Trennzeichen.................................................................................................. 314
Spracheinstellung................................................................................................................. 315
Ignoriere Datensätze die älter als x Tage sind ..................................................................... 315
NVL (NULL und leere Zeichenketten)................................................................................... 315
Warnung bei Zeitumstellung (WARNING.VALUE_DISTANCE) ............................................. 316
Abbruch bei Äquidistanzproblemen .................................................................................... 317
Zeitreihen fortsetzen (CONTINUE_TIMESERIES).................................................................. 317
Gas-Tagesgrenze 06:00 ........................................................................................................ 318
Verkettung mehrere Werte ................................................................................................. 320
13.4.1.1
13.5.1.1
13.5.1.2
13.5.1.3
13.5.1.4
Datums- und Zeitformat in einer Spalte
MEZ
UTC
Deutschland mit Sommer-/Winterzeit-Umschaltung
Weitere Zeitzonen
310
311
311
311
313
Seite 14 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
13.6
Anlegen einer Konfiguration ................................................................................................ 320
13.7
Import-File- und Kanal-Detail............................................................................................... 324
13.8
13.8.1
13.8.2
13.8.3
13.8.4
13.8.5
13.8.6
13.8.7
13.8.8
13.8.9
13.8.10
13.8.11
Beispiele ............................................................................................................................... 324
Einheit extrahieren .............................................................................................................. 324
Werte multiplizieren (*1000)............................................................................................... 325
Status in Abhängigkeit zu Feldinhalt bestimmen................................................................. 325
0-Wert anhand von Codierungen ermitteln ........................................................................ 325
0-Werte mit Status N ........................................................................................................... 325
Abbruchbedingung nach x Zeilen......................................................................................... 326
Bei Zahlen mit führendem Plus (+) kommt es zum Fehler (Unparsable Number)............... 326
Stündliche Gas-Werte ohne Uhrzeit (nur Datum) mit 6-Uhr-Grenze .................................. 326
Doppelte Anführungszeichen ignorieren ............................................................................. 327
Verwendung von toDate und dateCompare........................................................................ 327
Zählvariable (1 … n) statt Uhrzeit [decode-Alternative] ...................................................... 329
13.9
13.9.1
13.9.2
Restriktion bezüglich Excel-Dokumenten ............................................................................ 330
Export und anschließender Import ...................................................................................... 330
Problem mit Datumsformaten ............................................................................................. 331
13.10
13.10.1
13.10.2
13.10.3
Probleme/Lösungen ............................................................................................................. 332
Eigentumsnummer beim Speichern der Konfiguration erforderlich ................................... 332
Anzeige im Importkonfigurator stimmt nicht mit der Anzeige im eCount überein............. 333
Datenbank-Fehler / Übermittlung von KENNUNG_ORIG .................................................... 333
13.11
13.11.1
Besondere Import-Möglichkeiten (CSV2) ............................................................................ 334
Import von Zählerständen aus CSV-Datei ............................................................................ 334
14
EXCEL Reports..................................................................................................................337
14.1
Besonderheiten.................................................................................................................... 337
14.2
Restriktionen bezüglich Spalten und Zeilen ......................................................................... 337
14.3
Versionsübersicht abfragen ................................................................................................. 338
14.4
EXCEL Reports über eCount-Oberfläche .............................................................................. 339
14.5
Logging der EXCEL-Reports in der GUI ................................................................................. 340
14.6
14.6.1
14.6.2
Probleme/Lösungen ............................................................................................................. 341
Embedded record type expected, but Export_Profile_Values received.............................. 341
Zellenformatierungen aus Template werden nicht übernommen ...................................... 344
15
15.1
15.1.1
15.1.2
15.1.3
15.1.4
16
Performance-Tuning ........................................................................................................346
Datenempfang (ComImport) ............................................................................................... 346
Hintergrundinformation ...................................................................................................... 346
Wie sieht ein korrekt definiertes E-Mail-Konto aus? ........................................................... 347
Definition anderer Importkonten (außer HTTP) .................................................................. 348
Bereinigung der COM-Import-Tabellen ............................................................................... 349
Checkliste KomA-Fehlermeldungen ..................................................................................350
16.1
Bekannte Probleme und deren Lösungen............................................................................ 350
16.2
16.2.1
Bereitstellung aller notwendigen Informationen bei Fehlern im KomA.............................. 350
Allgemeine Informationen ................................................................................................... 350
16.2.1.1
16.2.1.2
Versionsübersicht
Properties-Dateien
350
351
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 15 von 384
16.2.2
16.2.3
Zentrale Konfigurationsdatei (Config.properties)................................................................ 354
LOG-Dateien......................................................................................................................... 354
16.3
16.3.1
16.3.2
16.3.3
16.3.4
Kochrezept – Datenermittlung bei Exportfehlern ............................................................... 355
Beispiel ................................................................................................................................. 356
Ermittlung der Export-Auftrag-ID bei EDIFACT-Dateien ...................................................... 358
Datenversand-ABO über EAU_ID identifizieren .................................................................. 360
Fehler beim E-Mail-Versand ................................................................................................ 360
16.4
16.4.1
16.4.2
Kochrezept – Datenermittlung bei Importfehlern ............................................................... 361
Beispiel (ZIP-Datei) ............................................................................................................... 361
Beispiel (EDIFACT-Datei „ORDERS“)..................................................................................... 363
16.5
16.5.1
16.5.2
16.5.3
Informationsbeschaffung beim ComImport ........................................................................ 365
Explizites Protokollieren des Empfangs von E-Mails ........................................................... 366
Besonderheiten beim Abholen vom Mail-Server ................................................................ 366
Speichern der E-Mails vom Mail-Server .............................................................................. 366
16.6
16.6.1
16.6.2
16.6.3
Informationsbeschaffung beim Problemen im EDIFACT-Umfeld ........................................ 367
Spezialfall CONTRL ............................................................................................................... 367
Welche Daten sind zu übermitteln? .................................................................................... 367
Vom EDIFACT-Cockpit zum Diagnose-Report ...................................................................... 369
Anlage 1 Glossar ........................................................................................................................... 371
Anlage 2 Datumsformatierung....................................................................................................... 372
Anlage 3 Reguläre Ausdrücke ........................................................................................................ 374
Anlage 4 Import- und Export-Filter (XSD, DTD Beispiele)................................................................. 376
Anlage 5 Konfigurationsbeispiele für Loader-Import....................................................................... 377
Anlage 6 Beispielkonfiguration FTP-Empfang für EEX-Daten ........................................................... 382
Abbildungsverzeichnis
Abbildung 2-1: Grobarchitektur ..................................................................................................................23
Abbildung 3-1 Verwendung des importcom.comserver-Parameters in ecount .........................................25
Abbildung 3-2: Anpassen der Path-Angabe ................................................................................................31
Abbildung 3-3: Aktualisierung der Zeitzoneninformation...........................................................................32
Abbildung 3-4: Maske Importkommunikation ............................................................................................39
Abbildung 3-5: Abfrage SQL_Select_Next_EAU.sql.....................................................................................40
Abbildung 3-6: Dialog Eigenschaften von KomA-Datenimport ...................................................................43
Abbildung 3-7: Dialog Trigger bearbeiten ...................................................................................................43
Abbildung 3-8: Dialog Aktion bearbeiten ....................................................................................................44
Abbildung 3-9: Dialog Aufgabe erstellen / Bedingungen ............................................................................44
Abbildung 3-10: Dialog Aufgabe erstellen / Einstellungen .........................................................................45
Abbildung 3-11: Vereinfachte Kommunikations-Verzeichnisstruktur ........................................................46
Abbildung 3-12 Definition des Datenbankpasswortes ................................................................................49
Seite 16 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 3-13: Beispiel Konsolenanwendung PasswordCoding .............................................................. 50
Abbildung 4-1: Anzeige Übergabeparameter ............................................................................................. 54
Abbildung 5-1: Beispiel – IMAP-Konto ....................................................................................................... 68
Abbildung 5-2: Beispiel – IMAP-Konto - Importformate ............................................................................ 68
Abbildung 5-3: Importkonto - Prüfintervall ................................................................................................ 69
Abbildung 5-4: Maske Importkommunikation - Feld Aktionswert ............................................................. 70
Abbildung 5-5: Maske Importkommunikation, Option ZIP ........................................................................ 72
Abbildung 5-6: Maske Importkommunikation – Dialog Filter .................................................................... 73
Abbildung 5-7: Maske Importkommunikation – Endaktion für Dateien einrichten, die nicht auf den Filter
passen ......................................................................................................................................................... 77
Abbildung 5-8: Maske Importkommunikation / Dialog Filter: Anzeige vorhandener Filter....................... 77
Abbildung 5-9: Maske Importkommunikation: Angabe der Variablen ${DATE} im Verzeichnispfad ........ 79
Abbildung 5-10: Verzeichnis unter /eod/market_data/power/spot/xml/2015/20151205 ....................... 79
Abbildung 5-11: MF_RIMPORT: Einstellungen für SFTP-Kommunikation .................................................. 79
Abbildung 5-12: Verwenden der Einstellungen für SFTP-Kommunikation ................................................ 80
Abbildung 5-13: Verwenden der Einstellungen für SFTP-Kommunikation mit Filter ................................. 80
Abbildung 5-14: Beispiel: Filterung von E-Mails per Folder ....................................................................... 83
Abbildung 5-15: Beispiel: Weiterleitung nicht zu verarbeitender E-Mails ................................................. 89
Abbildung 5-16: Beispiel: Einrichtung Weiterleitung nicht zu verarbeitender E-Mails ............................. 89
Abbildung 5-17: Stillstand Comimport: Konfiguration für fehlerhafte E-Mails .......................................... 92
Abbildung 5-18: Stillstand Comimport: Verzeichnis für fehlerhafte E-Mails ............................................. 92
Abbildung 5-19: Beispielkonfiguration und Ergebnis zur Behebung Stillstand Comimport ....................... 92
Abbildung 5-20: Maske Kommunikationseinstellungen: IMAP_PARTIALFETCH=N ................................... 94
Abbildung 5-21: Maske Kommunikationseinstellungen: IMAP_FETCH_SIZE ............................................. 94
Abbildung 5-22: Maske Importkommunikation: Option Msg. ................................................................... 94
Abbildung 5-23 File-Verbindung ohne Nutzung des SMB-Protokolls......................................................... 98
Abbildung 5-24: Maske Kommunikationseinstellungen: Beispiel - Robotron-FTP-Verbindungen ............ 99
Abbildung 5-25: Maske Kommunikationseinstellungen: FTPConnection2OldDataTransferBehaviour ... 100
Abbildung 5-26: Maske Kommunikationseinstellungen: Beispiel FTP_ACC ............................................. 102
Abbildung 5-27: Maske Kommunikationseinstellungen: Beispiel SFTP ................................................... 106
Abbildung 5-28: Privater Schlüssel mit KeyStore-Explorer als OpenSSL extrahieren (Teil 1)................... 107
Abbildung 5-29: Privater Schlüssel mit KeyStore-Explorer als OpenSSL extrahieren (Teil 2)................... 107
Abbildung 5-30: Private Schlüssel für das SFTP-Konto mit der ID 7645 ................................................... 108
Abbildung 5-31: Maske Kommunikationseinstellungen > Reiter Verbindungen ..................................... 110
Abbildung 5-32: Maske Kommunikationseinstellungen > Reiter Importformate .................................... 110
Abbildung 5-33: Maske Importkommunikaton ........................................................................................ 111
Abbildung 5-34: Importformat - EDI_X..................................................................................................... 114
Abbildung 5-35: Importkonto mit aktivierter ZIP-Funktionalität ............................................................. 114
Abbildung 5-36: Datenablage im KomA ................................................................................................... 114
Abbildung 6-1: Datenfluss Import ............................................................................................................ 117
Abbildung 6-2: Beispiel einer Fehler-Antwort-Konfiguration................................................................... 123
Abbildung 6-3: Beispiel für die Import-Konfigurationsdatei datenimport.ini .......................................... 129
Abbildung 7-1: Datenfluss Export Version 2............................................................................................. 135
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 17 von 384
Abbildung 7-2: Kontrolle E-Mail-Dateien in der KomA auf Content-Transfer-Encoding: base64 .............150
Abbildung 7-3: Maske Nachrichtenadressen: FTP soll mit hidden-store arbeiten ...................................157
Abbildung 7-4: Konfiguration – Nachrichtenadresse pflegen ...................................................................159
Abbildung 7-5: Nachrichtenadressen Benutzer/Passwort ........................................................................160
Abbildung 7-6: Aktivierung der Option zum Überschreiben .....................................................................160
Abbildung 7-7: Beispiel Adresse für Samba-Zugriff durch ecount............................................................163
Abbildung 7-8: Ermittlung des Abos..........................................................................................................166
Abbildung 10-1: Beispiel Reihenfolge der Segmente in einer IFTSTA-Meldung .......................................177
Abbildung 10-2 UNB-Präfix TS für das Format TSIMSG_DEKL...................................................................179
Abbildung 10-3: Maske Lastgangabo: Definition der aktuell gültigen Versionsnummer .........................182
Abbildung 10-4: Maske Import-Dateien....................................................................................................183
Abbildung 10-5: Maske Zählpunkt-Verwaltung: Zählpunktdetail NETZKONTO_VON...............................191
Abbildung 10-6: Anzeige der CONTRL im robotron*EdifactKonverter (Ausschnitt) ...............................195
Abbildung 10-7: CONTRL-Anzeige EdifactKonverter (EDIFACT) ..............................................................196
Abbildung 10-8: CONTRL-Anzeige EdifactKonverter (Daten)..................................................................197
Abbildung 10-9: Ablesegrund PMR verschwindet beim Zählerstandsimport ...........................................213
Abbildung 10-10: Anzeige nicht erlaubter Statusangaben für Marktrollen im Abo (Reiter Umfang –
Linien) ........................................................................................................................................................214
Abbildung 10-11: Import von gesplitteten UTILMD ..................................................................................221
Abbildung 11-1: Importdatei UNICODE kodiert ........................................................................................242
Abbildung 11-2: Überprüfung Encoding....................................................................................................245
Abbildung 12-1: Aufbau Format CSV/XML ................................................................................................273
Abbildung 13-1 Importkonfigurator FILTER=CSV2 ....................................................................................304
Abbildung 13-2 Importkonfigurator FILTER=CSV ......................................................................................304
Abbildung 13-3 Anzeige Importkonfigurator horizontales Lastgangdatenmodell....................................304
Abbildung 13-4 Anzeige Importkonfigurator vertikales Lastgangdatenmodell ........................................304
Abbildung 13-5: Beispiel: Datum und Zeit im Zeitformat hinterlegen ......................................................310
Abbildung 13-6: Beispiel Winter-Sommer-Umschaltmethode: Werte 2-3 Uhr ignorieren ......................312
Abbildung 13-7: Option Demultiplex von Kanälen ....................................................................................314
Abbildung 13-8: Beispiel: Rückwärtige Zeitangaben in einer zu importierenden Datei ...........................314
Abbildung 13-9 Spracheinstellungen (Monatsnamen) .............................................................................315
Abbildung 13-10: Option: Ignoriere Daten (älter als x Tage) ....................................................................315
Abbildung 13-11: Option: Wert-Dekoder - Methode decode ...................................................................316
Abbildung 13-12: Option: Warnung bei Zeitumstellung ...........................................................................316
Abbildung 13-13 Gas-Tagesgrenze aktivieren (Reiter Bedingungen)........................................................318
Abbildung 13-14 Beispiel Gastag mit separater Tag und Zeit ...................................................................319
Abbildung 13-15: Grafische Benutzeroberfläche zum Anlegen einer Konfiguration 1/3 .........................320
Abbildung 13-16: Grafische Benutzeroberfläche zum Anlegen einer Konfiguration 2/3 .........................321
Abbildung 13-17: Grafische Benutzeroberfläche zum Anlegen einer Konfiguration 3/3 .........................321
Abbildung 13-18: Beispiel: Definiertes CSV-Format mit Abbruchbedingung - Format .............................323
Abbildung 13-19: Beispiel: Definiertes CSV-Format mit Abbruchbedingung - Allgemein ........................323
Abbildung 13-20: Beispiel: Definiertes CSV-Format mit Abbruchbedingung - Bedingungen ...................324
Abbildung 13-21 Ausschnitt Importkonfigurator (Reiter Allgemein) ........................................................326
Seite 18 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 13-22 Ausschnitt Importkonfigurator (Reiter Bedingung) ...................................................... 326
Abbildung 13-23 Beispiel-Datei (Start) - Importkonfigurator................................................................... 327
Abbildung 13-24 Beispiel-Datei (Ende) – Importkonfigurator.................................................................. 327
Abbildung 13-25 eCount-Ansicht des Import mittels dateCompare ........................................................ 329
Abbildung 13-26 Beispiel: CSV-Datei mit Zählvariable ............................................................................. 329
Abbildung 13-27 Konfiguration (Ausschnitt) CSV-Datei mit Zählvariable ................................................ 330
Abbildung 13-28 Dialog Zellen formatieren ............................................................................................. 332
Abbildung 13-29 StandardImport Viewer - Unschönheit bei Periode täglich .......................................... 333
Abbildung 13-30 Anzeige der Zäherstand-CSV-Datei im StandardImport Viewer ................................... 335
Abbildung 14-1 Excel Reports: Versionsübersicht abfragen .................................................................... 339
Abbildung 14-2 Globale Einstellung EXR_NLS_LANGUAGE - Spracheinstellung für Excel Reports .......... 339
Abbildung 14-3 Excel Reports: log4j.xml .................................................................................................. 341
Abbildung 14-4 Bsp.-Verzeichnis für EXCEL_REPORTS.log ....................................................................... 341
Abbildung 14-5 ABO-Datenversand mit Excel-Report – Bausteindefinition (getProfileValues) .............. 341
Abbildung 14-6 ABO-Datenversand mit Excel-Report – Konfiguration (getProfileValues) ...................... 342
Abbildung 14-7 ABO-Datenversand mit Excel-Report – Bausteindefinition (getProfiles)........................ 343
Abbildung 14-8 ABO-Datenversand mit Excel-Report – Konfiguration (getProfiles) ............................... 343
Abbildung 14-9 Zeitskala bestimmen (getProfiles) - Bausteindefinition.................................................. 344
Abbildung 14-10 Zeitskala bestimmen (getProfiles) – Konfiguration ...................................................... 344
Abbildung 15-1: Definition von "read only" für das Importkonto ............................................................ 347
Abbildung 15-2: Kennzeichnung eines E-Mail-Kontos als read only ........................................................ 347
Abbildung 15-3: Beispiel: Falsch konfiguriertes E-Mail-Konto ................................................................. 348
Abbildung 15-4: Beispiel: Korrekt konfiguriertes E-Mail-Konto ............................................................... 348
Abbildung 15-5: Konfiguration E-Mail-Konto: Operation für abgeholte Dateien und Aktionstyp für alle
übrigen...................................................................................................................................................... 349
Abbildung 15-6 Anlage COM-Import-Bereinigung ................................................................................... 349
Abbildung 15-7 COM-Import-Bereinigung - Parameter ........................................................................... 349
Abbildung 16-1 Ermittlung der Versionsübersicht ................................................................................... 351
Abbildung 16-2 Ergebnis der Ermittlung der Versionsübersicht .............................................................. 351
Abbildung 16-3 Properties-Datei (Import) ............................................................................................... 352
Abbildung 16-4 Properties-Datei finden ........................................................................................................
Abbildung 16-5 Properties-Datei Export-Auftrag (1)................................................................................ 354
Abbildung 16-6 Properties-Datei Export-Auftrag (2)................................................................................ 354
Abbildung 16-7 Maske "Export-Aufträge“ ................................................................................................ 355
Abbildung 16-8 Config.properties - Einstellung XML-Datei...................................................................... 356
Abbildung 16-9 Interne Robotron-XML-Datei finden ............................................................................... 357
Abbildung 16-10 KomA-Server ................................................................................................................. 358
Abbildung 16-11 MSCONS-Datei .............................................................................................................. 358
Abbildung 16-12 EdifactKonverter ........................................................................................................... 359
Abbildung 16-13 EDIFACT-Cockpit Suche ................................................................................................. 359
Abbildung 16-14 EDIFACT-Cockpit Export ................................................................................................ 360
Abbildung 16-15 Beispiel ZIP-Datei (1) ..................................................................................................... 362
Abbildung 16-16 Beispiel ZIP-Datei (2) ..................................................................................................... 362
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 19 von 384
Abbildung 16-17 Beispiel ZIP-Datei (3) ......................................................................................................363
Abbildung 16-18 Beispiel EDIFACT-Datei (1) .............................................................................................364
Abbildung 16-19 Beispiel EDIFACT-Datei (2) .............................................................................................364
Abbildung 16-20 : Ablage der „Problem“-E-Mails .....................................................................................367
Abbildung 16-21 Diagnose-Schaltfläche in MF_IFI ....................................................................................368
Abbildung 16-22 EDIFACT-Cockpit (MF_EDIFMON)- Interne ID des Import-Datensatzes ermitteln ........370
Abbildung 16-23 (Alternativ) Import-Dateien (MF_IFI ) Datensatz über Interne ID suchen.....................370
Abbildungsverzeichnis Anlagen
Anlage Abbildung 1: Beispiel für minimale Loader-Konfiguration ............................................................378
Anlage Abbildung 2: Beispiele für Loader-Datenbank-Verbindungen ......................................................379
Anlage Abbildung 3: Beispiel für Excel-Konfiguration im Loader-Skript ...................................................379
Anlage Abbildung 4: Beispiele für Funktionen ..........................................................................................381
Anlage Abbildung 5: Beispiel FTP-Verbindung (MF_RIMPORT) ................................................................382
Anlage Abbildung 6: Verzeichnisstruktur unter dem Root-Verzeichnis von infoproducts.eex.com.........383
Anlage Abbildung 7: Importformate definieren........................................................................................383
Anlage Abbildung 8: FTP-Konto .................................................................................................................384
Anlage Abbildung 9: FTP-Verzeichnis / Filter ............................................................................................384
Tabellenverzeichnis
Tabelle 3-1: Allgemeine Konfigurationsparameter .....................................................................................27
Tabelle 5-1: Comimport-Parameter ............................................................................................................64
Tabelle 5-2: Kommunikationsverbindungstypen ........................................................................................66
Tabelle 5-3: Möglichkeiten beim Umbenennen einer Datei .......................................................................71
Tabelle 5-4: Unterstützte Aktionen pro Konto ............................................................................................71
Tabelle 5-5: Unterstützte Filter je Konto.....................................................................................................74
Tabelle 5-6: Beispiele Filtereinstellungen für Filterkriterium Betreff .........................................................75
Tabelle 5-7: Beispiele Filtereinstellungen für Filterkriterium Name ...........................................................75
Tabelle 5-8: Parameter für E-Mail-Empfang ...............................................................................................83
Tabelle 5-9: Parameter für E-Mail-Empfang über Maske Kommunikationseinstellung .............................86
Tabelle 5-10: Parameter für Empfang über FTP ........................................................................................100
Tabelle 5-11: Parameter für Empfang über Maske Kommunikationseinstellung .....................................100
Tabelle 5-12 Parameter für Empfang über SFTP .......................................................................................104
Tabelle 5-13 Parameter für das HTTP-Konto.............................................................................................108
Tabelle 6-1: Parameter für Datenimport...................................................................................................118
Tabelle 6-2: Parameter für Info-E-Mail .....................................................................................................121
Tabelle 7-1: Platzhalter Dateinamen .........................................................................................................136
Seite 20 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Tabelle 7-2: Platzhalter vorwiegend für Formate EDIFACT/MSCONS, CSV, GASX ................................... 136
Tabelle 7-3: Platzhalter E-Mail-Betreff ..................................................................................................... 136
Tabelle 7-4: Parameter für Datenexport .................................................................................................. 137
Tabelle 7-5: Einstellungen für MailSender ............................................................................................... 142
Tabelle 7-6: Parameter für Versand über FTP .......................................................................................... 153
Tabelle 7-7: Konfigurationsparameter für Sendemodul SFTP .................................................................. 158
Tabelle 7-8: Parameter für Versand über FILE ......................................................................................... 161
Tabelle 7-9: Parameter für Versand über SMB ........................................................................................ 163
Tabelle 7-10: Beispiel SMB-URL................................................................................................................ 164
Tabelle 8-1: Parameter für LPL-Spool (Lineare Protokolle) ...................................................................... 168
Tabelle 9-1: Syntax für die Konfigurationen für Archivierungsaufträge................................................... 170
Tabelle 9-2: Konfigurationsparameter für die Archivierungsaufträge ..................................................... 172
Tabelle 10-1: Unterstütze Formatversionen ............................................................................................ 176
Tabelle 10-2: Zuordnung Maske MF_IFI) – Tabelle IMPORT_FILE: .......................................................... 183
Tabelle 10-3: Import-Standardparameter EDIFACT: config.properties .................................................... 184
Tabelle 10-4: Export-Standardparameter EDIFACT: config.properties .................................................... 184
Tabelle 10-5: Import-Standardparameter EDIFACT: Datenquelle EDI ..................................................... 185
Tabelle 10-6: Export-Standardparameter EDIFACT: Datenquelle EDI ...................................................... 187
Tabelle 10-7: ALOCAT Export Parameter.................................................................................................. 188
Tabelle 10-8: ALOCAT Import-Parameter ................................................................................................. 189
Tabelle 10-9: Parameter für EDI_CONTRL ................................................................................................ 192
Tabelle 10-10: Übersicht Mapping von Absender-/Empfänger-Typ ........................................................ 198
Tabelle 10-11: IMBNOT – FKID-Variablen................................................................................................. 198
Tabelle 10-12: Standardparameter EDIFACT: Datenquelle EDI: EDI.properties ...................................... 200
Tabelle 10-13: Statuscodierungen MSCONS – ecount ......................................................................... 202
Tabelle 10-14: Verwendung der MSCONS-Segment-Felder in ecount ................................................ 208
Tabelle 10-15: Konfigurationsparameter für den MSCONS-Export ......................................................... 208
Tabelle 10-16: Split von MSCONS beim Export ........................................................................................ 210
Tabelle 10-17: NOMINT – FKID-Variablen ................................................................................................ 215
Tabelle 10-18: NOMRES – FK-ID-Variablen .............................................................................................. 216
Tabelle 10-19: Parameter für NOMRES (über EDI.properties einstellbar) ............................................... 218
Tabelle 10-20: TRANOT Parameter für FK-Bestimmung .......................................................................... 219
Tabelle 10-21: UTILMD Export-Parameter ............................................................................................... 220
Tabelle 11-1: Formatspezifische Einstellungen DWD_ELE ....................................................................... 228
Tabelle 11-2: Formatspezifische Einstellungen ELDR ............................................................................... 230
Tabelle 11-3: Typen für Datenbank-Verbindungsdefinitionen am ELDR ................................................. 230
Tabelle 11-4: Attribute für Datenbank-Verbindungsdefinitionen am ELDR............................................. 231
Tabelle 11-5: Unterstützung der Attribute pro Verbindungstyp am ELDR............................................... 231
Tabelle 11-6: Attribute für Ausdruck inputFormat() ................................................................................ 232
Tabelle 11-7: Zieltabellen-Definitionen vom Typ targetTable() am ELDR ................................................ 233
Tabelle 11-8: Zieltabellen-Definitionen vom Typ column()-am ELDR ...................................................... 233
Tabelle 11-9: Zieltabellen-Definitionen vom Typ dataExpression()-am ELDR .......................................... 234
Tabelle 11-10: Formatspezifische Einstellungen für EEX_XML ................................................................ 247
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 21 von 384
Tabelle 11-11: Formatspezifische Einstellungen GASX .............................................................................256
Tabelle 11-12 Parameter für LPEX.............................................................................................................258
Tabelle 11-13: Parameter für LOADER_BCX ..............................................................................................258
Tabelle 11-14: MCW - Parameter ..............................................................................................................262
Tabelle 11-15: WEMAG-Formate ..............................................................................................................263
Tabelle 11-16: Importtabellen Zusatzgeräte .............................................................................................266
Tabelle 12-1: Parameter Abschlüsse CSV (Format ABSCSV) .....................................................................272
Tabelle 12-2: Parameter CSV/XML (Format CSV) ......................................................................................273
Tabelle 12-3: Formatspezifische Einstellungen CSV2 ................................................................................278
Tabelle 12-4 Parameter für CSV_MEMIRV ................................................................................................279
Tabelle 12-5: Parameter CSV_ROHDAT .....................................................................................................280
Tabelle 12-6: Export-Attribute für CSV_ZST (CSV Zählerstandsversand) ..................................................281
Tabelle 12-7:Parameter für DATENREBAP ................................................................................................284
Tabelle 12-8: Formatspezifische Einstellungen EEX ..................................................................................285
Tabelle 12-9: Formatspezifische Einstellungen ESS ..................................................................................286
Tabelle 12-10: Formatspezifische Einstellungen FFF ................................................................................287
Tabelle 12-11:Parameter für KISS .............................................................................................................292
Tabelle 12-12 Parameter für Exportformat KVASY ...................................................................................292
Tabelle 12-13: Formatspezifische Einstellungen LPEX ..............................................................................293
Tabelle 12-14 Formatspezifische Einstellungen MMMKVASY..................................................................294
Tabelle 12-15 Formatspezifische Einstellungen REPORT ..........................................................................295
Tabelle 12-16: Formatspezifische Einstellungen SAPEDM ........................................................................297
Tabelle 12-17: Abo – Export-Tabelle – XML-Output .................................................................................298
Tabelle 12-18: Konfigurationsparameter für STD_XML ............................................................................299
Tabelle 12-19: Elemente für DATETIMEFORMAT ......................................................................................301
Tabelle 12-20: Elemente für NUMBERFORMAT ........................................................................................301
Tabelle 12-21: Elemente für EMISSION .....................................................................................................302
Tabelle 13-1: Funktionen Importkonfigurator ..........................................................................................305
Tabelle 13-2: Import von Zählerständen aus CSV-Datei – mögliche Attribute .........................................335
Tabelle 16-1: Date and Time Patterns .......................................................................................................372
Tabelle 16-2: Beispiele für Date and Time Patterns ..................................................................................373
Tabelle 16-3: Reguläre Ausdrücke .............................................................................................................374
Seite 22 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
1 Allgemeines/Zweck des Dokumentes
Die Systeme robotron*ecount, robotron*esales und robotron*ecollect basieren auf dem Kernel
des Systems robotron*ecount. Das vorliegende Dokument beschreibt die Funktionalität anhand des
Systems robotron*ecount. Für das System robotron*esales gilt die Beschreibung in analoger Form.
Der Kommunikationsserver (KomA-Server) dient der Automatisierung der Kommunikation mit anderen
Energieversorgern und ist als modular aufgebaute Standalone-Java-Komponente auf einem separaten
Rechner mit einem nahezu beliebigen Betriebssystem lauffähig. Diese Architektur ermöglicht eine gute
Lastverteilung, flexible Konfigurationsmöglichkeiten, schnelle Reaktion auf neue Anforderungen sowie
eine große Freiheit bei der Wahl der Rechnerplattform.
Die einzelnen Java-Bausteine werden in mehreren Java-Archiven ausgeliefert, die weitere externe
Bibliotheken wie z. B. Datenbank-Treiber, XML-Parser und Mail-Bibliotheken von Drittanbietern
verwenden.
Die Komponenten können direkt in vorhandene Umgebungen integriert, aber auch mit Hilfe der
mitgelieferten Skript-Umgebung verwendet werden.
Das vorliegende Dokument beschreibt die Java-Komponenten des Systems robotron*ecount für den
Import/Export von Daten von und nach Fremdformaten.
Es wird ein Überblick über Aufbau und Funktionsweise der Komponenten vermittelt und deren
Verwendung beispielhaft gezeigt.
Im Anhang sind Anwendungsbeispiele sowie zusätzliche Informationen zu finden, die für den Anwender
nicht direkt von Bedeutung sind, aber dem interessierten Benutzer hilfreiche Einblicke in die
Funktionsweise bieten.
Weiterhin sind im Anhang Beschreibungen der Import-Formate sowie Beispielkonfigurationen zu finden.
Wo ist die aktuelle Version des Dokuments auffindbar?
Das Dokument ist direkt im ecount aufrufbar über Hilfe > Funktionsbeschreibung >
Kommunikationsautomatisierung – KomA.
Bleiben Sie immer auf den neusten Stand mithilfe des KomA-RSS-Feeds!
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 23 von 384
2 Architektur
Ziel ist es, dem ecount Anwender eine große Auswahl an Import- und Exportformaten zur Verfügung zu
stellen und diese mit möglichst hohem Automatisierungsgrad zu empfangen und zu versenden. Um
nicht für jedes einzelne Format eine spezielle Implementierung in der Datenbank vornehmen zu müssen,
wird an dieser Stelle eine zweistufige Verarbeitung vorgenommen.
Der Datenimport und -export von bzw. in Fremdformate(n) erfolgt über ecount-spezifische XMLZwischenformate, die sich aufgrund unterschiedlicher Anforderungen der Prozesse allerdings in ihrer
Struktur unterscheiden. Mit Hilfe von Java-Komponenten, die dynamisch in das System integriert
werden können, werden die speziellen Formate in das bzw. aus dem XML-Zwischenformat konvertiert.
An dieser Stelle besteht die einfache Möglichkeit der Erweiterung um zusätzliche Formate. Der
Datenaustausch mit der Datenbank erfolgt nur über die XML-Zwischenformate. Eine Beschreibung
dieser XML-Zwischenformate befindet sich im Anhang.
Abbildung 2-1: Grobarchitektur
Seite 24 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
3 Installation und Konfiguration
Die Auslieferung der Komponenten erfolgt in einer vorgegebenen Verzeichnisstruktur. Das
Basisverzeichnis heißt üblicherweise Kommunikation und wird im Folgenden mit <BASE> bezeichnet,
darunter befinden sich die mitgelieferten Start-Skripte als Unix-Shell-Skripte oder Windows-CMDSkripte, das Verzeichnis config für Konfigurationsdateien sowie das Verzeichnis für die ProgrammBibliotheken (lib-Verzeichnis). Weiterhin existiert evtl. noch ein templates-Verzeichnis, in dem Vorlagen
für zu versendende E-Mails mit dem TEMPLATE-Format liegen. Beim ersten Start werden weiterhin ein
log- und ein tmp-Verzeichnis für Protokoll- und temporäre Dateien angelegt.
Das Basisverzeichnis mit der mitgelieferten Verzeichnisstruktur wird an beliebiger Stelle im Dateisystem
des Kommunikationsrechners abgelegt.
3.1
Neuinstallation und Basis-Konfiguration
Für die Neuinstallation steht ein Komplettstand zur Verfügung der in zwei Ausprägungen (Windows und
Linux) verfügbar ist. Diese Können auf der Download-Seite heruntergeladen werden.
Die KomA hat hierbei immer eine Datenbank-Voraussetzung an ecount die sowohl in der Zip-Datei, in
der Datei ecount - Vorraussetzung.txt, sowie auf der Download-Seite aufgeführt ist.
Diese Voraussetzung muss zwingend beachtet werden!
Die Zip-Datei, für das gewünschte Betriebssystem, muss entpackt und konfiguriert werden. Die BasisKonfiguration ist in den Unterkapiteln beschrieben.
Linux-Befehl: unzip KomA-Referenzstand-Linux.zip
3.1.1
Config. properties
In der Config.properties müssen folgende Parameter kontrolliert und angepasst werden:
-
common.base_port
Der verwendete Port muss frei sein und darf nur von 1 KomA-Instanz verwendet werden.
Werden mehrere KomA-Instanzen aufgesetzt muss dieser Wert angepasst werden (+4 oder -4
wenn die anderes Ports über den base_port definiert werden) (siehe 3.3.3)
database.user
Der Datenbanknutzer (Standard EC_XCH)
database.passwd
Das Password für den Datenbankbenutzer in Klartext, Soll das Passwort sicherer abgelegt
werden muss dies über die Datei setup_xch_pwd.cmd|sh (siehe 3.4.16) gepflegt werden.
Hierbei ist dann der database.passwd Eintrag nicht mehr notwendig.
database.conntype
Entscheidung ob direkt über JDBC gegangen wird oder ob der Oracle JDBC OCI Treiber
verwendet werden. Die Nutzung von JDBC (THIN) ist Standard und wird empfohlen!
database.connect
Übergabe der Datenbankverbindung
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
3.1.1.1
Seite 25 von 384
Import
Soll die KomA für Importe (Abfrage von Mailkonten, …) verwendet werden ist noch folgende Einstellung
wichtig.
-
importcom.comserver
Der Wert muss eine positive Ganzzahl sein, diese Zahl wird anschließend bei den ImportVerbindungen verwendet (Importkommunikation [MF_COMIMPORT] in der Spalte Server), der
Default-Wert ist 1.
Abbildung 3-1 Verwendung des importcom.comserver-Parameters in ecount
3.1.1.2
Export
Dient die KomA für Exporte, muss zusätzlich diese Einstellungen konfiguriert werden.
-
3.1.2
common.smtp_server
Hierbei wird der Mailserver konfiguriert über den die E-Mails versendet werden.
Java-Version
Der KomA setzt Java 8 mit der Version 8 Update 20 voraus! Neuere Update-Versionen von Java 8 sind
kompatiblen und können verwendet werden, aus Security-Sicht wird dies auch empfohlen!
Nun muss der KomA noch eine Java-Version definiert werden (siehe 3.3.1.1). Entweder wird die JavaVersion direkt in der KomA hinterlegt (dazu muss man nur ein Java 8 – Installationsordner in die KomA
kopieren und nach „jdk“ bzw. „jre“ umbenennen) oder man setzt die Java-Version per
user_env_pre.cmd|sh. Um nicht zu viele Java-Versionen auf einem System zu haben wird die
Wiederverwendung empfohlen, daher sollte man die Java-Version über die user_env_pre.cmd|sh
setzen.
Es wird empfohlen auf 64-Bit-Systemen immer eine 64-Bit-Java-Version zu installieren, damit ist es
möglich einen KomA-Prozess mehr als ~3,5 GB Arbeitsspeicher zur Verfügung zu stellen!
Beispiel Windows (user_env_pre.cmd):
SET JAVA_HOME=c:\Java\jdk1.8.0_66\
Beispiel Linux (user_env_pre.sh):
export JAVA_HOME=/usr/java/jdk1.8.0_66
Seite 26 von 384
3.1.2.1
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Java-Version mittels symbolischen Link einrichten
Es ist auch möglich ein symbolischen Link einzurichten, damit kann im jeweiligen KomA ein Verzeichnis
„jre“ oder „jdk“ angelegt werden. Dieses Verzeichnis verlinkt dann auf einen anderen Ordner. Der
Vorteil ist das man den symbolischen Link im Verzeichnis sieht und keine Konfigurationsdateien
anpassen muss.
Unter Linux kann dies mit dem Befehl ln –s gemacht werden. Dazu wechselt man in den gewünschten
KomA (KOMMUNIKATION_BASE) und definiert den Link auf den Lib-Ordner, in unseren Fall liegt das
zentrale Lib-Verzeichnis unter home/ecount/koma_basis/lib:
Beispiel: ln -s /home/ecount/koma_basis/lib lib
Unter Windows können seit Windows Vista symbolische Links mittels mklink eingerichtet werden.
Beispiel: mklink /d lib C:\ecount\koma_basis\lib
3.1.3
Anpassung des Arbeitsspeichers (RAM)
Siehe Kapitel 3.3.4 und 4.2.1.
3.2
3.2.1
Update-Installation
Update einzelner Module
Einzelne Updatepakete werden als upd-Dateien ausgeliefert.
Die upd-Datei ist im Grunde nur eine ZIP-Datei. Beim Download einer upd-Datei wird von einigen
Browsern automatisch die Dateiendung ZIP ergänzt. Vom Update-Modul werden aber nur updDateien erkannt, deswegen muss die Dateiendung ggf. manuell korrigiert werden.
Die upd-Datei wird in den Ordner _updates kopiert (der Ordner befindet sich direkt im KomAVerzeichnis), anschließend muss install_updates.(cmd|sh|exe) ausgeführt werden.
3.2.2
Komplettupdate
Soll eine bestehende KomA-Instanz aktualisiert werden können die Startskripte und der lib-Ordner auch
manuell ausgetauscht werden. Die benötigten Dateien sind auf der Download-Seite erhältlich.
3.3
Konfiguration
Die Konfiguration der einzelnen Komponenten erfolgt im Wesentlichen über eine Konfigurationsdatei,
deren Name und Speicherort standardmäßig <BASE>/config/Config.properties lautet.
Die Parameternamen sind baumstrukturiert in Punkt-Notation abgelegt. Zum Beispiel sind alle, nur den
Import betreffenden, Einstellungen unter dem „Zweig“ import abgelegt. Weiterhin können ganze
Unterbäume in externe Dateien ausgelagert werden, deren Dateiname sich aus dem Namen des Baums
und der Endung .properties zusammensetzt. So können alle Konfigurationseinträge, die mit import.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 27 von 384
beginnen, in einer Datei namens import.properties im gleichen Verzeichnis wie Config.properties
abgelegt werden, in der die Schlüssel dann ohne den Teil import. notiert werden. (Beispiel: statt
import.debug=Y in der Config.properties kann in Datei import.properties debug=Y geschrieben
werden.)
Hinweise:
Werden Export-Parameter über die ecount-Datenbank, beispielsweise über ein Versand-ABO,
konfiguriert, haben diese immer Vorrang vor den Einstellungen in den Properties-Dateien!
Parameter werden in den Konfigurationsdateien (Properties-Dateien) mit Parametername =
Parameterwert angegeben, wobei einzeilige Kommentare mit Hilfe des Zeichens # am
Zeilenanfang möglich sind. Bei der Angabe der Parameter-Namen ist Groß-/Kleinschreibung
irrelevant.
Parameter für Import- beziehungsweise Exportfilter werden in den jeweiligen Format-Dateien unter
config/import/<Format>.properties beziehungsweise
config/export/<Format>.properties abgelegt. Historisch bedingt können Parameter für
Importfilter auch in der Config.properties hinterlegt sein. Diese Schlüssel beginnen mit
ImportConvert.<Format>, wobei <Format> der Platzhalter für das zu konfigurierende Format ist. Es wird
jedoch für jedes Format eine eigene Properties-Datei zu erstellen!
Parametertypen: In den Parameter-Tabellen wird die Spalte TYP aufgeführt die den möglichen Wert des
Parameters näher beschreibt.
-
3.3.1
Bool: Der Parameter kann ein oder ausgeschaltet werden (true/false). Parameter von ecount
werden immer über Y (oder y, j, J) ein- bzw. über N (oder n) ausgeschaltet.
Int:
Der anzugebende Wert ist eine Ganzzahl
Int+: Der anzugebende Wert ist eine positive Ganzzahl
String: Der anzugebende Wert ist eine Zeichenkette
Dir:
Der anzugebende Wert muss ein Dateiverzeichnis beinhalten (relativ zur aktuellen KomA
oder absolut)
Allgemeine Konfigurationsparameter
Tabelle 3-1: Allgemeine Konfigurationsparameter
Parameter/Beschreibung
Standardwert
Typ
Y
Bool
8785
Int+
0
Int(0..10)
common.backup
Y/N: Sicherheitskopien bestehender Dateien anlegen statt
Überschreiben. Die Backup-Dateien haben die Namenskonvention
*.~nn.*. Es werden also max. 100 Backup-Dateien erzeugt.
common.base_port
TCP-Port zur Sperrbehandlung als Basis für all Jobs
common.debug
Debug-Informationen anzeigen (0: alle aus; 10: alle an)
Seite 28 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
common.debugtime
Y/N. Mit Y wird ein Zeitstempel im Protokoll mitgeschrieben.
Standardwert
Typ
Y
Bool
common.debugtime.format
Standard: dd.MM.yyyy HH:mm:ss.SSS; Bei Ausgabe des Datums in den dd.MM.yyyy
HH:mm:ss.SSS
LOG Dateien kann mit dieser Einstellung die Formatmaske definiert
werden. (siehe Datumsformatierung)
String
common.ignore_xml_lov
Y/N: Wertelisten-Prüfung bei XML-Attributen ausschalten
(erforderlich, wenn unerwartete Werte durch Importe auftreten Fehlermeldungen der Art '... not in list of possible values' treten bei
Importen auf)
common.maint_windows_from_db
Y/N. Wartungsfenster aus Datenbank abfragen
N
Bool
N
Bool
N
Bool
resources
Dir
common.printMessageIds
Y/N: Ausgabe der Meldungs-ID bei mehrsprachigen Meldungen, um
bei unverständlichen Meldungstexten Rückschlüsse auf die
ursprüngliche Meldung ziehen zu können
common.resourceDir
Verzeichnis für Sprachdateien.
Die Angabe erfolgt relativ zum Basisverzeichnis. Liegen die Dateien
also unter <KOMA>/resources/de lautet die Einstellung:
common.resourceDir = resources/de
common.smtp_server
String
Adresse des SMTP Servers für den E-Mail-Versand und ImportKommunikation
common.stop_all
Import-/Export-Aktivitäten aussetzen-> sofort Java-Prozesse wieder
abbrechen
N
Bool
database.connect
String
Datenbank-Connect-String; bei conntype =OCI -> Oracle TNS-Name,
sonst <Rechner>:<Port>:<SID>
database.conntype
Datenbank-Verbindungstyp, OCI und THIN werden unterstützt.
Wer OCI nutzt muss den aktuellen OCI-Driver "Version 12.1.0.2.0"
nutzen bzw. wenn nicht vorhanden installieren! Oracle Instant Client
THIN
String
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Seite 29 von 384
Standardwert
database.passwd
Typ
String
Datenbank-Passwort
database.timings
Zeitmessungen für Datenbank-Kommunikation ausgeben (für Debug
der Performance sinnvoll)
database.timings.printSQL
Bei Zeitmessungen auch SQL-Statements mit ausgeben
N
Bool
N
Bool
database.user
Datenbank-Benutzername für Datenbank-Operationen,
typischerweise EC_XCH
3.3.1.1
String
Einrichtung der Java-Umgebung
Die KomA setzt (seit lfd. Nr. R 5.1 - 2542) eine Java-Runtime-Umgebung mindestens in der Version 8
Update 20 voraus. Da aktuell keine Probleme mit höheren Update-Versionen bekannt sind, kann die von
Oracle empfohlene Java-Version (Stand 17.12.2015 8u66) problemlos verwendet werden.
Die Downloads können von Oracle-Java bezogen werden. Dabei existieren jeweils 2 Versionen, einmal
eine reine Laufzeit-Umgebung (JRE – Java Runtime Environment), zum anderen eine JavaEntwicklungsumgebung mit zusätzlichem Compiler und weiteren Entwicklungswerkzeugen (JDK – Java
Development Kit). Die Runtime kann entweder direkt im Basisverzeichnis unter jre (bzw. jdk wenn es
sich um das komplette Java Development Kit handelt) abgelegt werden. In diesem Fall muss nichts
zusätzlich eingerichtet werden, es ist sogar ausreichend, ein Installationsverzeichnis von einem anderen
Rechner einfach zu kopieren. In den mitgelieferten Skripten wird die Runtime dann automatisch
gefunden und verwendet.
Bei der automatischen Suche nach einer Java-Version wird erst nach jdk* und anschließend nach
jre* gesucht. Eine Java Development Kit-Version hat also vor der reinen Runtime Vorrang. Des
Weiteren kann durch die Nutzung des * der Ordner auch jre8 heißen.
Die Runtime kann auch von einer beliebigen anderen Stelle im Dateisystem verwendet werden. Es sollte
dann aber über die JAVA_HOME-Systemvariable der Ort bekannt gemacht werden, um sicher zu gehen,
dass nicht eine falsche Java-Version verwendet wird, die sich zufällig auch im Suchpfad für Programme
befindet. JAVA_HOME kann global im System definiert oder aber einfach in dem Konfigurationsskript
<BASE>/config/user_env_pre.(cmd|sh) gesetzt werden (um Seiteneffekte bei anderer installierter
Software zu vermeiden).
Beispiel user_env_pre.cmd:
SET JAVA_HOME=c:\Java\64\jdk1.8.0_51\
Seite 30 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Beispiel user_env_pre.sh:
export JAVA_HOME=/usr/java/jdk1.8.0_66
Hinweise:
Wenn eine Java-Version direkt im KomA-Verzeichnis hinterlegt ist (jre oder jdk-Ordner) und
zusätzlich eine andere Java-Version per user_env_pre.(cmd|sh) definiert wurde, so wird die JavaVersion aus dem KomA-Verzeichnis geladen, da in der env.cmd die Java-Version aus dem KomAOrdner Vorrang hat.
Die Java-Version muss nicht über den Java-Installer installiert werden. Es ist ausreichend, eine
bestehende Java-Installation (also den gesamten Installationsordner, z. B. jre8) einfach zu kopieren.
Wird der Java-Ordner in den KomA-Ordner kopiert, sollte dieser dennoch in jre oder jdk umbenannt
werden.
3.3.1.2
Besonderheiten bei Windows-Rechnern
Hinweise:
Auf einem Windows-Rechner ist es empfehlenswert, den Standard-Installations-Ordner für die JavaVersionen anzupassen, damit der Pfad keine Leerzeichen enthält (z. B. c:\Java\64 oder c:\Java\32).
Sollte der Java-Installationspfad Leerzeichen enthalten, sollte der Kurzname des Pfades verwendet
werden (z. B. C:\Progra~1\Java\jre6)
Windows 64-bit Systemen:
Progra~1 = 'Program Files'
Progra~2 = 'Program Files(x86)'
Bei Windows-Systemen und nicht korrekter Path-Angabe (z. B. veraltete Java-Version an vorderster
Stelle) muss zusätzlich die PATH-Angabe geändert werden. Das kann in der user_env_pre.(cmd|sh) wie
folgt realisiert werden.
set JAVA_HOME=C:\Progra~2\Java\jre6
set PATH=%JAVA_HOME%\bin;%PATH%
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 31 von 384
Alternativ kann die Path-Angabe im Windows angepasst werden.
Abbildung 3-2: Anpassen der Path-Angabe
Zusätzlich muss geprüft werden, ob die Path-Angabe keine Pfade zu alten Java-Versionen vor dem
Eintrag %JAVA_HOME%\bin enthält!
3.3.1.3
Setzen der Java-Version unter Linux
Befindet sich im KomA-Verzeichnis ein jre oder ein jdk-Verzeichnis, so wird diese Java-Version beim Start
verwendet. Ansonsten kann die Java-Version auch beispielsweise über die user_env_pre.sh wie folgt
gesetzt werden: export JAVA_HOME=/usr/java/jdk1.8.0_51
3.3.1.4
Zeitzonen-Informationen der Java-Runtime
Zeitzonen-Informationen sind direkt in der Java-Version abgebildet, ausführliche Informationen bietet
die Oracle-Seite Timezone Data Versions in the JRE Software.
Werden ältere Java-Versionen verwendet und ist eine aktualisierte Zeitzoneninformation notwendig, z.
B. weil in Russland am 2014-10-26 plötzlich wieder 1 Stunde subtrahiert wird und die KomA in der
Zeitzone Europe/Moscow arbeitet, so muss eine manuelle Aktualisierung dieser Informationen
vorgenommen werden.
Das Tool und die Anleitung findet der Anwender unter Timezone Updater Tool. Die heruntergeladene
Datei tzupdater.jar speichern Sie am besten direkt in das Java-Verzeichnis neben die Datei java.exe (binOrdner der Java-Version) und führen anschließend Folgendes aus:
java -jar tzupdater.jar -u –f
Seite 32 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Alternativ kann auch eine bat/sh-Datei erstellt und ausgeführt werden (Der Vorteil ist in diesem Fall,
dass das Fenster durch den pause-Befehl sichtbar bleibt und eventuelle Fehler sichtbar werden):
java -jar tzupdater.jar -u –f
pause
Ob die Zeitzoneninformationen aktualisiert wurden prüfen Sie wie folgt:
Für Java 8 und spätere Versionen:
-
Prüfen Sie die Datei tzdb.dat im Pfad JAVAHOME/jre/lib. Dies ist die neue Datei.
Prüfen Sie die Datei tzdb.dat.<oldtzdataversion> im gleichen Pfad JAVAHOME/jre/lib. Dies ist die
ersetzte Datei.
Beispiel:
In Abbildung 3-3 ist ersichtlich das Java 8u20 mit der Version tzdata2014c ausgeliefert wurde und
durch das manuelle Update die Version tzdata2014g heruntergeladen und nun aktiv ist.
Abbildung 3-3: Aktualisierung der Zeitzoneninformation
In der Vergangenheit wurden Daten (Werte und Zeitstempel) von der KomA an die Import-API
immer in deutscher Winterzeit übergeben. Mit eCount- 00047114 wurde dies geändert. Grund der
Änderung war ein Problem bei der deutschen Zeitumstellung, die es in anderen Ländern (z. B.
Russland) nicht mehr gibt. Dadurch wurde am Umschalttag ggf. 1 Wert weniger importiert (bei
Stundenwerten und der Umschaltung 2 Uhr auf 3 Uhr). Dadurch kam es zur Datenverfälschung.
Die Verwendung einer Zeitzone kann je Import- und Export-Filter jedoch unterschiedlich sein. Es
existieren Filter, die hart die deutsche Zeit (Zeitzone Europe/Berlin) verwenden (z. B. EDIFACTFilter). Andere Filter extrahieren die Zeitzone aus den Import-Dateien oder werden per PropertiesDateien konfiguriert.
3.3.1.5
Allgemeine Speicherplatzoptimierungen
Beim Import wird jede heruntergeladene E-Mail lokal gespeichert (das Verzeichnis ergibt sich aus der
Einstellung importcom.mail_dir), wird dieses Verhalten nicht benötigt kann dies über die Einstellung
importcom.save_mail=N deaktiviert werden.
Beim Export wird eine KomA-XML-Datei vom Exportauftrag (Verzeichnis ergibt sich aus export.xml_dir)
geschrieben, dies kann mittels export.write_xml=N deaktiviert werden.
Zusätzlich wird beim Export noch die erzeugte Datei (die letztendlich versendet wird) abgelegt, dieses
Datei kann gelöscht werden indem export.deleteformatfile = Y gesetzt wird.
Werden E-Mail-Dateien versendet wird die E-Mail, die von der KomA an den Mailserver übergeben wird,
auch gespeichert. Dieses Verhalten kann mit der Einstellung export.MEX.writemailfile=N
deaktiviert werden.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 33 von 384
Bei Problemen bzw. fehlerhaften Export-Aufträgen müssen dieses Feature, sollten diese deaktiviert
worden sein, wieder aktiviert werden. Anschließend muss der entsprechende Export-Auftrag wiederholt
werden. Insbesondere die XML-Datei (die mittels export.write_xml=Y erzeugt wird) ist von größter
Wichtigkeit, da mit dieser XML-Datei die Probleme von der Entwicklungsabteilung nachvollzogen
werden können.
3.3.1.6
Spracheinstellung KomA-Module
Über die Einstellung common.resourceDir kann ein Verzeichnis für Sprachdateien definiert werden
über das verschiedene KomA-Module ihre Texte beziehen. Damit können verschiedenste Filter
internationalisiert werden. Per Default sind alle Spracheinstellungen für Deutsch ausgelegt. Das Default
Verzeichnis heißt „config/resources/de“.
Die Spracheinstellung von Datenbank-Fehlermeldungen und weiterer Drittmodulen ist in 3.3.2.1.2
beschrieben.
3.3.2
Einrichtung der Java-Optionen
Für alle KomA-Prozesse identische Einstellungen, wie Sprachinformationen oder Zeichenkodierung,
werden mit Hilfe der Datei env.(cmd|sh) gesetzt. Dieses Kapitel beschreibt die hier vorhandenen
Konfigurationsmöglichkeiten.
Diese Einstellungen müssen bei internationalen Kunden vorgenommen werden, da die Startskripte
per Default die Sprache auf Deutsch und die Zeit auf Europe/Berlin setzen!
3.3.2.1
Initialisierungsskript env.(cmd|sh)
Diese Datei wird ausgeliefert und darf nicht modifiziert werden! Nutzeränderungen sind immer über die
Datei user_env zu realisieren. Jedes Startskript für die einzelnen KomA-Prozesse ist so konfiguriert, dass
eine vorhandene env-Datei immer geladen wird.
Die relevanten Einstellungen aus der env-Datei sind folgende:
SET CONFIG_ENCODING=Cp1252
SET USER_REGION=DE
SET USER_LANGUAGE=de
SET USER_TIMEZONE=Europe/Berlin
:: Benutzerdefinierte Variablen-Definitionen laden: ::::::::::
if exist "%~dp0user_env.cmd" call "%~dp0user_env.cmd"
Seite 34 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
SET JAVA_OPTIONS=%JAVA_OPTIONS% -Duser.timezone=%USER_TIMEZONE% Duser.region=%USER_REGION% -Duser.language=%USER_LANGUAGE% Dfile.encoding=%CONFIG_ENCODING%
CONFIG_ENCODING, USER_REGION, USER_LANGUAGE und USER_TIMEZONE sind hierbei die
möglichen Parameter für nutzerspezifische Änderungen. Die hier hinterlegten Standardwerte sind für
den Betrieb in Deutschland vorgesehen.
3.3.2.1.1
CONFIG_ENCODING
Über diese Einstellung wird der Default-Zeichensatz festgelegt mit denen Dateien (z.B. PropertiesDateien) gelesen werden.
Default: Cp1252
Hintergrund:
Die interne Repräsentierung von Zeichenketten erfolgt bei Java immer im UNICODE Zeichensatz.
Werden Textdateien gelesen / geschrieben, nimmt Java an, das diese im Standard-Zeichensatz des
Rechners codiert sind, auf dem das Java-Programm ausgeführt wird. Wird eine Textdatei gelesen,
übersetzt Java vom Default-Zeichensatz des Rechners nach UNICODE. Wird eine Textdatei
geschrieben, übersetzt Java von UNICODE in den Default-Zeichensatz des Rechners.
3.3.2.1.2
USER_LANGUAGE / USER_REGION
Einstellungen für die Sprache, sind unteranderem bei folgenden Punkten relevant:
-
Fehlermeldungen bei Drittbibliotheken und Datenbankfehlern (z.B. Oracle-JDBC-Driver)
Abfrage von Datums-Werten (z.B. Monatsname) bei Reports (Abfrage via SQL über den OracleJDBC-Driver)
Der Default ist Deutschland (SET USER_REGION=DE, SET USER_LANGUAGE=de)
Mögliche Werte (Ausschnitt):
Land
Code
Belgien
SET USER_REGION=BE
SET USER_LANGUAGE=nl
Bulgarien
SET USER_REGION=BG
SET USER_LANGUAGE=bg
China
SET USER_REGION=CN
SET USER_LANGUAGE=zh
Dänemark
SET USER_REGION=DK
SET USER_LANGUAGE=da
Deutschland
SET USER_REGION=DE
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Land
Seite 35 von 384
Code
SET USER_LANGUAGE=de
Finnland
SET USER_REGION=FI
SET USER_LANGUAGE=fi
Frankreich
SET USER_REGION=FR
SET USER_LANGUAGE=fr
Griechenland
SET USER_REGION=GR
SET USER_LANGUAGE=de
Italien
SET USER_REGION=IT
SET USER_LANGUAGE=it
Kanada
SET USER_REGION=CA
SET USER_LANGUAGE=en
Kroatien
SET USER_REGION=HR
SET USER_LANGUAGE=hr
Niederlande
SET USER_REGION=NL
SET USER_LANGUAGE=nl
Norwegen
SET USER_REGION=NO
SET USER_LANGUAGE=no
Polen
SET USER_REGION=PL
SET USER_LANGUAGE=pl
Russland
SET USER_REGION=RU
SET USER_LANGUAGE=ru
Schweiz
SET USER_REGION=CH
SET USER_LANGUAGE=it
Spanien
SET USER_REGION=ES
SET USER_LANGUAGE=es
Tschechische Republik
SET USER_REGION=CZ
SET USER_LANGUAGE=cs
Türkei
SET USER_REGION=TR
SET USER_LANGUAGE=tr
Vereinigte Staaten von Amerika
SET USER_REGION=US
SET USER_LANGUAGE=en
Vereinigtes Königreich
SET USER_REGION=GB
Seite 36 von 384
Land
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Code
SET USER_LANGUAGE=en
SET USER_REGION=AT
SET USER_LANGUAGE=de
Österreich
3.3.2.1.3
USER_TIMEZONE
Die Zeitzone, mit der die KomA läuft, ist für einige Import- und Exportfilter relevant die als Zeitzone die
Default-Zeitzone der KomA verwenden (also keine eigene Konfigurationsmöglichkeiten bieten bzw. nicht
auf Europe/Berlin festgelegt sind).
Default: Europe/Berlin
Wichtiger Hinweis für internationale Kunden:
In einigen Ländern ändert sich häufiger relevante Bedinungen für die Zeitzone. So wurde
beispielsweise in Russland zum 26. Oktober 2014 zur Normalzeit zurückgekehrt, desweiteren
wurden zwei neue Zeitzonen eingeführt. In der Türkei wurde 2015 die Umschaltstunde (Sommer zu
Winter) vom 28.10 auf den 8.11 verschoben. Diese Änderungen werden regelmäßig in Java
eingepflegt und in den neusten Versionen veröffentlicht. Sollen Daten in dieser Zeitzone importiert
werden ist es wichtig, dass die Java-Version auf die KomA und die Datenbank mit den gleichen
Zeitzoneninformationen arbeiten! Auf die KomA muss dafür meist nur die aktuellste Java-Version
verwendet werden, welche Zeitzoneninformation in welcher Java-Version enthalten ist kann über
folgenden Link herausgefunden werden Timezone Data Versions in Java (siehe auch 3.3.1.4). In
Kapitel 6.1 ist erklärt welchen Einfluss die Zeitzone beispielsweise beim Import von Lastgangdaten
hat.
3.3.2.1.4
Auswertung der .profile unter Linux
Die Datei .profile ist eine Skript-Datei die beim Login aufgerufen wird, vergleichbar mit der
AUTOEXEC.BAT unter Windows. Hier können Befehle und Variablendefinitionen vorgenommen
werden.
Seit 2016 wird in der env.sh-Datei nicht mehr die Datei .profile ausgelesen, in den alten env.shDateien war/ist der Aufruf ganz am Anfang der Datei vorhanden:
[ -z "$DOTPROFILEREAD" -a -r "$HOME/.profile" ] && . "$HOME/.profile"
Alle relevanten Einstellungen für die KomA müssen immer über die user_env.sh bzw. user_env_pre.sh
konfiguriert werden.
Hintergrund: In der .profile-Datei wurden teilweise Befehle ausgeführt, sodass die KomA-Jobs nicht
mehr starteten. Diese Problemidentifizierung ist/war sehr mühsam und zeitintensiv, daher wurde
entschieden die Auswertung der .profile-Datei zu unterbinden.
3.3.2.2
Benutzerspezifisches Initialisierungsskript user_env.(cmd|sh)
Hier können unter anderem alle Parameter modifiziert werden, die in 3.3.2.1 beschrieben wurden.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 37 von 384
Die user_env.(cmd|sh) für einen russischen KomA könnte beispielsweise so aussehen:
SET CONFIG_ENCODING=UTF8
SET USER_REGION=RU
SET USER_LANGUAGE=ru
SET USER_TIMEZONE=Europe/Moscow
Zusätzlich können hier auch Proxy-Informationen hinterlegt werden, z. B.
SET JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyHost=proxy.robotron.de
SET JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyPort=80
3.3.3
Einrichtung der Sperr-Ports
Eine wichtige Rolle spielen seit einiger Zeit die TCP/IP-Ports, die für die verschiedenen Jobs zur
Behandlung von Sperren verwendet werden. Da die Jobs i.d.R. automatisch in regelmäßigen Abständen
von einem Scheduler gestartet werden, kann es unter Umständen vorkommen, dass versucht wird,
einen Job neu zu starten, während ein vorheriger Durchlauf noch aktiv ist. Da es in einem solchen Fall zu
einem Konflikt kommt, muss das erneute Starten desselben Jobs verhindert werden. Eine Möglichkeit
dazu besteht in der Verwendung von Sperr-Dateien, deren Vorhandensein die Aktivität eines Jobs
signalisieren. Dies ist allerdings allein zu unsicher, da es vorkommen kann, dass durch Absturz des
Rechners oder nur des Java-Prozesses (z. B. durch forciertes Beenden des Betriebssystem-Prozesses) die
Sperr-Datei bestehen bleibt. Da der zugehörige Job nicht mehr aktiv ist, hat das zur Folge, dass ein
erneuter Start verhindert wird, bis die Sperrdatei manuell gelöscht ist. Um dies zu verhindern, gibt es
zusätzlich eine Kontrolle, ob der Job wirklich noch aktiv ist. Dies erfolgt über Prozess-Kommunikation mit
Hilfe eines Ports, dessen Nummer in der Sperrdatei mit abgelegt ist. Es entsteht der zusätzliche Nutzen,
dass über diesen Mechanismus auch ein kontrolliertes Beenden eines Jobs möglich ist, indem über
diesen Port ein Stopp-Signal gesendet wird, woraufhin sich der Prozess zum nächst möglichen Zeitpunkt
selbst beendet. Dies ist auch von einem anderen Rechner über Netzwerk möglich. Deshalb ist in der
Sperrdatei zusätzlich die IP-Adresse des Rechners abgelegt, auf dem der Job läuft.
Da jeder Port nur einmal verwendet werden kann, müssen die Ports der Jobs alle verschieden sein.
Diese können in begrenztem Maße willkürlich gewählt werden. Es sind allerdings verschiedene Ports
bereits von anderen Prozessen belegt. Grundsätzlich sollten die System Ports (Ports 0 - 1023) nicht
benutzt werden. Eine Liste der belegten Ports lässt sich mit dem Kommando netstat ermitteln. Es
sollte möglichst ein Port aus dem Bereich Dynamic Ports (Ports 49152 - 65535) verwendet werden, da
diese zur freien Verfügung gedacht sind. Werden jedoch mehrere Kommunikationsumgebungen (z. B.
für verschiedene Datenbanken, Test, Produktiv) auf demselben Rechner parallel betrieben, so müssen
alle Ports in allen Umgebungen verschieden sein, damit sich die Jobs nicht gegenseitig behindern. In
diesem Fall müssen diese Ports angepasst werden. Dies geschieht über den Parameter
common.base_port, der als Basis für die Standardwerte aller anderen Ports dient, oder die
Parameter archive.port, import.port, importcom.port und export.port für jeden Job
einzeln.
Seite 38 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Es ist ausreichend den common.base_port zu definieren, da die anderen Ports von diesen abgeleitet
werden. Eine KomA-Instanz nutzt hierbei den Port unter common.base_port zuzüglich der nächsten
3 folgenden.
3.3.4
Einstellung bezüglich des Speicherbedarfes der jeweiligen Prozesse
Die KomA besteht aus mehreren Prozessen (Comimport, Datenimport, Datenversand, Archivierung, …)
die jeweils über eigene Startskripte (comimport.cmd|sh, datenimport.cmd|sh, datenversand.cmd|sh)
gestartet werden. Alle zentralen Startskripte setzen den für den Prozess maximalen Speicher über
folgende Einstellung: SET JAVA_OPTIONS=-Xmx512m %JAVA_OPTIONS%.
In diesem Fall steht den Datenimportprozess also max. 512 MB Arbeitsspeicher zur Verfügung (da Java
intern selbst noch Einiges an Arbeitsspeicher benötigt, steht dem KomA-Prozess jedoch immer weniger
Arbeitsspeicher zur Verfügung).
Werden große Datenmengen importiert und stehen ausreichend Hardwareressourcen zur Verfügung,
kann dieser Wert erhöht werden, z. B. (2014 MB: -Xmx2048m, 6 GB: -Xmx6g).
Siehe auch Kapitel 4.2.1.
In der Auslieferung sind für den Datenimport und Datenversand sind aktuell 2 GB Speicher
vorgesehen!
3.3.5
Parallelbetrieb KomA
Das KomA-Design ist Single-Threading, eine Parallelverarbeitung ist nur durch die Nutzung mehrerer
KomA-Instanzen möglich. In diesem Abschnitt erhält der Anwender Information über den Betrieb einer
Datenbank mit mehreren KomA-Instanzen.
Hinweis - Performance:
Eine Bereinigung der EXPORT_AUFTRAEGE-Tabelle ist mit eCount-00038854 realisiert worden. Bei
großen Datenbeständen (mehr als 1 Mio. Datensätze) in der Tabelle EXPORT_AUFTRAEGE führt eine
Anpassung des Selects über die SQL_Select_Next_EAU.sql ggf. zu einem Performanceproblem
(Stichwort Full table scan). Daher sollten Sie die Möglichkeiten (eCount-00038854) zur Reduzierung
der Daten in der Tabelle nutzen.
Globaler-Parameter: Exportaufträge löschen nach Tagen (Gruppe Datenversand)
Bei der Nutzung einer spezifischen Abfrage über SQL_Select_Next_EAU.sql sollte geprüft werden, ob
Indexe auf den Spalten vorhanden sind. Ist dies nicht der Fall, sollten diese angelegt werden. Wird
beispielsweise über EXPORT_ECOUNT.FORMAT eine Abfrage aufgebaut, sollte auch die Spalte
FORMAT der Tabelle EXPORT_ECOUNT mit einem Index versehen sein (da kundenspezifische
Abfragen nicht zum Produktstandard gehören, können keine allgemeinen Indexe von Robotron
ausgeliefert werden).
3.3.5.1
Import
In der Maske Importkommunikaton (im ecount über den Menüpunkt Import >
Kommunikationsautomatisierung zu öffnen) kann für ein angelegtes Konto im Feld Server eine ID
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 39 von 384
eingetragen werden. Über diese ID erfolgt die Zuordnung zu einem KomA-Server. Im Beispiel wurde ID 1
vergeben:
Abbildung 3-4: Maske Importkommunikation
In der Config.properties-Datei des KomA-Servers gibt es die Einstellung importcom.comserver. Mit dieser
kann die KomA-Server auf das Importkonto verknüpft werden. Dazu wird die gleiche ID (hier 1) in der
Einstellung verwendet. Sollte es die Einstellung importcom.comserver nicht geben, muss diese neu
angelegt werden:
## Nummer des ImportCommunication Servers
Importcom.comserver = 1
3.3.5.2
Export
Beim Export kann für jeden KomA-Server über die Datei SQL_Select_Next_EAU.sql
(config/SQL_Select_Next_EAU.sql) eine Abfrage hinterlegt werden, mit der die zu bearbeitenden ExportAufträge einzuschränken sind.
Beim Export wird über SELECT/UPDATE eine Sperre mittels DBMS_LOCK angefordert, sodass es
nicht zu Konflikten bei konkurrierenden KomA-Servern kommen sollte.
Seite 40 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 3-5: Abfrage SQL_Select_Next_EAU.sql
Der Status der abzuarbeitenden Export-Aufträge ist immer B (Bereit) und sollte nicht verändert werden.
Für Testzwecke könnte jedoch ein anderer Status (außer F = Fehler oder V = verarbeitet oder J =
Verarbeitung in JAVA) verwendet und per Einstellung export.eau_status = X in der
Config.properties-Datei mitgegeben werden.
3.3.5.3
Ohne SQL_Select_Next_EAU.sql
Ist keine SQL_Select_Next_EAU.sql hinterlegt, so lautet die Abfrage nach dem nächsten Export-Auftrag:
SELECT ID FROM EXPORT_AUFTRAEGE WHERE STATUS = 'B' AND ROWNUM = 1
Damit wird die Verarbeitung eines in „bereit“ stehenden Exportauftrags gestartet.
Da kein ORDER BY (Sortierung) enthalten ist, kann keine Vorhersage über den selektierten
Exportauftrag getroffen werden. Sollen Sortierungen wie LIFO (last in first out) oder FIFO (first in first
out) berücksichtigt werden, muss dies über die SQL_Select_Next_EAU.sql realisiert werden.
3.3.5.4
Mit SQL_Select_Next_EAU.sql
Ein FOR UPDATE NOWAIT darf nicht verwendet werden, da das LOCK über pkg_lock.fnc_lock
realisiert wird. Dabei wird die gesamte Export-Tabelle gesperrt.
Beispiel:
Der KomA-Server soll alle FORMATE, außer „EBIX“, „REPORT“ und „INFO“, exportieren.
Die Abfrage auf STATUS = ‚B‘ muss immer enthalten sein!
Wird ein Exportauftrag vom KomA-Server gefunden, wird der Status auf J (Abarbeitung findet in JAVA
statt) gesetzt.
SELECT id
FROM (SELECT eau.id
from export_auftraege eau, export_ecount ee
WHERE eau.ee_id = ee.id
AND eau.status = 'B'
AND ee.format NOT IN ('EBIX', 'REPORT', 'INFO')
)
WHERE rownum = 1
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 41 von 384
Beispiel:
LAST IN FIRST OUT (LIFO)
SELECT ID FROM
(SELECT * FROM EXPORT_AUFTRAEGE WHERE STATUS = 'B' ORDER BY EE_ID
DESC)
WHERE ROWNUM = 1
Beispiel:
FIRST IN FIRST OUT (FIFO)
SELECT ID FROM
(SELECT * FROM EXPORT_AUFTRAEGE WHERE STATUS = 'B' ORDER BY EE_ID
ASC) WHERE ROWNUM = 1
3.3.5.5
Beispiel eigener KomA-Server für Excel-Reports
Der Export von Excel-Reports (EXPORT_ECOUNT.FORMAT = XLS_REP) ist sehr speicherintensiv, somit
bietet es sich an den Export der über eine eigeneKomAzu realisieren. Diese KomA sollte auf einer
Hardware mit genügend Arbeitsspeicher laufen. Empfohlen werden mindestens 8 GB, 16 oder 20 GB
sind aktuell als ideal zu bezeichnen! Die Einstellung der KomA-Prozesse bezüglich des zur Verfügung
stehenden Arbeitsspeichers ist in Kapitel 3.3.4.
Nehmen wir an das 16 GB Arbeitsspeicher zur Verfügung stehen, so sieht die Einstellung in der
datenversand.(cmd|sh) wie folgt aus: SET JAVA_OPTIONS=-Xmx16g
Damit die KomA nur Excel-Reports verarbeitet muss die SQL_Select_Next_EAU.sql angepasst werden,
das zu hinterlegende SQL-Statement kann wie folgt aussehen:
SELECT id FROM
(SELECT eau.id from export_auftraege eau, export_ecount ee
WHERE eau.ee_id = ee.id
AND eau.status = 'B'
AND ee.format = 'XLS_REP'
and rownum = 1)
Mit diesem SQL wird einfach nach einen Excel-Export-Auftrag gesucht der im Status bereit steht, eine
Sortierung (z.B. nach FIFI-Prinzip) wird hier nicht beachtet.
Alle anderen Export-Aufträge müssen nun über eine andere KomA bearbeitet werden. Diese KomA kann
bezüglich des Datenversandes mit weniger Arbeitsspeicher ausgestattet sein. Damit jedoch kein ExcelExport-Auftrag bearbeitet wird muss dieses Format in der SQL_Select_Next_EAU.sql ausgeschlossen
werden. Das zu hinterlegende Statement kann wie folgt aussehen:
SELECT id FROM
(SELECT eau.id from export_auftraege eau, export_ecount ee
WHERE eau.ee_id = ee.id
AND eau.status = 'B'
Seite 42 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
AND ee.format != 'XLS_REP'
and rownum = 1)
3.3.6
Einrichtung Automatisches Starten und Stoppen
Im Produktivbetrieb ist das automatische Starten und Stoppen der Prozesse (Comimport, Datenimport
und Datenversand, Archivierung und LPL-Spool) erforderlich.
Hierbei ist zu beachten das der Comimport-Prozess der einzige Prozess ist der nach der Abarbeitung
nicht beendet wird, also in einer Endlosschleife läuft. Daher müssen für den Comimport zwei Tasks
angelegt werden (1x der startet und 1x der stoppt). Es wird empfohlen den Comimport 1x täglich zu
stoppen!
Der Datenimport und der Datenversand müssen periodisch gestartet werden, es wird empfohlen diese
Prozesse in 5 oder 10 Minuten-Rhythmus zu starten.
Die Archivierung und die Bereinigung der Linearen Protokolle sollte 1x wöchentlich durchgeführt
werden. Sinnvoll ist es dies zu relativ ruhigen Zeiten, z.B. Samstag oder Sonntag in der Nacht,
durchzuführen.
3.3.6.1
Beispiel Linux (crontab)
Der Comimport wird Montag bis Samstag um 0:15 Uhr gestartet und gegen 23:45 Uhr beende
15 0 * * 1-6 ~/koma/Kommunikation_ecr5e11/comimport.sh &
45 23 * * 1-6 ~/koma/Kommunikation_ecr5e11/comimport_stop.sh
Der Datenversand und der Datenimport werden Montag bis Samstag zwischen 2 und 23 Uhr aller 10
Minuten gestartet.
*/10 2-23 * * 1-6 ~/koma/Kommunikation_ecr5e11/datenversand.sh
*/10 2-23 * * 1-6 ~/koma/Kommunikation_ecr5e11/datenimport.sh
Die Archivierung läuft 1x wöchentlich am Samstag gegen 22 Uhr:
0 22 * * 6 ~/koma/Kommunikation_ecr5e11/lplspool.sh
Die Bereinigung der Linearen Protokolle erfolgt 1x wöchentlich am Sonntag 4 Uhr:
0 4 * * 7 ~/koma/Kommunikation_ecr5e11/archivierung.sh
3.3.6.2
Beispiel Windows
Unter Windows kann die Aufgabenplanung genutzt werden. Am Beispiel wird das Einrichten des
Comimport aufgezeigt, für die anderen Prozesse ist dies äquivalent durchzuführen.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 3-6: Dialog Eigenschaften von KomA-Datenimport
Abbildung 3-7: Dialog Trigger bearbeiten
Seite 43 von 384
Seite 44 von 384
Abbildung 3-8: Dialog Aktion bearbeiten
Abbildung 3-9: Dialog Aufgabe erstellen / Bedingungen
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 45 von 384
Abbildung 3-10: Dialog Aufgabe erstellen / Einstellungen
3.3.7
Advanced Features – Wiederverwendung von LIB-Ordner, …
Werden mehrere KomA-Instanzen eingesetzt empfiehlt es sich das Lib-Verzeichnis wiederzuverwenden.
Dies ist durch die Nutzung von Links auf Betriebssystem-Ebene möglich (siehe auch 3.1.2.1) aber auch
über die Konfiguration in cmd/sh-Dateien.
Setzen mittels config/user_env_pre.cmd:
Die einfachste Sache ist vermutlich die Verwendung des absoluten Pfades, z.B.:
SET LIB_DIR=\\server1\ecount\Kommunikation_Base\lib
3.4
Verzeichnisstruktur / Skripte
KOMMUNIKATION
Basis-Verzeichnis
│
archivierung.(cmd|sh)
│
checkVersions.(cmd|sh)
│
comimport.(cmd|sh)
│
comimport_background.(cmd|sh)
│
comimport_console.(cmd|sh)
│
comimport_stop.(cmd|sh)
│
datenimport.(cmd|sh)
│
datenimport_convert.(cmd|sh)
│
datenimport_stop.(cmd|sh)
Seite 46 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
│
datenversand.(cmd|sh)
│
datenversand_datei.(cmd|sh)
│
datenversand_stop.(cmd|sh)
│
install_updates.(cmd|sh)
│
…
│
_updates
Installationsordner
├───config Konfigurationsverzeichnnis
│
│
archive.ini
Archivierung
Konfigurationsdatei für Standard-
│
│
Config.properties
Zentrale Konfigurationsdatei
│
│
datenimport.ini
Konfigurationsdatei für Datenimport
│
│
env.(cmd|sh)
Initialisierungsskript für alle Jobs
│
│
user_env.(cmd|sh)
Benutzerspez. Initialisierungsskript
│
│
user_env_pre.(cmd|sh)
Benutzerspez. Initialisierungsskript
│
├───export
│
│
CSV.properties Konfigurationsdatei für Export-Format CSV
│
│
LPEX.properties Konfigurationsdatei für Export-Format LPEX
│
├───import
│
│
CSV.properties Konfigurationsdatei für CSV
│
│
EDI.properties Konfigurationsdatei für EDIFACT
│
│
LPEX.properties Konfigurationsdatei für LPEX
│
└───samples Beispiel-Konfigurationsdateien
Konfigurationsdateien für Exportfilter
Konfigurationsdateien für Importfilter
├───jre
Java-Laufzeitumgebung (wenn JRE installiert)
├───jdk
Java-Laufzeitumgebung (wenn JDK installiert)
├───log
Ausgabeverzeichnis für Log-Dateien
├───templates
E-Mail-Templates für Export-Format TEMPLATE
└───tmp
Verzeichnis für temporäre Dateien (Sperr-Dateien)
Abbildung 3-11: Vereinfachte Kommunikations-Verzeichnisstruktur
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 47 von 384
Alle Skripte werden in 2 Versionen geliefert, zum einen als Windows-Command-Skript (Endung
.cmd) zum anderen als Unix™-Shell-Skript (Endung .sh). Da es verschiedene Shell-Dialekte gibt,
müssen die .sh-Skripte ggf. an den konkreten Shell-Interpreter angepasst werden
Das Wurzelverzeichnis für den Import-Export-Prozess heißt per Standard Kommunikation. Alle
Pfadangaben innerhalb dieser Verzeichnisstruktur werden relativ zu dieser Wurzel angegeben. Alle
Einstellungen werden in Dateien im darunter liegenden Verzeichnis config angegeben, insbesondere
auch der Ort des Basisverzeichnisses, der in der Shell-Variablen kommunikation_base in der Datei
config\env.(cmd|sh) gesetzt wird.
3.4.1
startjob
Das Skript startjob.(cmd|sh) liegt im Verzeichnis config des KomA. Über dieses Skript werden alle
weiteren Skripte ausgeführt.
3.4.2
archivierung
Dieses Skript startet die Standard-Archivierung.
3.4.3
comimport
Mit diesem Skript wird die Importkommunikation gestartet. Der Importkommunikationsprozess läuft
solange bis er durch das Skript comimport_stop gestoppt wird. Während der Ausführung werden
zyklisch die entsprechenden Datenkanäle in den je Datenkanal konfigurierten Intervallen auf
eingegangene Nachrichten überprüft.
Auf einem Windows-System wird der Java-Prozess im Hintergrund gestartet, sodass keine
Konsolenausgabe erscheint und das Skript sofort wieder beendet wird. Falls jedoch eine
Konsolenausgabe erwünscht ist, muss das Skript comimport_console verwendet werden.
3.4.4
comimport_console
Mit diesem Skript kann die Import-Kommunikation unter einem Windows-System mit Konsolen-Ausgabe
gestartet werden, um die Aktivitäten live zu beobachten.
3.4.5
comimport_stop
Dieses Skript beendet den ggf. zurzeit auf dem Kommunikationsverzeichnis aktiven ImportKommunikationsprozess nach der aktuell ausgeführten Aktion.
3.4.6
comimport_background
Dieses Script startet die Importkommunikation im Hintergrund, ohne die Konsole zu starten.
3.4.7
comimport_keytool
Mit diesem Kommandozeilen-Programm ist es möglich, Schlüssel für ComImport-Verbindungen (aktuell
nur SFTP - Secure File Transfer Protocol - unterstützt) auf die KomA abzulegen. Diese Schlüssel werden
dann beim Verbindungsaufbau verwendet.
Seite 48 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Damit der Keystore geladen wird, muss zusätzlich in der Datei Config.properties die Einstellung:
importcom.KeyStore.password=<passwort> gesetzt sein.
3.4.8
checkVersions
Überprüft Abhängigkeiten aller installierten Programmbibliotheken und schreibt Konflikte in die Datei
tmp/dependencies.txt
3.4.9
datenimport
Dieses Skript startet den Datenimport, welcher auf Basis der datenimport.ini die Abarbeitung steuert.
3.4.10
datenimport_convert
Mit diesem Skript wird der Datenversand gestartet, wobei nur Konfigurationen verarbeitet werden, bei
denen ein Verzeichnis angegeben wurde (siehe Abschnitt Konfiguration von Import-Dateien in
datenimport.ini). Zudem erfolgt nur Schritt 1 der Verarbeitung, die Konvertierung der Dateien ins
ecount-XML-Format, wobei eine Anmeldung an die ecount-Datenbank nicht erfolgt. Dies ist zum Testen
von Dateien nützlich, ohne diese dabei wirklich zu importieren und funktioniert auch ohne Datenbank.
3.4.11
datenimport_stop
Dieses Skript beendet den ggf. zurzeit auf dem Kommunikationsverzeichnis aktiven Import-Prozess nach
der aktuell ausgeführten Aktion.
3.4.12
datenversand
Dieses Skript startet den Datenversand. Damit werden alle im Status B (Bereit) befindlichen ExportAufträge aus dem System verarbeitet und an die angegebenen Ziel-Adressen versendet.
3.4.13
datenversand_datei
Mit diesem Skript kann eine bei einem vorherigen Versandprozess erzeugte XML-Datei nochmals
verarbeitet werden. Dies ist z. B. dann nützlich, wenn eine zugehörige E-Mail nicht angekommen ist oder
eine solche XML-Datei zu Testzwecken bearbeitet wurde. Als Parameter wird der Pfad zu der zu
verarbeitenden XML-Datei angegeben. Dieser bezieht sich, falls relativ angegeben, auf das BasisKommunikationsverzeichnis.
3.4.14
datenversand_eau_id
Dieses Skript startet den Datenversand für einen Export-Auftrag (unabhängig vom Status des
Exportauftrages).
3.4.15
datenversand_stop
Dieses Skript beendet den ggf. zurzeit auf dem Kommunikationsverzeichnis aktiven DatenversandProzess nach der aktuell ausgeführten Aktion. Es kann z. B. auch über eine Netzwerk-Freigabe von einem
anderen Rechner aus gestartet werden, wenn dort die Java-Konfiguration funktioniert.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
3.4.16
Seite 49 von 384
setup_xch_pwd
Über dieses Skript ist es möglich, das EC_XCH-Passwort verschlüsselt abzulegen. Dabei wird die Datei
EC_XCH.passwd im Ordner config hinterlegt.
Der Eintrag database.passwd aus der Datei Config.properties wird ignoriert, falls ein
EC_XCH.passwd auf die KomA vorhanden ist.
Beispiel:
Ablage des Passwortes in der verschlüsselten Datei!
Abbildung 3-12 Definition des Datenbankpasswortes
3.4.17
PasswordCoding
Damit wird ein Konsolenprogramm gestartet mit dem es möglich ist, Zeichenketten (z. B. Passwörter)
Base64 zu kodieren. Es findet also keine Verschlüsselung sondern nur eine Verschleierung statt. Diese
Base64 kodierte Zeichenkette kann beispielsweise beim Config.properties-Parameter
export.MEX.smtp-password verwendet werden wenn zusätzlich export.MEX.smtppassword.encrypted=Y eingestellt wurde.
Beispielauszug der Konsolenanwendung:
Seite 50 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 3-13: Beispiel Konsolenanwendung PasswordCoding
3.4.18
install_updates
Dieses Skript startet die Installation verfügbarer Updates. Die Updates (UPD-Dateien) müssen im
Unterordner _updates hinterlegt sein.
3.4.19
listversions
Auflistung aller installierten Programmbibliotheken als Textdatei. Die Datei wird unter tmp/versions.txt
abgelegt.
3.4.20
lplspool
Archivierung der linearen Protokolle. Siehe Kapitel LPL-Spool (Lineare Protokolle).
3.4.21
listlicenses
Über dieses Skript werden alle installierten Lizenzen aufgelistet.
3.4.22
Importkonfigurator
Mit ImportConfigurator.cmd oder Importkonfigurator.exe wird die graphische Konfigurationsoberfläche
(GUI) gestartet. Siehe Kapitel Importkonfigurator.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 51 von 384
4 Allgemeingültige Informationen
In diesem Kapitel werden allgemeine Hinweise gegeben, die auch für die nachfolgenden Kapitel von
Interesse sind.
4.1
Allgemeine Hinweise
4.1.1
Groß- und Kleinschreibung bei Parametern
Bei der Abfrage der KomA-Parameter ist im Prinzip die Groß- und Kleinschreibung egal. So ist sowohl die
Einstellung export.MEX.trust_all_hosts=Y als auch export.MEX.TRUST_ALL_HOSTS=Y
gültig.
Zum besseren Verständnis und leichteren Supporttätigkeit sollten die Parameter jedoch so wie in
diesem Dokument aufgeführt, spezifiziert werden.
4.1.2
Parameterwert (Y/N vs. true/false)
Boolean-Einstellungen werden meist mit N für no/nein oder Y für yes/ja angegeben. Um Probleme mit
der deutschen Sprache zu umgehen, wird J auch als yes/ja interpretiert.
Die Groß- und Kleinschreibung ist egal. D.h. n == N, j == J und y == Y
Wenn bei den nachfolgenden Parametern von „true“ die Rede ist, ist damit die Einstellung Y/J gemeint.
Als „false“ wird der Parameter N verstanden.
Bei einigen Drittbibliotheken (z. B. JavaMail) wird jedoch true oder false als Zeichenkette erwartet,
darauf wird in den jeweiligen Kapiteln verwiesen.
4.1.3
Zeichenkodierung (Default Cp1252)
Per Default nutzt die KomA in den Auslieferungsskripten das Encoding „Cp1252“ (Windows-1252
Westeuropäisch). Dies wird in der env.cmd gesetzt und als Startargument an Java übergeben
(file.encoding).
SET CONFIG_ENCODING=Cp1252
…
SET JAVA_OPTIONS=%JAVA_OPTIONS% … -Dfile.encoding=%CONFIG_ENCODING%
Hinweise:
Auf Kundenseite kann das Encoding mit Hilfe der user_env.cmd übersteuert werden.
Die env.cmd sollte auf Kundenseite nicht modifiziert werden.
Seite 52 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Die user_env.cmd wird im gleichen Verzeichnis wie die env.cmd (also unter *KomA*/config) erwartet.
Soll z. B. UTF-8 als Encoding verwendet werden, kann dies in der user_env.cmd wie folgt überschrieben
werden:
SET CONFIG_ENCODING=UTF8
4.1.4
„ALIAS“-Verweis auf andere Properties-Datei
Bei Import- und Export-Filtern kann über den Parameter ALIAS auf ein anderes Format verwiesen
werden.
Beispiel:
Unter config/import gibt es eine EDI.properties mit allgemeinen Einstellungen. Eine neue Datenquelle z.
B. EDI_NEU kann nun über alias=EDI (in der EDI_NEU.properties) auf die EDI.properties verweisen.
Dabei werden alle Einstellungen, die in EDI.properties vorhanden aber nicht in der EDI_NEU.properties
definiert sind, übernommen.
EDI. properties
Send_CONTRL=N
status = W
EDI_NEU.properties
alias=EDI
Send_CONTRL=A
Erfolgt der Import nun über die EDI_NEU-Datenquelle, werden Send_CONTRL=A und status=W als
Parameter verwendet.
Erfolgt der Import über EDI-Datenquelle wird Send_CONTRL=N und status=W verwendet.
4.1.5
Information zu globalen Parametern
Parameter, die direkt beim Starten der jeweiligen Prozesse (Datenempfang, Datenimport,
Datenverssand, …) über die Start-Skripte (env.cmd/sh oder datenimport.cmd/sh, …. Dateien) übergeben
werden, müssen mit „-D“ beginnen.
Beispiel (z. B. datenimport.cmd):
Alt:
SET JAVA_OPTIONS=… %JAVA_OPTIONS%
Neu:
SET JAVA_OPTIONS=… %JAVA_OPTIONS%
4.1.6
-DShutdownServer.debug=TRUE
ShutdownServer.debug=FALSE/TRUE
Default: FALSE
Dieser Parameter schreibt LOG-Dateien auf die Standardausgabe, die das Starten eines Jobs
(Datenimport, Export-Kommunikation, Import-Kommunikation) betreffen. Der Parameter ist sinnvoll,
wenn Jobs nicht mehr starten. Denn ggf. blockiert ein vorhergehender Job, der nicht richtig beendet
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 53 von 384
wurde, den in der Config.properties angegeben Sperr-Port. Dieser Parameter muss per VM-Argument
angegeben werden.
4.1.7
Task liefert als Ergebnis der letzten Ausführung die Zeichenfolge 0xFFFFFFFF
Dieser Hinweis bedeutet, dass der Prozess mit einen Fehler System.exit(-1), d.h. nicht regulär,
beendet wurde.
4.2
Allgemeine Probleme/Lösungen
Dieses Kapitel beinhaltet eine Sammlung von allgemeinen Problemen und möglichen Lösungen, die
nicht zwingend einem Prozess eindeutig zuzuordnen sind.
4.2.1
OutOfMemory – Fehler
Bei einem OutOfMemory-Fehler reicht der Speicher, der dem Java-Prozess maximal zur Verfügung steht,
für die Abarbeitung des jeweiligen Prozesses nicht aus. Dieses Verhalten kann oft bei umfangreichen
Exporten aber auch beim Import größerer CSV- oder Excel-Dateien beobachtet werden.
Der maximal zur Verfügung stehende Speicher wird über das jeweilige Startskript (z. B. Datenimport
über datenimport.cmd/sh) mitgegeben. Da die Startskripte vor einigen Jahren definiert wurden, sind die
aktuellen Default-Werte für heutige Prozesse ggf. nicht ausreichend. Bei einem OutOfMemory-Fehler
sollte also für den jeweiligen Prozess (Comimport, Datenimport, Datenversand, …) das zuständige
Startskript analysiert werden. Der Speicher wird dabei in der Zeile SET JAVA_OPTIONS definiert:
Beispiel:
SET JAVA_OPTIONS=-Xmx512m %JAVA_OPTIONS%
-Xmx gibt den maximal zur Verfügung stehenden Speicher an. Im Beispiel wird der Prozess auf 512
Megabyte begrenzt. Um dem Prozess 2 Gigabyte max. Speicher zur Verfügung zu stellen, muss der Wert
wie folgt geändert werden: -Xmx2048m oder -Xmx2g
Bei einer 32-Bit Java-Version können max. ~3,5 Gigabyte Speicher adressiert werden. Größere
Speichermengen können nur bei einer 64-Bit Java-Version angegeben werden (z. B. –Xmx6g). Dies
setzt jedoch immer auch ausreichend Hardware-Ressourcen (physischer Speicher) voraus.
Sinnvolle Vorgaben: Für den Datenimport- und den Datenversand-Prozess sollte jeweils 1 Gigabyte
Speicher verwendet werden: SET JAVA_OPTIONS=-Xmx1g %JAVA_OPTIONS%
Xms und –Xmx: Mit -Xms und -Xmx (bzw. -XX:InitialHeapSize und -XX:MaxHeapSize)
kann die anfängliche bzw. die maximale Heap-Größe angegeben werden. Beide Flags akzeptieren eine
Angabe der Größe in Bytes, wobei die Größeneinheit durch einen nachgestellten Buchstaben (k bzw. K
für Kilo, m bzw. M für Mega oder g bzw. G für Giga) angegeben werden kann.
Analysemöglichkeit: Die VM-Übergabe-Parameter (z. B. –Xmx) können über die Java-Einstellung XX:+PrintCommandLineFlags angezeigt werden:
Seite 54 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Beispiel:
SET JAVA_OPTIONS=-Xmx1024m -XX:+PrintCommandLineFlags %JAVA_OPTIONS%
Anschließend werden beim Start des Prozesses alle Übergabe-Parameter angezeigt:
Abbildung 4-1: Anzeige Übergabeparameter
-XX:MaxHeapSize= 132268864 deutet hier auf einen -Xmx1024mParameter hin.
Auf einem System wurde diese Speichermenge (256m) ausgegeben, obwohl im Skript 1024m definiert
war:
SET JAVA_OPTIONS=-Xmx1024m %JAVA_OPTIONS%
Als Lösung stellte sich heraus, dass der Speicherparameter hinter %JAVA_OPTIONS% angegeben werden
musste.
SET JAVA_OPTIONS=%JAVA_OPTIONS% -Xmx1024m
Dieses Verhalten ist jedoch aktuell nicht reproduzierbar, so dass der dafür zuständige Fehler (Hardware,
Java-Version, …?) unbekannt ist.
4.2.2
BindException: Nicht startende Jobs (Datenimport, Datenversand, …)
Fehler: BindException - Address already in use: JVM_BIN
Die Sperrbehandlung wird bei der KomA über TCP-Sperrports realisiert. Konfiguriert werden diese in der
Config.properties-Datei des jeweiligen KomA-Servers, dabei ist mindestens die Angabe von
common.base_port notwendig.
## TCP-Port zur Sperrbehandlung als Basis fuer alle Jobs
common.base_port = 8785
## TCP-Port zur Sperrbehandlung bei Archivierung
## Standard: <common.base_port>
#archive.port = 8785
## TCP-Port zur Sperrbehandlung beim Datenimport
## Standard: <common.base_port>+1
#import.port = 8786
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 55 von 384
## TCP-Port zur Sperrbehandlung bei Export-Kommunikation
## Standard: <common.base_port>+2
#export.port = 8787
## TCP-Port zur Sperrbehandlung bei Import-Kommunikation
## Standard: <common.base_port>+3
#importcom.port = 8788
Wird nun der Datenversand-Job gestartet, wird dieser auf den Port 8787 registriert.
Bei einem weiteren Start des Jobs auf den gleichen Port, käme es zur Fehlermeldung:
„XYZ bereits aktiv“.
Unter Umständen muss der Prozess manuell gekillt werden (z. B. wenn er sich aufgehangen hat und
nicht mehr gestoppt werden kann). Dazu sucht der Anwender mit Hilfe der Port-Angaben in der
Config.properties nach den laufenden Prozessen. Unter Windows kann dies über netstat und
taskkill auf der Konsole realisiert werden.
Beispiel:
Prozess-ID für den Datenversand-Job finden
netstat -a -b | find "8787"
Findet der Anwender eine Prozess-ID kann diese über
taskkill /PID „ID“
gekillt werden.
Mittels netstat können auch weitere Informationen angezeigt werden, z. B.
netstat –ano
a - Zeigt alle Verbindungen und abhörenden Ports an.
n - Zeigt Adressen und Portnummern numerisch an.
o - Zeigt die mit jeder Verbindung verknüpfte, übergeordnete Prozesskennung an.
Die Suche nach dem Prozess kann auch über die LOCK-Dateien der KomA realisiert werden. Diese
werden direkt in der ausführenden KomA im Unterverzeichnis tmp abgelegt und enthalten auch die
PID des Prozesses.
Beispiel tmp/Import-Kommunikation.lock:
Seite 56 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Import-Kommunikation ….
Host: …
Port: …..
Process-ID: 9376@.....
Description: ….
4.2.3
ClassNotFoundException: com.*XMLGregorianCalendarImpl
ClassNotFoundException:
com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarI
mpl
Diese Klasse wurde mit Java 6 Update 4 in das JDK integriert. Vermutlich wird eine ältere Java-Version
verwendet.  Update der Java Version
Sollte ein Update nicht möglich sein, muss unter lib\3rd\xml\ geprüft werden, ob die Datei
xercesImpl.jar vorhanden ist.
4.2.4
Incompatible Version of libocijdbc… / no ocijdbc in java.library.path
Die KomA unterstützt die Datenbank-Verbindungstypen OCI (Oracle Call Interface) und THIN. Falls OCI in
der Datei Config.properties aktiviert wurde (database.conntype = OCI), muss ein zum in der
KomA (Oracle-JDBC-Treiber) passender Oracle-Client installiert sein. OCI ist beispielsweise bei Dataguard
zwingend erforderlich das dies nicht durch THIN abgedeckt werden kann. Aktuell kann der Oracle Instant
Client über folgenden Downloadlink bezogen werden.
THIN arbeitet mit purem Java und benötigt nur den Oracle-JDBC-Treiber. Der OCI-Treiber dagegen
braucht native Bibliotheken, also einen korrekt installierten Oracle-Client, und wie schon erwähnt, muss
die Version des installierten JDBC-Treibers (3rd/oracle/ojdbc14.jar) genau zum installierten Oracle-Client
passen. Daher ist der THIN-Verbindungstyp zu bevorzugen, da für diesen nur der richtige VerbindungsParameter (database.connect) benötigt wird.
Config.properties - Beispiel:
database.conntype = THIN
database.connect = rdslinux25.robotron.de:1521:ecr5e11
4.2.5
java.lang.UnsupportedClassVersionError: Bad version number in .class file
Ähnlich wie 4.2.6, es wird eine nicht mehr unterstützte Java-Version verwendet. Konfigurationsanleitung
und Hinweise siehe Kapitel 3.3.1.1.
4.2.6
java.lang.ClassFormatError - SetupException
Folgender Fehler wird beim Datenimport ausgegeben:
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 57 von 384
java.lang.ClassFormatError: Class
de.robotron.ecount.dataimport.filter.SetupException in
ecount_import_ifc.jar, 725 bytes
at
de.robotron.util.JarClassLoader.findClassLocal(JarClassLoader.java:345
)
at
de.robotron.util.JarClassLoader.findClass(JarClassLoader.java:368)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
…
Es wird eine nicht mehr unterstützte Java Version verwendet (siehe Plattform-Support-Dokument).
Sollte ein Java 8 (aktuelle Minimalanforderung) im KomA-Basisverzeichnis installiert sein, könnte die
Ursache im Setzen einer älteren Java-Version in der user_env.(cmd|sh) bzw. user_env_pre.(cmd|sh) sein
(beide Dateien liegen im Unterverzeichnis config auf dem KomA).
4.2.7
Ungeklärte Abstürze des Servers / überfüllte Festplatte
Von einem Kundensystem wurden gravierende Abstürze (der gesamte Server, ein Windows Server,
stürzte ab) gemeldet. In den LOG-Dateien war kein sprechender Hinweis auf ein Problem erkennbar.
Nach langer Suche konnte der „ImportOrdner“ (per Standardeinstellung importmail, welcher ggf. über
importcom.mail_dir=xyz gesteuert wird) und die darin enthaltene Menge an Dateien (ca. 2
Milliarden Dateien) als Ursache identifiziert werden. Nachdem der aktuelle Ordner umbenannt und ein
neuer, leerer Ordner hinterlegt wurde, gab es keine ungeklärten Abstürze mehr.
Der Ordner importmail sollte periodisch gelöscht/aufgeräumt werden! Per Standardeinstellung wird
jede E-Mail abgespeichert, dies kann auf großen Systemen über längere Zeit sehr viel
Festplattenplatz verbrauchen.
4.2.8
javax.activation.UnsupportedDataTypeException
Der folgende Fehler erscheint, wenn das activation.jar nicht im root-classloader gefunden wird
no object DCH for MIME type multipart/mixed; boundary="----=_Part_0_9328154.1338798774463":
javax.activation.UnsupportedDataTypeException
at javax.activation.ObjectDataContentHandler.writeTo(Unknown Source)
at javax.activation.DataHandler.writeTo(Unknown Source)
Dieser Fehler ist vermutlich auf das Fehlen der Datei activation.jar zurückzuführen. Die Ursache liegt in
der Nutzung von R3-Skripten. Lösung: R4-Skripte verwenden:
-
Haupt-Skripte für Windows(tm)
http://support.robotron.de/ecount-com-server/skripts/cmd-scripts_main.zip
Seite 58 von 384
-
4.2.9
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Zusatz-Skripte für Windows(tm)
http://support.robotron.de/ecount-com-server/skripts/cmd-scripts_opt.zip
ClassNotFoundException: oracle.xml.parser.v2.XSLException
Beim Auftreten dieser Fehlermeldung fehlen im Ordner lib\3rd\oracle die benötigten JAR-Dateien:
-
4.2.10
xmlparserv2.jar - diese enthält die Klasse und
xsu12.dependencies, welche den App_Loader anweist die entsprechende Klasse zu laden.
Non supported character set: oracle-character-set-178
Diese Fehlermeldung deutet auf eine Unstimmigkeit bezüglich der verwendeten Oracle Datenbank und
den verwendeten Oracle Datenbank Driver (JDBC-Client) hin.
Im konkreten Fall konnte das Problem über die env.(cmd|sh) und der Versionsübersicht identifiziert
werden. In der Versionsübersicht waren unter anderem folgende beiden lib vorhanden:
oracle/classes12.zip;06.04.2004 01:03;Revision Oracle JDBC Driver
version - 9.0.2.0.0
oracle/xsu12.jar;25.03.2002 19:51
Diese wurden per env.sh vor die eigentlichen, korrekten Bibliotheken geschaltet:
export
PATCH_CLASSPATH=$LIB_DIR/patch:$LIB_DIR/oracle/classes12.zip:$LIB_DIR/
oracle/classes12.jar
for f in $(ls "$LIB_DIR"/patch/*.jar 2>/dev/null ); do
export PATCH_CLASSPATH="$f:$PATCH_CLASSPATH"
done
Lösung:
Ordner lib/oracle löschen und Eintrag aus der env.sh entfernen.
4.2.11
Meldung: Provider for class javax.xml.transform.TransformerFactory cannot be
created und Interner Fehler: org/apache/xerces/jaxp/SAXParserFactoryImpl:
java.lang.ClassNotFoundException
Die folgenden Fehler tauchten auf internen KomA-Instanzen auf und sollten durch eine Anpassung der
env.cmd (eCount- 00057536) für Windows-Systeme gelöst werden. Ursache ist hier die Umstellung auf
Java-8 und der bestehenden env.(cmd|sh), die nicht kompatibel dazu ist.
Linux-Systeme müssen manuell angepasst werden da hier oft Rechte das Überschreiben der env.sh
unterbinden!
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 59 von 384
Die Fehler treten meist im Zusammenhang mit der Verarbeitung von EXCEL im XLSX-Format auf. Dieses
Format ist intern als XML-Format abgebildet und wird über APACHE POI verarbeitet. POI wiederrum
nutzt zum Einlesen dieser XML-Struktur JAVA-Standards (JAXP).
Hintergrund:
Mit eCount- 00054226 wurden neue ORACLE-Bibliotheken ausgeliefert, u.a. xmlparserv2.jar. Diese
Bibliothek wird vom ORACLE-JDCB-Driver benötigt und ist damit zentraler Bestandteil vom KomA. Diese
Bibliothek setzt jedoch einige JAXP-Standards auf ORACLE-Klassen
(oracle.xml.jaxp.JXSAXTransformerFactory, oracle.xml.jaxp.JXDocumentBuilderFactory,
oracle.xml.jaxp.JXSAXParserFactory).
Bei der Verarbeitung einer Datei, z. B. einer Excel-Datei beim Importkonfigurator oder beim Import über
den Import-Filter-CSV die auf JAXP-Standards setzt, kann es zu diesem Fehler kommen, da hier Klassen
als Standard gesetzt wurden, die zur Laufzeit nicht zur Verfügung stehen.
Lösung:
Die JAXP-Standards werden explizit in der env.(cmd|sh) gesetzt, um das Überschreiben durch die OracleBibliothek zu verhindern. Dies geschieht über die 3 Variablen (XML_PARSER_FACTORY,
XML_DOCUMENTBUILDER_FACTORY und XML_TRANSFORMER_FACTORY).
Die env.cmd muss wie folgt angepasst werden:
Die folgende Zeile suchen:
SET XML_PARSER_FACTORY=org.apache.xerces.jaxp.SAXParserFactoryImpl
und durch folgenden Code ersetzen:
:: XML-PARSER (vorher org.apache.xerces.jaxp.SAXParserFactoryImpl aus
xercesImpl.jar)
SET
XML_PARSER_FACTORY=com.sun.org.apache.xerces.internal.jaxp.SAXParserFa
ctoryImpl
SET
XML_DOCUMENTBUILDER_FACTORY=com.sun.org.apache.xerces.internal.jaxp.Do
cumentBuilderFactoryImpl
SET
XML_TRANSFORMER_FACTORY=com.sun.org.apache.xalan.internal.xsltc.trax.T
ransformerFactoryImpl
Anschließend noch diese Zeile:
if defined XML_PARSER_FACTORY SET JAVA_OPTIONS=%JAVA_OPTIONS% Djavax.xml.parsers.SAXParserFactory=%XML_PARSER_FACTORY%
durch diesen Code ersetzen:
Seite 60 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
:: Oracle mit xmlparserv2.jar überschreib die Defaults, was zu
Konflikten mit Apache POI führt
if defined XML_PARSER_FACTORY SET JAVA_OPTIONS=%JAVA_OPTIONS% Djavax.xml.parsers.SAXParserFactory=%XML_PARSER_FACTORY%
if defined XML_DOCUMENTBUILDER_FACTORY SET JAVA_OPTIONS=%JAVA_OPTIONS%
Djavax.xml.parsers.DocumentBuilderFactory=%XML_DOCUMENTBUILDER_FACTORY
%
if defined XML_TRANSFORMER_FACTORY SET JAVA_OPTIONS=%JAVA_OPTIONS% Djavax.xml.transform.TransformerFactory=%XML_TRANSFORMER_FACTORY%
Die env.sh muss wie folgt modifiziert werden:
Die Zeile:
export XML_PARSER_FACTORY=org.apache.xerces.jaxp.SAXParserFactoryImpl
durch diesen Code ersetzen:
export
XML_PARSER_FACTORY=com.sun.org.apache.xerces.internal.jaxp.SAXParserFa
ctoryImpl
export
XML_DOCUMENTBUILDER_FACTORY=com.sun.org.apache.xerces.internal.jaxp.Do
cumentBuilderFactoryImpl
export
XML_TRANSFORMER_FACTORY=com.sun.org.apache.xalan.internal.xsltc.trax.T
ransformerFactoryImpl
Sowie diese Zeile:
[ -z $XML_PARSER_FACTORY ] || export JAVA_OPTIONS="$JAVA_OPTIONS Djavax.xml.parsers.SAXParserFactory=$XML_PARSER_FACTORY"
durch diesen Code ersetzen:
[ -z $XML_PARSER_FACTORY ] || export JAVA_OPTIONS="$JAVA_OPTIONS Djavax.xml.parsers.SAXParserFactory=$XML_PARSER_FACTORY"
[ -z $XML_DOCUMENTBUILDER_FACTORY ] || export
JAVA_OPTIONS="$JAVA_OPTIONS Djavax.xml.parsers.DocumentBuilderFactory=$XML_DOCUMENTBUILDER_FACTORY
"
[ -z $XML_TRANSFORMER_FACTORY ] || export JAVA_OPTIONS="$JAVA_OPTIONS
-Djavax.xml.transform.TransformerFactory=$XML_TRANSFORMER_FACTORY"
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
4.2.12
Seite 61 von 384
Warnung wegen falscher Textressource
Beispielsweise:
WARN TextResources:225 load() not a valid group-separator: 100,1:Y/N; Dateien werden als LPEX2
behandelt, auch wenn kein LPEX2-Header vorhanden ist.
Die Warnung ist nicht schlimm, irritiert aber. Hintergrund ist hier die Umstellung von Konsolenausgabe
auf Ausgabe in LOG-Datei. Dabei ist aufgefallen, dass die Datei ImportConvert.LPEXHandler.res mit
einem fehlerhaften Text auf der KomA existiert.
Die Datei sollte gelöscht werden!
Zu finden ist diese Datei im Standard unter config.resources.german, abweichender Pfad kann via
Config.properties definiert sein!
4.2.13
ArrayIndexOutOfBoundsException: at
oracle.jdbc.driver.T4CTTIoauthenticate.setSessionFields
Der Start einer KomA-Instanz scheiterte mit folgender Fehlermeldung:
-1: java.lang.ArrayIndexOutOfBoundsException
at
oracle.jdbc.driver.T4CTTIoauthenticate.setSessionFields(T4CTTIoauthent
icate.java:1195)
at
oracle.jdbc.driver.T4CTTIoauthenticate.<init>(T4CTTIoauthenticate.java
:261)
Als Ursache konnte letztendlich der Dateiname identifiziert werden der mit einer Raute (#) begann. Da
es aktuell keine eindeutige Erklärung für diesen Fehler gibt und dieser in einem kleinen Testfall auch
nicht reproduzierbar war, damit dieser von Oracle ggf. behoben werden kann, muss sichergestellt
werden, dass der KomA-Verzeichnisname nicht mit einer Raute (#) beginnt.
4.2.14
java.lang.SecurityException: sealing violation: package oracle.jdbc.internal is sealed
Dieser Fehler wird vom Oracle JDBC-Driver erzeugt wenn mehrere JDBC-JAR-Dateien im Verzeichnispfad
liegen. Diese Informationen können über die Versionsübersicht abgefragt werden, sind dort mehrere
Einträge von ojdbc*vorhanden, ist das die Ursache des Problems.
Beispiel:
3rd/oracle/ojdbc.jar;30.06.2014 11:54;Revision 12.1.0.2.0
3rd/oracle/ojdbc14.jar;03.07.2014 18:18;Revision 11.2.0.4.0
Bei der KomA muss die Datei ojdbc14.jar vorhanden sein, bei einen robotron*ComCenter hingegen
muss die Datei ojdbc.jar installiert sein. Je nach System muss die andere ojdbc*.jar gelöscht werden!
Seite 62 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Beschreibung von Oracle:
Starting with JDBC 10.2 drivers, having more than one JDBC jar file in the CLASSPATH may result in a
java.lang.SecurityException: Sealing violation exception.
Detailed explanation from Oracle is documented in the following Oracle Document ID:
Note:405446.1
Subject: JDBC Driver 10.2 Uses Sealed JAR files and May Cause SecurityException Sealing Violation
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 63 von 384
5 Datenempfang (Comimport)
Der Import besteht im Wesentlichen aus 2 wichtigen Prozessen:
•
•
Empfang der Daten aus verschiedenen Kanälen (E-Mail, FTP, SFTP, File etc.) –
Kommunikationsautomatisierung (Import-Kommunikation), auch als Comimport oder
Datenempfang bezeichnet.
Konvertierung und Import der Daten nach ecount (Importzwischentabellen)
In diesem Kapitel wird der Datenempfang näher beschrieben.
Dieses Modul ermöglicht die zyklische Überprüfung von verschiedenen Datenkanälen auf neu
eingegangene Nachrichten, die in das EDM System importiert werden sollen.
Standardmäßig können Nachrichten von E-Mail-Konten, FTP-Servern und Netz-Laufwerken (sofern diese
vom Kommunikationsserver aus erreichbar sind) abgeholt werden.
Beim Abholen der Nachrichten werden die vorgefundenen Daten in lokalen Verzeichnissen abgelegt und
somit für die Konvertierung und den Import bereitgestellt. Der Empfang einer jeden Nachricht wird in
der Datenbank protokolliert. Nach der erfolgreichen Übertragung der Nachrichten können diese anhand
von einstellbaren Aktionen gelöscht, umbenannt oder verschoben werden.
Zur Ausführung der Kommunikationsautomatisierung (KomA) wird die Komponente ImportKommunikation mit dem Skript comimport (comimport.cmd, comimport.sh) einmalig gestartet.
Die Abfrage der Datenkanäle für den Empfang wird zyklisch mit dem in der Config.properties
(importcom.mail_checkinterval) eingestellten Intervall durchgeführt.
Um die Kommunikationsautomatisierung zu stoppen, muss das Skript comimport_stop
(comimport_stop.cmd, comimport_stop.sh) ausgeführt werden. Dadurch wird der
Kommunikationsautomatisierung signalisiert, sich so bald wie möglich zu beenden. Dies kann unter
Umständen einige Minuten in Anspruch nehmen, denn erst nach dem vollständigen Abschluss der
Lesevorgänge wird der Prozess beendet.
5.1
Konfiguration
Die Konfiguration dieser Komponente erfolgt mit Hilfe der Maske Importkommunikation im Menü
Import > Kommunikationsautomatisierung. Grundlegende Einstellungen zu
Kommunikationsverbindungen und zu empfangenden Datenformaten müssen in der Maske
Kommunikationseinstellungen im Menü Import administriert werden.
Jedes Konto eines Kommunikationskanals basiert auf einer Kommunikationsverbindung, einem oder
mehreren Datenformaten mit je einer zugeordneten Aktion und je einem oder mehreren Mustern zur
Auswahl der Nachrichten zu einem Datenformat und einer oder keiner Aktion, die auf alle nicht zu
verarbeitenden Nachrichten der Kommunikationsverbindung angewendet wird.
5.1.1
Allgemeine Konfigurationsparameter
Die Importparameter werden über die Datei Config.properties gepflegt.
Seite 64 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Tabelle 5-1: Comimport-Parameter
Parameter/Beschreibung
Standardwert
common.validatefilename
Y/N. Mit aktivierter Einstellung werden die Dateinamen beim Comimport
und Datenimport geprüft, d.h. alle Zeichen, die nicht auf das Muster:
[^a-zA-Z0-9ÄÖÜäöüß$\\(\\)\\]\\[\\-{}@~#.,; ] passen,
werden gegen einen Unterstrich getauscht.
Bei kyrillischen Dateinamen werden mit der Standardeinstellung meist alle Y
Zeichen gegen einen Unterstrich geändert. Um das zu verhindern muss
common.validatefilename=N gesetzt werden. Zusätzlich muss
zwingend die Systemvariable ZIP_CHARSET auf UTF-8 gesetzt werden
(sonst wird als Standardwert Cp850 verwendet, welcher bei nicht
bereinigten Dateinamen unter Umständen nicht ausreicht und Fehler
wirft). Dies geschieht in der user_env.cmd/sh über: SET
ZIP_CHARSET=UTF8 (siehe 3.3.2.1.1)
importcom.compress_mail
Y/N. Eingehenden E-Mail-Nachrichten ZIP komprimiert ablegen (wenn
importcom.save_mail=Y)
Y
importcom.comserver
Nummer des Servers – relevant für die Nutzung mehrerer KomA-Instanzen
beim Comimport (Angabe als positive Ganzzahl).
importcom.connectionTimeout
Verbindungstimeout in Sekunden (-1 steht für kein Timeout)
Beispiel: 5 Minuten:
importcom.connectionTimeout=300
(mindestens ecount_importcom.jar 4.0.2.19 erforderlich).
-1
importcom.debug
Aktiviert das Debug beim Import über E-Mail (IMAP und POP). Damit
werden von der zugrundeliegenden JavaMail-API weitere Daten für die
Analyse bereitgestellt (entspricht mail.debug)
N
importcom.exactFilter
Y/N. Importkonfigurationsfilter nutzen per Default eine „enthält“-Suche
d.h. bei Einschränkung auf MSCONS_% wird immer mit %MSCONS%
gesucht.
Soll eine exakte Suche vorgenommen werden, muss diese Einstellung
aktiviert (Y) werden.
importcom.importfilefilter
N
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Seite 65 von 384
Standardwert
Die mit dieser Einstellung angegebenen Zeichenfolgen werden als
Dateiendungen von Dateien interpretiert, die NICHT weiterverarbeitet
werden sollen. Die Angabe der Dateiendungen erfolgt ohne Punkt durch
Komma (,) separiert. (z. B. bmp,jpg,vcf,tif,exe,com)
importcom.logfile
Name der LOG-Datei, die für den Comimport-Prozess angelegt wird
comimport.log
importcom.logfile.maxSize
Maximale Größe der LOG-Datei in bytes. Hierbei wird zyklisch geprüft, ob 500000
die LOG-Datei den Schwellenwert überschritten hat, die Dateigröße ist also
niemals exakt der eingestellte Wert.
importcom.mail_checkinterval int
Positive Ganzzahl. Zeitintervall in Sekunden, in dem auf auszulesende
Datenkanäle geprüft wird.
60
importcom.mail_dir
Ordner innerhalb des KomA-Servers in dem die E-Mail-Dateien archiviert
werden. Somit ist die Funktion nur bei POP/IMAP relevant.
importmail
importcom.port
TCP-Port zur Sperrbehandlung bei Import-Kommunikation. Auf diesen Port common.base_port+3
warten die Import-Kommunikation auch auf das Stopp Signal zum
Beenden.
importcom.process_inline
Y/N. Mit Y werden auch Inline-Attachments in E-Mails verarbeitet (also
wenn eine CSV-Datei beispielsweise direkt im Nachrichtentext abgelegt
wurde).
Y
importcom.save_mail
Y/N. Eingehende E-Mail-Nachrichten in einem Verzeichnis (siehe
importcom.mail_dir) abspeichern.
Y
importcom.save_unknown
Y/N. Alle E-Mail-Nachrichten, die mit Filtern keinem Format zugeordnet
werden können, werden auf dem Kommunikationsserver in ZIP-Archiven
gespeichert.
Y
importcom.save_unknown_dir
Verzeichnis, in dem die ZIP-Archive mit den unbekannten Daten abgelegt
werden sollen. Standard
<Kommunikationsverzeichnis>\importmail\unbekannt
importcom.shutdown_command
SHUTDOWN
Seite 66 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Standardwert
Kommando, auf das die Import-Kommunikation zum Beenden des Servers
warten soll (einfache Zeichenkette)
importcom.smtp_server
SMTP-Server zum Senden von E-Mails
common.smtp_server
import.zip_name_encoding
Dies ist dieselbe Einstellung wie beim Datenimport (daher ist „import“ und
nicht „importcom“ richtig)!
UTF-8
Die Einstellung für den Zeichensatz der Zip-Dateien (vorwiegend in
internationalen Projekten relevant). Die Einstellung wird nun auch bei der
Erstellung der KomA-Dateien in den zip-done/zip-error-Ordnern
verwendet.
5.1.2
Kommunikationsverbindungen
Tabelle 5-2: Kommunikationsverbindungstypen
ftp
Zur Verbindung mit FTP Servern
Hostname: IP-Adresse bzw. DNS-Name des FTP Servers,
Benutzername, Passwort des FTP-Nutzers,
Verzeichnis auf dem FTP Server,
Port-Angabe eines speziellen Serverports, falls der FTP Server einen nicht standardisierten
Port benutzt. Die Angabe von -1 steht für den Standard (Standard-Port: 21).
Ist ein Proxy-Server zu überwinden, müssen die Felder auf spezielle Weise befüllt werden:
Hostname: Name oder IP-Adresse des Proxy-Servers
Benutzername: <Benutzername>@<FTP-Server>
imap
Zum Abfragen von E-Mail mit dem IMAP Protokoll
Hostname: IP-Adresse bzw. DNS-Name des IMAP-Servers,
Benutzername, Passwort des IMAP-Nutzers,
Verzeichnis auf dem IMAP-Server, in dem nach Nachrichten gesucht werden soll – keine
Angabe sucht alle Nachrichten im Ordner INBOX,
Port - Angabe eines speziellen Serverports, falls der IMAP-Server einen nicht
standardisierten Port benutzt. Die Angabe von -1 steht für den Standard (Standard-Port:
143).
pop3
Zum Abfragen von E-Mail mit dem pop3-Protokoll
Hostname: IP-Adresse bzw. DNS-Name des POP3-Servers,
Benutzername, Passwort des POP3-Nutzers,
Verzeichnis kann für POP3 nicht angegeben werden, da POP3 nur einen Ordner verwaltet,
Port - Angabe eines speziellen Serverports, falls der POP3-Server einen nicht
standardisierten Port benutzt. Die Angabe von -1 steht für den Standard (Standard-Port:
110).
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
file
Seite 67 von 384
Zur Übertragung von Daten von Verzeichnissen, die vom Kommunikationsserver erreichbar
sind
Hostname: IP-Adresse bzw. DNS-Name des Servers, auf dem das freigegebene Verzeichnis
verfügbar ist, wenn kein absoluter Pfad spezifiziert ist (nur Windows),
Nutzername und Passwort kann zum Anmelden an einem Verzeichnis verwendet werden,
wenn der Nutzer, unter dem die Import-Kommunikation läuft, keine Leserechte auf dem zu
verbindenden Verzeichnis besitzt (nur Windows). Verzeichnis spezifiziert das zu
durchsuchende Verzeichnis – Angabe eines absoluten Verzeichnisses auf einem WindowsComputer muss den Laufwerksbuchstaben enthalten – andernfalls wird nach einer
Netzwerkfreigabe auf dem jeweiligen Computer gesucht.
Mit diesem Verbindungstyp können einzelne Dateien von einem Web-Server
heruntergeladen werden. Aufgrund von Einschränkungen im HTTP-Protokoll können
hiermit allerdings keine Verzeichnisse überprüft werden, sondern nur einzelne Dateien.
Dies wird für den Download der aktuellen EEX-Daten aus dem Web-Portal benötigt
(z. B. https:// www.eex.de/.../energy_spot_historie_2005.xls und
https:// www.eex.de/ energy_phelix_power_futures_historie_2005.xls )
http/https Hostname: IP-Adresse bzw. Name des Web-Servers (z. B. www.eex.de)
Benutzername: Name des Nutzerkontos auf dem Web-Server
Passwort: Passwort des Nutzerkontos
Folder: Pfad der Datei auf dem Server, z. B.
info_center/downloads/dl_authent/energy_spot_historie_2005.xls
Port: Port des Servers, 80 für HTTP, 443 für HTTPS, -1 für Standardwert
sftp
Das SSH File Transfer Protocol oder Secure File Transfer Protocol (SFTP) ist eine für die
Secure Shell (SSH) entworfene Alternative zum File Transfer Protocol (FTP), die
Verschlüsselung ermöglicht.
Es kann konfiguriert werden, bereits empfangene Nachrichten nicht wiederholt zu übertragen. Diese
Funktion ist nützlich, wenn bereits abgeholte Nachrichten im Datenkanal (auf dem Server) nicht gelöscht
oder verschoben bzw. umbenannt werden können oder sollen. Die Informationen über zu ladende
Nachrichten werden in der Datenbank abgefragt.
Konten der Kommunikationsautomatisierung auf FTP-Servern sollten, wenn möglich, einen
Schreibzugriff erlauben, um bereits gelesene Dateien umzubenennen oder zu löschen und deren
wiederholten Download und Import zu vermeiden. Dies erhöht auch signifikant die Performance beim
Abholen, da die Prüfung entfallen.
Falls keine Schreibrechte für ein FTP-Konto vorhanden sind, kann anhand der Einträge von bereits
geladenen Dateien in der Datenbank entschieden werden, ob die jeweilige auf dem Server gefundene
Datei vom Server geladen werden soll. Dazu werden der Dateiname, die Dateigröße und das
Dateierstellungsdatum benutzt. Diese Information können von den meisten FTP-Servern bedingt
abgefragt werden. In der FTP Spezifikation RFC 959 ist kein einheitlicher Standard zur Übertragung für
diese Information festgelegt.
Das größte Problem stellt bei der Abfrage das Dateidatum dar. Die meisten Server liefern das Datum in 2
Varianten:
Seite 68 von 384
-
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Tag, Monat oder umgekehrt und Stunde und Minute, wenn Dateidatum weniger als 6 Monate
zeitlichen Abstand zum aktuellen Systemdatum des Servers hat
Tag, Monat oder umgekehrt und Jahr, wenn Dateidatum mehr als 6 Monate zeitlichen Abstand
zum aktuellen Systemdatum des Servers hat
Da das Systemdatum des FTP-Servers nicht abgefragt werden kann, wird davon ausgegangen, dass die
Systemzeit auf dem Kommunikationsrechner mit der Systemzeit des FTP-Servers übereinstimmt.
Wenn Dateien auf dem FTP-Server gefunden werden, die mehr als 6 Monate zeitliche Differenz zur
Systemzeit haben, kann für diese Dateien keine Uhrzeit gelesen werden. Es wird 0:00 Uhr angenommen.
Falls eine solche Datei bereits mit einer geringeren zeitlichen Differenz als 6 Monate zur Systemzeit
geladen wurde, dann wird diese Datei nochmals geladen, da der Zeitstempel nicht übereinstimmt und
die Datei somit als noch nicht vorhanden erkannt wird.
Bei FTP-Servern mit nicht auswertbaren Informationen für Dateidatum und Größe kann nur der
Dateiname zum Vergleich verwendet werden.
Beispiel:
Abbildung 5-1: Beispiel – IMAP-Konto
5.1.3
Importformate
Importformate (auch als Datenformate bezeichnet) werden aktuell in der Maske
Kommunikationseinstellungen (MF_RIMPORT) gepflegt. Jedes Format wird anhand einer
Kurzbezeichnung identifiziert. Zu jedem Format muss ein Verzeichnis auf der KomA angegeben werden,
in dem die unter diesem Datenformat von den Kommunikationskonten geladenen Dateien abgelegt
werden. Die Angabe der Verzeichnisse kann relativ zum Basisverzeichnis der Komponente ImportKommunikation oder auch absolut auf dem Kommunikationsserver erfolgen.
Beispiel:
Abbildung 5-2: Beispiel – IMAP-Konto - Importformate
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 69 von 384
Hinweise:
Die Kurzbezeichnung des Importformats sollte identisch zum Format-Kürzel in der datenimport.ini
sein (siehe auch 5.8.2 und 6.2.1)!
Mit eCount- 00049560 wurde eine Prüfung ausgebaut, die auf Eindeutigkeit der Kurzbezeichnung
prüfte. Erst mit der Änderung aus diesem Ticket ist es also möglich, EDI als Kurzbezeichnung für
mehrere Importformate zu verwenden.
5.1.4
Importkonto
Grundlage eines Kommunikationskontos ist eine Kommunikationsverbindung. Alle für das Konto
festgelegten Einstellungen beziehen sich auf das Verarbeiten von Nachrichten, die in der gewählten
Kommunikationsverbindung gefunden werden.
Die Parameter Überprüfungszeiten bestimmen die Zeitpunkte, an denen über die
Kommunikationsverbindung nach Nachrichten gesucht wird. Dabei muss mit Datum und Uhrzeit
angegeben werden, ab wann das Konto aktiv ist und in welchem Intervall nach neuen Nachrichten
gesucht werden soll. Eine Angabe des letztmaligen Überprüfungszeitpunktes ist nicht notwendig.
Prüfintervall: Für die Angabe des Intervalls stehen die Eingabefelder Tagen, Stunden und Minuten
zur Verfügung. Es können Eingaben in allen 3 Feldern vorgenommen werden. Ratsam ist es
allerdings, das Intervall möglichst einfach zu halten (Beispiel stündlich, oder aller 15 Minuten).
Abbildung 5-3: Importkonto - Prüfintervall
Eine Angabe von 2 Tagen, 12 Stunden und 25 Minuten ist zulässig, kann jedoch u.a. bei der
Zeitumstellung zu Problemen führen.
Für jedes Konto können Nachrichten für einen bestimmten Kommunikationspartner (Vertragspartner)
von jedem definierten Datenformat geladen werden. Dazu wird dem Konto das gewünschte
Datenformat, mit einer Aktion und einem Vertragspartner verknüpft, zugeordnet. Zu jeder dieser
Kombinationen können Nachrichtenfilter zur Identifikation der jeweiligen Nachrichten definiert werden.
Die zugehörige Aktion bezieht sich auf alle mit diesem Filter gefundenen Nachrichten dieses Kontos. Zu
jedem Vertragspartner kann pro Konto und Datenformat eine einzige Aktion definiert werden, die nach
der Abholung der Nachrichten mit den Nachrichten auf dem Server ausgeführt wird (siehe auch 5.1.4.3).
Eine Beispielkonfiguration für ein FTP-Konto ist in Anlage 6 enthalten.
5.1.4.1
Verarbeitung von nicht zuordenbaren Nachrichten
Nachdem alle Nachrichten, auf die die Filterkriterien passten, mit den spezifizierten Aktionen
abgearbeitet wurden, können alle in der Kommunikationsverbindung verbliebenen Nachrichten mit
einer Operation nach dem Abholen verarbeitet werden. Diese Funktion ist nur sinnvoll wenn bei der
Seite 70 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Schaltfläche Filter spezifische Filterkriterien definiert wurden, anderenfalls werden immer alle
Nachrichten verarbeitet.
Dazu kann für jedes Konto eine spezielle Aktion definiert werden. Standardmäßig werden alle restlichen
E-Mail-Nachrichten bei gewünschter Verarbeitung (Verschieben oder Löschen) auf dem
Kommunikationsserver (d.h. im Filesystem) archiviert. Es wird für jede dieser E-Mails ein ZIP-Archiv
angelegt, in dem sich alle Dateien aus dem Anhang abzüglich der auszuschließenden Dateitypen und der
Quelltext der E-Mail als Textdatei befinden. Die Deaktivierung der Speicherung der E-Mail-Nachrichten
in einem ZIP-Archiv und das Verzeichnis erfolgt in der Datei Config.properties.
5.1.4.2
Aktionen
Sämtliche hier definierten Aktionen beziehen sich auf Nachrichten, deren Inhalt vom System erfolgreich
in die durch die Datenformate spezifizierten Verzeichnisse geladen wurde. Eine Aktion wird erst nach
dem erfolgreichen Laden ausgeführt.
Bei allen Kontotypen (außer E-Mail) kann nur eine Aktion pro Datei ausgeführt werden. Mit der
Einstellung importcom.mex.MANY_ACTIONS_PER_MAIL = Y kann festgelegt werden, dass alle
Aktionen abgearbeitet werden, die auf eine E-Mail passen. Ansonsten wird die Verarbeitung einer EMail nach der ersten passenden Aktion abgebrochen. Die Aktionen werden erst nach der Verarbeitung
aller Aktionen und E-Mails in einem Durchlauf ausgeführt. Wenn mehrere Filter auf eine E-Mail passen,
sollte darauf geachtet werden, dass sich die Aktionen (z. B. Verschieben / Löschen) nicht widersprechen.
Es wird ansonsten dennoch versucht, alle Aktionen auszuführen.
Verschieben:
Verschieben der Nachrichten in ein Unterverzeichnis auf dem Server, Name des Verzeichnisses muss in
der Maske Importkommunikation im Feld Aktionswert eingetragen werden.
Hinweise:
Speziell bei FTP/SFTP muss der Nutzer, mit dem der Prozess läuft, auch die notwendigen Rechte
(Anlegen / Löschen) für die jeweiligen Verzeichnisse besitzen.
Bei einem E-Mail-Konto kann die Nachricht nur innerhalb des Postfaches, also der definierten
Verbindung, verschoben werden. Hierbei wird jedoch keine Prüfung auf Absender- oder
Empfängeradresse durchgeführt (beim E-Mail-Konto ist die Filterung auf die From-Adresse zwar
möglich, das betrifft dann aber die Verarbeitung in dem Format und nicht nur die Option
Verschieben).
Abbildung 5-4: Maske Importkommunikation - Feld Aktionswert
Umbenennen:
Umbenennen der gefundenen Nachricht auf dem Server, Namenserweiterung für den neuen
Dateinamen muss in der Maske Importkommunikation im Feld Aktionswert eingetragen sein. Diese
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 71 von 384
Option ist sinnvoll, um die Dateierweiterung zu verändern, um diese Daten beim nächsten Importlauf
ignorieren zu können (per Filtereinstellung auf Dateierweiterung). Zusätzlich ist es möglich, das aktuelle
Datum in den Dateinamen zu integrieren. Datumsformate können im Format {DATE:Format} angegeben
werden (nähere Informationen über Datumsformate siehe 13.8.6).
Beispiel: Inputdatei „ABC.txt“
Tabelle 5-3: Möglichkeiten beim Umbenennen einer Datei
Aktionswert
Resultat
NeuerName.*
NeuerName.txt
.csv
ABC.csv
csv
csv
*.csv
ABC.csv
*_{DATE:yyMMdd_HHmmss}.tmp
ABC_140603_092043.tmp
*_{DATE:yyMMdd}.old
ABC_140603.old
Löschen:
Die betroffenen Nachrichten werden gelöscht. Der Nutzer muss die Rechte zum Löschen der Dateien
haben, speziell bei FTP, SFTP können Löschrechte entzogen sein, dann läuft diese Aktion auf einen
Fehler der im Protokoll zu erkennen ist.
Keine: Es wird keine Aktion ausgeführt.
5.1.4.3
Übersicht – Unterstützte Aktionen pro Konto
Tabelle 5-4: Unterstützte Aktionen pro Konto
Konto
Verschieben
Umbenennen
Löschen
keine
file
x
x
x
x
ftp
x1
x
x
x
http
-
-
-
x
https
-
-
-
x
imap
x
-
x3
x
pop3
-
-
x
x
sftp
x4
x2
x
x
(-) = nicht unterstützt
Seite 72 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
(x) = unterstützt
1
– Umsetzung, die bereits heruntergeladene Datei wird in das Zielverzeichnis wieder hochgeladen und
anschließend von der alten Position gelöscht. Dabei enthält diese einen neuen Zeitstempel und
Übertragungsfehler können nur an Hand der Dateigröße erkannt und behandelt werden.
2
– bei Aktionswert muss mit Wildcard (*) gearbeitet werden. Es darf weiterhin keine Pfadangabe /
oder \\ erfolgen. Es sind daher nur Aktionswerte wie *.xyz erlaubt, d.h. es kann bei SFTP aktuell nur
die Dateierweiterung umbenannt werden.
3
– Wird nicht ausgeführt wenn das Konto readonly deklariert wurde.
4
- Unterstützung mit eCount- 00046563 / eCount- 00047361: Die Angabe des Pfades zum Verschieben
muss absolut erfolgen: z. B. /IN/Directory/MoveDirecotry/
Bei Windows-Systemen ist es aus Performancegründen sinnvoll, das beginnende und endende /
anzugeben. Anderenfalls wird extra versucht, den absoluten Pfad auf dem Server zu ermitteln.
Restriktionen:
-
5.1.4.4
Nutzer muss die Rechte zum Verschieben besitzen (Delete/Create)
Es kann nur in ein Verzeichnis auf genau diesen SFTP-Server verschoben werden
Ist das Verzeichnis nicht vorhanden, wird versucht dieses anzulegen (Create-Recht)
Das Verzeichnis darf nicht auf eine andere Partition gemountet sein!
Existiert eine Datei mit dem gleichen Dateinamen in den zu verschiebenden Ordner, so wird
diese nicht überschrieben. Die originale Datei bleibt im aktuellen Ordner liegen.
ZIP-Funktionalität
Es besteht die Möglichkeit, Daten für den Datenimport in ZIP-Dateien aufzubereiten. Dazu muss für das
jeweilige Format in der Maske Importkommunikation (MF_COMIMPORT) die Option ZIP aktiviert
werden.
Abbildung 5-5: Maske Importkommunikation, Option ZIP
Dies hat unter anderem den Vorteil, dass ggf. komprimierte Dateien (in ZIP, GZIP-Format) vorher
entpackt und für den Datenimport brauchbar aufbereitet werden (der Datenimport kann z. B. keine
GZIP-komprimierten Dateien entpacken nur ZIP-Dateien!). Des Weiteren werden in der ZIP-Datei
weitere Informationen, wie die COM_MESSAGE.ID, über die im späteren Verlauf z. B. die OriginaleAbsender-Adresse (bei E-MAIL) abgefragt werden kann, hinterlegt.
5.1.4.5
Dateinamen-Generierung
Die Dateiablage erfolgt immer mit einem eindeutigen Namen.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 73 von 384
Ablage nicht komprimiert (ZIP deaktiviert)
Ist die Datei bereits vorhanden, wird an den Dateinamen automatisch die Zeit nach folgendem Muster
angelegt <Dateiname>[yyyyMMddHHmmssSSS].<Dateierweiterung>
(Jahr, Monat, Tag, Stunde, Minute, Sekunde, Millisekunde)
Beispiel: Die Datei BLABLAX_TEST_ROBOTRON.csv wird 2x importiert:
1.
BLABLAX_TEST_ROBOTRON.csv
2.
BLABLAX_TEST_ROBOTRON[20140507102016385].csv
Ablage komprimiert (ZIP aktiviert)
Hierbei wird die Datei in einer ZIP-Datei abgelegt, die mit IA_ beginnt (import account), anschließend
folgt die ID des Importkontos (hier 7615) und die Kurzbezeichnung des Formats (hier EDI_MK),
abgeschlossen wird der Dateiname wieder vom aktuellen Zeitstempel (yyyyMMddHHmmssSSS)
Beispiel: IA_7615_EDI_MK_20140507103149899.zip
5.1.4.6
Filter
Über die Schaltfläche Filter (in der Maske Importkommunikation) können Sie Kriterien definieren,
welche Nachrichten in der angegebenen Art und Weise behandelt werden sollen.
Abbildung 5-6: Maske Importkommunikation – Dialog Filter
Folgende Kriterien sind möglich:
Alles
Alle gefundenen Nachrichten werden ausgewählt
Adresse
Alle E-Mail-Nachrichten, deren Absenderadresse mit der in der Spezifikation des Musters angegebenen
E-Mail-Adresse übereinstimmen, werden ausgewählt.
Betreff
Seite 74 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Alle E-Mail-Nachrichten, deren Betreff mit dem in der Spezifikation des Musters angegebenen Text
mindestens teilweise übereinstimmen, werden ausgewählt.
Inhalt
Alle E-Mail-Nachrichten, deren Nachrichtentext mit dem in der Spezifikation des Musters angegebenen
Text mindestens teilweise übereinstimmen, werden ausgewählt (IMAP, POP3).
Name
Alle Dateien mit dem in der Spezifikation angegebenen Dateinamen werden ausgewählt.
Erweiterung
Alle Dateien mit der in der Spezifikation angegebenen Dateinamenserweiterung im Dateinamen werden
ausgewählt. (FTP, FILE, ab 3.38 auch IMAP und POP3).
5.1.4.7
Übersicht – Unterstützte Filter je Konto
Tabelle 5-5: Unterstützte Filter je Konto
Konto
Alles
Adresse
Betreff
Inhalt
Name
Erweiterung
file
x
-
-
-
x
x
ftp
x
-
-
-
x
x
http
-
-
-
-
-
-
https
-
-
-
-
-
-
imap
x
x
x
x1
x1
x1
pop3
x
x
x
x1
x1
x1
sftp
x
-
-
-
x
x
(-) = nicht unterstützt
(x) = unterstützt
1
– Die Filterung kann nur bei unverschlüsselten Mails durchgeführt werden. Bei verschlüsselten Mails
scheitern etwaige Prüfungen.
ACHTUNG bei Verschlüsselung:
Bei Verwendung der Filter auf Inhalt, Name und Erweiterung für E-Mail-Konten ist zu beachten, dass
zur Überprüfung dieser Filter alle im Posteingang vorhandenen E-Mails heruntergeladen werden
müssen. Dies hat zur Folge, dass das Abholen deutlich länger dauern kann und mehr Netzwerklast
erzeugt, wenn Mails im Posteingang liegen, die nicht verarbeitet werden sollen, da auch diese jedes
Mal mit überprüft werden müssen. Dies hat insbesondere bei POP3-Konten Auswirkungen, wenn
diese im Nur-Lese-Modus abgefragt werden und die Mails auf dem Server belassen werden sollen.
Für diese Filter sollte also die Anbindung an den E-Mail-Server hinreichend schnell sein und die Mails
nach der Abarbeitung nach Möglichkeit gelöscht oder verschoben werden.
Die Groß-/Kleinschreibung wird bei den Mustern ignoriert.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 75 von 384
Ab Version 3.37 der Server-Import-Kommunikationskomponente können im Filtertext zusätzlich
Wildcards *, % (für beliebig viele Zeichen) und ? (für genau ein Zeichen) verwendet werden. Per Default
wird die Suche für die Filterkriterien Betreff, Inhalt und Adresse immer als „ENTHÄLT“-Suche
durchgeführt. Die Suche nach Name oder Erweiterung wird als „GLEICH“-Suche durchgeführt. Wenn also
nach dem Vorhandensein des Betreffs „MSCONS“ gefiltert werden soll, braucht nicht %MSCONS%
sondern nur MSCONS angegeben werden. Soll die Suche nach allen Zeichenketten die mit MSCONS
beginnen oder enden durchgeführt werden, muss dies in der KomA zusätzlich über die Datei
Config.properties aktiviert werden.
In der Datei Config.properties kann die Filtersuche über den Parameter importcom.exactFilter
= Y/ N (Standardwert N) beeinflusst werden. Mit importcom.exactFilter=Y ist eine exakte
Suche nach beginnenden oder endenden Zeichenketten möglich.
Diese Einstellung exactFilter gilt nur für die Filterkriterien Betreff, Inhalt und Adresse nicht für Name
und Erweiterung.
Beispiele
Ausgangsbasis für die Suche:
1. „MSCONS_1234567.txt“
2. "FWD:MSCONS_1234567.txt"
3. "CSV_123.txt"
4. "MSCONS_123456_AT_GMX_DE.txt"
5. „ABC_MSCONS_123“
Tabelle 5-6: Beispiele Filtereinstellungen für Filterkriterium Betreff
importcom.exactFilter=N
Positives Ergebnis (true) für folgende
Ausgangsbasis
importcom.exactFilter=Y
Positives Ergebnis (true) für
folgende
Ausgangsbasis
Betreff MSCONS_123
(1), (2), (3), (5)
(1), (2), (3), (5)
Betreff %MSCONS_123
(1), (2), (3) ,(5)
(5)
Betreff MSCONS_123%
(1), (2), (3) ,(5)
(1), (3)
Filter
Kriterium
Betreff %MSCONS_123% (1), (2), (3) ,(5)
(1), (2), (3), (5)
Tabelle 5-7: Beispiele Filtereinstellungen für Filterkriterium Name
Filter
Kriterium
Name
MSCONS_123
Positives Ergebnis (true) für folgende Ausgangsbasis
(importcom.exactFilter=N)
Seite 76 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Filter
Kriterium
Positives Ergebnis (true) für folgende Ausgangsbasis
(importcom.exactFilter=N)
Name
%MSCONS_123
(5)
Name
MSCONS_123%
(1), (4)
Name
%MSCONS_123%
(1), (2), (3) ,(5)
Als Wildcard-Zeichen sind % und * gleichbedeutend.
Weiterhin kann für jedes Konto spezifiziert werden, wie viele Nachrichten bei einer Verbindung über
dieses Konto abgerufen werden sollen. Diese Einstellung dient zur gleichmäßigen Lastverteilung bei
Vorhandensein vieler Nachrichten in einer Kommunikationsverbindung. Ein Kommunikationskonto wird
erst auf zu verarbeitende Nachrichten überprüft, wenn es aktiviert wurde. Mit dieser Option kann die
Überprüfung eines Kontos manuell ausgesetzt werden, ohne die Einstellungen des Kontos zu verändern.
5.1.5
Start des Comimports
Gestartet wird über das Skript comimport.(cmd|sh). Wird der Comimport gestartet, läuft das Programm
anschließend permanent im Hintergrund und fragt zyklisch (im Intervall von 1 Minute) die Importkonten
ab.
Es wird empfohlen, den Comimport 1x täglich neu zu starten [Aufruf via comimport_stop.(cmd|sh)].
Dabei wird unter anderem auch die Datei lastrun.log freigegeben. Diese Datei wird geschrieben,
wenn im Startskript (SET CONSOLE_LOG=%KOMM_LOG%/comimport.lastrun.log)
definiert ist, was standardmäßig der Fall ist.
5.1.6
Wichtiger Hinweis bezüglich Performance
Dieser Hinweis gilt für alle Konten (FTP, E-Mail, SFTP, FTP)!
Die Datenmenge in den abzufragenden Verzeichnissen sollte möglichst konstant niedrig gehalten
werden. Steigt die Datenmenge in den Verzeichnissen kontinuierlich an, verringert sich die
Abfragegeschwindigkeit. Im schlimmsten Fall schafft es der Comimport in seiner vorgegeben Zeit nicht
mehr, die Verzeichnisse abzufragen (z. B. wenn der Comimport-Job per Task nach 1 Stunde gestoppt und
wieder gestartet wird).
Es wird daher immer empfohlen, die Daten aus dem jeweiligen Import-Ordner zu löschen oder in ein
anderes Verzeichnis, welches nicht periodisch abgefragt wird, zu verschieben! Dafür stehen im ecount
die Aktionen löschen und verschieben für die jeweiligen Formate zur Verfügung.
Wird in den jeweiligen Formaten (die im Reiter edit aufgeführt sind) mit Filtern gearbeitet, z. B. Filterung
auf Dateiendung XML) so ist es sinnvoll, eine Endaktion für alle anderen Dateien, die nicht auf den Filter
passen, zu definieren. Dies kann in der Maske Importkommunikation über die Einstellung Operation
nach dem Abholen vorgenommen werden.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 77 von 384
Beispiel:
Im Format TEST_K_1 wird mit einen Filter gearbeitet, daher ist es notwendig, eine Endaktion für alle
anderen Dateien in diesem Ordner einzurichten. Dateien die nicht auf den Filter passen werden hier in
den Ordner „xyz/spam“ verschoben. Die anderen Dateien werden in den Ordner „/IN/DATA/DONE/“
verschoben.
Abbildung 5-7: Maske Importkommunikation – Endaktion für Dateien einrichten, die nicht auf den Filter passen
Abbildung 5-8: Maske Importkommunikation / Dialog Filter: Anzeige vorhandener Filter
Wenn die notwendigen Rechte für das Verschieben oder Löschen von Dateien nicht vorhanden sind,
z. B. weil ein Fremd-SFTP-Server abgefragt wird auf den nur mit Leserechten zugegriffen werden
kann, muss dieser Sachverhalt ggf. mit den jeweiligen Betreiber geklärt werden. Sprich der Betreiber
muss absichern, dass die Datenmenge in den abzufragenden Verzeichnissen nicht zu groß wird.
5.1.7
Dynamische Pfadangaben
Dynamische Pfadangaben sind seit eCount- 00056607 nun für HTTP, SFTP und FTP möglich. Damit kann
der Verzeichnispfad dynamisch zur Laufzeit bestimmt werden. Aktuell wird die dynamische
Verzeichnisgenerierung nur anhand des Datums, über die ${DATE}-Variable, unterstützt. Definiert
werden diese Variablen in der Spalte „Verzeichnispfad“ in Importkommunikation (MF_COMIMPORT).
5.1.7.1
${DATE}
Platzhalter für Datumsangaben, die in Abhängigkeit zu einem Datum erstellt werden können. (Die
Zeitzone ist aktuell fest auf Europe/Berlin eingestellt, dies ist z. B. bei der Berechnung vom
Wochenende relevant). Die Angabe der Variablen ${DATE} erfolgt in der Maske Importkommunikation
(MF_COMIMPORT) beim Verzeichnispfad (siehe Abbildung 5-9).
Die ${DATE}-Variable besitzt insgesamt 5 Parameter:
${DATE(datumsformat, start-offset, end-offset, schrittweite, flag, referenzdatum)}
Seite 78 von 384
-
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Datumsformat in Java-Syntax (siehe Anlage 2 Datumsformatierung) – Default dd.MM.yyyy
Start-Offset in Tagen (-1 gestern, 0 heute, 1 morgen, ...) – Default 0
End-Offset in Tagen (-1 gestern, 0 heute, 1 morgen, ...) – Default 0
Schrittweite in Tagen – Default 1
Flags: W = nur Montag bis Freitag; w = wie W, aber Wochenenden bei Berechnung von Start-und
End-Index weglassen
Referenzdatum (Standard: aktuelles Datum), muss mit dem korrekten Datumsformat angegeben
werden – Default dd.MM.yyyy
5.1.7.1.1
Beispiel: Das aktuelle Jahr mit 4 Stellen bestimmen
${DATE(yyyy)}  liefert z. B. 2015
Da das Default-Datumsformat dd.MM.yyyy ist, muss dies überschrieben werden. Alle anderen
Parameter werden nicht benötigt (die Defaults sind ausreichend).
5.1.7.1.2
Beispiel: Generiere 4 Verzeichnise für heute und die kommenden 3 Tage
${DATE(yyyyMMdd,0,3)}
Wenn heute der 28.05.2015 ist werden folgende 4 Pfade generiert:
20150528, 20150529, 20150530, 20150531
Obwohl der Default für das Start-Offset 0 ist muss dieser Parameter hier nochmal spezifiziert
werden um den Parameter für das End-Offset korrekt angeben zu können.
5.1.7.1.3
Beispiel: letzter Werktag bis heute, Wochenende bei Zählung überspringen
${DATE(yyyyMMdd,-5,0,1,w)}
Wenn heute der 28.05.2015 ist werden folgende Verzeichnisse generiert:
20150521, 20150522, 20150525, 20150526, 20150527, 20150528
Der 23.05 (Samstag) und 24.05 (Sonntag) werden ignoriert und übersprungen.
5.1.7.1.4
Beispiel: letzter Werktag bis heute, Wochenende bei Zählung nicht überspringen
${DATE(yyyyMMdd,-5,0,1,W)}
Wenn heute der 28.05.2015 ist werden folgende Verzeichnisse generiert:
20150525, 20150526, 20150527, 20150528
5.1.7.1.5
Beispiel: Aktuelles Jahr als Pfad und Dateinamen
Soll beispielsweise dynamisch pro Jahr folgende Datei abgerufen werden:
/power/xls/spot_market/<aktuelles Jahr>/energy_spot_historie<aktuelles Jahr>.xls
kann im Verzeichnispfad mit folgender Angabe gearbeitet werden:
/power/xls/spot_market/${DATE(yyyy)}/energy_spot_historie_${DATE(yyyy)}.xls
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 79 von 384
Abbildung 5-9: Maske Importkommunikation: Angabe der Variablen ${DATE} im Verzeichnispfad
5.1.7.1.6
Beispiel: SFTP-EEX PowerSpotMarketAuctionResults
Auf den EEX-SFTP-Server mis.eex.com liegen unter dem Ordner
/eod/market_data/power/spot/xml/2015/20151205 folgende Dateien. Dabei sollen alle XML-Dateien
importiert werden die mit „PowerSpotMarketAuctionResults“ beginnen.
Abbildung 5-10: Verzeichnis unter /eod/market_data/power/spot/xml/2015/20151205
In MF_RIMPORT wird die SFTP-Kommunikationseinstellung hinterlegt.
Abbildung 5-11: MF_RIMPORT: Einstellungen für SFTP-Kommunikation
Diese Kommunikationseinstellung wird anschließend bei der Importkommunikation verwendet. Es wird
ein neues Format mit dem entsprechenden Verzeichnispfad angelegt:
Seite 80 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 5-12: Verwenden der Einstellungen für SFTP-Kommunikation
Verzeichnispfad: eod/market_data/power/spot/xml/${DATE(yyyy,0)}/${DATE(yyyyMMdd)}
Zusätzlich wird ein Filter eingerichtet um nur die gewünschten Dateien zu importieren.
Abbildung 5-13: Verwenden der Einstellungen für SFTP-Kommunikation mit Filter
5.2
Abarbeitungslogik der Importkonten
In diesem Kapitel ist die interne Abarbeitungslogik beschrieben, diese Informationen sollen als
Grundlage für folgende Entscheidungen dienen:
-
5.2.1
Parallelbetrieb (ja/nein)
Definition von Endaktionen je Importkonto (ja/nein)
Anzahl an abzuarbeitenden Accounts je KomA-Instanz
Konfigurationseinstellung in der Config.properties
Abfrage der Importkonten
SELECT CON.ID, LOWER(CON.CONNECTION_TYPE), CON.HOSTNAME, CON.PORT,
CON.USERNAME, CON.PASSWORD, CON.FOLDER, UPPER(CON.READONLY),
CON.PROPERTIES
FROM COM_CONNECTION CON, COM_ACCOUNT ACC
WHERE CON.ID = ACC.CCON_ID
AND ACC.COM_SERVER = ?
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 81 von 384
AND ACC.ACTIVE = 'J'
ORDER BY HOSTNAME, USERNAME, FOLDER
Wobei bei ACC.COM_SERVER = ? der Wert der Einstellung importcom.comserver aus der
Datei Config.properties verwendet wird.
Mit dieser Abfrage werden alle Importkonten abgefragt, die von der entsprechenden KomA
abgearbeitet werden sollen.
5.2.2
Abfrage der Importformate
Als nächstes werden die Importformate ermittelt.
SELECT CFOR.ID, CFOR.NAME, UPPER(CFOR.SHORTNAME), CFOR.DIR
FROM COM_FORMAT CFOR, COM_ACTION CACT, COM_ACCOUNT CACC
WHERE CFOR.ID = CACT.CFOR_ID
AND CACT.CACC_ID = CACC.ID
AND CACC.ACTIVE IN ('Y', 'J')
AND CACC.COM_SERVER = ?
Wert in CACC.COM_SERVER ist wieder der Wert der Einstellung importcom.comserver aus der
Datei Config.properties.
5.2.3
Abfrage der Konten + Konteneinstellungen
Jetzt werden alle zentralen Einstellungen der Importkonten geladen.
SELECT ID, NAME, CCON_ID, MAXCOUNT, UPPER(ACTION_TYPE), ACTION_VALUE,
ACTIVE_FROM, ACTIVE_UNTIL, CHECK_INTERVAL, LAST_CHECKED, ERROR_COUNT,
COM_SERVER
FROM COM_ACCOUNT
WHERE UPPER(ACTIVE) IN ('Y', 'J')
AND COM_SERVER = ?
ORDER BY ID
5.2.4
Abfrage der Aktionen für jedes Importkonto
SELECT CFOR_ID, SYSDATE AS SYSTIME, UPPER(ACTION_TYPE), ACTION_VALUE,
ID, VTP_ID, ACTIVE_FROM, ACTIVE_UNTIL, UPPER(ACTIVE), STORE_MSG_TEXT,
SAVE_AS_ZIP, OPERATION, PATH
FROM COM_ACTION
Seite 82 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
WHERE CACC_ID = ?
ORDER BY ID
CACC_ID ist der Wert aus COM_ACCOUNT.ID, diese Werte wurden mit der vorhergehenden Abfrage
ermittelt. Mit der Abfrage werden letztendlich die auszuführenden Aktionen für dieses Importkonto
gefunden. Zusätzlich werden hier auch die Filterkriterien (falls vorhanden) ausgelesen.
5.2.5
Überprüfung der Importkonten
Erst jetzt erfolgt die eigentliche Prüfung, ob die Importkonten überhaupt abgearbeitet werden müssen.
Diese Prüfung verwendet eine etwas komplizierte Berechnung, die nicht immer 100% funktionierte. D.h.
wenn viele Importkonten von einem KomA-Server abgearbeitet werden, kann unter Umständen ein
Importkonto ignoriert werden. Das Problem wurde in eCount- 00048991 „Comimport Abrufalgorithmus
ändern“ gelöst.
5.2.6
Besonderheiten bei „read only“ Importkonten
Ein Importkonto hat die Eigenschaft „read only“, wenn die Option in der Maske
Kommunikationseinstellung (MR_RIMPORT) gesetzt ist. Diese Eigenschaft ist primär für E-Mail-Konten
relevant!
Ist diese Eigenschaft aktiviert, wird für jede Nachricht, die importiert werden soll, eine Abfrage in der
Datenbank realisiert um zu prüfen, ob die Nachricht nicht bereits importiert wurde. Als Suchkriterium
dienen hier die Nachrichten-ID, der Zeitstempel und die Größe der Nachricht.
Wird eine passende Nachricht in der Datenbank gefunden, wird diese beim Importprozess ignoriert.
Die Eigenschaft „read only“ sollte nur verwendet werden wenn die Postfächer von anderen
Prozessen periodisch gesäubert/geleert werden. Anderenfalls besteht die Gefahr, dass die
Postfächer mit der Zeit überfüllt werden und keine Daten mehr importiert werden können, da der
Comimport-Prozess die gesamte, ihm zur Verfügung stehende, Zeit mit Überprüfung auf mögliche
Duplikate verbringt.
5.3
E-Mail-Konto (POP / IMAP)
Der E-Mail-Empfang basiert auf JavaMail (JavaMail ist eine Java-Programmierschnittstelle zum
Plattform- und Protokoll-unabhängigen Senden und Empfangen von E-Mails. JavaMail unterstützt dabei
die Standards SMTP, POP3 und IMAP). Weitere Informationen zu Javamail sind auf der Homepage und
im FAQ vorhanden. Der Aufbau einer E-Mail richtet sich nach dem RFC822 und dem MIME Standard
(MIME RFC: RFC2045, RFC2046, RFC2047)
5.3.1
Allgemeine Hinweise
5.3.1.1
Filterung von E-Mails
Es besteht die Möglichkeit, im ecount und über die KomA, gezielt nach E-Mails zu filtern z. B. Betreff
beginnt mit MSCONS und Absender ist X. Bei umfangreicheren Filterungen ist es gegebenenfalls besser,
die Filterung schon auf dem E-Mail-Server vorzunehmen. Dieser bietet deutlich mehr
Filtermöglichkeiten und eine bessere Überwachung und komfortablere Einstellmöglichkeiten. Bei
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 83 von 384
erfolgreicher Filterung sollten die E-Mails anschließend in Unterordner verschoben werden. Die
jeweiligen Konten für den Datenempfang können anschließend gezielt auf die Unterordner verbunden
werden, eine komplizierte Filterung im ecount entfällt.
Beispiel:
Werden in einem Postfach MSCONS-Dateien in den Unterordner MSCONS verschoben, kann das Konto
für die Abholung der MSCONS-Dateien direkt auf den Unterordner konfiguriert werden
(INBOX/MSCONS)
Abbildung 5-14: Beispiel: Filterung von E-Mails per Folder
5.3.2
Konfigurationsparameter
Parameter können global (d.h. in der Config.properties) und andere Parameter nur für das jeweilige
Konto (d.h. über die Maske Import > Kommunikationseinstellung) definiert werden.
Tabelle 5-8 stellt eine Übersicht der globalen Parameter für den E-Mail-Empfang, die in der
Config.properties definiert werden können, dar.
Tabelle 5-8: Parameter für E-Mail-Empfang
Parameter/Beschreibung
importcom.CHECK_PROCESSED_MAILS
Y/N (Standardwert N)
Mittels Y kann aktiviert werden, dass für jede E-Mail geprüft wird, ob diese bereits durch die KomA
abgeholt wurde. Damit ist es also möglich, Doppelimport schon beim Comimport zu verhindern. Als
Kriterien für die Doppelimportprüfung werden die Größe, das Sendedatum und die Message-Id (Wert
aus dem Header "Message-ID") der E-Mail verwendet.
Der Parameter sollte nur bei Bedarf eingeschaltet werden, da die Prüfung, je nach Datenmenge in
den Tabelle COM_MESSAGE, recht zeitintensiv sein kann.
Der Parameter ist per Standardwert jedoch aktiv, falls das E-Mail-Konto auf „read only“ steht oder
für ein definiertes Format kein Aktionstyp (Aktionstyp = keine) ausgewählt wurde.
importcom.mex.MANY_ACTIONS_PER_MAIL
Y/N (Standardwert N)
Mit Y können E-Mails mit mehreren Aktionen verarbeitet werden (deren Filter auf die jeweilige E-Mail
passt).
importcom.from_adress
From-Adresse, die für weitergeleitete Import-E-Mails genutzt wird, wenn
importcom.use_from_adress aktiviert ist (die From-Adresse der eingehenden E-Mails, die
weitergeleitet werden, wird gegen eine andere ausgetauscht). Seit eCount- 00049606 wird die
Einstellung auch bei der Erstellung der Admin-E-Mail verwendet (siehe 5.3.7.2).
Seite 84 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
importcom.mex.fetchBeforeProcess
Y/N (Standardwert N)
E-Mails werden vor Verarbeitung komplett heruntergeladen, um Bugs in E-Mail-Servern wie z. B. MS
Exchange zu umgehen, die beim Nachladen von Daten einer E-Mail unter verschiedenen
Konstellationen korrupte Datenblöcke liefern ("Unable to load BODYSTRUCTURE“). Unter Umständen
ist dieser Bug inzwischen gefixt und die Einstellung kann mittels
importcom.mex.fetchBeforeProcess=N deaktiviert werden.
Technische Information: Mit aktiviertem Parameter, wird vor der Verarbeitung der E-Mail diese
vollständig vom E-Mail-Server geladen.
importcom.mex.IGNORE_SIGNED_MAILS
Y/N (Standardwert N)
Signierte E-Mails lassen sich ohne SMIME-Funktionalität bearbeiten. Dies bedeutet, dass keine
Prüfung der Signatur stattfindet, der Nachrichteninhalt wird extrahiert und weiterverarbeitet. Dies
betrifft nur signierte E-Mails, sollte die E-Mail signiert und anschließend verschlüsselt sein, so wird das
SMIME-Modul zwingend zur Entschlüsselung der Nachricht benötigt.
Diese Einstellung funktioniert derzeit nur für E-Mail-Konten, (Kommunikationseinstellungen der
Typen „imap“ und „pop3“). Der Parameter funktioniert für das Modul
KOMA_IMPORTCOM_EMAIL ab Version 4.0.2.41
importcom.mex.IMAP.timeout
mail.imap.connectiontimeout
Verbindungstimeout beim Abholen von E-Mail von IMAP-Servern in ms.
UND
mail.imap.timeout
Default: Bis Version 4.0.2.48 von connection_email.jar 30 Sekunden. Ab 4.0.2.49 gibt es keinen
expliziten Standardwert mehr. Angabe als positive Ganzzahl.
Beispiel: Timeout von 120 Sekunden.
importcom.MEX.IMAP.timeout=120000
importcom.subject
Betreff, der für die weitergeleiteten E-Mails genutzt werden soll.
(wenn importcom.use_from_adress = Y).
Der Originalbetreff wird anschließend automatisch übernommen:
<importcom.subject> : <Originalbetreff>
Der Standardtext sollte unbedingt angepasst werden: „Betreff, der für weitergeleitete Importmails
genutzt werden soll“
importcom.use_from_adress
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 85 von 384
Parameter/Beschreibung
Y/N (Standardwert N)
Die From-Adresse soll bei eingehenden E-Mails, die weitergeleitet werden sollen, gegen eine andere
(wird durch importcom.from_address bestimmt) ausgetauscht werden.
Y = Austausch mit importcom.from_adress
N = Übernahme der From-Adresse des Absenders
importcom.mex.CLEAN_CORRUPT_MAIL
Y/N (Standardwert N)
Ist die Einstellung aktiviert, wird bei einem schwerwiegenden Fehler versucht, die E-Mail zu
verschieben (innerhalb des E-Mail-Servers oder auf das Filesystem) und anschließend aus dem
Postfach zu löschen (siehe 5.3.7.2).
importcom.mex.ERROR_MAIL_FOLDER
Wenn importcom.mex.CLEAN_CORRUPT_MAIL aktiviert ist, kann hier ein Ordner auf dem EMail-Server angegeben werden, in den die fehlerhafte E-Mail verschoben wird. Die Angabe kann
absolut erfolgen, z. B. FEHLER_MAILS oder relativ zum aktuellen Ordner z. B. ./FEHLER_MAILS
(hierbei wird unter dem aktuellen Ordner ein Ordner FEHLER_MAILS erwartet). Ist der Ordner nicht
vorhanden, wird dieser angelegt (wenn möglich).
Ist der Parameter nicht spezifiziert oder gibt es andere Probleme (z. B. kann der Ordner nicht angelegt
werden), so wird die E-Mail im Filesystem abgelegt.
importcom.mex.SEND_ADMIN_MAIL
Y/N (Standardwert N)
Bei einem schwerwiegenden Fehler kann eine E-Mail von der KomA verschickt werden. Dabei wird die
fehlerhafte E-Mail identifiziert (Message-ID, Subject, From, ReceivedDate, SentDate), der Fehler
ausgegeben und der Ordner mitgeteilt, in dem die E-Mail abgelegt wurde. Die verwendete FromAdresse ergibt sich aus dem Wert der Einstellung importcom.from_adress.
importcom.mex.ADMIN_MAIL_ADRESS
Die Adresse, an welche die Admin-E-Mail verschickt werden soll.
importcom.mex.SEND_ADMIN_MAIL_TEXT
Der Nachrichtentext der Admin-E-Mail.
Default: Es ist ein schwerwiegender Fehler beim Abholen der Mail aufgetreten.
importcom.mex.SEND_ADMIN_MAIL_SUBJECT
Der Betreff der Admin-E-Mail.
Default: Schwerwiegender Fehler beim Comimport
Tabelle 5-9 zeigt die Parameter, die über die ecount-Maske: Import > Kommunikationseinstellung
definiert werden.
Seite 86 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Es ist jedoch auch möglich diese Einstellungen global via Config.properties zu hinterlegen!
Tabelle 5-9: Parameter für E-Mail-Empfang über Maske Kommunikationseinstellung
Parameter/Beschreibung
DISABLE_GSSAPI_AUTHENTICATION
Y/N (Standardwert N)
Deaktivierung der GSSAPI-Authentifizierung mittels Y (IMAP)
DISABLE_NTLM_AUTHENTICATION
Y/N (Standardwert N)
Deaktivierung der NTLM-Authentifizierung mittels Y (IMAP)
IMAP_FETCH_SIZE
Default (16)
Positive Ganzzahl, Angabe erfolgt in KB, bei Performance-Problemen sollte die fetch size
(mail.imap.fetchsize) erhöht werden.
Beispiel:
Erhöhung der Datenabfrage auf 1 MB pro Roundtrip: IMAP_FETCH_SIZE=1024
Der Parameter IMAP_FETCH_SIZE wird bei IMAP_PARTIALFETCH=N nicht berücksichtigt.
IMAP_PARTIALFETCH
Y/N (Standardwert N)
Deaktivierung von mail.imap.partialfetch mittels N. Bei großen Dateianhängen (~10 MB)
kam es zu Timeout-Fehlern beim Abholen von E-Mails vom Microsoft Exchange IMAP Server kommen,
dies kann mit der Einstellung N umgangen werden.
PLAIN_AUTHENTICATION
Y/N (Standardwert N)
Mit N kann die Plain-Authentifizierung deaktiviert werden (IMAP, POP3)
SSL
Y/N (Standardwert N)
Aktivierung von SSL mittels Y (IMAP, POP3)
STARTTLS
Y/N (Standardwert N)
Aktivierung von STARTTLS mittels Y (IMAP, POP3)
TRUSTING_HOSTS
Y/N (Standardwert N)
Mit Y wird allen Hosts (Zertifikaten) vertraut (IMAP, POP3)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 87 von 384
Diese Einstellungen können für das jeweilige E-Mail-Protokoll (IMAP oder POP3) auch global für alle
Konten über die Config.properties vorgenommen werden! Eine zusätzliche Einstellung in einen
Konto übersteuert hierbei die Einstellung aus der Config.properties.
Syntax: importcom.<E-Mail-Protokoll>.<Einstellung>=<Wert>
Beispiel: STARTTLS global aktivieren für alle IMAP-Verbindungen:
importcom.IMAP.STARTTLS=Y
Beispiel: STARTTLS global für alle POP3-Verbindungen aktivieren:
importcom.POP3.STARTTLS=Y
Beispiel: PLAIN_AUTHENTICATION für alle IMAP-Verbindungen deaktivieren
importcom.IMAP.PLAIN_AUTHENTICATION=N
5.3.2.1
5.3.2.1.1
Exchange – FAQ
PLAIN Authentifizierung (Login FAILED Error)
Exchange-Server haben einen Bug, der 3rd-Software mitteilt, dass als Authentifizierung AUTH=PLAIN
unterstützt wird, obwohl dies laut den Exchange Dokumentation offiziell nicht unterstützt wird. Das
führt dazu, dass JavaMail die PLAIN-Authentifizierung nutzt, die anschließend auf Fehler läuft. Als
Workaround muss PLAIN_AUTHENTICATION=N (Kommunikationseinstellungen bei Properties)
eingestellt werden.
5.3.2.1.2
PLAIN und NTLM Authentifizierung (Login FAILED Error)
Exchange 2010 hat ein ähnliches Problem mit PLAIN und NTLM Authentifizierung für shared E-MailAccounts (z. B. [email protected]/sharedMB). Bei normalen E-Mail-Konten auf dem gleichen E-MailServer, gibt es hingegen keine Probleme. Als Workaround wurden die Authentifizierungsmethoden
deaktiviert, der damit verbundene „normale“ IMAP LOGIN funktionierte anschließend.
Die relevanten Einstellungen sind (Kommunikationseinstellungen bei Properties):
DISABLE_NTLM_AUTHENTICATION=Y
PLAIN_AUTHENTICATION=N
5.3.2.1.3
Zugriff auf Shared Mailbox
Der Zugriff auf ein shared mailbox (freigegebenes Postfach) erfolgt im Exchange meist mit Hilfe eines
Alias-Namens und dem Passwort für das freigegebene Postfach, das Sie von Ihrem Exchange ServerAdministrator bekommen können.
Bei einigen E-Mail-Servern kann der Zugriff (anscheinend) auch in dieser Form konfiguriert sein:
[email protected]/SHAREDACCOUNT
DOMAIN\\USER\\SHAREDACCOUNT
Seite 88 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Sollte es wiederum zu einem Login FAILED Error kommen und führen auch die oberen Hinweise nicht
zum Erfolg, sollte die Konfiguration auf Grundlage des Office-Forum Eintrages, geprüft werden:
Tausug
<Forage>:
I trying to access shared mailbox running on our Exchange 2010 SP1. I found out that in Exchange
2007 since SP1 RU4 was a solution to use DomainName\Username\Alias as loginname (see
Microsoft-Support-Page). So I tried this type of loginname on Exchange 2010 but IMAP server always
returns Login FAILED Error.
<Antwort>:
In exchange 2010, you can also to the format DomainName\Username\Alias to log into the shared
mailbox. The error "logon failed" can be caused by the incorrect authentication settings or the IMAP
service is stopped. Please follow these steps:
5.3.2.1.4
Press windows logo key+R to open Run. Type: services.msc. Make sure that Microsoft
Exchange IMAP4 service is starting and the startup type is set to "Automatic".
Open EMC, expand to Server Configuration->Client Access.
In the middle panel, click your exchange CAS server, click POP3 and IMAP4 tab, right click
IMAP4 and choose properties.
In Authentication tab, select "Plain test logon (Basic authentication)", then click OK.
Open services.msc, restart Microsoft Exchange Transport services.
Zugriff mit STARTTLS
Dazu muss in der Oberfläche (Maske Kommunikationseinstellungen bei Properties) Folgendes hinterlegt
werden: STARTTLS=Y. Alternativ kann dies auch global über die Config.properties erfolgen:
importcom.IMAP.STARTTLS=Y (bei IMAP) importcom.POP3.STARTTLS=Y (bei POP3)
5.3.2.1.5
SSL/TLS vs. STARTTLS
Bei SSL/TLS wird (auf einem anderen Port) von Anfang an eine TLS-Verschlüsselung aufgebaut. Bei IMAP
auf Port 993 (anstelle von 143) und bei POP3 auf 995 (anstelle von 110).
Im Gegensatz dazu beginnt eine Verbindung bei dem STARTTLS-Verfahren immer unverschlüsselt auf
dem für Klartext vorgesehenen Port. Nach Eingabe des STARTTLS-Befehls wird eine Verschlüsselung
ausgehandelt. Diese Verschlüsselung findet dann in der gleichen Verbindung statt, es wird keine neue
Verbindung aufgebaut.
5.3.3
Weiterleitung nicht zu verarbeitender E-Mails
Es besteht die Möglichkeit, alle Nachrichten, die nicht verarbeitet werden, an eine Adresse
weiterzuleiten. Die Nachrichten, die nicht verarbeitet werden, ergeben sich aus den definierten
Filtereinstellungen der Importformate. Im Beispiel gibt es das Import-Format TEST_K_1 welches auf
die Dateierweiterung csv filtert. Damit werden nur CSV-Dateien verarbeitet.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 89 von 384
Abbildung 5-15: Beispiel: Weiterleitung nicht zu verarbeitender E-Mails
In der Maske Importkommunikation (MF_COMIMPORT) kann unter dem Punkt Operation nach dem
Abholen definiert werden, was für nicht verarbeitete Nachrichten stattfinden soll. Im Beispiel wird eine
Weiterleitung an die E-Mail-Adresse [email protected] eingerichtet.
Abbildung 5-16: Beispiel: Einrichtung Weiterleitung nicht zu verarbeitender E-Mails
5.3.4
E-Mail-Anhänge: Beschränkungen
Um Dateianhänge zu extrahieren, muss aus der E-Mail der Dateiname einwandfrei extrahierbar sein.
Dies wird über den Header Content-Typ und den Header Content-Disposition realisiert. Dabei gibt der
Content-Typ Aufschluss über den Dateninhalt (z. B. EDIFACT-Datei oder PDF-Datei oder Bild) und im
Content-Disposition wird über attachment der eigentliche Dateiname übergeben.
Wird der Dateiname nicht erkannt, wird dieser auch nicht abgehangen und damit auch nicht für die
Datenimport-Prozesse zur Verfügung gestellt.
Gültiger E-Mail-Anhang:
Content-Type: application/octet-stream;
name="ALOCAT_X6G_vom 20140201 bis 20140301.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="ALOCAT_X6G_vom 20140201 bis 20140301.txt"
Nicht gültiger E-Mail-Anhang:
Content-Type: text/plain; charset="ISO-8859-1"
Content-Disposition: inline
Content-Description: "Erdgas_Lastgang_Vin_3Tage.csv"
Seite 90 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
In diesem Beispiel ist ein Dateiname zwar angegeben, aber dieser steht nur als Beschreibung da, die
auch gefälscht sein könnte (oder zur eigentlichen Dateierweiterung gar nicht passt). Damit in den
weiteren Prozessen keine Fehler auftreten, wird die Beschreibung hier nicht ausgewertet.
5.3.5
Verschiebeoperation - Zielordner
Der Zielordner für Verschiebeoperationen bei IMAP-Verbindungen kann mit Präfix ./ relativ zum
Quellordner angegeben werden.
5.3.6
Abarbeitungsreihenfolge bei E-Mails
E-Mails werden in der Reihenfolge verarbeitet, in der sie vom E-Mail-Server geliefert werden. Wenn
dabei die chronologische Reihenfolge verletzt wird, sollte geprüft werden, an welcher Stelle dies
passiert. Das kann durchaus auch schon vor dem empfangenen E-Mail-Server passieren, sogar schon im
sendenden System.
Das Verhalten kann bei E-Mail-Servern ggf. unterschiedlich sein und auch unterschiedlich
konfiguriert werden. Dies ist Aufgabe der IT-Mitarbeiter, die den Server administrieren.
Eine Sortierung beim Abholen wäre grundsätzlich möglich (ist aktuell jedoch nicht implementiert), bringt
aber Risiken mit sich, wenn bspw. der Posteingang extrem voll ist. Außerdem würde dies vor allem auch
den Abholprozess unter ungünstigen Umständen merklich verlangsamen.
5.3.7
Probleme/Lösungen
5.3.7.1
Kontinuierliche Verschlechterung der Performance
Symptom: Das Abholen einer E-Mail benötigt immer mehr Zeit.
Prüfung:
-
ob der Parameter importcom.CHECK_PROCESSED_MAILS in der Config.properties mit
dem Wert Y gesetzt ist
ob das E-Mail-Konto als „read only“ konfiguriert wurde
ob alle Formate (Maske Importkommunikation [MF_COMIMPORT] > Reiter edit) mit einen
Aktionstyp versehen sind (Aktionstyp ungleich keine)
Es wird empfohlen, den Parameter importcom.CHECK_PROCESSED_MAILS nur zu aktivieren,
wenn zwingend der Bedarf der Doppeltimportprüfung beim Comimport besteht. Des Weiteren sollte das
Konto möglichst nicht als „read only“-Konto (Maske Kommunikationseinstellungen [MF_RIMPORT])
konfiguriert sein und alle Formate müssen über einen Aktionstyp (= die Endaktion) verfügen.
Anderenfalls wird eine Doppeltimportprüfung für jede zu importierende E-Mail ausgeführt.
Technisch: Es wird geprüft, ob in der Tabelle COM_MESSAGE bereits eine E-Mail mit der ID, dem
Sendedatum und der Größe existiert. Die Geschwindigkeit der Prüfung ist u.a. abhängig vom
Datenumfang in der Tabelle.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
5.3.7.2
Seite 91 von 384
Stillstand Comimport
Der Comimport hängt sich bei verschlüsselter E-Mail auf, wenn kein SMIME-Modul installiert ist
(eCount- 00049606). Des Weiteren kommt es zum Stillstand bei E-Mails mit korrupten Dateianhängen
(eCount- 00039377). Hintergrund: Der Comimport ist so gestrickt, dass alles verarbeitet wird was im
Posteingang gefunden und noch nicht verarbeitet ist, d.h. es werden alle Elemente verarbeitet, die in
der Tabelle COM_MESSAGE keinen Eintrag haben. Wenn die Verarbeitung einer E-Mail fehlschlägt bevor
der Eintrag in der Tabelle COM_MESSAGE erstellt werden kann, wird immer wieder versucht, diese zu
importieren (was dann zum „Stillstand“ führt).
Mit eCount- 00049606 wurde der Comimport um folgende Funktionalität erweitert: Es ist möglich, bei
schwerwiegenden Fehlern, die E-Mail aus dem Postfach zu verwerfen. Zusätzlich kann die E-Mail
entweder auf dem E-Mail-Server in einen separaten Ordner verschoben werden oder die E-Mail wird als
EML-Datei auf dem Filesystem abgelegt. Als weitere Option kann eine Admin-E-Mail verschickt werden,
die auf den Fehler hinweist.
Folgende Einstellungen sind für das Feature relevant:
-
importcom.mex.CLEAN_CORRUPT_MAIL
importcom.mex.ERROR_MAIL_FOLDER
importcom.mex.SEND_ADMIN_MAIL
importcom.mex.ADMIN_MAIL_ADRESS
importcom.mex.SEND_ADMIN_MAIL_TEXT
importcom.mex.SEND_ADMIN_MAIL_SUBJECT
importcom.from_adress
Per Default ist das Feature aktiviert (importcom.mex.CLEAN_CORRUPT_MAIL=Y). Wird kein
Verzeichnis auf den E-Mail-Server angegeben, in welches die fehlerhaften E-Mails verschoben werden
sollen (importcom.mex.ERROR_MAIL_FOLDER), wird die E-Mail im Filesystem abgelegt. Das
Verzeichnis ergibt sich aus importcom.mail_dir (Standardwert importmail), es wird für jedes
Konto ein Ordner angelegt welcher mit IA beginnt, gefolgt von der ID der Kommunikationseinstellung. In
diesem Ordner werden die Unterordner ERROR und SMIME_MAILS angelegt, in denen die E-Mails, in
ZIP-Dateien gepackt, abgelegt werden. Der Ordner SMIME_MAILS signalisiert E-Mails, die signiert oder
verschlüsselt sind, jedoch wird der KomA-Server ohne SMIME-Modul betrieben. Im Ordner ERROR
landen alle anderen fehlerhaften E-Mails.
Beispielkonfiguration:
importcom.mex.CLEAN_CORRUPT_MAIL=Y
importcom.mex.SEND_ADMIN_MAIL=Y
[email protected]
Hierbei werden fehlerhafte E-Mails im Filesystem abgelegt. Die Kommunikationseinstellung trägt die ID
7485. Zusätzlich wird eine Admin-E-Mail erzeugt.
Seite 92 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 5-17: Stillstand Comimport: Konfiguration für fehlerhafte E-Mails
Abbildung 5-18: Stillstand Comimport: Verzeichnis für fehlerhafte E-Mails
Abbildung 5-19: Beispielkonfiguration und Ergebnis zur Behebung Stillstand Comimport
5.3.7.3
Anhänge werden als Winmail.dat gespeichert
Symptom:
Der Import von Dateien über ein E-Mail-Konto funktioniert nicht, da alle Anhänge als winmail.dat
abgespeichert werden. Eine Weiterverarbeitung mit dem KomA-Server ist anschließend nicht möglich.
Lösung:
Dieses Problem lässt sich nur auf der Seite des E-Mail-Servers (Exchange-Server) beheben. Microsofts
proprietäres Format TNEF (Transport Neutral Encapsulation Format) ist primär für den Fehler zuständig.
TNEF muss vom Administrator deaktiviert werden, siehe z. B. http://support.microsoft.com/kb/241538.
5.3.7.4
Update auf JavaMail 1.5.0
Auf einigen Systemen kommt es nach dem Update zu Problemen, u. U. hilft folgende Einstellung in der
Importkommunikation:
PLAIN_AUTHENTICATION=N
DISABLE_NTLM_AUTHENTICATION=Y
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 93 von 384
Dafür muss Addon 716a installiert sein:
http://support.robotron.de/ecount-com-server/#716a_AO_JavaMail%20API%201.5.0%20Release.
5.3.7.5
MessageRemovedException
Mit Version 4.0.2.47 von importcom/connection_email.jar wird bei einer
MessageRemovedException der Importprozess nicht mehr beendet. Die E-Mail wird verworfen
und es wird mit der Abarbeitung der weiteren E-Mails fortgefahren. Zusätzlich wird im KomA-Log eine
sprechende Meldung generiert.
Zu einer MessageRemovedException kommt es, wenn eine E-Mail von einer externen Quelle
(externen Nutzer) während der Abarbeitung in der KomA gelöscht wurde.
5.3.7.6
Timeout bei großen Mails (Dateianhänge ca. 10MB)
Ein Workaround wurde mit Version 4.0.2.49 der importcom/connection_email.jar implementiert.
Der Import von E-Mails mit größeren Dateianhängen bricht mit einem Timeout ab. Bei kleineren E-Mails
gibt es keine Probleme.
Auszug aus einer Kunden-LOG-Datei:
07.03.2014 09:41:55 DEBUG MailImportMessage:401 processApplication()
ProcessContent - application: application/octet-stream;
name=MSCONS_TL_xxxx_20140307_01153706901.txt
07.03.14 09:48:02 Error: Timeout checking account 1736
Javamail-NOTES:
4. Due to a problem in the Microsoft Exchange IMAP server, insufficient
number of bytes may be retrieved when reading big messages. There
are two ways to workaround this Exchange bug:
(a) The Exchange IMAP server provides a configuration option called
"fast message retrieval" to the UI. Simply go to the site, server
or recipient, click on the "IMAP4" tab, and one of the check boxes
is "enable fast message retrieval". Turn it off and the octet
counts will be exact. This is fully described at
http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q191504
(b) Set the "mail.imap.partialfetch" property to false. You'll have
to set this property in the Properties object that you provide to
your Session.
Die Einstellung mail.imap.partialfetch kann über die Maske Kommunikationseinstellungen
mittels IMAP_PARTIALFETCH=N deaktiviert werden. Per Standard ist diese Einstellung aktiviert (Y).
Seite 94 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 5-20: Maske Kommunikationseinstellungen: IMAP_PARTIALFETCH=N
Sollte diese Einstellung nicht möglich sein oder nicht zum gewünschten Ergebnis führen, kann über
IMAP_FETCH_SIZE=x (x = positive Ganzzahl) die Größe der abgefragten Daten pro Roundtrip erhöht
werden. Die Angabe erfolgt in KB (Default: 16).
Beispiel:
Erhöhung der Datenabfrage auf 1 MB pro Roundtrip: IMAP_FETCH_SIZE=1024.
Der Parameter IMAP_FETCH_SIZE wird bei IMAP_PARTIALFETCH=N von Javamail nicht
berücksichtigt.
Abbildung 5-21: Maske Kommunikationseinstellungen: IMAP_FETCH_SIZE
5.3.7.7
Problem mit Nachrichtentext (Msg.)
Im Importkonto kann mit der Option Msg. das Speichern des Nachrichtentextes aktiviert werden. Ist
diese Option gesetzt, wird der Nachrichtentext per Default in eine Textdatei gespeichert. Der Name
dieser Textdatei ergibt sich hierbei aus dem Dateinamen der in der E-Mail enthaltenen Nachricht
zuzüglich .txt.
In Kombination mit der Option ZIP kann dies zu unerwarteten Fehlern führen, wenn in der
datenimport.ini (auf der KomA im config-Verzeichnis) ein Importeintrag aller *.txt FORMAT
Verzeichnisse definiert ist. Dann wird nämlich auch versucht, die Nachrichtentextdatei zu importieren,
was bei den meisten Formaten zu Fehlern führt (z. B. bei EDI zum Fehler „is not an EDIFACT file“). Treten
solche Fehler auf, muss das Speichern des Nachrichtentextes deaktiviert werden (s. Abbildung 5-22).
Abbildung 5-22: Maske Importkommunikation: Option Msg.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
5.3.7.8
Seite 95 von 384
IMAP - Ordnername mit /
Mit dem IMAP-Protokoll sind keine / in Ordnernamen möglich, da dies das Trennzeichen für die
Ordnernamen ist. Mit neueren Outlook-Versionen, in Verbindung mit dem Exchange, ist dies jedoch
möglich, da diese über Exchange Server Protocols kommunizieren und nicht an die Restriktionen des
IMAP-Protokolls gebunden sind.
5.3.7.9
Connection dropped by server?
Bei einem E-Mail-Konto bei outlook.office365 kam es zu dieser Fehlermeldung. Das Konto war mit der
Einstellung STARTTLS=Y versehen. Die Einstellung STARTTLS=Y wurde gegen SSL=Y ausgetauscht,
anschließend funktionierte die Verbindung wieder fehlerfrei.
5.3.7.10 Problem beim Bestimmen des Content-Type (RFC1341)
In den E-Mails wird über den Header Content-Type die Information übergeben, ob der Nachrichteninhalt
beispielsweise signiert oder verschlüsselt ist. Der Aufbau ist unter anderem in RFC1341 spezifiziert und
sieht vor, dass / nur gequoted verwendet werden kann. D.h.
Content-Type: multipart/signed; …protocol=application/pkcs7-signature;
micalg=sha1
ist falsch, da hier / ohne Quotes verwendet wird, richtig:
Content-Type: multipart/signed; …protocol="application/pkcs7signature"; micalg=sha1
5.3.7.11 Anhänge werden als GZIP (*.gz) abgelegt obwohl diese gar nicht komprimiert sind
Mit eCount- 00055495 wurde eine Problematik entschärft, bei der E-Mail-Anhänge, die nicht
komprimiert jedoch als solche gekennzeichnet sind, nicht importiert beziehungsweise unter falschem
Dateinamen abgelegt wurden. Die Ursache des Problems lag an einer Middleware, welche die E-Mail
bereits vorverarbeitet hat. Dabei wurde der Anhang entpackt und eine neue E-Mail mit dem originalen
E-Mail-Header zusammengebaut. So wurde fälschlicherweise signalisiert, dass der E-Mail-Anhang
komprimiert ist, was auf der Empfangsseite zum Fehler führte.
Der Header für die E-Mail mit nicht komprimiertem Dateianhang sah beispielsweise so aus:
Content-Type: application/x-gzip; name=MSCONS_TL_XXX.txt.gz
Content-Disposition: attachment; filename=MSCONS_TL_XXX.txt.gz
Mit dem Update aus dem oben genannten KM erfolgt nun eine Prüfung, ob der Anhang wirklich GZIP
komprimiert ist. Sollte dies nicht der Fall sein, wird die Datei umbenannt sofern im E-Mail-Header noch
eine zweite Dateierweiterung extrahiert werden kann. In diesen Fall würde die Datei also als
MSCONS_TL_XXX.txt abgelegt werden (.gz wird entfernt).
5.3.7.12 Anhänge mit Umlauten werden nicht korrekt angezeigt
Falls Datei-Anhänge mit Umlauten im Namen nicht korrekt angezeigt werden, kann in user_env.(cmd/sh)
mit der Java-Option -Dmail.mime.encodefilename=true eine Kodierung der Dateinamen
erzwungen werden.
Seite 96 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Auszug aus der Java-Mail-Dokumentation:
mail.mime.encodefilename If set to "true", the setFileName method uses the MimeUtility
method encodeText to encode any non-ASCII characters in the filename. Note that this encoding
violates the MIME specification, but is useful for interoperating with some mail clients that use this
convention. The default is false.
5.3.7.13 Warnung bei mehr als 1000 E-Mails im Postfach
Realisiert in eCount- 00059632. Die Fehlermeldung lautete:
Es befinden sich X E-Mails im Postfach! Gegebenenfalls sind fehlende Endaktionen (z. B. Löschen oder
Verschieben der E-Mails) in der Maske Importkommunikation (MF_COMIMPORT) für dieses Konto
Ursache für die große Anzahl an E-Mails. Dies kann die Performance des Comimports stark negativ
beeinflussen, da für jede E-Mail eine Prüfung stattfindet ob die E-Mail bereits importiert wurde! Bitte
prüfen Sie die Endaktionen für das Konto (ID: Y, Postfach: Z)!
Hinweise:
Hintergrund: Es tauchen immer wieder Meldungen nach dem Motto „Comimport geht nicht!“ oder
„Comimport geht viel zu langsam!“ auf. Ursache sind hier meist Fehlkonfigurationen, die jedoch nur
über Debug-Ausgaben sauber verifiziert werden können. Beispielsweise wenn bei einem E-MailKonto keine Endaktionen definiert wurden (z. B. Verschiebe die E-Mails in Unterordner oder lösche
diese vom Postfach). Bei so einer Konfiguration wird für jede E-Mail eine Prüfung vorgenommen ob
die E-Mail bereits importiert wurde.
Im Laufe der Zeit, mit wachsender Anzahl an E-Mails im Postfach, dauern diese Prüfungen immer
länger! Dies ist meist die Ursache der Meldungen „Comimport geht viel zu langsam!“. Wird der
Datenversand-Job periodisch gestartet (z. B. über Task Scheduler) und ist dieser so konfiguriert, dass
ein Neustart nach einer gewissen Zeit auftritt (z. B. Aufgabe beenden falls diese länger ausgeführt
wird als x Stunden) kann dies die Ursache für die Meldungen „Comimport geht nicht!“ sein. Hier
beschäftigt sich die KomA also mit den Prüfungen ob die E-Mails bereits importiert wurden und wird
vor dem Ende der Prüfung durch den Task Scheduler beendet (was anschließend in Endlosschleife
weitergeht).
Siehe auch 15.1.
5.3.7.14 ConnectionException: No login methods supported
Die Fehlermeldung deutet auf eine Änderung der Verbindung zum Mailserver hin. Über das Debuggen
der Mailverbindung kann unter Umständen folgende Information zu Tage kommen:
* CAPABILITY IMAP4 IMAP4rev1 LOGINDISABLED STARTTLS UIDPLUS ID…
Die LOGINDISABLED-Einstellung bedeutet, dass kein LOGIN möglich ist bevor das STARTTLS-Kommando
ausgeführt wurde. Das bedeutet also, dass der Server Plaintext Authentication über unsichere
Verbindungen verhindert.
Das STARTTLS-Kommando kann für alle Verbindungen global über die Config.properties konfiguriert
werden (importcom.IMAP.STARTTLS=Y) oder für jede Einstellung separat (STARTTLS).
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
5.4
Seite 97 von 384
FILE-Konto
5.4.1
Konfigurationsparameter
Parameter/Beschreibung
Default
importcom.file.JCIFS
N
Y/N. In Netzlaufwerken wird die Open-Source-Bibliothek von http://jcifs.samba.org/
verwendet, die auch mit spezielleren Netzwerkkonfigurationen (Nutzer und
Passwort) zurechtkommt (SMB Kommunikationsprotokoll).
Diese Einstellung kann auch für eine einzelne Verbindung im ecount gepflegt
werden. Dafür muss in der Kommunikationseinstellung (MF_RIMPORT) im Feld
„Properties“ die Anweisung: JCIFS=Y hinterlegt werden.
5.4.2
Beispielkonfiguration für SMB-Verzeichnis
Eine Verbindung auf eine geschützte Netzwerkfreigabe über das SMB-Protokoll kann wie folgt definiert
werden.
Als Typ wird „file“ gewählt, bei Hostname wird der entsprechende Rechner angegeben. Benutzername
und Passwort und das Zielverzeichnis werden definiert. In Properties wird JCIFS=Y hinterlegt um die
Nutzung der richtigen Bibliothek zu aktivieren.
Seite 98 von 384
5.4.3
Probleme/Lösungen
5.4.3.1
Cannot run program "net use …“
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Es wird über eine File-Verbindung auf eine Ressource im Netzwerk zugegriffen. Auf Windows-Systemen
wird diese Verbindung über das net use-Kommando durchgeführt. Ausgehend von der
Fehlermeldung ist der Nutzer, mit dem die KomA ausgeführt wird, jedoch nicht in der Lage diesen Befehl
zu nutzen.
Mögliche Lösungen:
-
Gegebenenfalls liegt ein Rechteproblem vor. Der Nutzer, mit dem die KomA ausgeführt wird,
muss das Recht haben, das net use-Kommando auszuführen.
Eventuell liegt eine fehlerhafte Version von importcom/connection_file.jar vor  Prüfung, ob
die Version kleiner 4.0.2.12 ist!
Bei Netzwerkfreigaben sollte das SMB-Protokoll verwendet werden, dies wird über die
Config.properties mit folgender Einstellung aktiviert: importcom.file.JCIFS = Y
Die Einstellung importcom.file.JCIFS = Y wirkt global für alle File-Verbindungen. Wenn für
eine File-Verbindung ein Nutzer (siehe Maske Kommunikationseinstellungen (MF_RIMPORT) in der
Spalte Benutzername) definiert wurde, wird die SMB-Bibliothek verwendet. Soll dies für eine
Verbindung nicht geschehen, muss dies explizit in der Oberfläche für diese Verbindung mittels
JCIFS=N deaktiviert werden. Es ist außerdem zu prüfen, ob die Angabe des Nutzers überhaupt
notwendig ist, denn normale Dateiverzeichnisse benötigen keine Benutzerauthentifizierung.
Abbildung 5-23 File-Verbindung ohne Nutzung des SMB-Protokolls
5.4.3.2
jcifs.smb.SmbAuthException: Logon failure: account currently disabled
Die Fehlermeldung kann auftreten, wenn der JCIFS-Modus aktiviert und der Benutzer gesperrt ist.
5.5
FTP-Konto
Die zentralen Verbindungsparameter werden über ecount-Masken (MF_RIMPORT, MF_COMIMPORT)
konfiguriert. Dabei ist das Feld Properties für die Angabe aller weiteren Parameter zuständig.
Maske: Kommunikationseinstellungen
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 99 von 384
Abbildung 5-24: Maske Kommunikationseinstellungen: Beispiel - Robotron-FTP-Verbindungen
Auf dem KomA-Server existieren 2 FTP-Ausprägungen, die über die Config.properties und den Parameter
importcom.FTP.HandlerClass gesteuert werden. Aktuell gültige Parameterwerte sind:
-
de.robotron.ecount.importcom.ftp.ImportFTPConnection
oder
-
de.robotron.ecount.importcom.ftp.ImportFTPConnection2
Hinter ImportFTPConnection verbirgt sich die ältere gnu.inet.ftp-FTP-Bibliothek.
ImportFTPConnection2 nutzt als Basis die modernere FTP4J-Bibliothek. Es wird die Nutzung der
ImportFTPConnection2 empfohlen, d.h. folgender Eintrag ist in der Datei Config.properties zu
hinterlegen:
importcom.FTP.HandlerClass=de.robotron.ecount.importcom.ftp.ImportFTPC
onnection2
Eine Beispiel-Konfiguration ist in Anlage 6 (Beispielkonfiguration FTP-Empfang für EEX-Daten) hinterlegt.
5.5.1
Konfigurationsparameter
Tabelle 5-10 zeigt die Parameter für den Empfang über FTP, die in der Config.properties unter
importcom.FTP.<Parameter> definiert werden.
Seite 100 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Tabelle 5-10: Parameter für Empfang über FTP
Parameter/Beschreibung
Standardwert
FTPConnection2OldDataTransferBehaviour
N
Y/N. Setzt das Verhalten des passiven Datentransfers der FTP4j-Bibliothek (Version >
1.5) auf den Zustand einer Version 1.5
Tabelle 5-11 zeigt die Parameter, die über die ecount-Maske: Import > Kommunikationseinstellungen
definiert werden. Die speziellen Einstellungen müssen im Feld Properties mit der Kombination
<parameter>=<wert> hinterlegt werden.
Beispiel:
Abbildung 5-25: Maske Kommunikationseinstellungen: FTPConnection2OldDataTransferBehaviour
Tabelle 5-11: Parameter für Empfang über Maske Kommunikationseinstellung
Parameter/Beschreibung
Standardwert
CHECK_FILE_SIZE
Y/N. Über den Parameter CHECK_FILE_SIZE=N kann die
Dateigrößenprüfung zwischen FTP und KomA deaktiviert werden.
Y
COMPRESS*
Y/N. Datenkomprimierung (MODE Z) kann damit aktiviert werden.
Bandbreite kann damit auf Kosten von CPU eingespart werden.
Beispiel:COMPRESS=Y
passive
Y/N, passive=N steht für aktives FTP
N
N
Bei security=FTPS oder
FTPES wird die Einstellung
automatisch aktiviert = Y (true)
security*
FTPS
- FTP over implicit TLS/SSL, anders als bei FTPES kann hier nicht über FTP
die Verbindung „verhandelt“ werden. Der Client muss eine
verschlüsselte Verbindung aufbauen, anderenfalls kann der Server
die Verbindung sofort unterbrechen.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Seite 101 von 384
Standardwert
FTPES
- FTP over explicit TLS/SSL, hierbei muss der Client beim Server die
verschlüsselte Verbindung anfragen. Wird dies nicht gemacht, kann
der Server die Verbindung ablehnen, limitieren oder ohne Security
fortführen (Einstellungssache beim Server)
FTP
- basic FTP security
Beispiel:
Security=FTPS
timeout
Timeout, bevor der FTP-Import bei (möglicher) Inaktivität
abgebrochen wird. Angabe erfolgt in Sekunden
35
* Einstellung nur bei ImportFTPConnection2 möglich, d.h. wenn in der Datei Config.properties
Folgendes definiert ist:
importcom.FTP.HandlerClass=de.robotron.ecount.importcom.ftp.ImportFTPC
onnection2
5.5.2
PROXY_TYPE=FTP_ACCT
Umsetzung in eCount- 00041087 (lfd. Nr. 4516). Eine FTP-Verbindung wird über folgende Syntax
aufgebaut: username@hostname proxyusername, Password, AccountPassword
Gleichzeitig erfolgt die Verbindung über einen FTP-Proxy, der jedoch direkt angesprochen wird.
Die Implementierung ist nur für ImportFTPConnection2 gültig d.h. auf der KomA muss in der
Datei Config.properties Folgendes hinterlegt sein:
importcom.FTP.HandlerClass=de.robotron.ecount.importcom.ftp.ImportFT
PConnection2
Angabe in der Maske Kommunikationseinstellungen (MR_RIMPORT), es werden zwei Varianten
unterstützt:
Variante 1
-
Im Feld Hostname wird die Adresse zum Proxy angegeben z. B. robotron-gate.robotron.de
Im Feld Benutzername muss Nutzer@Host angegeben werden z. B.
[email protected]
Im Feld Passwort wird das Passwort für den Nutzer (user123) angegeben
bei Properties:
PROXY_TYPE=FTP_ACCT
PROXY_PASS=xyz
PROXY_USER=123
Seite 102 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 5-26: Maske Kommunikationseinstellungen: Beispiel FTP_ACC
Variante 2
-
Im Feld Hostname wird die Adresse zum FTP-Host angegeben z. B. ftp1.meteomedia.ch
Im Feld Benutzername wird der Nutzer eingetragen z. B. user123
Im Feld Passwort wird das Passwort für den Nutzer (user123) angegeben
bei Properties:
PROXY_TYPE=FTP_ACCT
PROXY_PASS=xyz
PROXY_USER=123
PROXY_HOST=rds-gate.rds.com
PROXY_USER wird auch als Firewall user name bezeichnet [proxyusername], PROXY_PASS ist das
Passwort von PROXY_USER [AccountPasswort].
5.5.3
Dynamische Pfadangaben
Mit eCount- 00056607 sind dynamische Pfandangaben möglich, siehe 5.1.7.
5.5.4
Probleme/Lösungen
Zu allgemeinen Verbindungsproblemen siehe 7.4.6.1.
5.5.4.1
FTP Hardware
Aufgrund unterschiedlichster Hardwarekonfigurationen kann keine exakte Aussage getroffen werden,
welche Bibliothek auf welchem System am besten funktioniert. Durch Änderungen an Hardware oder
neuen Einstellungen kann jedoch der Austausch der FTPConnection (Einstellung
importcom.FTP.HandlerClass) Probleme beseitigen.
Daher sollte geprüft werden, welche Einstellung in der Config.properties vorhanden ist und testweise die
andere (aktuell gibt es nur zwei) verwendet werden.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 103 von 384
Variante 1:
importcom.FTP.HandlerClass=de.robotron.ecount.importcom.ftp.ImportFTPC
onnection2
Variante 2:
importcom.FTP.HandlerClass=de.robotron.ecount.importcom.ftp.ImportFTPC
onnection
5.5.4.2
Passives FTP
Beim passiven FTP (auch „Passive Mode“) sendet der Client ein PASV- oder ein EPSV-Kommando, der
Server öffnet einen Port und übermittelt diesen mitsamt IP-Adresse an den Client. Diese Technik wird
eingesetzt, wenn der Server keine Verbindung zum Client aufbauen kann. Dies ist beispielsweise der Fall,
wenn der Client sich hinter einem Router befindet, der die Adresse des Clients mittels NAT umschreibt
oder wenn eine Firewall das Netzwerk des Clients vor Zugriffen von außen abschirmt.
Die Einstellung wird für beide Varianten unter Import > Kommunikationseinstellungen > Feld Properties
mit passive=Y (=Passives FTP) oder passive=N (= Aktives FTP) angegeben.
ImportFTPConnection nutzt per Default immer aktives FTP.
ImportFTPConnection2 nutzt aktives FTP für alle Verbindungen für die die security-Einstellung
nicht angegeben oder auf FTP steht.
Bei fehlerhaftem Verbindungsaufbau z. B. bei SocketTimeoutException: Read time out
sollte ein Verbindungsaufbau mit modifizierter passive-Einstellung vorgenommen werden.
5.5.4.3
FTPListParseException (eCount- 00044835)
Wenn beim FTP-Import eine FTPListParseException kommt, verwendet der FTP-Server eine, für die FTPBibliothek unbekannte, Antwortsyntax beim LIST-Befehl.
FTP4J (ImportFTPConnection2) unterstützt aktuell (Version 1.7.2) folgende Antwortformate.
- UNIX style and variants (i.e. MAC style)
- DOS style
- NetWare styles
- EPLF
- MLSD
Als Workaround kann die Einstellung„USE_LIST_NAMES=Y in der Kommunikationseinstellung
(MF_RIMPORT) aktiviert werden. Damit wird ein alternatives Vorgehen zur Ermittlung der Daten auf
dem Server aktiviert. Dieses Verfahren ist aber weniger effizient und steht nur für die
ImportFTPConnection2 zur Verfügung!
5.5.4.4
Fehler wegen falscher Dateigröße (eCount- 00044975)
Der FTP-Server liefert falsche Dateigrößen. Damit wird der Import mit folgendem Fehler abgebrochen:
Fehler beim Uebertragen der Datei Y 1 soll (2)
Seite 104 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Über den Parameter CHECK_FILE_SIZE=N (Standard Y) in der Maske Kommunikationseinstellungen
> Feld Properties kann die Dateigrößenprüfung zwischen FTP und KomA deaktiviert werden. Damit
konnten auf dem betreffenden Kundensystem die Dateien geladen werden. (Es kann sich hierbei jedoch
nur um einen Workaround handeln! Der Fehler ist primär beim FTP-Server angesiedelt.)
Dieser Schalter ist nur bei der folgenden Einstellung in der Config.properties gültig:
importcom.FTP.HandlerClass=de.robotron.ecount.importcom.ftp.ImportFT
PConnection2
(nicht für ImportFTPConnection)!
5.5.4.5
FTP-Fehler: 425 Unable to build data connection
Mit hoher Wahrscheinlichkeit ist zwischen KomA und Ziel-FTP eine Firewall-/Router Konfiguration
eingestellt. Ob die Firewall- und Router-Regeln korrekt eingestellt sind, ist bspw. mit einem FTPProgramm überprüfbar, welches auf dem KomA-Server mit dem gleichen Nutzer wie die KomA
ausgeführt wird und die FTP-Verbindung aufbauen kann. Ist dies der Fall, sollte überprüft werden ob das
Verbindungskonto im Passiv-Modus betrieben wird (Standardeinstellung ist der aktive Modus).
Dies kann global in der Config.properties via importcom.FTP.passive=Y vorgenommen werden
oder direkt am Konto mit der Einstellung passive=Y.
5.6
SFTP-Konto
Das SSH File Transfer Protocol oder Secure File Transfer Protocol (SFTP) ist eine für die Secure Shell (SSH)
entworfene Alternative zum File Transfer Protocol (FTP), die Verschlüsselung ermöglicht. SFTP läuft
standardmäßig auf den Port 22.
5.6.1
Konfigurationsparameter
Neben den Standardeinstellungen (Nutzer, Passwort, Verzeichnis, Port, Host) können noch folgende
weitere Einstellungen im Feld Properties vorgenommen werden.
Tabelle 5-12 Parameter für Empfang über SFTP
Parameter/Beschreibung
PROXY_TYPE
Konfiguration des Typs des Proxy, mögliche Werte sind HTTP, SOCKS4, SOCKS5
Global via Config.properties: importcom.sftp.PROXY_TYPE
PROXY_HOST
Host des Proxyservers
Global via Config.properties: importcom.sftp.PROXY_HOST
PROXY_PORT
Port des Proxyservers
Global via Config.properties: importcom.sftp.PROXY_PORT
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 105 von 384
Parameter/Beschreibung
PROXY_USER
Nutzer zur Anmeldung am Proxy
Global via Config.properties: importcom.sftp.PROXY_USER
PROXY_PASS
Passwort zur Anmeldung am Proxy
Global via Config.properties: importcom.sftp.PROXY_PASS
SORT_ORDER
Die Reihenfolge der zu importierenden Dateien kann über die Einstellung modifiziert werden, dabei
stehen folgende Modi zur Verfügung: TIMESTAMP und TIMESTAMP_DESC
TIMESTAMP
Es wird aufsteigend nach dem geändert Zeitstempel (lastModifiedTime) sortiert First-In-First-Out
(FIFO).
TIMESTAMP_DESC
Es wird absteigend nach dem geändert Zeitstempel (lastModifiedTime) sortiert Last-In-First-Out
(LIFO)
Default: Sortierung über den Dateinamen (Wird durch die SFTP-Bibliothek vorgegeben).
Beispiel FIFO (per Properties in der Maske Kommunikationseinstellungen - MF_RIMPORT)
SORT_ORDER=TIMESTAMP
Beispiel LIFO (per Properties in der Maske Kommunikationseinstellungen - MF_RIMPORT)
SORT_ORDER=TIMESTAMP_DESC
Diese Einstellung kann auch global für alle SFTP-Konten über die Config.properties-Datei
vorgenommen werden. Sollen alle Import-SFTP-Konten nach den FIFO Prinzip arbeiten, reicht
folgende Einstellung in der Config.properties:
importcom.sftp.SORT_ORDER=TIMESTAMP
Wird die Einstellung sowohl global (Config.properties) als auch für das SFTP-Konto FIFO (per
Properties in der Maske Kommunikationseinstellungen - MF_RIMPORT) eingestellt, so hat die
Einstellung am Konto Vorrang.
CONNECTION_TIMEOUT
Ganzzahl zwischen -1 und 900 (Default 60), mit -1 wird das Feature deaktiviert. Gibt die Anzahl an
Sekunden an die der Verbindungsaufbau dauern kann. Diese Funktion ist notwendig, da es bei
Problemen beim SFTP-Verbindungsaufbau zum Stillstand des gesamten KomAs (Comimport) kam.
Global via Config.properties: importcom.sftp.CONNECTION_TIMEOUT
Beispielkonfiguration:
Seite 106 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 5-27: Maske Kommunikationseinstellungen: Beispiel SFTP
5.6.2
Reihenfolge der abzuholenden Dateien
Mit eCount- 00058770 wurde die Möglichkeit geschaffen, den Import in Reihenfolge nach
chronologischer Zeit abzuarbeiten, siehe dazu die Einstellung SORT_ORDER in 5.6.1.
5.6.3
Dynamische Pfadangaben
Mit eCount- 00056607 sind dynamische Pfandangaben möglich, siehe 5.1.7.
5.6.4
ImportCommunicationKeytool
Ist eine einfache Kommandozeilen-Anwendung, die mit comimport_keytool.(cmd|sh) gestartet wird.
Damit können die privaten Schlüssel, die ggf. für eine SFTP-Verbindung benötigt werden, auf der KomA
hinterlegt werden.
Die Implementierung basiert auf Drittbibliotheken, die seit einigen Jahren nicht mehr frei verfügbar
sind. Aktuell sind keine Probleme bei der Nutzung dieser Bibliotheken bekannt. Die Bedienung der
Kommandozeilen-Anwendung ist nicht mehr zeitgemäß.
5.6.4.1
Voraussetzungen
Benötigte JAR-Dateien unter lib\3rd\j2ssh\
-
putty-pk-1.1.0.jar
openssh-pk-1.1.0.jar
j2ssh-core.jar
j2ssh-common.jar
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 107 von 384
Zusätzlich muss ein Passwort in der Config.properties für die Einstellung
importcom.KeyStore.password hinterlegt werden.
z. B. importcom.KeyStore.password=myUltraPasswort
Das Skript comimport_keytool.cmd|sh kann von hier bezogen werden (Linux oder Windows).
5.6.4.2
Vorgehen
Der private Schlüssel muss unverschlüsselt über die Kommandozeilenanwendung
comimport_keytool.(cmd|sh) importiert werden. Über das Tool wird der private Schlüssel anschließend
verschlüsselt abgelegt.
Diese Verschlüsselung bietet definitiv keinen 100% Schutz! Daher sollten auf die KomA nur
ausgewählte und berechtigte Personen Zugriff haben!
Falls der Schlüssel in einem Keystore liegt, kann dieser z. B. mit dem Tool KeyStore-Explorer extrahiert
werden.
Beispiel:
Abbildung 5-28: Privater Schlüssel mit KeyStore-Explorer als OpenSSL extrahieren (Teil 1)
Abbildung 5-29: Privater Schlüssel mit KeyStore-Explorer als OpenSSL extrahieren (Teil 2)
Anschließend muss die SFTP-Verbindung im robotron*ecount (MF_COMIMPORT) eingerichtet und
„aktiv“ (Konto aktiviert) sein.
Nun das Skript (comimport_keytool) starten:
-
l (über den Befehl List [l] werden die Verbindungen aufgelistet, ID des SFTP-Kontos suchen)
i (über den Befehl Insert [i] wird der Schlüssel eingefügt)
Die Datei wird anschließend standardmäßig in der KomA unter *KeyStore\ImportCom\ abgelegt, der
Name der Datei beinhaltet dabei die ID des Kontos.
Seite 108 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 5-30: Private Schlüssel für das SFTP-Konto mit der ID 7645
5.6.5
Probleme/Lösungen
5.6.5.1
Endaktion „umbenennen“: no action value for action RENAME
In der Maske Importkommunikation (MF_COMIMPORT) ist im Reiter edit für ein Format der Aktionstyp
umbenennen ausgewählt worden, jedoch wurde keine Angabe in der Spalte Aktionswert
vorgenommen.
5.6.5.2
Endaktion „umbenennen“: Error renaming files to … no wildcard in action value
In der Maske Importkommunikation (MF_COMIMPORT) ist im Reiter edit für ein Format der Aktionstyp
umbenennen ausgewählt worden. In der Spalte Aktionswert steht eine Zeichenkette ohne Wildcard (*)
(z. B. „done“). Aktuell wird jedoch nur die Umbenennung der Dateierweiterung unterstützt. Es ist also
nicht möglich, alle importierten Dateien nach „done“ umzubenennen. Folglich muss der Aktionswert
also ein führendes Wildcard (* aufweisen), z. B. „*.done“.
5.7
HTTP-Konto
Die für das HTTP-Konto relevanten Einstellungen werden global über die user_env.cmd im KomA-Server
eingestellt *KomA*\config. Die folgenden Parameter werden unterstützt:
Tabelle 5-13 Parameter für das HTTP-Konto
Parametername
Beschreibung
http.proxyHost
The host name of the proxy server
http.proxyPort
The port number, default value is 80
A list of hosts that should be reached directly, bypassing the proxy. This is a
list of patterns separated by |. The patterns may start or end with a * for
http.nonProxyHosts
wildcards. Any host matching one of these patterns will be reached
through a direct connection instead of through a proxy.
http.proxyUser
Proxy-User (optional)
http.proxyPassword Password for the Proxy-User (optional)
Hinweise:
Sollte https statt http genutzt werden, müssen alle Parameter mit https beginnen.
Ist https als Protokoll ausgewählt und wurden die http-Parameter (http.proxyHost, http.proxyPort,
..) definiert, so werden die http-Parameter automatisch auf die https-Parameter übertragen.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 109 von 384
Beispiel:
user_env.cmd:
SET JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyHost=proxy.robotron.de
SET JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyPort=80
SET JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.nonProxyHosts=*.robotron.de
SET JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyUser=<user>
SET JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyPassword=<password>
Mit diesen Einstellungen werden HTTP- und HTTPS-Verbindungen über den Proxy-Server
(proxy.robotron.de mit Port 80) aufgebaut. Alle Verbindungen zu *.robotron.de nutzen den
Proxy-Server nicht.
5.7.1
NTLM-Support (NT LAN Manager)
Die Unterstützung für NTLM ist in Java (ab Version 6) integriert. Soll neben dem Nutzer noch eine NTDomain übergeben werden, kann dies (ab eCount- 00052993) auch über folgende Config.propertiesEinstellungen realisiert werden.
importcom.http.proxy_user=<user>
importcom.http.proxy_password=<password>
importcom.http.nt_domain=<domain>
Sind diese Einstellungen spezifiziert, werden die Einstellungen aus der user_env ignoriert!
Bezüglich der Nutzung von Proxies existieren aktuell jedoch einige Einschränkungen. So ist es
beispielsweise nicht möglich eine eigene Nutzer/Passwort-Kombination mitzuteilen, wenn ein WindowsRechner genutzt wird und mit einem Domain-Nutzer gearbeitet wird.
Auszug aus der Java-Dokumentation:
In fact, if you are running on a Windows machine as a domain user, or, you are running on a Linux or
Solaris machine that has already issued the kinit command and got the credential cache. The class
MyAuthenticator will be completely ignored
Eine Lösung kann hier nur auf Kundenseite umgesetzt werden, bspw.:
-
Proxy und Firewall lassen die jeweilige URL oder den jeweiligen Domain-User zu,
ggf. kann auch anstelle der HTTP-Verbindung auf eine FTP-Adresse oder ähnliches gewechselt
werden.
Es gibt zahlreiche Bug-Meldungen bei Oracle (Java) bezüglich NTLM. Getestet wurde mit Java 6, ggf.
treten diese Probleme in Java 8 (oder später in Java 9) nicht mehr auf.
5.7.2
Dynamische Pfadangaben
Mit eCount- 00056607 sind dynamische Pfandangaben möglich, siehe 5.1.7.
Seite 110 von 384
5.7.3
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Beispiel HTTP-/HTTPS-Verbindung einrichten
Das Beispiel basiert auf einer HTTP-Adresse für die EEX-Börse.
Definition der HTTPS-Verbindung
Maske MF_RIMPORT (Import > Kommunikationseinstellungen).
Es wird eine Verbindung vom Typ https mit Hostname, Benutzername, Passwort, Port und Festlegung,
ob nur gelesen werden soll, erstellt.
Abbildung 5-31: Maske Kommunikationseinstellungen > Reiter Verbindungen
Der Rest der URL wird anschließend in MF_COMIMPORT für das jeweilige Format definiert!
Festlegung der Importformate
Über den Reiter Importformate wird das Zielverzeichnis, also der Ablageort der abzuholenden Dateien
auf dem KomA-Server, definiert.
Bei EEX ist die Kurzbezeichnung EEX und die Daten sollen im Ordner import/EEX (auf dem KomA-Server)
abgelegt werden. Als Name kann ein beliebiger, sprechender Text ausgewählt werden.
Die Kurzbezeichnung ist immer der Name, der auch in der KomA verwendet wird (datenimport.ini).
So kann z. B. für EEX in der KomA Folgendes hinterlegt sein:
#EEX – Nur SPOT-Historien aus dem Jahr 20**
Energy_spot_historie_20??.xls EEX import/EEX
Abbildung 5-32: Maske Kommunikationseinstellungen > Reiter Importformate
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 111 von 384
Konfiguration der automatischen Datenabfrage
Maske MF_COMIMPORT (Import > Kommunikationsautomatik)
Abbildung 5-33: Maske Importkommunikaton
Hierbei wird bei Verbindung die soeben angelegte ausgewählt. Des Weiteren werden die jeweiligen
Formate bestimmt, die über die Verbindung abgearbeitet werden sollen. Im Beispiel werden mehrere
EEX-Dateien abgefragt, die auch unter verschiedenen Adressen (URL) anzusprechen sind. Die Angabe
der korrekten URL erfolgt hierbei im Feld Verzeichnispfad.
Die Einstellung Server ist in Bezug zum KomA-Server wichtig. Über die anzugebende Server-ID kann ein
KomA-Server direkt an die Importverbindung gekoppelt werden. Dies geschieht über die Datei
Config.properties im KomA-Server bei der Einstellung importcom.comserver.
Beispiel: Importcom.server = 1
5.7.4
Probleme/Lösungen
5.7.4.1
Der Downloadpfad enthält Leerzeichen
Leerzeichen im Pfad führen zu Problemen bei der Abfrage der Datei. Leerzeichen werden in aller Regel
als Ende der URL interpretiert, nachfolgende Zeichen würden ignoriert bzw. führen zu einem Fehler. Mit
der URL-Kodierung kann ein Leerzeichen durch die Zeichenfolge %20 übergeben werden. Sollten Pfade
also Leerzeichen aufweisen, sollten diese immer kodiert werden.
falsch: /files/Current Rates/big_excel_file.xlsx
richtig: /files/Current%20Rates/big_excel_file.xlsx
Seite 112 von 384
5.7.4.2
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
No subject alternative DNS name matching x found
Im konkreten Fall trat das Problem bei der automatisierten Abfrage des EEX-HTTPS-Servers auf und die
Fehlermeldung lautete:
java.security.cert.CertificateException: No subject alternative DNS name matching mis.eex.com found
Beim HTTPS-Verbindungs-Aufbau zu einem Server wird geprüft, dass der Hostname im Zertifikat den
Hostnamen des Servers übereinstimmt. Es ist nicht ausreichend, nur dem Zertifikat zu vertrauen. Die
Überprüfung wird wie folgt durchgeführt:
-
Das Zertifikat enthält den DNS-Namen (dies ist eine Standarderweiterung) für den Hostnamen
Schlägt diese Prüfung auf den DNS-Namen fehl, wird die CN (vom Antragssteller) mit dem
Hostnamen verglichen.
Werden beide Prüfungen negativ abgeschlossen, wird die Fehlermeldung vom Java erzeugt.
Im konkreten Beispiel wurde festgestellt, dass der DNS (https://mis.eex.com) funktioniert, der Zugriff via
IP (https://85.239.110.71/) jedoch ein falsches Serverzertifikat lieferte. Dies erzeugt den Fehler.
Lösung:
Mit der Kommunikationseinstellung (in MF_RIMPORT):
DISABLE_HOSTNAME_VERIFIER=Y
beziehungsweise global für alle HTTPS-Verbindungen per Config.properties:
importcom.https.DISABLE_HOSTNAME_VERIFIER=Y
kann die Prüfung deaktiviert werden.
5.7.4.3
Übertragungsfehler: java.net.ConnectException: Connection timed out: connect
Der Fehler sagt nur aus, das die KomA keine Verbindung aufbauen konnte.
Mögliche Ursachen:
-
Nicht gesetzter Proxy-Server
o
Die Proxy-Einstellungen sind in der KomA zu prüfen, dies wird unter
*/config/user_env.(cmd|sh) definiert und sieht bspw. so aus:
SET JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyHost=<proxy-Host>
SET JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyPort=<proxy-Port>
SET JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyUser=<user>
SET JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyPassword=<password>
-
Wird ein Proxy verwendet ist mindestens die Angabe von proxyHost und proxyPort
erforderlich!
Ist der Betriebssystemnutzer, der den Import startet, berechtigt eine HTTP-Verbindung
aufzubauen oder wird das durch Sicherheitsrichtlinien oder Firewall-Einstellungen verhindert?
Ist die aufgerufene HTTP-Adresse korrekt und erreichbar oder ggf. temporär offline?
Lösung: Auf dem KomA-Server, bei dem die Fehlermeldung auftrat, muss der Nutzer überprüft werden
mit dem der Datenversand (datenversand.cmd oder datenversand.sh) gestartet wird. Mit der jeweiligen
IT-Abteilung muss dann geklärt werden, ob dieser Nutzer auf das Internet zugreifen darf. Wenn nicht
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 113 von 384
müssen die entsprechenden Berechtigungen von der IT-Abteilung gegeben werden. Des Weiteren sollte
die IT-Abteilung einen Hinweis auf die Verwendung eines Proxy-Servers sowie eines Proxy-Nutzers
inklusives Passwortest geben können.
5.8
Probleme/Lösungen/Hinweise
5.8.1
Bereinigungsroutine (Comimport - Importtabellen)
Mit eCount-00041787 besteht die Möglichkeit, über den Job COM_IMPORT-Tab. bereinigen (in der
Gruppe Import und mit ID 002735) folgende Tabellen automatisch zu bereinigen. Der Job sollte
unbedingt eingerichtet werden, um den Tabellenumfang zu reduzieren und somit die Performance zu
verbessern.
-
COM_ERROR
COM_MESSAGE
COM_MESSAGE_ATTACH
COM_MESSAGE_DETAIL
Auszug aus den Release-Notes (eCount-00041787):
Datensätze der Tabelle COM_ERROR werden gelöscht, wenn deren ERROR_TIME < SYSDATE - die in der
globalen Einstellung LIFESPAN_ERRORS angegebene Anzahl an Monaten ist. Datensätze der Tabelle
COM_MESSAGE werden gelöscht, wenn deren MESSAGE_RECEIVED < SYSDATE - die in der globalen
Einstellung LIFESPAN_MESSAGES angegebene Anzahl an Monaten ist. Detail-Datensätze in
COM_MESSAGE_DETAIL und COM_MESSAGE_ATTACH werden entfernt. Sind die globalen Einstellungen
nicht gesetzt, wird nicht gelöscht. Das Protokoll "COM_IMPORT - Bereinigungsroutine" wird
geschrieben.
Globale(r) Parameter:
LIFESPAN_ERRORS (max. 60)
LIFESPAN_MESSAGES (max. 60)
5.8.2
Comimport-Importformat vs Datenimport-Format (datenimport.ini)
Bei der Nutzung des Comimports und des Datenimports existiert ein Feature, welches zu einer
potentiellen Fehlerquelle führen kann. Das Feature dient dazu, dass mehrere Dateien von
unterschiedlichen Formaten in einem einzigen Ordner abgelegt werden können und beim Datenimport
anschließend über unterschiedliche Filter oder/und Konfigurationen importiert werden können.
Kurz: Der Formatname, der vom Comimport kommt, gilt stärker als der Name, den der Nutzeraus
der datenimport.ini ermittelt.
Ist im Importkonto die ZIP-Funktionalität aktiviert (siehe 5.1.4.4), werden die abgeholten Daten in der
Zip-Datei mit zusätzlichen Kommentaren versehen, die anschließend vom Datenimport ausgewertet
werden. Zu diesen Informationen zählt unter anderem das im ecount definierte Importformat (siehe
5.1.3). Dieses Importformat wird anschließend vom Datenimport als erstes ausgewertet und falls
vorhanden angewandt! Dies kann zu einem ungewünschten Verhalten führen, wenn das Format im
Comimport vom Format im Datenimport (datenimport.ini) abweicht, da hier oft erwartet wird, dass die
datenimport.ini den vorgebenden Charakter besitzt.
Seite 114 von 384
5.8.2.1
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Beispiel
Als Importformat ist „EDI_X“ mit dem Zielverzeichnis import\EDI definiert. Im entsprechenden
Importkonto ist die ZIP-Funktionalität aktiviert. Dies hat zur Folge, dass alle Dateien als ZIP-Kommentar
unter anderem den Eintrag FORMAT=EDI_X enthalten.
Abbildung 5-34: Importformat - EDI_X
Dieses Importformat wird anschließend verwendet, es wird auch die ZIP-Funktionalität aktiviert!
Abbildung 5-35: Importkonto mit aktivierter ZIP-Funktionalität
Abgeholte Daten werden nun als ZIP-Dateien (mit erweiterten Kommentaren) in der verwendeten KomA
unter import\EDI abgelegt. Im nachfolgenden Bild wurde eine ZIP-Datei geöffnet.
Abbildung 5-36: Datenablage im KomA
Im Datenimport (datenimport.ini) ist Folgendes konfiguriert:
*.txt EDI import/EDI
Alle Text-Dateien aus dem Ordner import/EDI sollen also über die Datenquelle EDI importiert werden!
Eine weitere wichtige Bedingung ist das Vorhandensein nur einer Datei EDI_X.properties und
EDI.properties unter config/import!
Wird der Datenimport gestartet, wird die ZIP-Datei automatisch eingelesen. Anschließend werden die
Dateien, die auf den Dateifilter (*.txt) passen (außer die IMPORT_DATA.TXT, diese wird standardmäßig
immer ignoriert), importiert. Dabei wird der ZIP-Kommentar gelesen und das FORMAT extrahiert.
Anschließend wird nach einer Properties-Datei, die auf das extrahierte Format passt, gesucht und diese,
falls vorhanden, verwendet. Dabei ergeben sich nun folgende Varianten:
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 115 von 384
1.
EDI_X.properties nicht vorhanden:
Wird keine, auf das Format passende, Properties-Datei gefunden, wird das Format des
Datenimports verwendet, dies wird auch im Log protokolliert:
Warning: no format EDI_X configured, using directory default EDI
2.
EDI_X.properties vorhanden:
Es werden alle Einstellungen der gefundenen Properties-Datei verwendet.
Hierbei kann es zu folgenden Fehlern kommen:
o
o
In der Properties-Datei ist über die Einstellung HandlerClass ein anderes Format
definiert, welches nicht zu den importierenden Dateien passt.
Bei Formaten, welche über den Importkonfigurator oder den EcountLoader realisiert
werden, wird in einer anderen Properties-Datei auch meist eine andere Konfiguration
gezogen.
Um eventuellen Problemen vorzubeugen muss sichergestellt werden, dass die Formate (Comimport und
Datenimport) übereinstimmen. Alternativ kann auch die ZIP-Funktionalität deaktiviert werden, wenn die
Voraussetzungen, z. B. dass die Daten nicht GZ-komprimiert empfangen werden (siehe 5.1.4.4), erfüllt
sind.
5.8.2.2
Weitere Beispiele
Diese kurzen Beispiele sollen verdeutlichen, warum ggf. gesetzte Einstellungen nicht gezogen werden.
Variante: Format Comimport ist unterschiedlich zum Format des Datenimportes.
datenimport.ini:
*.txt EDI import/INVOIC
Importformat (Kurzbezeichnung):
INVOIC
config/import:
keine INVOIC.properties vorhanden
EDI.properties vorhanden
Ergebnis: Als Importformat wird INVOIC verwendet. Es gibt keine passende Properties–Datei, die
EDI.properties wird nicht verwendet, damit werden die im Quell-Code hinterlegten Default-Werte
genutzt.
Variante: Format Comimport ist gleich zum Format des Datenimportes, es existiert jedoch keine
passende Properties-Datei.
datenimport.ini:
*.txt INVOIC import/INVOIC
Importformat (Kurzbezeichnung):
INVOIC
config/import:
keine INVOIC.properties vorhanden
EDI.properties vorhanden
Ergebnis: Format aus dem Comimport stimmt mit dem Format der datenimport.ini überein, jedoch ist
keine INVOIC.properties vorhanden, somit werden die im Code hinterlegten Default-Werte genutzt.
Das Format INVOIC ist jedoch auf der KomA nicht als EDI-Schnittstelle bekannt.
Variante: Format Comimport ist unterschiedlich zum Format des Datenimportes, es gibt jedoch
Properties-Dateien für beide Formate.
datenimport.ini:
*.txt EDI import/INVOIC
Seite 116 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Importformat (Kurzbezeichnung):
INVOIC
config/import:
INVOIC.properties vorhanden
EDI.properties vorhanden
Inhalt der INVOIC.properties:
ALIAS = EDI
Ergebnis:
Es wird das INVOIC-Format verwendet, da dieses vom Comimport vorgegeben wurde. Gleichzeitig wird
in der INVOIC.properties auf die EDI.properties verwiesen. Die EDI.properties wird eingelesen und die
darin definierten Einstellungen werden ausgewertet.
5.8.2.3
Änderung mit eCount- 00053244
Mit eCount- 00053244 wurde die Funktionalität abgeändert. Wird ein Importformat vom Comimport
vorgegeben so wird geprüft, ob in der Datei datenimport.ini das Format auch für das Verzeichnis
definiert wurde. Es wird hierbei eine Gruppierung anhand des Quellverzeichnisses durchgeführt, beim
ersten passenden Format wird dieses verwendet. Die Logik lässt sich leichter anhand eines Beispiels
demonstrieren:
Eine Datei wird vom Comimport als ZIP-Datei mit dem Format EDI_ABC abgelegt. Der Eintrag in der
Datei datenimport.ini lautet: *.txt EDI import_edi. Vor der Änderung wurde stillschweigend
EDI_ABC als Format verwendet, damit wurde auch die Datei EDI_ABC.properties geladen (falls
vorhanden), was unter Umständen zu ungewünschten Effekten führte.
Nach der Änderung (mit dem Update aus eCount- 00053244) wird ein Fehlertext im Protokoll
geschrieben („Format EDI_ABC vom Comimport passt auf kein Format in der datenimport.ini für das
Verzeichnis: import_edi“) und es wird das Format aus der datenimport.ini verwendet (hier also EDI).
Sind mehrere Konfiguration im Datenimport für ein Quellverzeichnis vorhanden, werden alle durchsucht
und auf ein passendes Format überprüft (die Prüfreihenfolge ergibt sich hierbei aus der Hierarchie der
Einträge in der datenimport.ini).Sind beispielsweise folgende Einträge in der datenimport.ini vorhanden
MSCONS*.txt EDI_ABC import_edi
*.txt EDI import_edi
wird EDI_ABC als Format verwendet, wenn die zu importierende Datei auf den Dateinamen-Filter passt
(also mit MSCONS beginnt) anderenfalls wird EDI verwendet.
5.8.3
Monitoring – Importkonto
Folgende Abfrage liefert die Konten die laut Konfiguration seit mehr als 10 Minuten „über der Zeit“ sind.
SELECT *
FROM (SELECT (SYSDATE - LAST_CHECKED) * 1440 SECONDS, CHECK_INTERVAL (SYSDATE - LAST_CHECKED) * 86400 SCHEDULE_SECONDS, ID, COM_SERVER, CAC.NAME
FROM COM_ACCOUNT CAC
WHERE CAC.ACTIVE = 'J'
AND SYSDATE > CAC.ACTIVE_FROM
AND (CAC.ACTIVE_UNTIL IS NULL OR SYSDATE < ACTIVE_UNTIL))
WHERE SCHEDULE_SECONDS < (-10*60)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 117 von 384
6 Datenimport
Der Datenimport setzt im Normalfall den Datenempfang (Comimport) voraus. Es kann allerdings auch
ohne den Datenempfang gearbeitet werden, indem die zu importierenden Dateien direkt in die
Importverzeichnisse gestellt werden. Dabei muss nur darauf geachtet werden, dass die Dateien während
des Schreibens in das Verzeichnis eine temporäre Datei-Endung erhalten (z. B. *.tmp), da der
Datenimport-Job zu importierende Dateien z. B. anhand ihrer Datei-Endung ermittelt. Das kann dazu
führen, dass versucht wird, noch in Bearbeitung befindliche Dateien zu importieren wenn diese schon
den Originalnamen (z. B. UTILMD_DATEI.txt) besitzen aber noch nicht vollständig geschrieben wurden.
Abbildung 6-1: Datenfluss Import
6.1
Hinweise zur Zeitzone der Import-Dateien
Beim Import von Datumswerten wenden die meisten Importfilter folgende Logik an.
Aus der Import-Datei wird der Datumswert extrahiert, dass kann eine Zeichenkette in einer CSV, Excel
oder XML-Datei sein. Diese Zeichenkette wird in ein Date-Objekt konvertiert, dies ist ein Objekt in Java
welches aus einer Zeichenkette und ggf. unter Beachtung einer Zeitzone erstellt wird. Dieses DateObjekt wird anschließend an die Import-API übergeben, hierbei findet wieder eine Konvertierung des
Date-Objektes in eine Zeichenkette statt. Dabei wird das Date-Objekt mit folgendem Datumsformat
behandelt (yyyyMMddHHmmssZZZ). Als Zeitzone verwenden hier die meisten Filter Europe/Berlin! Nur
einige weniger Importfilter (z.B. PRICES_SKHandler oder der XML_RUSHandler) nutzen die Zeitzone der
KomA, also der Wert aus der Einstellung USER_TIMEZONE der über die user_env.(cmd|sh)
konfiguriert werden kann.
Bei internationalen Systemen führt das zu Problemen wenn in dem Land beispielsweise keine
Umschaltstunde mehr existiert (z.B. in Russland, hier kann es zu Datenverlust kommen) oder die
Zeitzone im System („System timezone“, „System-Sommerzeit-Zeitzone“) anders definiert wurden (was
wiederrum Probleme bei der Weiterverarbeitung und Anzeige macht – hier spielen dann wiederrum
Seite 118 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
ecount Parameter wie NEUE_ZEITZONENRECHNUNG und KOMPATIBILITAET_ABLAGEZEITZONE eine
Rolle).
Aus diesen Grund ist bei der Entwicklung von kundenspezifischen Filtern für internationale Kunden
zu prüfen, ob die interne Logik als Zeitzone Europe/Berlin verwendet oder den Wert aus der KomAEinstellung USER_TIMEZONE. Die Einbeziehung von erfahrenen Entwicklern ist hier also unbedingt
erforderlich!
Beispiel – Übergabe des Wertes an die Import-API:
In der XML wird folgende Zeitstempel geliefert: 2015-09-12T00:00:00.000+01:00
Die Übertragung an die Import-API erfolgt wie folgt:
SET USER_TIMEZONE=Europe/Berlin:
20150912013000+02
SET USER_TIMEZONE=Europe/London:
20150912003000+01
SET USER_TIMEZONE=Europe/Moscow:
20150912023000+03
Achtung: Der Importkonfigurator unterstützt die USER_TIMEZONE aus der user_env.(cmd|sh) nur
wenn FILTER = CSV2 definiert wurde. Bei FILTER = CSV erfolgt die Übergabe immer mit der
Zeitzone Europe/Berlin!
6.2
Konfigurationsparameter
Die Datenimport-Parameter werden über die Datei Config.properties gepflegt.
Tabelle 6-1: Parameter für Datenimport
Parameter/Beschreibung
Standardwert
import.archiveZip
Y/N. Vom Import verarbeitete Dateien als ZIP-Archive
gemeinsam mit Protokollen archivieren.
Y
import.createImportDirs
Y/N. Nicht existierende Import-Verzeichnisse beim Start
anlegen
Y
import.createImportDoneDirs
Y/N. Archiv-Unterverzeichnisse (done- und errVerzeichnisse) unter den Import-Verzeichnissen beim Start
automatisch anlegen mittels Y.
N
import.daemonMode
Y/N. Soll der Datenversand als permanent laufender
Hintergrundprozess gestartet werden?
N
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
import.daemonPollInterval
Polling-Intervall in Sekunden für Daemon-Job
Seite 119 von 384
Standardwert
10
import.dbErrorDir
Unterverzeichnis, in dem Dateien abgelegt werden sollen,
bei denen der Import aufgrund von Datenbank-Fehlern
gescheitert ist
dbError
import.doneDir
Verzeichnis, in dem fehlerfrei importierte Dateien archiviert done
werden sollen (unterhalb des Import-Verzeichnisses)
import.doneErrorsDir
(Zeichenkette) Unterverzeichnis, in dem fehlerhaft
importierte Dateien abgelegt werden sollen.
done
import.doneWarningsDir
(Zeichenkette) Unterverzeichnis, in dem mit Warnungen
importierte Dateien abgelegt werden sollen
done
import.errorDir
Unterverzeichnis, in dem Dateien abgelegt werden sollen,
bei denen der Import gescheitert ist
import.logfile
LOG-Datei für Datenimport
import.logfile.daemon
LOG-Datei für Datenimport im Daemon-Modus
import.logfile.maxSize
Maximale Größe der LOG-Datei in bytes
err
datenimport.log
datenimport_daemon.log
500000
import.max_file_retries
Maximale Anzahl von Versuchen, Dateien mit DatenbankFehlern zu importieren
3
import.max_import_files
Maximale Anzahl zu importierender Dateien (-1 =
unbegrenzt, 0 wird wie -1 interpretiert)
-1
import.port
Port für Sperrbehandlung - freier lokaler TCP-Port, auf dem
der Datenimport die Kommunikation mit anderen
common.base_port+1
Seite 120 von 384
Parameter/Beschreibung
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Standardwert
laufenden Instanzen zur Behandlung von Import-Sperren
durchführt (Vermeidung doppelter Instanzen)
import.port.daemon
Port für Sperrbehandlung im Daemon-Modus
import.prtInTempDir
Y/N. Protokolle im KomA-Temp-Verzeichnis anlegen
common.base_port+4
N
import.run_scheduler
Y/N. Startet nach jedem Dateiimport den
datenbankseitigen Import-Job für das entsprechende
Format (ungünstig bei vielen kleinen Import-Dateien).
N
Technisch: Es wird ec_sys.pkg_import_alg.
prc_load_all_data(?) aufgerufen.
import.shutdown_command
Kommando zum Beenden des Imports nach aktueller Aktion SHUTDOWN
über den TCP/IP-Listener
import.sort
Der Datenimport importiert die Dateien standardmäßig in
der Reihenfolge, die anhand des Dateinamens bestimmt
wird. Seit eCount- 00052661 existiert auch die Möglichkeit,
mittels import.sort=LAST_MODIFIED die
Reihenfolge nach dem Geändert-Datum (aufsteigend) zu
sortieren. Damit werden die Dateien in der Reihenfolge
importiert, wie vom Comimport vorgegeben (die erste Datei
vom Comimport wird auch als erste Datei vom Datenimport
betrachtet). Dies entspricht den FIRST IN FIRST OUTVerfahren (FIFO).
Auch mit Java 6 steht kein direkter Zugriff auf das
Erstellt-Datum zur Verfügung. Werden die Daten jedoch
per Comimport abgeholt, entspricht das Erstellt-Datum
dem Geändert-Datum.
import.zip_name_encoding
Codepage für Dateinamen beim Schreiben in ZIP-Dateien bei ausländischen Systemen (z. B. Russland) muss diese
Einstellung angepasst werden!
import.zipDoneDir
Cp850
zip-done
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Seite 121 von 384
Standardwert
Unterverzeichnis, in das verarbeitete ZIP-Dateien
verschoben werden
import.zipErrorDir
Unterverzeichnis, in dem fehlerhafte Dateien aus
verarbeiteten ZIP-Dateien abgelegt werden
zip-error
import.zipInvalidDir
Unterverzeichnis, in das nicht verarbeitbare ZIP-Dateien
verschoben werden
importcom_format_aliases
Konfigurationsdatei für Format-Aliase aus ImportKommunikation
zip-invalid
config/
importcom_format_aliases.ini
import.after_zipfile_import_procedure
Nach dem Import einer ZIP-Datei besteht nun die
Möglichkeit eine PL/SQL-Funktion aufzurufen. Diese
Funktion muss genau 1 IN-Parameter besitzen vom Typ
COM_MESSAGE.ID (NUMBER). Die Funktion wird nur
aufgerufen wenn eine COM_MESSAGE.ID in der ZIP-Datei
vorhanden ist. Die Funktion muss an EC_XCH gegranted
sein!
Beispiel:
import.after_zipfile_import_procedure=PKG_TEST.test(?)
6.2.1
Benachrichtigung E-Mail für die Import-Datei
Es besteht die Möglichkeit, bei verschiedenen Protokollereignissen beim Datenimport eine Info-E-Mail
an den Absender der Daten oder an eine festgelegte E-Mail-Adresse zu schicken und dabei auch die
Originaldatei mit anzuhängen. Dafür existiert ein Satz allgemeiner Parameter, der für alle ImportFormate gilt. Dieser Parametersatz ist unter dem Hauptparameter ERRORHANDLER zusammengefasst.
Tabelle 6-2: Parameter für Info-E-Mail
Parameter/Beschreibung
Standardwert
ERRORHANDLER
Mit der Einstellung EMAIL_REPLY wird der E-Mail-Antwort-Handler
aktiviert.
ERRORHANDLER.attachFileAsZip
Y/N. Angehängte Import-Datei mit ZIP-Format komprimieren
Y
Seite 122 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
ERRORHANDLER.attachOrigFile
Y/N. Original-Import-Datei an Antwort-Mail anhängen
Standardwert
N
ERRORHANDLER.defaultAddress
Standard-Antwort-Adresse, falls kein Absender ermittelt werden konnte.
FILE://errorReply/
Beispiel: [email protected]
ERRORHANDLER.encoding
Die Codierung, die für den Dateinamen und die Datei-Kommentare
verwendet werden.
Cp850
ERRORHANDLER.fromAddress
Absender-Adresse, wenn nicht angegeben und kein Wert in der
Config.properties (exportmail.from) definiert wurde, wird
[email protected] als Default verwendet.
ERRORHANDLER.orginalSubject
Y/N. Mit Y wird als Betreff „RE: <BetreffDerOrginalMail>“ verwendet.
ERRORHANDLER.processDebug
Y/N. Debug-Meldungen in den E-Mail-Text ausgeben
ERRORHANDLER.processErrors
Y/N. Fehlermeldungen in den E-Mail-Text ausgeben
ERRORHANDLER.processWarnings
Y/N. Warnungen in den E-Mail-Text ausgeben
ERRORHANDLER.replyAlways
Y/N. Auch im Erfolgsfall eine Antwort-E-Mail generieren
N
Y
Y
Y
Y
Mit der Einstellung ERRORHANDLER = EMAIL_REPLY wird der Antwortversand zuerst einmal
aktiviert. Es wird nun unter den verschiedenen einzustellenden Bedingungen eine Antwort-E-Mail
erzeugt. Der Adressat wird über den Absender der evtl. zugehörigen empfangenen E-Mail ermittelt. Dies
ist nur möglich, wenn die importierte Datei in einem von der Komponente Import-Kommunikation
stammenden ZIP-Archiv liegt, indem eine Verknüpfung zu den Datenbankinformationen über die
zugehörige empfangene E-Mail-Nachricht abgelegt ist. Kann auf diese Weise keine Ziel-Adresse ermittelt
werden, wird die unter ERRORHANDLER.defaultAddress angegebene Adresse verwendet.
Weiterhin kann noch entschieden werden, ob die Originaldatei mit an die Antwort-E-Mail angehängt
werden soll (dies wird über die Format-Konfiguration ERRORHANDLER.attachOrigFile = Y
aktiviert). Bei sehr großen Dateien, die z. B. über eine Verzeichnis-Schnittstelle in das System geholt
wurden, kann dies u. U. den Versand der Antwortnachricht aufgrund von Größenüberschreitungen beim
E-Mail-Server verhindern. Durch Kompression der zurückgesendeten Datei kann die Grenze hierfür zwar
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 123 von 384
verlagert werden, aber das Problem besteht dennoch. Diese Tatsache sollte dem Empfänger solcher
Nachrichten dabei bewusst sein. Die Möglichkeit der Entscheidung besteht nur, wenn Import-Files nicht
als ZIP-Files importiert werden.
ERRORHANDLER = EMAIL_REPLY
ERRORHANDLER.processErrors = Y
ERRORHANDLER.processWarnings = Y
ERRORHANDLER.defaultAddress = [email protected]
ERRORHANDLER.fromAddress = [email protected]
ERRORHANDLER.encoding = UTF-8
Abbildung 6-2: Beispiel einer Fehler-Antwort-Konfiguration
6.3
datenimport.ini
Die datenimport.ini ist die zentrale Steuerdatei für den Datenimport-Job. Im Grunde ist dies eine
normale Textdatei (Zeichenkodierung ISO-8859-1) mit einer fest definierten Syntax. So wird jeder zu
importierende Ordner in einer separaten Zeile angegeben. Jede Zeile enthält mindestens 3
Konfigurationsangaben, die durch ein Leerzeichen voneinander getrennt werden. Die Parameter haben
folgende Bedeutung:
1.
Datei-Filter: Es werden alle Dateien verarbeitet die auf den eingestellten Filter passen.
o
o
o
o
o
2.
Format-Kürzel: Kürzel für das angegebene Dateiformat
o
3.
Der Filter kann sowohl auf den Dateinamen als auch auf die Dateierweiterung definiert
werden.
Es kann mit Wildcards (*) für beliebig viele Zeichen oder (?) für ein beliebiges Zeichen
gearbeitet werden.
Angaben sind case-insensitive(Groß/Kleinschreibung wird nicht berücksichtigt)
ZIP-Dateien müssen nicht angegeben werden (ZIP-Dateien werden automatisch entpackt,
jedoch keine GZIP-Dateien!)
Kommen Leerzeichen in der Dateimaske vor, müssen diese in "" eingeschlossen werden.
Name des KomA-Importfilters, der die Verarbeitung durchführt.
Quellverzeichnis: Verzeichnis, das nach zu importierenden Dateien durchsucht wird
o
o
Die Angabe kann relativ zum Ordner der KomA (Basisverzeichnis, in dem die KomA installiert
wurde) sein oder absolut
Verzeichnisse werden nicht rekursiv durchsucht.
Beispiele:
-
Import von (ausschließlich) XML-Dateien über die Datenquelle ABC aus dem KomAUnterverzeichnis import/ABC
*.xml ABC import/ABC
-
Dateien, die mit MSCONS beginnen (Datenquelle EDI, Verzeichnis import/EDI)
Seite 124 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
MSCONS*.* EDI import/EDI
-
Dateien, die mit MSCONS beginnen und die Dateierweiterung txt besitzen
MSCONS*.txt EDI import/EDI
-
Import von Excel-Dateien (XLS und XLSX) über die Datenquelle A aus dem KomAUnterverzeichnis import/A
*.xls A import/A
*.xlsx A import/A
-
EEX Excel-Datei, die mit dem Namen energy_spot_historie_20 beginnt, auf XLS endet und die
max. 2 Zeichen zwischen Dateierweiterung und Anfangsdateinamen hat.
energy_spot_historie_20??.xls EEX import/EEX
Hinweise:
Für Testzwecke kann ein weiteres Verzeichnis als 4. Parameter in der datenimort.ini angegeben
werden, in dem in einem Zwischenschritt vor dem Import die entstandenen XML-Dateien abgelegt
werden. Diese Option ist nur für Diagnosezwecke gedacht.
Beispiel: *.xml ABC import/ABC import/ABC/diagnose
Die Abarbeitungsreihenfolge ist hierarchisch von oben nach unten. Sprich die Reihenfolge in der
datenimort.ini ist auch die letztendliche Reihenfolge während der Verarbeitung.
Die Zeichenkodierung der Datei ist ISO-8859-1. Beim Editieren dieser Datei muss darauf geachtet
werden, dass die Zeichenkodierung nicht geändert wird (z. B. auf UTF-8, einige Texteditoren
machen das standardmäßig).
Unter Linux werden die Pfadangaben mit / und nicht mit \ vorgenommen. Die KomA korrigiert das
zur Laufzeit zwar automatisch, erzeugt dabei aber auch immer Warnungen im Log nach dem Motto
„Correcting wrong path x\y“.
Unter Linux spielt auch die Groß- und Kleinschreibung eine Rolle (anders als bei Windows).
Wenn das Format in der datenimort.ini also SWF/SST_VNB lautet, die Properties-Datei aber
sst_vnb.properties heißt, dann wird die Datei unter Windows aber nicht unter Linux
gefunden und der Import bricht mit Fehlern ab.
6.3.1
Strukturierung der Import-Dateien (z.B. nach Kunden)
Es ist möglich unter config/import weitere Unterordner anzulegen um die Übersicht zu erhöhen.
Beispiel:
Unter *KomA*\config\import\SWF wird die Datei SST_VNB.properties abgelegt.
In der datenimport.ini muss anschließend der 2. Parameter (das Format) um den Ordner erweitert
werden  SWF\SST_VNB, die gesamte Zeile kann beispielsweise so aussehen:
*.csv
SWF\SST_VNB
import\CSV_SWF\VNB
Durch die Änderung des Formatkürzels in der datenimport.ini muss unter Umständen in der
zugehörigen Properties-Datei der konkrete Filter bzw. die konkrete Handler-Klasse angegeben
werden, damit das richtige KomA-Modul geladen wird. Das geschieht durch die Einstellung FILTER
bzw. HandlerClass in der zugehörigen Properties-Datei.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
6.3.2
Seite 125 von 384
Leerzeichen in Verzeichnis-Pfaden
Besteht der Pfad aus Leerzeichen kommt es zum Konflikt mit den Trennzeichen (Leerzeichen) für den
datenimport.ini-Eintrag. Hier kann jedoch das Trennzeichen durch ein Semikolon (;) getauscht werden.
Dazu müssen alle Trennzeichen (Leerzeichen) durch das Semikolon ersetzt werden.
Beispiel:
*.xml; DWD_XML; import/DWD XML
6.3.3
Feature Import-Datei in anderes Verzeichnis kopieren
Es existiert eine Funktionalität mit der die zu importierenden Datei während des Importvorgangs in ein
anderes Verzeichnis kopiert werden kann. Das ist zum Beispiel sinnvoll wenn in einer Excel-Datei mit
mehreren Tabellenblättern unterschiedliche Importkonfigurationen benötigt werden. Hierbei muss als
Trennzeichner das Semikolon (;) zwingend verwendet werden, die Syntax lautet:
<Dateifilter>; <Format>; <Importverzeichnis>; ; <Kopierverzeichnis>
Vor dem Kopierverzeichnis muss 2x das Semikolon stehen!
Die Angabe des Verzeichnisses kann absolut oder relativ angegeben werden. Erfolgt die Angabe relativ
so wird das Verzeichnis unterhalb des Quell-Verzeichnisses (3 Parameter) angelegt.
Beispiel:
*.xlsx; SHEET1; import/Sheet1; ; Sheet2
 legt die Datei in dem Verzeichnis „import/Sheet1/Sheet2“ ab.
Die Angabe des absoluten (des vollständigen) Pfades ist daher wohl zu bevorzugen.
Die Abarbeitungsreihenfolge ergibt sich aus der Reihenfolge der datenimport.ini. der erste Ordner
muss also in der datenimport.ini vor dem zweiten Ordner aufgelistet sein. Beispiel:
*.xlsx; SHEET1; c:/import/Sheet1; ; c:/import/Sheet2
*.xlsx; SHEET2; c:/import/Sheet2; ; c:/import/Sheet3
*.xlsx; SHEET3; c:/import/Sheet2
6.4
Standard-Verzeichnis-Konventionen
Bei Importen werden Dateien in verschiedenen Verzeichnissen abgearbeitet. Dies erfolgt skriptgesteuert
für jede einzelne Datei in der Weise, dass bei Erfolg in einem Unterverzeichnis namens done eine ZIPDatei erstellt wird, die die Quelldatei sowie die Standard- und Fehler-Ausgabe in Dateien namens *.log
und *.err enthalten. Im Fehlerfall wird die ZIP-Datei in einem Unterverzeichnis namens err erstellt und
enthält ggf. zusätzlich die begonnene Ziel-XML-Datei. So ist auf einen Blick ersichtlich, wenn Fehler
aufgetreten sind. Die entsprechenden fehlerhaften Dateien sowie die zugehörigen Protokolle liegen zur
Analyse gemeinsam vor. Im Falle von Namenskonflikten beim Erstellen der ZIP-Datei wird, wenn der
Parameter common.backup gesetzt ist, die vorherige Version nach *.~nn umbenannt, wobei nn eine
Zahl von 01 bis 99 ist, was bedeutet, dass maximal 99 Sicherungskopien erstellt und danach die alten
Dateien überschrieben werden. Es existiert kein Job, der alte Archive löscht. Deshalb liegt dies in der
Verantwortung des jeweiligen Systemadministrators.
Seite 126 von 384
6.5
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abarbeitungsreihenfolge der Import-Dateien
Die Abarbeitung beim Datenimport wird in alphabetischer Reihenfolge durchgeführt. Dabei werden die
Dateinamen verglichen (per Zeichenkettenvergleich).
Mit eCount- 00052661 kann via import.sort=LAST_MODIFIED die Reihenfolge anhand des
Geändert-Datums der Dateien bestimmt werden (siehe import.sort).
Dabei muss berücksichtigt werden, das Zeichenketten keine numerische Order besitzen, dadurch wird
ein Dateiname MyFile_100 vor dem Dateinamen MyFile_2 abgearbeitet.
Um diese Probleme, beispielsweise bei einer großen Überladung, zu umgehen, sollten die „Dateizähler“
im Dateinamen mit einer festen Formatmaske formatiert werden.
Im Beispiel werden 20 Dateien mit dem Namen MyFile_i generiert. Wobei i von 1 bis 20 geht. Im zweiten
Beispiel wird eine Formatmaske für die Ziffern angewendet, so dass diese immer aus 2 Ziffern bestehen
(01 statt 1)
Beispiel ohne Formatmaske:
Index 1
MyFile_1
Index 11
MyFile_19
Index 2
MyFile_10
Index 12
MyFile_2
Index 3
MyFile_11
Index 13
MyFile_20
Index 4
MyFile_12
Index 14
MyFile_3
Index 5
MyFile_13
Index 15
MyFile_4
Index 6
MyFile_14
Index 16
MyFile_5
Index 7
MyFile_15
Index 17
MyFile_6
Index 8
MyFile_16
Index 18
MyFile_7
Index 9
MyFile_17
Index 19
MyFile_8
Index 10
MyFile_18
Index 20
MyFile_9
-> Die Sortierung entspricht hier nicht dem „erwarteten“ Verhalten.
Beispiel mit Formatmaske (2 stellig)
Index 1
MyFile_01
Index 11
MyFile_11
Index 2
MyFile_02
Index 12
MyFile_12
Index 3
MyFile_03
Index 13
MyFile_13
Index 4
MyFile_04
Index 14
MyFile_14
Index 5
MyFile_05
Index 15
MyFile_15
Index 6
MyFile_06
Index 16
MyFile_16
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 127 von 384
Index 7
MyFile_07
Index 17
MyFile_17
Index 8
MyFile_08
Index 18
MyFile_18
Index 9
MyFile_09
Index 19
MyFile_19
Index 10
MyFile_10
Index 20
MyFile_20
-> Die Sortierung erfolgt hierbei nach dem „erwarteten“ Verhalten.
6.6
Konvertierung und Import der Daten
Der eigentliche Import von Daten in die Datenbank-Zwischentabellen erfolgt in 2 Schritten. Dies sind
zuerst die Konvertierung einer Datei aus einem Fremdformat in ein ecount-spezifisches XMLZwischenformat und anschließend der Import der XML-Datei in die Datenbank. Ist ein Import in die
Import-Zwischentabellen erfolgreich verlaufen, sind die Daten in den Masken (MF_IFI) erreichbar. Zuerst
liegen sie allerdings noch in den Zwischentabellen, von wo sie noch von einem datenbankseitigen Job
endgültig importiert werden müssen. Dieses Kapitel behandelt nur die Java-Komponenten, die den
Import in die Datenbank durchführen. Die Unterteilung in 2 Schritte hat den Vorteil, dass die zum Teil
schwer lesbaren Daten aus den Fremdformaten in ein einheitliches, relativ streng strukturiertes und
leicht lesbares Zwischenformat gebracht werden, das sich zur manuellen Überprüfung der importierten
Daten eignet und zudem die formatspezifische Programmlogik auf die Konvertierung in dieses
Zwischenformat beschränkt. Die nachfolgende Beschreibung bezieht sich hauptsächlich auf die
mitgelieferte Kommunikationsstruktur mit den darin enthaltenen Skripten und Konfigurationsdateien.
Externe Formate erhalten vom ecount-System Format-Kürzel, die i.d.R. den Einträgen in den
Datenquellen entsprechen. Für die externen Formate können allerdings auch Alias-Kürzel konfiguriert
werden, um verschiedene Quellen für dasselbe Format mit unterschiedlichen Parametereinstellungen zu
betreiben. So ist der Import-Filter für das CSV-Format in größerem Umfang konfigurierbar, so dass damit
mehrere CSV-Dialekte importiert werden können. Dazu werden einfach mehrere CSV-Formate
konfiguriert, die alle den CSV-Import-Filter verwenden und als Datenquelle entweder alle gemeinsam
CSV benutzen oder jedes Format eine eigene Datenquelle erhält. Es gibt also 3 verschiedene
Bedeutungen für ein Format-Kürzel:
-
-
Konkretes Format einer Datei, das in der Import-Kommunikation und in der datenimport.ini
(siehe Abschnitt 6.6.1 Konfiguration von Import-Dateien in datenimport.ini) angegeben wird und
in einer Konfigurationsdatei namens <BASE>/config/import/<FORMAT>.properties (siehe
Abschnitt 6.6.2 Konfiguration der Import-Formate) konfiguriert wird
Import-Filter für eine Format-Klasse, der in der Format-Konfiguration (siehe Abschnitt 6.6.2
Konfiguration der Import-Formate) konfiguriert wird
Datenquelle in der ecount-Datenbank, die ebenfalls in der Format-Konfiguration eingerichtet
wird
Die von der Komponente Import-Kommunikation von verschiedenen Datenquellen abgeholten Daten
werden in formatspezifischen Verzeichnissen im Dateisystem abgelegt. Diese haben per Voreinstellung
als Namen das Format-Kürzel und befinden sich im Verzeichnis <BASE>/import. Diese können aber auch
an beliebigen Orten im Dateisystem liegen, die von der Importkomponente erreichbar und schreibbar
sind.
Seite 128 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Als XML-Zwischenformat existieren 2 Versionen. Diese werden in unregelmäßigen Abständen
erweitert und sind daher nicht detailliert beschrieben. In den meisten Fällen ist die genaue
Beschreibung auch nur für Entwickler notwendig. Die jeweils aktuellen DTD-Dateien können über
folgende Links bezogen werden:
XML Import Format Version 1 und XML Export Format Version 2
6.6.1
Konfiguration von Import-Dateien in datenimport.ini
Konfiguriert werden die zu importierenden Dateien für die Importkomponente über eine
Konfigurationsdatei <base>/config/datenimport.ini, die von der Java-Komponente Datenimport
ausgewertet wird. Darin sind die abzuarbeitenden Verzeichnisse mit den vorgegebenen Datei-Endungen
bzw. Dateimasken und Formaten angegeben. Abbildung 6-3 zeigt ein Beispiel für die datenimport.ini. In
der Beispiel-Datei <BASE>/config/samples/datenimport.ini befindet sich ebenfalls eine kurze
Dokumentation der Einstellungen.
# Import CSV
test*.csv CSV import/CSV import/CSV/xml
csv CSV import/CSV
# Import EDIFACT (MSCONS/UTILMD)
test*.msc EDI import/EDI import/EDI/xml
msc EDI import/EDI
# Import EXP
test*.txt EXP import/EXP import/EXP/xml
txt EXP import/EXP
# Import Fröschl
test*.dat FFF import/FFF import/FFF/xml
dat FFF import/FFF
# Import LPEX
test*.txt LPEX import/LPEX import/LPEX/xml
txt LPEX import/LPEX
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 129 von 384
# Spezielles XML-Format:
xml XML "import/XML Kunde X" kundex.dtd
Abbildung 6-3: Beispiel für die Import-Konfigurationsdatei datenimport.ini
Einzeilige Kommentare werden, wie bereits beschrieben, mit # am Zeilenanfang eingeleitet. Alle nicht
leeren Zeilen, die kein Kommentar sind, werden als Konfigurationszeilen interpretiert, die 3 oder 4 durch
Leerzeichen getrennte Einträge enthalten müssen. Dies sind:
-
Für die zu importierenden Dateien die Datei-Endung oder eine Dateimaske mit Platzhaltern *
für eine beliebige Anzahl von Zeichen und ? für genau 1 Zeichen;
Groß-/Kleinschreibung ist nicht zu beachten
Formatkürzel für das Dateiformat
Das Quellverzeichnis, das absolut oder relativ zum Kommunikations-Basisverzeichnis angegeben
wird
Optional ein Zielverzeichnis für XML-Zwischendateien, ebenfalls absolut oder relativ zum
Basisverzeichnis. Ist der 4. Parameter angegeben, wird der Import in 2 Schritten vorgenommen,
ansonsten wird direkt in die Datenbank importiert. Dies gilt nicht für die Verarbeitung von ZIPDateien, die grundsätzlich in einem Schritt importiert werden.
Beim Format XML wird hier eine Dokumenttypdefinition (DTD) angegeben, die als Standard
angenommen werden soll und zur Identifizierung des zu verwendenden XML-Importers
herangezogen wird. Diese muss dann angegeben werden, wenn nicht garantiert werden kann,
dass die zu importierenden XML-Dateien immer eine Angabe der DTD enthalten.
Es besteht die Möglichkeit, die Pfadangaben in doppelten Anführungszeichen einzuschließen, falls diese
selbst Leerzeichen enthalten. Im oben angegebenen Beispiel in Abbildung 6-3 ist auch zu erkennen, dass
pro Verzeichnis mehrere Einträge angegeben wurden. Diese werden so verarbeitet, dass der erste
passende Eintrag verwendet wird. Wird beispielsweise im Verzeichnis import/CSV eine Datei namens
Testdaten.csv gefunden, dann wird der Eintrag test*.csv CSV import/CSV
import/CSV/xml verwendet, was zur Folge hat, dass diese Datei mit Ausgabe einer XML-Datei im
Verzeichnis import/CSV/xml in 2 Schritten verarbeitet wird. Für eine Datei mit Namen
Daten_01.01.2004.csv wird hingegen der Eintrag csv CSV import/CSV verwendet und die Datei in
einem Schritt ohne XML-Datei importiert.
Von der Komponente Import-Kommunikation kommen die zu importierenden Daten in Form von ZIPkomprimierten Dateien (wenn diese Option aktiviert wurde). Solche ZIP-Dateien enthalten bereits in
zusätzlichen Beschreibungsfeldern zu jeder Datei ein Format-Kürzel, das beim Import verwendet wird.
Weiterhin werden ZIP-Dateien automatisch geöffnet, auch wenn die Endung .zip nicht in einer
Konfigurationszeile für das entsprechende Verzeichnis steht. Vielmehr werden die Datei-Endungen der
Konfiguration für das Verzeichnis auf die in der ZIP-Datei enthaltenen Dateien angewendet, wobei, falls
im ZIP-Kommentar bereits ein Format angegeben wurde, dieses Vorrang vor dem in der passenden
Konfiguration angegebenen Format hat.
6.6.2
Konfiguration der Import-Formate
Die Konfiguration der Formate erfolgt in externen Dateien unter <BASE>/config/import.
Seite 130 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Ist ein Format in datenimport.ini eingerichtet, muss noch konfiguriert werden, welcher Import-Filter mit
welchen Parametern zur Konvertierung verwendet werden soll und über welche Datenquelle die Daten
ins ecount-System importiert werden sollen. Diese Einstellungen werden in den eben erwähnten
Konfigurationsdateien vorgenommen. Es ist jedoch auch möglich, ohne separate Format-Konfiguration
Dateien zu importieren solange der jeweilige Import-Filter Standardwerte vorsieht. Für alle Parameter
eines Import-Filters existieren Standard-Einstellungen, die den in den Beispiel-Konfigurationsdateien
angegebenen Werten entsprechen. Auch sind die Import-Filter i.d.R. bereits unter einem Kürzel im
System registriert. So hat der Import-Filter für das Format FFF (Fröschl Flat File) das Kürzel FFF. Wurde
als Format-Kürzel für FFF-Dateien ebenfalls das Kürzel FFF gewählt, so wird ohne Angabe eines ImportFilters automatisch der unter diesem Namen bereits registrierte Import-Filter verwendet. Als StandardDatenquelle wird ebenfalls dieses Kürzel verwendet. Es können somit FFF-Dateien, die keine
Sonderbehandlung benötigen, sofort ohne zusätzliche Konfiguration importiert werden.
Ist kein passender Importfilter unter dem verwendeten Formatkürzel registriert, gibt es nun mehrere
Möglichkeiten, einen solchen anzugeben:
1. Angabe des vollständigen Java-Klassennamens in der Einstellung HandlerClass, z. B.
HandlerClass = de.robotron.ecount.dataimport.filter.FFFHandler
2. Angabe des Filterkürzels in der Einstellung Filter, z. B.
Filter = FFF
3. Importieren aller Einstellungen einer anderen Format-Konfiguration incl. Filter-Klasse und
Datenquelle in der Einstellung Alias, z. B.
Alias = FFF
Im 3. Fall können alle Einstellungen einer anderen Konfiguration vererbt und modifiziert werden. Dieser
Fall ist insbesondere dann sinnvoll, wenn die Zahl der Einstellungen groß ist gegenüber der Zahl der
unterschiedlichen Einstellungen zwischen 2 Formaten. So können auf diese Weise beispielsweise
mehrere CSV-Formate definiert werden, die sich in nur wenigen Eigenschaften unterscheiden. Dazu
werden alle gemeinsamen Einstellungen in einer Haupt-Konfigurationsdatei beispielsweise
CSV_COMMON.properties definiert und die speziellen Einstellungen für die verschiedenen CSV-Formate
in konkreteren Konfigurationsdateien abgelegt. Eine solche Konfigurationsdatei könnte dann wie folgt
aussehen:
ALIAS = CSV_COMMON
DATENQUELLE = CSV1
FIELDS.EINHEIT={0,0};kW
6.7
Verarbeitung von ZIP-Dateien
Die Verarbeitung von ZIP-Dateien, die über den Comimport mit aktivierter ZIP-Funktionalität erstellt
werden, ist deshalb sinnvoll, weil die wiederholte Verarbeitung bereits importierter Dateien vereinfacht
wird. Zudem ist diese Ablagemöglichkeit platzsparender und ermöglicht die Gruppierung von Dateien.
Desweitern werden Zusatzinformationen, wie Nachrichten-ID und Format-Kürzel, für jede Datei abgelegt
(als ZIP-Kommentar). Allerdings werden die Einzeldateien bei dieser Verarbeitungsart nicht direkt
gemeinsam mit den Protokollinformationen abgelegt, da dazu die Ausgangs-ZIP-Datei verloren ginge,
die aber unangetastet archiviert werden soll. Stattdessen wird eine neue ZIP-Datei nur für ProtokollInformationen angelegt, die dann neben der Original-Datei archiviert wird und den gleichen
Dateinamenstamm sowie den Zusatz .log besitzt wie diese.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 131 von 384
Weiterhin werden ZIP-Dateien gemeinsam mit den Log-Archiven grundsätzlich im Unterverzeichnis zipdone abgelegt, ob die Verarbeitung fehlerhaft war oder nicht. Das hat die Ursache, dass in einer ZIPDatei mehrere Eingabe-Dateien enthalten sein können, deren Fehlerstatus sich durchaus unterscheiden
können, so dass die gesamte Gruppe keiner Statusklasse zugeordnet werden kann.
Beim Import einer Zip-Datei werden standardmäßig folgende Dateien ignoriert
-
6.8
import_data.txt
smime.p7s
Dateien mit dem Zip-Kommentar "prt"
Verarbeitung von TMP-Dateien
Wird in der datenimport.ini für die Dateierweiterung mit Wildcards (*) gearbeitet, so kann es zu
Datenimport-Fehlern kommen wenn gleichzeitig ein Comimport- und der Datenimport-Job aktiv sind.
Hintergrund:
Der Comimport legt eine *.tmp-Datei im Verzeichnis an und schreibt anschließend die empfangenen
Daten hinein. Greift gleichzeitig der Datenimport auf die Datei zu, kann diese nicht verarbeitet werden.
Als Ergebnis werden zahlreiche Fehlermeldungen (Fehlermeldung kann hier je nach verwendeten
Importfiltern unterschiedlich lauten) im Protokoll erzeugt und die TMP-Datei wird nicht verarbeitet.
Wird die TMP-Datei anschließend vom Comimport umbenannt (nach Abschluss des Dateitransfers), so
kann die umbenannte Datei anschließend problemlos (vorausgesetzt die Datei ist korrekt) importiert
werden.
Mit eCount- 00052272 (ecount_import_ifc.jar - Version: 4.0.2.56) wurde die Logik geändert, sodass per
Default nun Dateien, die auf .tmp enden, vom Datenimport ignoriert werden.
6.9
Wiederholung abgeschlossener Importvorgänge
Die zu importierenden Dateien werden aus vorgegebenen Verzeichnissen geladen und anschließend in
speziellen Unterverzeichnissen archiviert. Im Erfolgsfall ist dies das Verzeichnis done, im Fehlerfall
werden die Daten im Verzeichnis err bzw. dbError abgelegt. Allen Fällen gemeinsam ist, dass die
Ausgangsdatei gemeinsam mit den zugehörigen Fehlerprotokollen in einer ZIP-Datei abgelegt wird.
Einen Sonderfall stellt hier die Verarbeitung von ZIP-Dateien auf Eingangsseite dar, der im Abschnitt 6.7
Verarbeitung von ZIP-Dateien beschrieben wird.
Die erzeugten ZIP-Dateien enthalten in Kommentaren Zusatzinformationen zu jeder Datei, die eine
erneute automatisierte Verarbeitung ermöglichen. Diese Kommentare enthalten Informationen wie den
Dateityp (Protokoll, Formatkürzel für die Datei), Verarbeitungsstatus (Fehler) sowie eine Nachrichten-ID,
die in der Komponente Import-Kommunikation zugewiesen wurde und eine nachträgliche Zuordnung
der Daten zu einer Quelle ermöglicht. Enthält die ZIP-Datei nur eine einzige zu importierende Datei,
kann ein erneuter Import durch Verschieben der ganzen ZIP-Datei zurück in das Import-Verzeichnis
angestoßen werden. Dann erfolgt die Verarbeitung wie in Abschnitt Verarbeitung von ZIP-Dateien
beschrieben, wobei die enthaltenen Protokoll-Informationen nicht berücksichtigt werden. Wenn aber
nur eine einzige Datei von mehreren vorhandenen Dateien aus der ZIP-Datei importiert werden soll,
muss diese mit einem geeigneten Werkzeug extrahiert und ebenfalls wieder im Import-Verzeichnis
abgelegt werden.
Seite 132 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Im Falle einer wiederholten Verarbeitung einer Datei kann es natürlich vorkommen, dass
Dateinamenskonflikte im Archivierungsverzeichnis entstehen. Dann wird, sofern der Parameter
common.backup gesetzt ist, die alte Datei umbenannt und enthält eine Nummer mit einem
vorangestellten Zeichen ~ vor der Dateiendung.
6.10 Probleme/Lösungen
6.10.1
No matching data found in ZIP file
Die Meldung „No matching data found in ZIP file“ bedeutet, dass in der zu verarbeitenden ZIP-Datei
keine passenden Dateien für die Weiterverarbeitung gefunden wurden. Im einfachsten Fall ist in der ZIPDatei einfach nichts Sinnvolles enthalten oder die Dateimaske (datenimport.ini) passt nicht zu den zu
importierenden Dateien (z. B. *.txt als Dateimaske, die Dateien enden aber auf *.edi).
Die Meldung kann aber auch auf eine unsachgemäße Konfiguration, doppelten Einträgen in der
datenimport.ini, zurückzuführen sein. In Verbindung mit dem Comimport und der Ablage der Daten als
ZIP-Datei kann dies dazu führen, dass Daten nicht importiert werden.
Beispiel:
# MC-Wetter
TM_*.csv MCW import/CSV/
# DWD
TagesMittel_*.csv DWD import/CSV/
Grund:
MSC und DWD schauen (mit unterschiedlichen Formatmasken) auf den gleichen Ordner. Jedoch wird in
Verbindung mit ZIP-Dateien vom ersten Importformat (hier MCW) die ZIP-Datei entpackt und nach einer
gültigen Datei (Datei entspricht Formatmaske) gesucht. Wenn keine Datei gefunden wurde, wird eine
Meldung „No matching data found in ZIP file“ im KomA-Log ausgegeben und, da keine Fehler auftraten,
die ZIP-Datei in den zip-done-Ordner verschoben! Dies ist zwingend notwendig, da sonst die
Importordner mit ZIP-Dateien, die nicht auf den Filter passen, überfüllt würden (dies würde zu
gegebener Zeit den Import von richtigen Dateien verhindern).
Daten, die nun für den nächsten Importfilter DWD bestimmt sind, werden damit nicht importiert!
Jedes Importformat muss auf unterschiedliche Importordner schauen. Die Daten müssen
demzufolge im Comimport schon in zwei Verzeichnisse abgelegt werden (z. B. CSV_MCW und
CSV_DWD).
6.10.2
FileNotFoundException beim Datenimport
Beim Datenimport von älteren Daten (Erstellungsdatum der Dateien älter als 1 Monat) kam es während
des Datenimportes zur FileNotFoundException. Als Ursache konnte letztendlich ein parallel laufender
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 133 von 384
Archivierungsjob identifiziert werden, der alle Dateien, die älter als 1 Monat sind, in ein anderes
Verzeichnis verschiebt.
Der Archivierungsjob sollte daher in einer Zeit laufen (meist nachts am Wochenende), in der keine
weiteren Prozesse, wie beispielweise der Datenimport, aktiv sind (siehe auch Abschnitt 9).
6.10.3
Configuration error: Import filter class x not found for format y
Tritt beim Datenimport z. B. folgender Fehler auf:
Warning: Configuration error: Import filter class
de.robotron.ecount.dataimport.filter.KonfigurationHandler not found for format Konfiguration
liegt eine technische Fehlkonfiguration vor.
Der Eintrag in der datenimport.ini zu der obigen Warnung könnte Beispielsweise wie folgt lauten:
*.csv Konfiguration import/Konfiguration
Auf der KomA wird nun ausgehend von dem zweiten Eintrag (Konfiguration) nach der Datei
Konfiguration.properties unter config/import gesucht. Existiert die Datei und hat die Einstellung
HandlerClass=x, so wird der Eintrag dieser Einstellung als KomA-Klasse verwendet. Existiert die
Datei nicht bzw. existiert die Einstellung HandlerClass nicht, so wird per Default nach der Klasse
de.robotron.ecount.dataimport.filter.KonfigurationHandler gesucht.
Es kann also folgende Gründe für den Fehler geben:
1.
Es existiert keine Properties-Datei und der Filter aus der datenimport.ini existiert gar nicht.
2.
Es existiert eine Properties-Datei, jedoch ist der Eintrag HandlerClass nicht vorhanden oder
falsch.
3.
Der Eintrag in der datenimport.ini ist komplett falsch.
Lösungen:
-
6.10.4
Ist der Eintrag in der datenimport.ini komplett falsch, kann/muss dieser lediglich entfernt
werden.
Falls die korrekte HandlerClass bekannt ist, muss diese in der Properties-Datei hinterlegt
werden.
Beispiel: Der Import für das Datenimport-Format Konfiguration soll über die Klasse ABCHandler
laufen. Unter config/import muss damit die Konfiguration.properties mit folgendem Inhalt
angelegt werden:
HandlerClass = de.robotron.ecount.dataimport.filter.ABCHandler
Nicht alle Dateien aus einer ZIP-Datei werden importiert
Eine Lösung für Windows-Betriebssysteme wird mit eCount- 00057947 bereitgestellt.
Werden in einer einzelnen ZIP-Datei mehrere Dateien für unterschiedliche Import-Konfigurationen
importiert (z. B. verschiedene XML-Dateien für EEX und Excel-Dateien), erfolgt die interne Gruppierung
der Konfigurationen über das Quellverzeichnis (= 3. Parameter in der datenimport.ini). Die Gruppierung
beachtet dabei die Groß- und Kleinschreibung des Verzeichnisses – damit ist der Import-Ordner
import/EEX nicht identisch mit den Ordner IMPORT/EEX. Dies kann besonders bei Windows-Rechnern zu
Seite 134 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Irritationen führen, denn bei Windows kann es keine unterschiedlichen Ordner mit identischem Namen
geben, die sich lediglich durch Groß- und Kleinschreibung im Ordnernamen unterscheiden.
Beispiel:
In einer ZIP-Datei befinden sich die folgenden 3 Dateien:
PhelixPowerFuturesMarketResults-2015-07-08.xml
PowerSpotMarketAuctionResults-2015-07-09.xml
EmissionSpotMarketResults-2015-07-08.xml
Die Konfiguration in der datenimport.ini ist folgende:
PowerSpotMarketAuctionResults*.xml EEX_XML_PS IMPORT/CKE
PhelixPowerFuturesMarketResults*.xml EEX_XML_PF IMPORT/CKE
EmissionSpot*.xml EEX_XML_CS import/CKE
EmissionFutures*.xml EEX_XML_CF import/CKE
Laut datenimport.ini gibt es hier intern zwei Konfigurationen (1. für IMPORT/CKE und 2. für import/CKE).
Wird nun die ZIP-Datei abgearbeitet, wird jede Konfiguration einzeln durchlaufen. Hier werden also die
Konfigurationen EEX_XML_PS und EEX_XML_PF ausgeführt. Anschließend wird die ZIP-Datei archiviert
(sprich in den zip-done-Ordner verschoben). Durch die Archivierung ist die Datei nicht mehr vorhanden
und die Konfigurationen EEX_XML_CS und EEX_XML_CF werden nicht mehr beachtet.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 135 von 384
7 Datenversand (ExportCom)
Der Datenversand wird über so genannte E-Mail-Abos realisiert. In den E-Mail-Abos werden die zu
versendenden Daten mit den zugehörigen Versandinformationen festgelegt.
Der Datenversand besteht aus 3 Prozessen:
-
Export der Daten aus der Datenbank in das ecount Export-XML Format
Konvertierung der XML Daten in das gewünschte Format
Versenden der Daten (E-Mail, FTP etc.)
Die durch ein E-Mail-Abo bereitgestellten Daten werden durch das Programm Export-Kommunikation
von der Datenbank aus entsprechenden Export-Zwischentabellen abgeholt. Die zu versendenden Daten
können als XML Datei im ecount-XML-Exportformat zwischengespeichert werden.
Der Versand der Daten per E-Mail oder über FTP erfolgt anhand der im Modul Datenversand zum EMail-Abo festgelegten Informationen. Die E-Mail wird an eine oder mehrere Adressen, die aus dem
Verteiler bestimmt werden, versandt. Als Alternative dazu kann auch ein FTP-Server oder ein
Verzeichnis als Ziel des Datenversandes benutzt werden.
Abbildung 7-1: Datenfluss Export Version 2
Für den eigentlichen Versandprozess werden über die Versandschnittstelle die erzeugten Daten
versendet. ecount beinhaltet standardmäßig ein Versandmodul für E-Mail-Versand (MEX = Message
EXchange), ein FTP-Sendemodul, ein SFTP-Sendemodul sowie ein FILE-Sendemodul zur Ablage der
Dateien im Dateisystem des KomA-Servers.
7.1
Platzhalter
Platzhalter können im Datenversand-ABO (MF_DVSD) verwendet werden die dann zur Laufzeit von der
KomA aufgelöst werden.
Seite 136 von 384
7.1.1
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Dateinamen (Anhang Dateiname)
Diese Platzhalter stehen bei fast allen Export-Formaten zur Verfügung:
Tabelle 7-1: Platzhalter Dateinamen
Platzhalter
Beschreibung
${EAU_ID}
EXPORT_AUFTRAEGE.ID
${FILE_NR}
Dateizähler (relevant wenn mehrere Dateien bei einem Exportauftrag versendet
werden).
${FILE_COUNT} Anzahl der zu exportierenden Dateien für den Exportauftrag
Diese Platzhalter stehen vorwiegend bei den Formaten EDIFACT/MSCONS, CSV, GASX zur Verfügung,
können bei Bedarf aber auch für andere Lastgangformate implementiert werden.
Tabelle 7-2: Platzhalter vorwiegend für Formate EDIFACT/MSCONS, CSV, GASX
Platzhalter
Beschreibung
${Meteringcode} oder ${Zählpunkt} oder ${Zaehlpunkt}
MeteringCode des Zählpunktes
${CountpointName} oder ${Zählpunktname} oder
${Zaehlpunktname}
Der in ecount hinterlegte
Zählpunktname
${CountpointWebName} ${Zählpunkt-Webbezeichnung} oder
${Zaehlpunkt-Webbezeichnung}
Die in ecount hinterlegte ZählpunktWebbezeichnung
${Obiscode} oder ${Obis-Code}
OBIS der Linie
${LineWebName} oder ${Linie-Webbezeichnung}
Die in ecount hinterlegte
Linienbezeichnung
${SenderID} oder ${Absender-Kennung}
ID des Senders aus ecount
${ReceiverID} oder ${Empfänger-Kennung} oder ${EmpfaengerID des Empfängers aus ecount
Kennung}
7.1.2
Betreff (bei E-Mails)
Tabelle 7-3: Platzhalter E-Mail-Betreff
Platzhalter
Beschreibung
Der Dateiname wird in den Betreff geschrieben. Dies ist z.B. bei der EDFIACT${FILENAME} Kommunikation nach BDEW notwendig, da hier der Betreff der E-Mail den Namen der
EDIFACT-Datei beinhaltet soll.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
7.1.2.1
Seite 137 von 384
Manipulation des Betreffs
Mit eCount- 00065086 wurde eine Funktionalität zur Manipulation des Betreffs (Tabelle.Spalte:
EXPORT_ECOUNT.BETREFF) geschaffen. Diese Manipulation kann in Abhängigkeit zu einen Format
(EXPORT_ECOUNT.FORMAT) und den Empfänger (EXPORT_ADRESSEN.WERT WHERE KLASSE = 'TO') über
die Config.properties gesteuert werden.
Die Manipulation ist per Default deaktiviert und muss explizit aktiviert werden über folgende
Config.properties-Einstellung: export.SUBJECT_MANIPULATION=Y
Es kann pro Format ein spezieller Betreff definiert werden, beispielsweise für alle UTILMD-Exporte.
export.SUBJECT.UTILMD.ALL={trust smime} ${filename}
Gültige Formate sind z.B.: EDI, EDI_CONTRL, ORDERS, ORDRSP, UTILMD, ALOCAT. (Die Formate können
über folgendes SQL ermittelt werden: SELECT FORMAT FROM EXPORT_ECOUNT E GROUP BY FORMAT
ORDER BY FORMAT). Ist ein „ALL“-Eintrag vorhanden wird keine empfängerspezifische Prüfung mehr
durchgeführt.
Ist kein ALL-Eintrag vorhanden kann pro Empfänger ein spezifischer Betreff definiert werden. Soll
beispielsweise für den Empfänger max.mustermann@robotron der Betreff geändert werden kann dies
wie folgt geschehen.
[email protected] = XYZ ${filename}
Beispielkonfiguration:
# Für alle UTILMD-Exporte den Betreff ändern
export.SUBJECT_MANIPULATION=Y
export.SUBJECT.UTILMD.ALL={trust smime} ${filename}
# Für ORDERS nur den Betreff ändern wenn der Empfänger "[email protected]" ist.
[email protected]=File: ${filename}
7.2
Allgemeine Export-Parameter
Die Datenexport-Parameter werden über die Datei Config.properties gepflegt.
Tabelle 7-4: Parameter für Datenexport
Parameter/Beschreibung
Standardwert
export.archive_dir
Email
Exportverzeichnis, in dem die KOMA-XML-Dateien bzw. die daraus
generierten Format-Dateien (z. B. CSV, UTILMD, MSCONS,…) auf der KomA
abgelegt werden. Diese Daten sind für die Fehleranalyse zwingend
notwendig. Auf diesem Verzeichnis müssen jedoch auch
Bereinigungsroutinen (Archivjob) laufen, damit die Verzeichnisse nicht
Seite 138 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Standardwert
überfüllt werden (bei mehr als 2 Milliarden Dateien in einem Ordner,
können ältere Server abstürzen).
Es ist eine Ablage pro Mandant möglich, die Syntax ist folgende:
export.archive_dir.mandant_<VTP_ID_MANDANT>=<Verzei
chnis>
z. B. export.archive_dir.mandant_1 = Email_Mandant1
export.compressXML
Y
Y/N. Die interne XML-Datei, die die KomA mitschreibt, wird bei Y in eine
ZIP-Datei geschrieben. Bei N wird die XML-Datei nicht gezippt.
Auf einem Produktivsystem sollte die Option nicht deaktiviert werden
(=N), da die Platzersparnis ziemlich groß ist.
export.deleteformatfile
N
Y/N. Erzeugte Formatdatei (Dateien, die unter export.format_dir abgelegt
werden) am Ende des Datenversandes löschen.
export.eau_status
B
Status abzuarbeitender Export-Aufträge
export.email_dir
E-Mail/E-Mail
Verzeichnis, in dem die fertigen E-Mails abgelegt werden – entspricht der
E-Mail, die von der KomA an den E-Mail-Server übergeben wird. Der
Standardwert nutzt export.archive_dir.
export.error.dir
Verzeichnis, in dem XML-Dateien von fehlerhaften Exportaufträgen
abgelegt werden
export.FILE.counterDigits
Positive Ganzzahl (sinnvoll zwischen 1 und 5).
Beim Export ins Dateisystem kann eine Datei mit dem identischen Namen
bereits im Verzeichnis existieren, im Normalfall bricht der Exportauftrag
dann mit einer Fehlermeldung ab. Über diese Einstellung kann gesteuert
werden, dass die zu exportierende Datei mit einem anderen Dateinamen
abgelegt wird. In diesem Fall wird ein Zähler zwischen Dateinamen und
Dateierweiterung eingefügt. Die Länge der Zahl wird über die Angabe in
counterDigits festgelegt.
Beispiel: Der Dateiname sei ecount.xml, ecount.xml existiert bereits im
Verzeichnis
export.FILE.counterDigits=4
-> ecount.0001.xml
E-Mail/error
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Seite 139 von 384
Standardwert
export.FILE.counterDigits=2
-> ecount.01.xml
export.FILE.CreateDirectory
Y
Y/N. Automatisches Anlegen von Exportverzeichnisse wenn diese noch
nicht existieren
export.fixedSubjectPrefix
Fester Text, der als Präfix vor den Betreff jeder ausgehenden Nachricht
gehängt wird (bei E-Mail Versand)
export.fixedToAddress
Feste E-Mail-Adresse, an die alle Exportaufträge umgeleitet werden. Dabei
werden alle To-, CC- und BCC-Adressen, die vom ecount-Abo übermittelt
werden, gelöscht.
Beispiel:
export.fixedToAddress = [email protected]
export.fixedToAddress = file:C:\Daten\Export
export.fixedToAddress = file:/usr/data/export
export.format_dir
E-Mail/format
Verzeichnis, in dem die erzeugten Dateien abgelegt werden. Entspricht der
Datei nach der Konvertierung, sprich nachdem der jeweilige Exportfilter
seine Arbeit verrichtet hat.
export.logfile
comexport.log
Dateiname für die LOG-Datei
export.logfile.maxSize
500000
Positive Ganzzahl. Maximale Größe der LOG-Datei in Bytes (z. B.
5 MB kann mittels 5242880 definiert werden)
export.max_mail_fetch_count
100
Maximale Anzahl pro Durchlauf abzuarbeitender Export-Aufträge
(Parametername ist historisch und daher ggf. etwas irreführend).
export.max_mails_per_eau
Maximale Anzahl von E-Mails, die pro Export-Auftrag gesendet werden
dürfen. Parameter ist schon älter und soll „Mailbombing“ verhindern. Als
Wert wird eine positive Ganzzahl erwartet. Es gibt in der KomA keine
Limitierung nach oben (Maximalwert), diese kann nur vom jeweiligen EMail-Server definiert werden.
256
Seite 140 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Standardwert
export.page.ablesung
Y
Y/N. Auslagerung von Daten beim Generieren der Nachrichten in das
TEMP-Verzeichnis an ABLESUNG-Elementen
export.page.ecountadmin
N
Y/N. Auslagerung von Daten beim Generieren der Nachrichten in das
TEMP-Verzeichnis
export.page.kunde
Y
Y/N. Auslagerung von Daten beim Generieren der Nachrichten in das
TEMP-Verzeichnis an KUNDE-Elementen
export.page.linie
Y
Y/N. Auslagerung von Daten beim Generieren der Nachrichten in das
TEMP-Verzeichnis an LINIE-Elementen
export.page.tageslastprofil
Y
Y/N. Auslagerung von Daten beim Generieren der Nachrichten in das
TEMP-Verzeichnis an TAGESLASTPROFIL-Elementen
export.page.zaehlpunkt
Y
Y/N. Auslagerung von Daten beim Generieren der Nachrichten in das
TEMP-Verzeichnis an ZAEHLPUNKT-Elementen
export.port
Port, auf dem der Datenversand auf das Stop Signal zum Beenden des
Servers warten soll.
export.rowPrefetchCount
Oracle JDBC drivers include extensions that allow you to set the number of
rows to prefetch into the client while a result set is being populated during
a query. This feature reduces the number of round trips to the server.
By default, when Oracle JDBC executes a query, it receives the result set 10
rows at a time from the database cursor. This is the default Oracle rowprefetch value.
export.sender.FTP.HandlerClass
Sendemodul für FTP-Adressen. Damit kann zwischen verschiedenen
Implementierungen gewechselt werden. Z. B.
de.robotron.ecount.exportcom.sender.FTPSender2 und
de.robotron.ecount.exportcom.sender.FTPSender
export.sender.MEX.HandlerClass
<common.base_port
>+2
10
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Seite 141 von 384
Standardwert
Damit ist es möglich, eine andere HandlerClass (Logik) für den E-MailVersand anzugeben. Ist für die meisten Systeme nicht relevant.
Standardwert: de.robotron.ecount.exportcom.sender.PlainMailSender
export.shutdown_command
SHUTDOWN
Kommando, auf das der Datenversand zum Beenden des Servers warten
soll
export.standardadresse.typ
FILE
Falls keine Zieladresse im Export-Auftrag vorhanden ist. In Verbindung mit
export.standardadresse.wert verwendbar.
Mögliche Werte: MEX (E-Mail), FTP, FILE
export.standardadresse.wert
Falls keine Zieladresse im Export-Auftrag vorhanden ist. In Verbindung mit
export.standardadresse.wert verwendbar. Ist dann die E-MailAdresse, das Verzeichnis, die FTP-Adresse, …
export.validate_xml
N
Y/N. Gibt an, ob beim Verarbeiten einer einzelnen XML-Datei die Struktur
gegen die DTD validiert werden soll. Sollte nur für Diagnosezwecke bei der
Problemanalyse aktiviert werden!
export.write_time_eau
N
Y/N. Laufzeit jedes Exportauftrages in dessen Protokoll (MF_EAU im Reiter
Nachrichten-Protokoll) vermerken.
Format: Time: <Stunde>:<Minute>:<Sekunde>.<Millisekunde>
export.write_xml
N
Y/N. Export der internen KomA-XML aus der DB.
export.xml_dir
E-Mail/xml
Verzeichnis für interne KomA-XML-Dateien des Versandprozesses. In
diesem Verzeichnis werden die für Analysezwecke notwendigen Dateien
für einen Export-Auftrag abgelegt.
export.zipExtension
Diese Einstellung sollte für die meisten Systeme nicht relevant sein. Wenn
export.compressXML aktiviert ist, wird eine ZIP-Datei angelegt. Mit
dieser Einstellung könnte die Dateierweiterung geändert werden.
Zip
Seite 142 von 384
7.3
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Sendemodul E-Mail - MailSender (MEX)
Der MailSender nutzt den SMTP-Standard (Simple Mail Transfer Protocol), dieser ist im RFC821
spezifiziert. Der Aufbau einer E-Mail richtet sich nach dem RFC822 und dem MIME Standard. Die
Codierung des E-Mail-Textes erfolgt unter der Beachtung der Parameter
export.MEX.TextEncoding, und export.MEX.TextTransferEncoding.
Der wichtigste Parameter beim MailSender ist export.MEX.smtphost, Nutzername und Passwort
werden für ihn via export.MEX.smtp-username und export.MEX.smtp-password
spezifiziert.
7.3.1
Konfigurationsparameter
Parameter, die für den E-Mail-Versand zuständig sind, werden über die Datei Config.properties gepflegt.
Tabelle 7-5: Einstellungen für MailSender
Parameter/Beschreibung
Typ*
Standardwert
export.ignoreAttachmentDescription
String
N
String
base64
Y/N. Mit Y können Anhangbeschreibungen aus den Abos ignoriert werden.
(siehe eCount- 00036908). Zusätzlich wird bei Y der Content-DescriptionHeader nicht gesetzt.
export.MEX.AttachmentEncoding
Kodierung für den Transport der E-Mail-Anhänge. Der Standardwert sollte,
wenn möglich, nicht geändert werden. Eine Anpassung ist nur notwendig, falls
ein E-Mail-Server diesen Standard nicht bedienen kann (was inzwischen aber
unwahrscheinlich ist).
Nach RFC 2045 sind folgende Einstellungen möglich: 7bit, 8bit, quotedprintable, base64 und binary
Beispiele:
export.MEX.AttachmentEncoding = 7bit
export.MEX.AttachmentEncoding = quoted-printable
export.MEX.AttachmentEncoding = base64
export.MEX.bcc
String
Statische E-Mail-Adresse, an die jede ausgehende E-Mail Nachricht zusätzlich
als BCC versendet wird.
export.MEX.cc
String
Statische E-Mail-Adresse, an die jede ausgehende E-Mail Nachricht zusätzlich
als CC versendet wird.
export.MEX.compressmailfile
Y/N. Ablage der E-Mail als ZIP-Datei (wenn
export.MEX.writemailfile=Y aktiv)
String
N
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 143 von 384
Parameter/Beschreibung
Typ*
Standardwert
export.MEX.CSV_Inline
String
N
String
N
String
N
String
N
String
Y
String
N
Y/N. Mit dem Parameter kann gesteuert werden, ob CSV-Anhänge als Inline in
E-Mails angehangen werden sollen.
N schaltet dieses Verhalten ab und CSV-Dateien werden immer mit
Disposition "attachment" angehängt.
Seit eCount- 00048483 ist der Default N, vorher Y.
export.MEX.custom_message_id
Y/N. Eigene Implementierung der Message-ID, siehe eCount- 00045165
Die Message-ID ist bei mehreren KomA-Instanzen nicht immer eindeutig.
Daher wird hier mit nanoTime gearbeitet und zusätzlich ein Hash über das
Arbeitsverzeichnis der KomA verwendet.
Des Weiteren wird der Server-Port (export.port aus Config.properties)
mit einbezogen.
export.MEX.debug
Y/N. Aktiviert das JavaMail-Debug, notwendig bei Problemen mit den E-MailVersand
export.MEX.default-ntlm-domain
Y/N. bei Y wird die Systemvariable „USERDOMAIN“ via
System.getenv("USERDOMAIN") abgefragt und als Wert für
export.MEX.smtp.auth.ntlm.domain gesetzt.
export.MEX.encode_filename
Y/N. Mit N werden die Dateinamen nach der MIME-Spezifikation erstellt. Das
Enstspricht RFC 2231, dieses Standard wird aber nicht von allen Mail-Clients
unterstützt. Beispielsweise hat Outlook hier Probleme und zeigt anschließend
den Dateinamen nicht korrekt an.
export.MEX.encode_parameters
Y/N. Mit Y werden nicht-ASCII Parameter, z.B. im Content-Type-Header,
mittels RFC 2231 kodiert.
export.MEX.fixed_from
Konfiguration einer festen Absender-E-Mail-Adresse. Mit dieser Einstellung
wird die From-Adresse überschrieben (die beispielsweise über das ecountSystem geliefert wird)
String
Seite 144 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Typ*
export.MEX.fixed_from.[SENDER-ID]
String
Standardwert
Konfiguration einer festen Absender-E-Mail-Adresse pro Sender-ID
Syntax: export.MEX.fixed_from.[SENDER-ID] = [EMAILADRESSE]
Beispiel: export.MEX.fixed_from.0815 =
[email protected]
export.MEX.from
String
Feste FROM-Adresse für jeden E-Mail-Versand (Einstellung vorwiegend für
Testsysteme).
Diese Einstellung wird abgefragt, wenn weder aus dem ecount-System noch
über export.MEX.fixed_from eine From-Adresse geliefert wird.
export.MEX.mail.smtp.starttls.enable
String
N
String
Y
SSL für den Versand von E-Mails aktivieren. Identisch zu
export.MEX.smtp.starttls.enable (nur mit Y/N), aus
Abwärtskompatibilitätsgründen vorhanden.
export.MEX.SendMail
Y/N. Über diesen Parameter kann das Senden von E-Mails an den SMTPServer deaktiviert werden (N) - für Testsystem sinnvoll.
export.MEX.smtp.auth
boolean false
true/false. If true, attempt to authenticate the user using the AUTH
command.
export.MEX.smtp.auth.digest-md5.disable
boolean false
true/false. If true, prevents use of the AUTH DIGEST-MD5 command.
export.MEX.smtp.auth.login.disable
boolean false
true/false. If true, prevents use of the AUTH LOGIN command.
export.MEX.smtp.auth.mechanisms
String
If set, lists the authentication mechanisms to consider, and the order in which
to consider them. Only mechanisms supported by the server and supported
by the current implementation will be used. The default is LOGIN PLAIN
DIGEST-MD5 NTLM, which includes all the authentication mechanisms
supported by the current implementation.
export.MEX.smtp.auth.ntlm.disable
true/false. If true, prevents use of the AUTH NTLM command.
boolean false
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 145 von 384
Parameter/Beschreibung
Typ*
export.MEX.smtp.auth.ntlm.domain
String
Standardwert
Die NTLM Authentifzierungs-Domain. Kann mittels des
Kommadozeilenausdrucks echo %USERDOMAIN% bestimmt werden.
Alternativ kann auch der Parameter export.MEX.default-ntlmdomain verwendet werden (sinnvoll wenn sich die Domain öfters ändern
kann).
Wenn der Nutzer bereits als domain\user definiert wird, braucht die
NTLM-Domain nicht separat spezifiziert werden.
export.MEX.smtp.auth.plain.disable
boolean false
true/false. If true, prevents use of the AUTH PLAIN command.
export.MEX.smtp.connectiontimeout
int
Socket connection timeout value in milliseconds. This timeout is implemented
by java.net.Socket. Default is infinite timeout.
export.MEX.smtp.ehlo
boolean
true/false. If false, do not attempt to sign on with the EHLO command.
Defaults to true. Normally failure of the EHLO command will fallback to the
HELO command; this property exists only for servers that don't fail EHLO
properly or don't implement EHLO properly.
export.MEX.smtp.sasl.authorizationid
String
The authorization ID to use in the SASL authentication. If not set, the
authentication ID (user name) is used.
export.MEX.smtp.sasl.enable
boolean
true/false. If set to true, attempt to use the javax.security.sasl package to
choose an authentication mechanism for login. Defaults to false.
export.MEX.smtp.sasl.mechanisms
String
A space or comma separated list of SASL mechanism names to try to use. Für
SASL siehe (RFC 2222)
export.MEX.smtp.sasl.realm
String
The realm to use with DIGEST-MD5 authentication.
export.MEX.smtp.sasl.usecanonicalhostname
true/false. If set to true, the canonical host name returned by {@link
java.net.InetAddress#getCanonicalHostName
InetAddress.getCanonicalHostName} is passed to the SASL
mechanism, instead of the host name used to connect.
boolean false
Seite 146 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Typ*
export.MEX.smtp.sendpartial
Boolean
Standardwert
true/false. If set to true, and a message has some valid and some invalid
addresses, send the message anyway, reporting the partial failure with a
SendFailedException. If set to false (the default), the message is not
sent to any of the recipients if there is an invalid recipient address.
export.MEX.smtp.socks.host
String
Specifies the host name of a SOCKS5 proxy server that will be used for
connections to the mail server.
export.MEX.smtp.socks.port
String
Specifies the port number for the SOCKS5 proxy server. This should only need
to be used if the proxy server is not using the standard port number of 1080.
export.MEX.smtp.ssl.checkserveridentity
Boolean false
true/false. If set to true, check the server identity as specified by RFC
2595. These additional checks based on the content of the server's certificate
are intended to prevent man-in-the-middle attacks.
export.MEX.smtp.ssl.enable
boolean
true/false. If set to true, use SSL to connect and use the SSL port by
default. Defaults to false for the "smtp" protocol and true for the "smtps"
protocol.
export.MEX.smtp.ssl.trust
String
If set, and a socket factory hasn't been specified, enables use of a {@link
com.sun.mail.util.MailSSLSocketFactory
MailSSLSocketFactory}. If set to *, all hosts are trusted. If set to a
whitespace separated list of hosts, those hosts are trusted. Otherwise, trust
depends on the certificate the server presents.
export.MEX.smtp.starttls.enable
boolean false
true/false. If true, enables the use of the STARTTLS command (if
supported by the server) to switch the connection to a TLS-protected
connection before issuing any login commands. Note that an appropriate
trust store must configured so that the client will trust the server's certificate.
Defaults to false.
Identisch mit export.MEX.mail.smtp.starttls.enable=Y oder N
export.MEX.smtp.starttls.required
true/false. If true, requires the use of the STARTTLS command. If the
server doesn't support the STARTTLS command, or the command fails, the
connect method will fail.
Boolean false
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 147 von 384
Parameter/Beschreibung
Typ*
Standardwert
export.MEX.smtp.timeout
int
infinite
timeout
Socket read timeout value in milliseconds. This timeout is implemented by
java.net.Socket.
export.MEX.smtp.writetimeout
int
Socket write timeout value in milliseconds. This timeout is implemented by
using a java.util.concurrent.ScheduledExecutorService per connection that
schedules a thread to close the socket if the timeout expires. Thus, the
overhead of using this timeout is one thread per connection. Default is infinite
timeout.
export.MEX.smtphost
String
Adresse des SMTP Servers, der für den E-Mail-Versand zuständig ist, wenn
nicht definiert, wird der Wert aus common.smtp_server verwendet
export.MEX.smtp-password
String
Passwort für SMTP-Authentifizierung
export.MEX.smtp-password.encrypted
String
N
Y/N. falls export.MEX.smtp-password kodiert sein soll. Die Kodierung
erfolgt mithilfe von PasswordCoding.
export.MEX.smtpport
Int
Festlegung des SMTP-Ports für den Export
export.MEX.smtp-username
String
Nutzer für SMTP-Authentifizierung
export.MEX.TextEncoding
Zeichenkodierung, mit welcher der Nachrichtentext kodiert wird. Der Default
ISO-8859-1 ist nur in westeuropäischen Ländern sinnvoll. In Russland
beispielsweise muss der Wert auf UTF-8 geändert werden:
export.MEX.TextEncoding = UTF-8
STRING ISO-88591
Seite 148 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Typ*
Standardwert
export.MEX.TextTransferEncoding
String
8bit
String
N
String
N
Legt den Wert für das Content-Transfer-Encoding fest (Kodierung für die
Übertragung des Textes). Die Kodierung von Nicht-7-Bit-ASCII-Zeichen erfolgt
häufig mittels Quoted-Printable-Kodierung, Binärdaten hingegen werden
üblicherweise Base64-kodiert. Alternativ ist für Textdaten auch 8bit
möglich (die Kodierung export.MEX.TextEncoding muss dabei
angegeben sein, z. B. UTF-8).
Beispiele:
export.MEX.TextTransferEncoding = quoted-printable
export.MEX.TextTransferEncoding = 8bit
export.MEX.TextTransferEncoding = 7bit
export.MEX.trust_all_hosts
Y/N. Bei verschlüsselter Verbindung wird allen HOSTS per Default vertraut.
export.MEX.writemailfile
Y/N. Bei Y werden die E-Mails zusätzlich im Verzeichnis gespeichert. Das
Verzeichnis ergibt sich aus der Einstellung export.email_dir (Default
Email)
*Die Spalte Typ gibt Auskunft über die Art des Parameters:
-
Int steht für Integer und erwartet damit eine Ganzzahl, z. B. export.MEX.smtp-port=25
String steht für alphanumerische Angaben z. B. export.MEX.smtphost=myHost
Bei Boolean-Parametern muss der Wert für ja mit true und für nein mit false angegeben
werden, z. B. export.MEX.smtp.ehlo=true
o
o
Boolean-Parameter der JavaMail-API werden mit true/false (Typ = boolean) angegeben
Boolean-Parameter der KomA werden mit Y/N definiert (Typ = String)
Beim Aktualisieren der E-Mail-Sender-Komponente (wie auch beim E-Mail-Empfang) wird auch
immer die neuste Version der JavaMail-API ausgeliefert.
Bei einigen Versionssprüngen (z. B. von 1.4.4 auf 1.5.0) gab es E-Mail-Server-Konstellationen, die
nach dem Update ohne Anpassung einiger JavaMail-Eigenschaften nicht mehr funktionierten.
Die produktseitigen Tests des Herstellers sehen nicht vor, jede JavaMail-Version gegen alle
möglichen E-Mail-Server mit den unterschiedlichsten Konfigurationseinstellungen zu testen. Daher
ist es zwingend notwendig das Update vorher auf dem Kunden-Testsystem zu validieren (der Test ist
erfolgreich wenn mit dem neusten Update weiterhin E-Mails empfangen und versendet werden
können).
Aus diesem Grund werden E-Mail-Updates auch nicht global an alle Kunden ausgeliefert sondern nur
auf der Download-Seite oder über Kunden-Addons bereitgestellt.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
7.3.2
Seite 149 von 384
E-Mail-Signatur hinterlegen
Für den Versand per E-Mail kann eine Signatur auf der KomA hinterlegt werden. Diese muss in der TextDatei EMAIL_Signature.txt im Verzeichnis config abgelegt werden. Ist die Datei vorhanden, wird der
Inhalt der Datei automatisch an jede E-Mail angehangen.
Beispiel:
*KomA*\config\EMAIL_Signature.txt (führende Leerzeile sinnvoll)
Mit freundlichen Grüßen ihr Kommunikationsserver
7.3.3
Dateinamen als Betreff verwenden
Um den Dateinamen der ersten angehängten Datei als Betreff zu verwenden, kann die Variable
${FILENAME} benutzt werden. Diese Variable muss im ecount als Betreff, beispielsweise in den Abos
(MF_DVSD) im Reiter Kommunikation, angegeben werden.
7.3.4
Debugging
Um das Debugging einzuschalten, muss
export.MEX.debug=Y
gesetzt und zusätzlich die Datei Export-Communication.log.properties unter config angelegt werden,
wenn bereits vorhanden, nur modifizieren mit folgenden Inhalt:
log4j.rootLogger=WARN, Ecount
log4j.appender.Ecount=com.robotron.ecount.util.Log4jAdapter
log4j.appender.Ecount.layout=org.apache.log4j.PatternLayout
log4j.appender.Ecount.layout.ConversionPattern=%d{dd.MM.yyyy
HH:mm:ss.SSS} %-5p %l: %m%n
log4j.logger.de.robotron.ecount.exportcom.sender=DEBUG
7.3.5
Sicherheitshinweis - CSNC-2014-001
Eine Sicherheitslücke, die in CSNC-2014-001 ausführlich dokumentiert ist, wurde mit eCount- 00046742
geschlossen. Die Aussage des Herstellers der JavaMail-API lautet wie folgt:
"Die Applikation ist für das Prüfen der Benutzereingaben verantwortlich. Im vorliegenden Fall heißt das:
Die Applikation ist dafür verantwortlich zu überprüfen, dass die Betreffzeile keine Zeilenumbrüche
beinhaltet. Der zur Demonstration verwendete Code ist kein von Oracle bereitgestelltes Beispiel. Die
Meldung wird daher als "Kein Fehler" (not-a-bug) geschlossen."
Kurze Problembeschreibung:
In Javamail gibt es eine Sicherheitslücke, die das Einschleusen von SMTP Headern (SMTP injections) in
JavaMail erlaubt, sofern folgende zwei Voraussetzungen erfüllt sind:
Seite 150 von 384
-
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
das Servlet unterstützt mehrteilige POST-Nachrichten (multipart POST requests),
die Applikation prüft Benutzereingaben nicht auf Wagenrücklauf (CR) und Zeilenvorschub (LF),
bevor die JavaMail setSubject Methode aufgerufen wird.
Kurzbeschreibung der Lösung:
Zeilenumbrüche (CR LF \r\n oder CR= \r oder LF = \n) im Betreff werden nun im KomA-Modul
Ecount Communication Email Sender Module (MEX) gegen Leerzeichen entfernt und erst danach an die
Javamail-API übergeben.
7.3.6
Probleme/Lösungen
7.3.6.1
Base64-Kodierung für E-Mail-Anhänge
Sollte es Probleme wegen nicht korrekter Formatierung von Anhängen geben (BDEW
Kommunikationsrichtlinie sieht Base64 vor), kann das Problem entweder an einer Fehlkonfiguration an
der KomA oder auch am E-Mail-Server liegen. Bei letzterem ist die IT-Abteilung des Kunden für das
Problem zuständig.
Überprüfung KomA:
In der Config.properties muss nach der Einstellung export.MEX.AttachmentEncoding gesucht
werden. Ist diese nicht angegeben wird per Default base64 verwendet. Bei
export.MEX.AttachmentEncoding=base64 liegt keine Fehlkonfiguration vor.
Zusätzlich legt die KomA jede verschickte E-Mail (als ZIP-Datei) unter *KomA*\Email\Email\ ab. In dieser
ZIP-Datei ist die E-Mail-Datei enthalten (*.eml), diese kann nun mit einen Texteditor betrachtet werden.
Dabei muss nach dem Text Content-Transfer-Encoding: gesucht werden, steht auch dort
base64, liegt das Problem nicht am KomA.
Abbildung 7-2: Kontrolle E-Mail-Dateien in der KomA auf Content-Transfer-Encoding: base64
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
7.3.6.2
Seite 151 von 384
Message-ID (MAIL-ID) bei mehreren KomA-Instanzen
Bei der Generierung der E-Mail-ID bei mehreren KomA-Instanzen, wurden teilweise für mehrere E-Mails
gleiche MAIL-ID generiert (Tabelle EXPORT_MAIL_STATUS.MAIL_ID). Dies kann zu Problemen beim
Versand auf dem E-Mail-Server führen. Im konkreten Fall wurde nur 1 Datei exportiert und die anderen
als „Duplikate“ abgewiesen.
Dieses Problem wurde mit eCount- 00045165 gelöst, muss aber aktuell explizit über die
Config.properties-Einstellung export.MEX.custom_message_id = Y aktiviert werden.
Nun wird die Generierung der Message-ID entsprechend folgendem Aufbau durchgeführt:
<Hash über das Arbeitsverzeichnis des KomA-Servers>.
<ServerPort aus Config.properties „export.port“>.
<aktuelle Zeit in Nanosekunden>.
<Zeichenkette „Robotron“>.
<aktuellen Nutzer>
Damit sollte die Eindeutigkeit der Message-ID auch beim Parallelbetrieb gewährleistet sein.
7.3.6.3
Datenversand bleibt hängen
Mit JavaMail 1.5.1 und KOMA-EXPORTCOM_SENDER_MEX ab Version 4.0.2.25 ist es möglich ein
Timeout für das Versenden von Mails zu definieren. Über den Parameter
export.MEX.smtp.writetimeout kann der Timeout (in der Config.properties) definiert werden.
Beispiel für 10 Minuten = 600 Sekunden = 600000:
export.MEX.smtp.writetimeout=600000
7.3.6.4
NTLM-Domain (bad username or password)
Hier Prüfung, ob die NTLM-Domain spezifiziert ist, entweder in Form von „domain/user“ bei dem
Nutzernamen (in ecount in der Maske Kommunikationseinstellungen MF_RIMPORT bei Benutzername)
oder in Form der Config.properties-Einstellung
export.MEX.smtp.auth.ntlm.domain=domain.
Unter Umständen muss noch die Plain-Authentifizierung explizit deaktiviert werden:
export.MEX.smtp.auth.plain.disable=true
7.3.6.5
Sonderzeichen werden verstümmelt (z. B. kyrillisch)
Zeichen die nicht ISO_8859_1 entsprechen, können beispielsweise als UTF-8 übertragen werden.
export.MEX.TextEncoding = UTF-8
7.3.6.6
SMIME – NullPointerException (SMIME_EncryptionHandler:200)
Beim Versenden eines verschlüsselten Exportauftrages per E-Mail (und aktivierten SMIME) kommt es
zum folgenden Fehler:
java.lang.NullPointerException (at de.robotron.ecount.smime.SMIME_EncryptionHandler:200
Seite 152 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Im vorliegenden Fall lag das Problem an einer, per Config.properties, zusätzlich definierten BCC-Adresse
([email protected]). Bei Verschlüsselung wird versucht, auch die Nachricht an den
BCC zu verschlüsseln. Für diesen BCC-Eintrag ist jedoch kein Zertifikat vorhanden, was intern zum
Abbruch führt. Der Fehler wurde jedoch nicht erwartet und damit nicht korrekt abgefangen.
Mit eCount- 00052099 (exportcom/encryption_smime.jar Version 4.0.2.13) wurde das Problem wie folgt
gelöst: Ist in der Config.properties mittels export.MEX.BCC oder export.MEX.CC eine weitere
Adresse definiert und soll der Exportauftrag zusätzlich verschlüsselt werden, , so wird die Nachricht an
die BCC bzw. CC Adresse unverschlüsselt verschickt, sofern für die definierte Adresse in
export.MEX.BCC oder export.MEX.CC kein Zertifikat vorhanden ist.
7.3.6.7
5.7.1 Client does not have permissions to send as this sender
Die Fehlermeldung: „com.sun.mail.smtp.SMTPSendFailedException: 550 5.7.1 Client does not have
permissions to send as this sender“ ist unter Umständen die eigentliche Antwort vom Exchange Server
(550 5.7.1 Unable to Relay). Dies bedeutet, dass der User/Server Mails nicht nach extern versenden darf.
Eine Prüfung auf dem Exchange-Server kann wie folgt durchgeführt werden:
Get-MessageTrackingLog -ResultSize Unlimited -Start "dd/MM/yyyy" EventID FAIL | ? {$_.RecipientStatus -match "550 5.7.1"} | fl
Sollte die Vermutung stimmen, müsste die IP des Severs im ReceiveConnector (der zum weiterleiten
„Relay“ gedacht ist) eingetragen werden.
7.4
Sendemodul FTP
Das FTP Protokoll hat seinen Ursprung im Jahr 1971 als der erste RFC Eintrag (959) für das FTP Protokoll
veröffentlicht wurde. FTP verfügt über Funktionen, Dateien auf einen anderen Computer/Server
hochzuladen (Upload), herunterzuladen (Download), zu kopieren (Copy) und zu löschen (Delete).
Zusätzlich können Verzeichnisse erstellt, gelöscht und gelesen werden.
Für den FTP-Versand stehen in der KomA (wie beim Datenempfang) zwei unterschiedliche
Implementierungen zur Verfügung. Diese können per Config.properties konfiguriert werden.
Um Daten an einen FTP-Server zu senden, muss als Empfänger des Abos eine Adresse vom Typ FTP mit
den notwendigen Zugangsdaten des FTP-Servers eingetragen werden. Die Adresse hat dann die Form:
ftp://username:password@hostname[:port]/directory
Falls bei der Kommunikation ein FTP-Proxyserver verwendet werden muss, so muss die angegebene
Adresse die folgende Form haben:
ftp://username*hostname[*port]:password@proxyhostname[:proxyport]/directory
-
username
hostname
port
password
proxyhostname
proxyport
Nutzername auf dem Zielserver
Name bzw. IP-Adresse des Zielservers
FTP-Port des Zielservers
Passwort für Zugang zum Zielserver mit dem angegebenen Nutzer
Name bzw. IP-Adresse des FTP-Proxyservers
FTP-Port des Proxyservers
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
-
directory
Seite 153 von 384
Verzeichnis auf dem Zielserver
Die Angabe der Ports ist optional und sollte nur erfolgen, wenn nicht der Standard-FTP-Port 21 benutzt
wird.
Sämtliche, beim ecount-Abo angegebenen Informationen, wie Betreff und Nachrichtentext, werden
(anders als beim E-Mail-Versand) nicht ausgewertet.
7.4.1
Konfigurationsparameter
Parameter für den Versand über FTP werden über die Config.properties-Datei gepflegt.
Tabelle 7-6: Parameter für Versand über FTP
Parameter/Beschreibung
Standardwert
export.FTP.CONNECTION_TIMEOUT
10
Timeout in Sekunden für den Verbindungsaufbau. Als Wert wird eine positive
Ganzzahl zwischen 1 und 100 erwartet. (nur FTPSender2)
export.FTP.passiv
Y/N. Übertragung im Passiv-Modus? Default N, bei FTPS/FTPES ist der Modus
automatisch aktiviert (Y).
export.FTP.PROXY_HOST
Host des Proxy-Servers (äquivalent zu export.FTP.proxyhost)
(nur FTPSender2)
export.FTP.PROXY_PASS
Passwort des Proxy-Nutzers (nur FTPSender2)
export.FTP.PROXY_PORT
Port des Proxy-Servers (äquivalent zu export.FTP.proxyport)
(nur FTPSender2)
export.FTP.PROXY_TYPE
Ausprägungen: HTTP, FTP, FTP_ACCT, SOCKS4, SOCKS5
(nur FTPSender2)
export.FTP.PROXY_USER
Proxy-Nutzer
(nur FTPSender2)
export.FTP.proxyhost
Host des Proxy-Servers
export.FTP.proxyport
Seite 154 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Standardwert
Port des Proxy-Servers
export.FTP.READ_TIMEOUT
10
Timeout in Sekunden für Lese-Operationen. Als Wert wird eine postivie Ganzzahl
zwischen 1 und 100 erwartet. (nur FTPSender2)
export.FTP.security
FTP
Definition seit eCount- 00035779 nicht mehr notwendig. Mögliche Ausprägung: FTP,
FTPS, FTPES.
(nur FTPSender2)
export.FTP.ssl_trust_all
N
Y/N. Mit Y kann allen Zertifikaten vertraut werden, obwohl das Zertifikat noch nicht
im Java-Keystore hinterlegt ist (nur FTPSender2)
export.FTP.tmp_extension
.TMP
Der Transfer einer Datei wird immer über eine temporäre Datei realisiert. Damit kein
anderes Programm bereits auf die Datei zugreift, während diese noch geschrieben
wird. (nur FTPSender2)
Beispiel: .dat:
export.FTP.tmp_extension = .dat
export.sender.FTP.HandlerClass
FTPSender
Es existieren zwei FTP-Implementierungen, diese können über
de.robotron.ecount.exportcom.sender.FTPSender oder *.FTPSender2 erfolgen.
FTPSender2 basiert auf FTP4J und ist für den FTP-Versand die bessere Alternative (da
neuere Bibliothek mit mehr Funktionsumfang). Aus Abwärtskompatibilitätsgründen
steht der Default jedoch der älteren Bibliothek FTPSender.
Bei der Nutzung von FTPS oder FTPES muss der Schlüssel FTP gegen FTPS oder FTPES getauscht
werden. D.h. der Proxy-User „user1“ wird mit export.FTPS.PROXY_USER=user1 bzw.
export.FTPES.PROXY_USER=user1 spezifiziert.
7.4.2
FTPS / FTPES
Um eine gewisse Sicherheit zu gewährleisten, wurde in den folgenden Jahren nach RFC 2228 ein
Sicherheitsstandard für FTP erstellt, um den Datenkanal durch den Einsatz von SSL (Secure Socket Layer)
oder TLS (Transport Layer Security) zu verschlüsseln. Mit eCount- 00035779 wurde die direkte
Unterstützung für FTPS / FTPES in ecount implementiert.
7.4.2.1
FTPES (FTP over explicit TLS/SSL) security level
Wird über de.robotron.ecount.exportcom.sender.FTPSender2 realisiert. Es wird immer passives FTP
(export.FTP.passiv=Y) bei FTPES genutzt.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 155 von 384
Bei der expliziten Methode muss der Client (KomA) die Sicherheit der Verbindung explizit beim Server
anfordern. Das heißt es wird eine normale FTP Verbindung (über Port 21) hergestellt, die dann über das
Kommando AUTH SSL (RFC 2228) in den verschlüsselten Modus umgeschaltet wird.
7.4.2.2
FTPS (FTP over implicit TLS/SSL) security level
Wird über de.robotron.ecount.exportcom.sender.FTPSender2 realisiert. Es wird immer passives FTP
(export.FTP.passiv=Y) bei FTPS genutzt.
Im Impliziten Modus ist das Aushandeln einer Verbindung nicht erlaubt. Hier wird von Beginn an eine
SSL verschlüsselte Verbindung erwartet, d.h. schon bei der Serveranmeldung wird die SSL Verbindung
ausgehandelt. Um sich von anderen Verbindungsmöglichkeiten abzugrenzen, wird dies über Anschluss
990 durchgeführt.
7.4.2.3
Unterschied SSL und TLS
TLS (Transport Layer Security) ist der Nachfolger von SSL (Secure Sockets Layer). Die letzte Version von
SSL war 3.0, weshalb TLS 1.0 teilweise auch als SSL 3.1 bezeichnet wird. TLS verbessert den
Sicherheitsaspekt, so gibt es u. a. bessere Pseudozufallsfunktionen, mit denen das Abhören von
übermittelten Daten erschwert wird.
7.4.3
Feature PROXY_TYPE=FTP_ACCT
Eine FTP-Verbindung wird über folgende Syntax aufgebaut:
username@hostname proxyusername, Password, AccountPassword
Aktiviert wird das Verfahren über die Config.properties-Einstellung:
export.FTP.PROXY_TYPE=FTP_ACCT, dabei werden 2 Varianten unterstützt.
Diese Feature existiert nur beim FTPSender2 sprich wenn folgender Config.properties-Eintrag
vorhanden ist export.sender.FTP.HandlerClass=de.robotron.ecount.exportcom.sender.FTPSender2
7.4.3.1
Variante 1
Hostname = ProxyHost; Benutzername = user@ftphost (keine Nutzung von Proxy)
Folgende Config.properties-Einstellungen sind erforderlich:
-
export.FTP.PROXY_TYPE=FTP_ACCT
export.FTP.PROXY_HOST=<host des proxy über den die Verbindung aufgebaut wird>
export.FTP.PROXY_PORT=<proxy port>
export.FTP.PROXY_USER=<proxyusername>
export.FTP.PROXY_PASS=<AccountPassword>
Zusätzlich müssen über die Nachrichtenadresse (aus ecount) noch folgende Informationen übermittelt
werden (FTP-Host und Password [+ implizit noch ein Benutzer]).
Bei Variante 1 wird kein FTP-Proxy verwendet sondern der Proxy wird direkt angesprochen!
Seite 156 von 384
7.4.3.2
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Variante 2
Hostname = FTPhost, Benutzername = user (Nutzung von Proxy)
Die Angabe von Username+Hostname erfolgt über die Nachrichtenadresse nach der Syntax
user@hostname im Feld für den Benutzernamen.
Folgende Config.properties-Einstellungen sind weiterhin erforderlich:
-
export.FTP.PROXY_TYPE=FTP_ACCT
export.FTP.PROXY_USER=<proxyusername>
export.FTP.PROXY_PASS=<AccountPassword>
export.FTP.PROXY_HOST=<proxy host>
export.FTP.PROXY_PORT=<proxy port>
Bei Variante 2 wird ein FTP-Proxy verwendet!
7.4.4
Feature – Überschreiben
Seit eCount- 00046550 existiert die Möglichkeit, bereits vorhandene Dateien beim Senden via FTP zu
überschreiben. Bei gesetzter Funktionalität zum Überschreiben (Maske Nachrichtenadressen > Feld Ü)
wird bei dem Error-Code 553 versucht, die bereits existierende Datei auf dem FTP-Server zu löschen.
Der Nutzer, mit dem die KomA gegen den FTP-Server verbunden wird, muss das Recht zum Löschen
von Dateien haben!
7.4.5
Feature – „hidden-store“
Falls der FTP-Server das Feature hidden-store unterstützt, wird das „Verstecken“ der Datei vom Server
vorgenommen. Damit braucht die KomA kein manuelles Hochladen als TMP-Datei und anschließendes
Umbenennen mehr durchführen.
Diese Funktionalität ist nur für den FTPSender2 gültig, d.h. Config.properties hat folgenden Eintrag:
export.sender.FTP.HandlerClass=de.robotron.ecount.exportcom.sender.FTP
Sender2
Per Default wird immer ohne hidden-store gearbeitet. Aktiviert wird dies über die Config.properties und
folgender Einstellung:
export.FTP.HIDDEN_STORE.<ftp-url>=Y
Beispiel:
FTP gegen „127.0.0.1“ auf Port „21“ soll mit hidden-store arbeiten:
In der Maske Nachrichtenadressen (MF_NAS) den Eintrag unter Adresse kopieren:
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 157 von 384
Abbildung 7-3: Maske Nachrichtenadressen: FTP soll mit hidden-store arbeiten
Config.properties:
export.FTP.HIDDEN_STORE.ftp://127.0.0.1:21=Y
Bei hidden-store wird die Logik für die Option Überschreiben auch an den FTP-Server übergeben!
D.h. die Einstellung zum Überschreiben (Maske Nachrichtenadressen (MF_NAS) > Feld Ü) wird nicht
mehr von der KomA ausgewertet.
7.4.6
Probleme/Lösungen
7.4.6.1
Allgemein – Verbindungsprobleme
Die einfachste Variante herauszufinden ob die Verbindungsprobleme an den Netzwerkeinstellungen, an
Firewallregeln oder an Benutzerrechten liegen ist der Test mit einen externen FTP-Tool (z.B. FileZilla)
direkt auf den KomA-Server. Dieses FTP-Tool muss mit dem gleichen Nutzer ausgeführt werden wie der
KomA-Prozess um etwaige Probleme mit Benutzerrechten ausschließen zu können!
Sollte die Verbindung und die Übertragung der Datei ohne Probleme funktionieren handelt es sich zu
großer Wahrscheinlichkeit um ein Konfigurationsproblem mit der FTP-Verbindung oder den ProxyServer. Sollte die Verbindung und die Übertragung einer Datei auch nicht mit einen externen Tool
funktionieren handelt es sich um ein Problem in den Netzwerk- und Firewall Einstellungen (Ports ggf.
deaktiviert, …). Dieses Problem muss von der zuständigen die IT-Abteilung analysiert werden.
7.4.6.2
Allgemein – FTP-Bibliothek
Auf der KomA existieren für die Nutzung von FTP-Servern aktuell 2 Implementierungen. Der
de.robotron.ecount.exportcom.sender.FTPSender basiert auf einer sehr alten Bibliothek die aktuell nicht
mehr empfehlenswert ist, da diese zahlreiche Probleme mit aktuellen FTP-Servern hat. Die neue
Implementierung (de.robotron.ecount.exportcom.sender.FTPSender2) basiert auf ftp4j und ist deutlich
leistungsfähiger und stabiler.
Welcher FTPSender verwendet wird, wird über die Config.properties-Datei mit der Einstellung
export.sender.FTP.HandlerClass gesteuert:
Beispiel:
Explizite Nutzung von FTPSender2
export.sender.FTP.HandlerClass=de.robotron.ecount.exportcom.sender.FTPSender2
Seite 158 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Beispiel:
Explizite Nutzung von FTPSender
export.sender.FTP.HandlerClass=de.robotron.ecount.exportcom.sender.FTPSender
Taucht in der Fehlermeldung der FTPSender auf, ist es ratsam auf den FTPSender2 umzustellen um
zu schauen ob Probleme mit der neuen Bibliothek implizit behoben sind. Bei allgemeinen Problemen
(Netzwerkfehlern, fehlende Berechtigungen, Serverausfällen, …) bringt die Umstellung jedoch auch
keinen Erfolg.
7.4.6.3
Timeout bei großen Dateien
Werden große Dateien heruntergeladen und ist gleichzeitig die Netzwerkverbindung sehr langsam, kann
dies beim Download zu einem „Connection time out“ Fehler führen. Unter Umständen hilft es schon,
den Default-Timeout zu erhöhen (z. B. auf 120 Sekunden via: timeout=120)
7.5
Sendemodul SFTP
Das SSH File Transfer Protocol oder Secure File Transfer Protocol (SFTP) ist eine für die Secure Shell (SSH)
- UNIX Systeme - entworfene Alternative zum File Transfer Protocol (FTP), die Verschlüsselung
ermöglicht. SFTP ist ein binäres Protokoll, das im RFC 4253 beschrieben wird.
Die Abkürzung SFTP wird häufig falsch verwendet, um "Secure FTP" zu beschreiben, das ist jedoch
falsch! Auch wird der Begriff SFTP häufig fälschlicherweise als "FTP over SSL" verwendet, was
ebenfalls nicht korrekt ist -> "FTP over SSL" ist FTPS.
7.5.1
Konfigurationsparameter
Die Einstellungen werden in der Config.properties vorgenommen.
Tabelle 7-7: Konfigurationsparameter für Sendemodul SFTP
Parameter/Beschreibung
export.SFTP.PROXY_TYPE
Konfiguration des Typs des Proxy, mögliche Werte sind HTTP, SOCKS4, SOCKS5
export.SFTP.PROXY_HOST
Host des Proxyservers
export.SFTP.PROXY_PORT
Port des Proxyservers
export.SFTP.SOCKET_TIMEOUT
Timeout in Sekunden (Default 35). Dieses Timeout wird erst nach dem Verbindungsaufbau aktiv.
export.SFTP.CONNECTION_TIMEOUT
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 159 von 384
Parameter/Beschreibung
Ganzzahl zwischen -1 und 900 (Default 30), mit -1 wird das Feature deaktiviert. Gibt die Anzahl an
Sekunden an die der Verbindungsaufbau dauern kann. Diese Funktion ist notwendig, da es bei
Problemen beim SFTP-Verbindungsaufbau zum Stillstand des gesamten KomAs (Datenversand) kam.
7.5.2
Konfiguration – ecount (Nachrichtenadresse pflegen)
Maske MF_NAS: Export > Nachrichtenadresse
Dabei muss die Nachrichtenadresse immer mit sftp:// beginnen. Die Angabe des Hosts ist Pflicht, die
Angabe des Ports ist optional und wird durch einen Doppelpunkt gekennzeichnet.
Beispiel:
Angabe nur von Host (sftp://<host>)
sftp://192.168.0.1
Beispiel:
Angabe von Host/Port (sftp://<host>:<port>)
sftp://192.168.0.1:22
Nutzer/Passwort werden über ein Fenster gepflegt, welches durch einen Doppelklick auf die Adresse
geöffnet wird:
Abbildung 7-4: Konfiguration – Nachrichtenadresse pflegen
Seite 160 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 7-5: Nachrichtenadressen Benutzer/Passwort
7.5.3
Feature Überschreiben
Mit eCount- 00047098 wurde die Unterstützung zum Überschreiben bereits vorhandener Dateien auf
dem SFTP-Server implementiert. Aktiviert wird das Feature im ecount in der Maske
Nachrichtenadressen (MF_NAS) über die Eigenschaft Ü (Überschreiben).
Abbildung 7-6: Aktivierung der Option zum Überschreiben
Der Nutzer muss das Recht zum Löschen (Delete) von Dateien auf den SFTP-Server besitzen!
7.6
Sendemodul FILE (Dateiverzeichnis)
Zum Versenden von Daten an ein Verzeichnis muss die Adresse vom Typ FILE sein. Die Angabe des
Verzeichnisses kann relativ zum Kommunikationsbasisverzeichnis oder auch absolut sein. Bei der
Angabe eines absoluten Pfades können auch freigegebene Verzeichnisse auf anderen Rechnern im
Netzwerk spezifiziert werden. An dieser Stelle muss gewährleistet werden, dass das entsprechende
Verzeichnis vom Kommunikationsrechner aus erreichbar und mit Schreibrechten versehen ist (d.h. der
Nutzer, mit dem der Datenversand-JOB ausgeführt wird, muss privilegiert sein, auf das Verzeichnis
zuzugreifen und zu schreiben).
Die Angabe der Adresse muss URL-konform erfolgen und hat dann die Form: file://verzeichnis.
Dabei ist die Spezifikation des Verzeichnisses abhängig vom Betriebssystem des
Kommunikationsrechners.
Bei einer Windows-Plattform kann das folgendermaßen aussehen:
file://\\computername\verzeichnis\unterverzeichnis.
Bei Linux sollte ein Ordner-Pfad wie file:////home/user/dir als absolut erkannt werden.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 161 von 384
Hinweise:
Die für die Datenübertragung verwendeten Verzeichnisse müssen für den Nutzer, in dessen Konto
die Datenversandkomponente läuft, schreibbar sein.
Sämtliche beim Abo angegebenen E-Mail-spezifischen Informationen, wie Betreff und
Nachrichtentext, werden nicht ausgewertet.
7.6.1
Technische Vorgehensweise
Beim Kopieren einer Datei in ein Verzeichnis wird zuerst die Datei mit der Erweiterung .TMP erstellt.
Anschließend werden die Daten (Byte für Byte) transferiert und erst nach dem erfolgreichen Übertragen
der gesamten Datei, wird diese auf dem Zielsystem umbenannt (sprich die Endung .TMP wird wieder
entfernt). Sollten andere Prozesse auf Daten in diesen Ordner zugreifen und lesen, muss also
sichergestellt werden, dass Dateien mit der Endung .TMP davon ausgeschlossen werden. Anderenfalls
würden unvollständige Dateien von den Nachfolgeprozessen verarbeitet.
7.6.2
Konfigurationsparameter
Die Parameter werden in der Config.properties gepflegt.
Tabelle 7-8: Parameter für Versand über FILE
Parameter/Beschreibung
Standardwert
export.FILE.BufferSize
Anzahl der Bytes (Byte-Buffer) die beim Kopieren der Datei auf das Verzeichnis
verwendet werden. Der Standardwert sollte in den meisten Fällen ausreichen.
65536
export.File.CreateDirectory
Y
Y/N. Automatisches Anlegen von Verzeichnissen, wenn diese noch nicht existieren. Es
wird ein Fehler erzeugt, wenn das Verzeichnis nicht existiert und diese Einstellung auf N
gesetzt ist.
export.FILE.RenameToNumberOfAttempts
1
Anzahl der Versuche für die Dateiumbenennung. Positive Ganzzahl (sinnvolle Werte
zwischen 1 und 10).
7.6.3
Probleme/Lösungen
7.6.3.1
Zielverzeichnis X existiert nicht und konnte nicht angelegt werden
Probleme beim Schreiben auf Netzlaufwerke sind in den meisten Fällen keine direkten Probleme des
File-Sendemoduls auf dem KomA. Vielmehr muss beim Schreiben auf Netzlaufwerke Folgendes beachtet
und bei Problemen untersucht werden:
-
Kann ein Rechteproblem ausgeschlossen werden? Sprich hat der Nutzer, mit dem der
Datenversand-Job ausgeführt wird das Recht, auf den Ordner zuzugreifen und Daten anzulegen
(und zu löschen, da mit temporären-Dateien gearbeitet wird)?
Seite 162 von 384
-
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Sind Firewall-Regeln/Proxy-Einstellungen aktiviert oder angepasst worden, sodass der Zugriff
vom KomA-Server auf das Netzlaufwerk blockiert wird?
Allgemeine Netzwerkprobleme (z. B. aufgrund hoher Auslastung, mutierende Virenscanner)
7.6.3.2
Fehler beim Umbenennen der temporären Datei (kurzzeitige Netzwerküberlastung)
Sollte es beim Umbenennen der temporären Datei zu einer Fehlermeldung kommen („Temporäre Datei
*.txt.TMP konnte nicht nach *.txt umbenannt werden“) und liegt das Problem am Netzwerk oder
anderen kurzzeitigen Unterbrechungen, so könnte die Einstellung
export.FILE.RenameToNumberOfAttempts helfen.
Mit export.FILE.RenameToNumberOfAttempts=x wird das Umbenennen der Datei x Mal
versucht. Nach jedem gescheiterten Versuch wird eine halbe Sekunde (500 Millisekunden) gewartet.
Sinnvolle Werte sind zwischen 1 und 10. Sollte es trotz mehrmaliger Versuche weiterhin zu der
Fehlermeldung kommen, kann das Problem ggf. durch andere Softwarekomponenten verursacht
worden sein (z. B. ein Virenscanner der die Datei gelockt hat oder Ähnliches).
7.7
Sendemodul SMB: Samba
Der Sendertyp "SMB", der Samba unterstützt und damit auch die Übergabe von Nutzername und
Passwort zulässt, basiert auf der Open Source Bibliothek Java CIFS, welches Unterstützung für das
CIFS/SMB-Protokoll in Java anbietet.
Der FileSender kann die Funktionalität bezüglich Nutzernamen und Passwort nicht anbieten!
Die Definition der Adresse erfolgt wie gewohnt in der Maske Nachrichtenadressen (MF_NAS).
SMB-URL muss nach folgendem Muster definiert werden:
smb://server[:port]/[[share/[dir/]file]]
Nutzername und Passwort werden separat über die Maske (z. B. per Doppelklick auf die Adresse)
eingetragen.
Soll neben dem Nutzer auch eine Domain angeben werden, muss die Domain zusammen mit dem
Nutzer getrennt durch ein ; im Feld Benutzer eingetragen werden Domain;Nutzer.
Diese Informationen werden dann in die URL eingefügt, welche folgendes Muster hat:
smb://[[domain;]username[:password]@]server[:port]/[[share/[dir/]file]
])
Wichtig: SMB URL, die Workgroups, Server oder Verzeichnisse repräsentieren, müssen mit einen
Slash / enden!
Beispiele:
smb://serverToConnect/tmp/ oder smb://storage15/public/
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 163 von 384
Abbildung 7-7: Beispiel Adresse für Samba-Zugriff durch ecount
7.7.1
Konfigurationsparameter
Die Parameter werden in der Config.properties gepflegt.
Tabelle 7-9: Parameter für Versand über SMB
Parameter/Beschreibung
export.SMB.global_user
Globaler Nutzer für SMB-Verbindungen.
Wird immer in Verbindung mit export.SMB.global_pass ausgewertet.
Diese Einstellung werden für jede SMB-Verbindung verwendete die keine eigene Nutzer/PasswortAngaben enthalten. Sobald eine SMB-Verbindung einen eigenen Nutzer definiert hat, wird der
Parameter (und auch export.SMB.global_pass) ignoriert.
export.SMB.global_pass
Globales Passwort für SMB-Verbindungen
export.SMB.CreateDirectory
Y/N (Default N). Mit dieser Einstellung ist es möglich das automatische Anlegen von Verzeichnissen
zu aktivieren falls der Pfad aktuell noch nicht existiert.
Die Erstellung der Verzeichnisse ist nicht möglich für URLs wie:
-smb://
-smb://workgroup/
-smb://server/
-smb://server/share/
Weil Workgroups, Servers, and Shares nicht dynamisch erstellt werden können.
Seite 164 von 384
7.7.2
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
NTLM
Ist der Einsatz von NTLM (Authentifizierungsverfahren für Rechnernetze) erforderlich, muss dies für die
SMB-URL in der Datei Config.properties auf der KomA explizit aktiviert werden. Ist NTLM aktiviert,
werden Nutzer und Passwort (definiert in der Maske MF_NAS) für die NTLM-Authentifizierung genutzt.
Aktiviert wird die Eigenschaft über die Einstellung:
export.SMB.NTLM.<smb_url_ohne_smb://>=Y
Beispiel: Nutzer mit Domain, Passwort und URL
Maske MF_NAS:
Benutzer:
domain;user0815
Passwort:
myPass
URL:
smb://serverToConnect/tmp/
Config.properties
export.SMB.NTLM.serverToConnect/tmp/=Y
Hinweise:
export.SMB.NTLM. ist immer anzugeben
nun folgt die URL ohne smb://
aktiviert über den Parameter Y (der Default ist N)
7.7.3
Beispiel SMB-URL
(Auszug aus Java CIFS, daher English)
Tabelle 7-10: Beispiel SMB-URL
SMB-URL / Decription
smb://users-nyc;miallen:mypass@angus/tmp/
This URL references a share called tmp on the server angus as user miallen who's password is mypass.
smb://angus/
This references only a server. The behavior of some methods is different in this context (e.g. you
cannot delete a server) however as you might expect the list method will list the available shares on
this server.
smb://myworkgroup/
This syntactically is identical to the above example. However if myworkgroup happends to be a
workgroup (which is indeed suggested by the name) the list method will return a list of servers that
have registered themselves as members of myworkgroup.
smb://192.168.1.15/ADMIN$/
The server name may also be an IP address. See Setting Name Resolution Properties for details.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 165 von 384
SMB-URL / Decription
smb://domain;username:password@server/share/path/to/file.txt
A prototypical example that uses all the fields.
smb://myworkgroup/angus/ <-- ILLEGAL
Despite the hierarchial relationship between workgroups, servers, and filesystems this example is not
valid.
smb://server/share/path/to/dir <-- ILLEGAL
URLs that represent workgroups, servers, shares, or directories require a trailing slash /.
smb://MYGROUP/?SERVER=192.168.10.15
SMB URLs support some query string parameters. In this example the SERVER parameter is used to
override the server name service lookup to contact the server 192.168.10.15 (presumably known to be
a master browser) for the server list in workgroup MYGROUP.
7.7.4
Features
7.7.4.1
Dateien überschreiben
Der SMB-Sender unterstützt die Funktionalität zum Überschreiben von Dateien. Diese Funktion wird bei
der Nachrichtenadresse (MF_NAS) über die Checkbox Ü gepflegt.
Ist die Funktion aktiviert und existiert die Datei auf den Zielverzeichnis bereits, wird die vorhandene
Datei gelöscht.
7.7.4.2
Dateien umbenennen (wenn bereits vorhanden)
Existiert die zu exportierende Datei bereits auf dem Zielverzeichnis (= Datei mit den gleichen
Dateinamen ist bereits vorhanden) und soll diese nicht überschreiben werden kann der Dateiname um
einen Zähler erweitert werden. Dabei wird, wie bei File, die Einstellung
export.FILE.counterDigits ausgewertet.
Ist also Beispielsweise export.FILE.counterDigits=2 konfiguriert und existiert die Datei „ABC.txt“ auf dem
Zielsystem schon, wir die Datei nach „ABC.01.txt“ umbenannt.
Der Zähler wird solange hochgezählt bis die Datei nicht existiert, oder bis der Parameter
export.FILE.counterDigits erschöpft ist (in dem Fall wird der Export mit Fehler beendet).
Bei der Beispieleinstellung von 2 könnten also max. 99 Dateien abgelegt werden.
7.8
Allgemeine Probleme/Lösungen
In diesem Kapitel werden allgemeine Hinweise zu Problemen dargestellt, die nicht direkt mit einem
Sendemodul in Verbindung stehen.
Seite 166 von 384
7.8.1
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Erzeuger der Exportaufträge (Abo) finden
Auf Grundlage der XML-Datei kann ggf. über den Betreff das Abo gefunden werden.
Abbildung 7-8: Ermittlung des Abos
SELECT * from email_abos x WHERE x.betreff_esk LIKE 'Eskalation%';
oder
SELECT * from email_abos x WHERE x.betreff LIKE 'Eskalation%';
7.8.2
SELECT EAU did not finish in 10000 ms, so temporarily release lock
Wenn diese Warnung in den LOG-Dateien auftaucht sollte folgendes geprüft werden:
-
Sind die Jobs für die Bereinigung der Export-Aufträge aktiv (eCount- 00038854).
Sind die DB Indexe in Ordnung (siehe Hinweise Kapitel 3.3.1.1).
Ist ggf. die eine selbstdefinierte SQL_Select_Next_EAU.sql Abfrage aktiv und mangelhaft.
Das Statement zur Abfrage der Exportaufträge wird vor jedem neuen Exportauftrag ausgeführt und
vom Ergebnis wird der erste Datensatz genommen und abgearbeitet. Das Statement wurde insbes.
auch für den Fall entwickelt, dass mehrere KomA-Instanzen für den Export aktiv sind. Die nächste
KomA bekommt dann den nächsten Datensatz aus der Ergebnisliste.
7.8.3
Datenversand erstellt zahlreiche Dateien im E-Mail-Ordner
Beim Export werden im Unterordner Email (Verzeichnisname wird gesteuert über
export.archive_dir) zahlreiche Dateien unter Email/Email (export.email_dir), Email/xml
(export.xml_dir) und Email/format (export.format_dir) abgelegt. Die Ablage dieser Daten
kann mit den folgenden Einstellungen in der Config.properties unterbunden werden.
-
export.write_xml = N
export.MEX.writemailfile = N
export.deleteformatfile = Y
(Korrektur des Parameters in eCount- 00055161)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
7.8.4
Seite 167 von 384
Error: Encrypt/Sign failed (in SMIME_EncryptionHandler/MailSender)
Exporte laufen auf Fehler, weil das Signieren der E-Mail fehlschlägt (ggf. weil gar kein privater Schlüssel
für den Absender im SMIME-Modul gepflegt ist). Diese Exporte sollen jedoch nur verschlüsselt
versendet werden (im Abo ist das Kontrollfeld Verschlüsselung, aber nicht das Kontrollfeld Signatur
ausgewählt). Dieses Verhalten wird aber nur beim Format MSCONS angewendet!
Mit eCount- 00055875 (lfd. Nr. R 5.1 2047) wurde folgende Änderung vorgenommen:
In der Tabelle NAS_ADRESSEN wurde die Spalte SIGNIEREN hinzugefügt. Diese Spalte ist unter Export >
Nachrichtenadressen als Kontrollfeld Signatur sichtbar. Hierbei wurde im KM zusätzlich eine Migration
durchgeführt. Diese Spalte wurde für alle Nachrichtenadressen aktiviert, die ein Zertifikat (in der Tabelle
NAS_ZERTIFIKATE) gepflegt hatten. Was hat es nun mit dieser Spalte auf sich?
Beim Datenversand an eine Nachrichtenadresse wird nun geprüft, ob es sich um einen MSCONSVersand handelt. Ist dies der Fall, wird hier immer die Spalte SIGNIEREN aus NAS_ADRESSEN für den
Export-Auftrag verwendet. Sprich dieser Wert wird in die Tabelle EXPORT_ECOUNT in die Spalte
SIGNIEREN geschrieben. Steht in dieser Spalte der Wert J oder Y, wird die Nachricht auf der KomA
signiert (bzw. es wird versucht zu signieren). Die Abo-Einstellung Signatur bleibt in dem Fall völlig außen
vor. Bei anderen Abos (also bei Formaten ungleich MSCONS) wird die Abo-Einstellung weiterhin
berücksichtigt.
Es bestehen jetzt meist 2 Workarounds:
1. (Empfehlung): Bitte in der Maske Nachrichtenadressen (MF_NAS) prüfen, ob für die
entsprechende Nachrichtenadresse das Kontrollfeld Signieren aktiviert ist. Wenn ja, bitte
deaktivieren (SIGNIEREN=N).
2. Für die entsprechende Absender-E-Mail-Adresse zusätzlich die Voraussetzung (privaten
Schlüssel) auf dem Tomcat schaffen, um auch die Signatur erfolgreich durchführen zu können.
7.8.5
Schlechte Performance bei Abfrage der Export-Aufträge
Unter der Annahme, es bestehen keine DB- oder Netzwerkfehler, können die folgenden Ursachen der
Grund für mangelnde Performance beim Datenversand sein.
Unter Umständen existiert im config-Unterordner die Datei SQL_Select_Next_EAU.sql. Mit dieser Datei
kann ein SQL-Statement hinterlegt werden, um den nächsten Export-Auftrag-Datensatz zu selektieren.
Es ist zu prüfen, ob dieses SQL unzureichend definiert wurde oder ob notwendige Indexe auf den
jeweiligen Tabellen fehlen. Die Indexe sind, je nach Ausprägung der SQL_Select_Next_EAU.sql, ggf.
kundenspezifisch anzulegen.
Ggf. beinhalten die Tabellen EXPORT_ECOUNT und EXPORT_AUFTRAG zu viele Datensätze, um ein
performantes Arbeiten zu garantieren. Es ist zu prüfen, ob die Bereinigung der Tabelle
EXPORT_AUFTRAEGE (siehe eCount-00038854) aktiviert ist.
Seite 168 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
8 LPL-Spool (Lineare Protokolle)
Mit dieser Anwendung kann die Archivierung der linearen Protokolle erfolgen. Die Protokolle sind in den
Tabellen LINEARE_PROTOKOLLE, LINEARE_PROTOKOLLE_EXT und LINEARE_PROTOKOLLE_APP_EXT
hinterlegt. LPL-Spool kann wie der Datenempfang, Datenimport, Datenversand aufgerufen werden. Das
im Auslieferungszustand enthaltene Startskript heißt lplspool.cmd bzw. lplspool.sh. Es empfiehlt sich
diese Startskripte per JOB mindestens 1x in der Woche (am besten in den Nachtstunden am
Wochenende) auszuführen.
Dabei werden die Daten aus den Tabellen in eine ZIP-Datei geschrieben und auf dem Dateiverzeichnis
abgelegt. Anschließend wird der Datensatz im robotron*ecount als archiviert markiert sodass später
DB-Jobs auf den Tabellen arbeiten können. Der DB-Job trägt den Namen Bereinigung Protokolle (JOB-ID:
000004) und ist an die Lizenz EC_BAS geknüpft.
Hinweise:
Technisch: Für den konkreten Datensatz wird das aktuelle Systemdatum in der Spalte ARCHIVIERT
gesetzt: UPDATE EC_PRT.LINEARE_PROTOKOLLE SET ARCHIVIERT = SYSDATE
WHERE…
Hinter dem DB-Job Bereinigung Protokolle verbirgt sich pkg_lpl.prc_loeschen_protokoll, neben dem
Wert in der Spalte ARCHIVIERT, wird auch der globale Parameter LOESCHEN_PROTOKOLL
ausgewertet. Damit können die Protokolle auch ohne die Nutzung von LPL-Spool gelöscht werden.
Folgende Parameter können in der Config.properties definiert werden.
Tabelle 8-1: Parameter für LPL-Spool (Lineare Protokolle)
Parameter/Beschreibung
Standardwert
lplSpool.targetDir
lplspool
Zielverzeichnis für Protokolle relativ zum Kommunikations-Basisverzeichnis oder als (im
Basisverzeichnis)
absolute Pfadangabe
lplSpool.logfile
Dateiname für die LOG-Datei
lplSpool.logfile.maxSize
Maximale Größe der LOG-Datei in Bytes
(seit eCount- 00047558)
lplspool.log
5242880
(=5MB)
lplSpool.MAX_QUERY_ITERATION
maximale Anzahl an Durchläufen/Abfragen für LINEARE_PROTOKOLLE pro JOB-Lauf 1000
(seit eCount- 00047558)
lplSpool.folderNameFormat
Verzeichnisnamenskonvention für die Zielverzeichnisse anhand des Datums (=
Wert aus LINEARE_PROTOKOLLE.DATUM). Per Default werden die Protokolle
yyyyMM
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Seite 169 von 384
Standardwert
monatlich (yyyyMM) in Ordnern abgelegt. Mögliche Kombinationen sind z. B.
yyyyMM oder yyyy/MM oder yyyy/MM/dd
8.1
8.1.1
Probleme/Lösungen
LOG-Datei wird nicht archiviert
Fehlerbehebung in eCount- 00047558:
Die Prüfung auf logfile.maxSize (Einstellung in der Config.properties) war nicht implementiert, die
LOG-Datei wurde dadurch nie archiviert. Der Default für logfile.maxSize wurde auf 5 MB
(5242880 bytes) erhöht, nach Überschreitung dieses Wertes wurde die Datei in eine ZIP-Datei verpackt
und neu geschrieben.
Die Prüfung findet periodisch statt, daher können einzelne LOG-Dateien etwas größer als 5 MB sein.
Der Dateiname der ZIP-Datei wird mit dem aktuellen Datum+Uhrzeit erstellt.
Seite 170 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
9 Archivierung
Die Komponente Archivierung ermöglicht einen automatisierten Aufräum-Job für alte Dateien.
Sie ermöglicht eine flexible Konfiguration von zu archivierenden Dateien und den auszuführenden
Archivierungsoperationen. Die Konfiguration erfolgt über eine einfache Text-Datei
<BASE>/config/archive.ini, für die ein kommentiertes Beispiel unter <BASE>/config/samples mitgeliefert
wird. Diese enthält auch eine vollständige Dokumentation (siehe Anlage 5 Konfigurationsbeispiele für
Loader-Import). An dieser Stelle wird nur noch einmal das Wesentliche kurz erläutert.
Gestartet wird das Programm über die Datei archivierung.(cmd|sh).
Die Datei enthält zeilenweise Konfigurationen für Archivierungsaufträge, nach folgender Syntax:
Tabelle 9-1: Syntax für die Konfigurationen für Archivierungsaufträge
<Dateiendung> <Verzeichnis> <Optionen> <Min-Alter> <Aktion> [<Parameter> ...]
Parameter
Bedeutung
Dateiendung
Dateiendung für zu verarbeitende Dateien oder * für alle Dateien
Verzeichnis
Angabe absolut oder relativ zum KomA-Basisverzeichnis
Optionen
Es können mehrere Optionen angegeben werden, möglich sind:
-recursive
Unterverzeichnisse werden ebenfalls durchsucht
-zipcontent
Angabe des Alters bezieht sich auf die neueste in einer Zip-Datei enthaltene Datei.
Ist eine Datei keine gültige Zip-Datei, wird diese Option ignoriert.
-noerror
Die Aktion wird nur dann ausgeführt, wenn die Datei eine Zip-Datei ist und eine
.err-Datei enthält und diese leer ist. Befindet sich die zugehörige Datendatei in
einer anderen Zip-Datei, wird die Aktion auch für diese Datei ausgeführt.
-deleteEmptyDirs
Möglichkeit zur Löschung von leeren Quellverzeichnissen. Prüfung wird nur auf
dem direkten Oberverzeichnis der aktuellen Datei und nach jeder Datei ausgeführt.
Dies kann bei sehr vollen Verzeichnissen zu Performanceproblemen führen.
Minimum-Alter
Angabe einer ganzen Zahl gefolgt von einer Zeiteinheit oder nur 0 für sofort.
Zeiteinheiten: h=Stunde, d=Tag, w=Woche, m=Monat, y=Jahr
Beispiele:
6 Monate -> 6m
2 Wochen -> 2w
1 Jahr -> 1y
7 Tage -> 7d
Eine Kombination (z. B. 7 Tagen und 5 Stunden) ist nicht möglich.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 171 von 384
<Dateiendung> <Verzeichnis> <Optionen> <Min-Alter> <Aktion> [<Parameter> ...]
Aktion
test
Testet die Bedingungen, es erscheint nur eine Ausgabe im Logfile,
welche Dateien verarbeitet würden.
delete
Betreffende Dateien werden gelöscht.
move
Verschiebt Dateien in das angegebene Zielverzeichnis.
Parameter backup optional
Parameter Zielverzeichnis Pflicht
zip
Betreffende Dateien werden einzeln in Zip-Dateien verschoben.
Parameter backup optional
Parameter Zieldatei optional (Fehlt dieser Parameter, wird eine Zip-Datei an
derselben Stelle und mit demselben Namen wie die Quell-Datei mit der
zusätzlichen Endung ".zip" angelegt.)
Zip-Dateien werden von der Zip-Funktion nicht erneut gepackt sondern
übersprungen, somit ist es möglich als Dateierweiterung auch den Platzhalter (*) zu
verwenden.
(Parameter)
Zielverzeichnis
relativ zu Basisverzeichnis der Regel oder absolut
Es können hierbei Platzhalter angegeben werden:
$day$ Tag des Monats 2-stellig der Datei
$week$ Kalenderwoche der Datei
$month$ Monat 2-stellig der Datei
$year$ Jahr 4-stellig der Datei
$dir$ Verzeichnis relativ zum Basisverzeichnis der Regel incl. abschließendem
Pfad-Separator ('/' oder '\')
Achtung: nur entweder ohne Option "-recursive" oder mit absolutem
Zielverzeichnis außerhalb des Regel-Basisverzeichnisses verwenden, sonst entsteht
zeitliche Kaskadierung
(Parameter)
backup
Dateien, die mit der Ziel-Datei in Konflikt stehen, werden umbenannt nach *.~nn.*;
ohne diesen Parameter werden sie überschrieben
(Parameter)
Zieldatei
Ziel-Zip-Datei kann mit den Platzhaltern (siehe Parameter Zielverzeichnis)
angegeben werden.
Zusätzlich können folgende Platzhalter verwendet werden:
$filename% = originaler Dateiname ohne Endung
$fileext% = originale Dateiendung ohne Punkt
Hinweise:
Seite 172 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Enthält irgendein Wert, wie z. B. Verzeichnisname, ein Leerzeichen, kann der gesamte Wert in
Anführungszeichen ("") eingeschlossen werden. Enthält ein Wert selbst Anführungszeichen oder das
Quote-Zeichen '\', kann dieses durch vorgestelltes '\' entwertet werden. Pfad-Angaben für
Windows-Systeme können statt des üblichen '\' als Verzeichnis-Trennzeichen alternativ mit '/'
separiert werden.
Für einen reibungslosen Betrieb ist die Archivierung zwingend erforderlich! Da ansonsten die
Verzeichnisse immer weiter anwachsen, was im schlimmsten Fall den Absturz des gesamten Servers
zur Folge haben kann (das Limit bei Windows Server 2003 liegt z. B. bei 4.294.967.295 Dateien,
dieses Limit wurde jedoch schon auf Systemen erreicht).
9.1
Konfigurationsparameter
Tabelle 9-2: Konfigurationsparameter für die Archivierungsaufträge
Parameter/Beschreibung
Standardwert
archive.ini_file
archive.ini
Konfigurierungsdatei für die Archivierung, absolut oder relativ zu
Config.properties
archive.log
archive.log
LOG-Datei für Archivierung
archive.log.maxSize
500000
Maximale Größe für LOG-Datei in Bytes (z. B. 5 MB kann mittels 5242880
definiert werden)
archive.port
<common.base_port>
Positive Ganzzahl. TCP-Port zur Sperrbehandlung bei Archivierung
archive.shutdown_command
SHUTDOWN
Kommando zum Beenden der Archivierung nach aktueller Aktion über den
TCP/IP-Listener
archive.original_date_for_zip
N
Y/N. Mit Y wird bei den Zippen von Dateien das Datum der Zip-Datei auf
das Datum der gepackten Daten gestellt. Das ist sinnvoll wenn
beispielsweise Text-Dateien gepackt werden aber zur Recherchezwecken
das Datum erhalten bleiben soll.
9.2
Relevante Ordner für die Archivierung
Folgende Ordner werden standardmäßig im laufenden Betrieb zur Ablage von Daten genutzt.
-
Email/xml – Ablage der internen XML-Datei beim Export
Email/format – Ablage der erstellten Datei
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
-
Seite 173 von 384
Email/Email – Ablage der E-Mail, falls der Exportauftrag an eine E-Mail-Adresse versendet wird
importmail – Ablage aller E-Mails, die vom Comimport abgeholt werden
log – Alle LOG-Dateien
lplspool – Falls lineare Protokolle von der KomA abgeholt werden
weitere Ordner je nach Kundensystem, es ist beispielsweise denkbar, dass der Comimport alle
Daten in den Unterordner import ablegt, dann sollte auch dieser Ordner bereinigt werden.
Hierbei muss der Kunde entscheiden, ob die Daten im Archivordner gesichert oder einfach nur gelöscht
werden sollen.
9.3
9.3.1
Beispiele (archive.ini)
Löschen aller Daten die älter als 6 Monate sind
* email -recursive 6m delete
* importmail -recursive 6m delete
* log 6m delete
* lplspool -recursive 6m delete
Die Verzeichnisangabe erfolgt relativ, ausgehend vom aktuellen Verzeichnis der KomA.
Über den Parameter –recursive wird mitgeteilt, dass auch alle Unterordner (falls vorhanden)
einbezogen werden sollen. Die Angabe der 6 Monate erfolgt über 6m, gefolgt vom Löschen-Befehl.
9.3.2
Verschieben aller Daten die älter als 1 Monat sind
## Alle Mail-Dateien, die älter als 1 Monat sind, in
Unterverzeichnisse mit
## Monat und Jahr im Namen verschieben:
* email -recursive 1m move backup ../archiv/email/$year$$month$/email/$dir$
* importmail -recursive 1m move backup ../archiv/importmail/$year$$month$/email/$dir$
* log 1m move backup ../archiv/log/$year$-$month$/email/$dir$
* lplspool -recursive 1m move backup ../archiv/lplspool/$year$$month$/email/$dir$
Die Verzeichnisangabe erfolgt relativ und es werden wieder alle Unterordner einbezogen.
Das Datum (1 Monat) der Datei wird mittels 1m definiert.
Mittels backup wird angegeben, dass bei einem Konflikt (sprich die ZIP-Datei mit dem gleichen Namen
existiert bereits) die vorhandene Datei im Archivordner umbenannt wird (*.~nn.zip).
Seite 174 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Die Angabe der Archivordner erfolgt relativ zum Basisverzeichnis, zusätzlich wird mit den vordefinierten
Platzhaltern gearbeitet.
-
9.3.3
$day$ = Tag des Monats der Datei, 2-stellig
$week$ = Kalenderwoche der Datei
$month$ = Monat der Datei, 2-stellig
$year$ = Jahr der Datei, 4-stellig
$dir$ = Verzeichnis relativ zum Basisverzeichnis der Regel incl. abschließendem PfadSeparator (/ oder \)
Lösche alle Daten ohne Fehler
Alle BIS-Dateien, die ohne Fehler und Warnungen importiert wurden, nach einer Woche nach der
Verarbeitung löschen:
zip import_BIS/done -noerror 1w delete
9.3.4
Daten verschieben
Alle verarbeiteten BIS-Dateien, die älter als 1 Monat sind, in einem Unterverzeichnis von <Basis>/arc mit
Monat und Jahr im Namen ablegen:
zip import_BIS -recursive 1m move backup ../arc/$year$$month$/import_BIS/$dir$
9.3.5
Alle E-Mail-XML-Dateien sofort in eine Zip-Datei packen:
xml email/xml 0 zip
9.3.6
Alle E-Mail-Format-Dateien sofort in eine Zip-Datei packen:
txt email/format 0 zip
9.3.7
Alle E-Mail-Format-Dateien nach einer Woche löschen:
zip email/format 1w delete
9.3.8
Alle Archiv-Dateien, die älter als 1 Jahr sind, löschen:
zip archive -recursive 1y delete
9.3.9
Alle Dateien Zippen und Verschieben die älter als 10 Tage sind:
In der Config.properties ist folgendes gesetzt: archive.original_date_for_zip=Y
Damit wird bei den Zippen das Datum der gepackten Datei in die Zip-Datei übertragen.
In der archive.ini ist folgendes konfiguriert:
* <Ordner> -recursive 10d zip
* <Ordner> -recursive -zipcontent 10d move backup ../_Archiv/$year$-$month$/$dir$
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 175 von 384
Die Reihenfolge in der archive.ini gibt die Reihenfolge der Verarbeitung vor. Somit werden erst alle
Dateien im Ordner gezippt und anschließend archiviert. Beim Zippen werden bereits vorhandene ZipDateien ignoriert.
Seite 176 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
10 EDIFACT
In diesem Kapitel erhalten Sie ausgewählte Informationen zum Thema EDIFACT bezüglich BDEW (Strom
und Gas) und DVGW (Gas).
Folgende Versionen der Datenformate werden unterstützt (Stand 01.09.2016):
Tabelle 10-1: Unterstütze Formatversionen
Format
Version
Import Export
ALOCAT
5.0 – 5.9
x
x
APERAK
2.1a (Import der Vorgängerversionen möglich)
x
x
CONTRL
2.0 (Import der Vorgängerversionen möglich)
x
x
IMBNOT
5.0 – 5.6
x
-
INSRPT
1.0 – 1.0b
x
x
INVOIC
2.2 – 2.6d
x
x
MSCONS
1.5, 1.6, 1.6b, 2.0c 2.0d, 2.1, 2.1a – 2.2g
x
x
NOMINT
4.0 – 4.5
x
x
NOMRES
4.0 – 4.6
x
-
ORDERS
1.0 – 1.1h
x
x
ORDRSP
1.0 – 1.1f
x
x
PRICAT
1.0, 1.0a
x
x
QUOTES
1.0 – 1.0f
x
x
REMADV
2.2 – 2.7b
x
x
REQDOC
2.0 – 2.1b
x
x
REQOTE
1.0 – 1.1a
x
x
SLPASP (GAS)
1.0
-
x
SSQNOT
5.0 – 5.6
-
x
TRANOT (GAS)
5.0 – 5.7
x
-
UTILMD
4.2 – 5.1f
x
x
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 177 von 384
10.1 Allgemeine Hinweise
10.1.1
Reihenfolge der Segmente
Die Reihenfolge einzelner Segmente ist innerhalb einer Segmentgruppe irrelevant. Beispielsweise kann
„Zeitpunkt der Statusvergabe“ auch vor dem „Betrachtungszeitintervall“ in der Datei enthalten sein
(Beispiel IFTSTA MIG für Version 1.2).
Abbildung 10-1: Beispiel Reihenfolge der Segmente in einer IFTSTA-Meldung
Dieser Sachverhalt wurde auch vom BDEW in den Allgemeinen Festlegungen klargestellt.
„Hinweis: Aufgrund der expliziten Notation werden einzelne Segmente mit unterschiedlichen
Ausprägungen auf Datenelement- und Datenelementgruppenebene mehrfach aufgeführt. Die hierfür
verwendete Reihenfolge ist beliebig und lediglich dem Umstand geschuldet, dass man nur seriell
dokumentieren kann.“
siehe auch Forum-Datenformate
"…wird ein Segment oder eine Segmentgruppe mehrfach in einer Nachricht übertragen, so spielt die
Reihenfolge, in der diese übertragen werden keine Rolle. Dies ist in der sog. Impliziten Dokumentation
augenscheinlich, in der von uns vorgenommenen sog. Expliziten Dokumentation könnte man meinen,
dass wir durch diese eine Reihenfolge vorgeben würde, was natürlich nicht der Fall ist, sondern dem
Umstand geschuldet ist, dass man die Segmente bzw. Segmentgruppen nur seriell beschreiben kann. ….“
10.1.2
GZIP-Komprimierung
Werden EDIFACT-Dateien mit GZIP-Komprimierung empfangen, so müssen diese Dateien bereits vom
Comimport entpackt werden, die Einrichtung ist unter 5.1.4.4 beschrieben, da der Datenimport keinen
GZIP-Support bietet (nicht notwendig, da diese Funktionalität ja vom Comimport realisiert wird).
Werden die EDIFACT-Daten nicht über den Comimport abgelegt, muss diese Restriktion von dem
jeweiligen Prozess beachtet werden, d.h. es dürfen nur nicht komprimierte oder ZIP-komprimierte
Dateien in den Importverzeichnissen für den Datenimport abgelegt werden.
10.1.3
Codenummern (ILN)
Im System robotron*ecount existiert eine stillschweigende Korrekturfunktion, die private ILNNummern als Code BDEW (500) oder DVGW (502) exportiert, selbst wenn im ecount der Typ ILN
angegeben wurde.
Nummern, die mit 99 beginnen, sind private ILN, die in Deutschland z. B. dann als BDEW-Nummern
vergeben werden, aber in Frankreich einem französischen Marktteilnehmer ebenso vergeben sein
können. 98* sind DVGW-Nummern. Damit wird bei einer ILN, die mit 99 beginnt, der Typ 500 und
nicht, wie erwartet, 14 exportiert (selbst wenn die ILN in ecount und in der KomA-XML-Datei
vorhanden sind).
Seite 178 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
ILN-Nummern, die als 14 exportiert werden, beginnen in der Regel mit einer 4, siehe GS1Nummernsysteme.
10.1.4
Präfix für die UNB-ID
Das Präfix für die UNB-Referenz von exportierten EDIFACT-Nachrichten kann parametriert werden. Dazu
kann in Config.properties der Parameter export.UNB_ID_Prefix verwendet werden (Beispiel:
export.UNB_ID_Prefix = ECE_).
Für Gas-Formate, wie z. B. ALOCAT, gilt der UNOA-Zeichensatz, der nur Großbuchstaben, Ziffern und
einige wenige Sonderzeichen zulässt, nicht aber z. B. _ (siehe UNOA-Zeichensatz).
10.1.5
UNB.0020 Datenaustauschreferenz – Generierung
Die Datenaustauschreferenz wird erst beim Versand auf der KomA erstellt und wird wie folgt gebildet:
1.
EAU-ID mit nachgestelltem E
2.
Pro Export-Auftrag wird geprüft, ob für diesen mehrere EDIFACT-Dateien existieren (bei Split
oder bei Versandwiederholung). Dies wird über folgendes SQL realisiert:
SELECT COUNT(1) from EXPORT_EDIFACT WHERE EAU_ID=?
Wenn Diese Abfrage als Ergebnis > 0 liefert, wird die Zahl angefügt.
3.
Abfrage des Parameters UNB_ID_Prefix (Formatscharf z. B. in EDI.properties). Wenn dieser
nicht vorhanden ist wird export.UNB_ID_Prefix abgefragt (global via Config.properties).
Hinweise:
export.UNB_ID_Prefix ist keine Pflichtangabe und sollte so kurz wie möglich gewählt werden
(z. B. EC_) - da insgesamt nur 14 Zeichen zur Verfügung stehen.
Wenn export.UNB_ID_Prefix definiert und dieser Präfix + bisherige UNB länger als 14
Zeichen, dann wird auf 14 Zeichen gekürzt, es wird hierbei der UNB_ID_Prefix abgeschnitten
Beispiele:
1) EAU-ID: 313628 | Abfrage (2) liefert die Zahl: 14 |export.UNB_ID_Prefix = EC_
Ergebnis:
EC_313628E14
2) EAU-ID: 313628 | Abfrage (2) liefert die Zahl: 14 | export.UNB_ID_Prefix = EC_MEINE_WELT
Ergebnis:
EC_ME313628E14
Beispielkonfiguration für das Format TSIMSG_DEKL:
Für die Exportaufträge wird als Format TSIMSG_DEKL verwendet (Tabelle EXPORT_ECOUNT, Spalte
FORMAT). Auf der KomA muss unter config/export nun die TSIMSG_DEKL.properties hinterlegt werden
mit der jeweils gewünschten Einstellung. Im Beispiel setzen wir das Präfix auf TS (UNB_ID_Prefix=TS).
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 179 von 384
Abbildung 10-2 UNB-Präfix TS für das Format TSIMSG_DEKL
10.1.6
BGM.1004 Dokumentennummer – Generierung
Die Dokumentennummer wird im Standardfall erst auf der KomA erzeugt. Damit ist es notwendig, dass
beim Export von EDFIACT-Dateien, diese Nummer zurückgeschrieben wird (realisiert in eCount00053790).
Bei der Generierung von BGM.1004 wird bei den meisten EDIFACT-Formaten die UNB.0020
(Datenaustauschreferenz) verwendet.
10.1.6.1 IFTSTA
Wenn in IFTSTA_NACHRICHTEN.BGM_REF ein Wert steht, wird dieser verwendet. Sonst wird der
Wert aus UNB.0020 + - + Wert aus IFTSTA_NACHRICHTEN.UNH_ID verwendet. Wenn
IFTSTA_NACHRICHTEN.UNH_ID leer ist dann wird von der KomA bei 1 beginnend bis n hochgezählt
(pro Nachricht wird 1 addiert).
Aktuell dürfen bei IFTSTA nicht mehrere Nachrichten in einer Übertragungsdatei verschickt werden.
Damit ist die generierte UNH_ID immer 1. Wenn UNH_ID leer und die UNB.0020 „EC_313628E15“
ist, dann ist die BGM_REF „EC_313628E15-1“.
10.1.6.2 INVOIC
Wenn in INVOIC_NACHRICHTEN.DOC_ID ein Wert enthalten ist, wird dieser verwendet. Sonst
UNB.0020 + - + Wert aus INVOIC_NACHRICHTEN.UNH_ID. Wenn
INVOIC_NACHRICHTEN.UNH_ID leer ist dann wird von der KomA bei 1 beginnend bis n hochgezählt
(pro Nachricht wird 1 addiert).
10.1.6.3 INSRPT
Wenn in INSRPT_NACHRICHTEN.BGM_REF ein Wert enthalten ist, wird dieser verwendet. Sonst
UNB.0020 + - + Wert aus INSRPT_NACHRICHTEN.UNH_REF. Wenn
INSRPT_NACHRICHTEN.UNH_REF leer ist dann wird von der KomA bei 1 beginnend bis n
hochgezählt (pro Nachricht wird 1 addiert).
Aktuell dürfen bei INSRPT nicht mehrere Nachrichten in einer Übertragungsdatei verschickt werden,
damit ist die die generierte UNH_ID immer 1.
Seite 180 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
10.1.6.4 ORDERS
Wenn in ORDERS_NACHRICHTEN.BGM_REF ein Wert vorhanden ist, wird dieser verwendet. Sonst
wird
UNB.0020 + -ORD + ORDERS_NACHRICHTEN.ID verwendet.
10.1.6.5 ORDRSP
Wenn in ORDRSP_NACHRICHTEN.BGM_REF ein Wert enthalten ist, wird dieser verwendet. Sonst
UNB.0020 + - + Wert aus ORDRSP_NACHRICHTEN.UNH_REF. Wenn
ORDRSP_NACHRICHTEN.UNH_REF leer ist, dann wird von der KomA bei 1 beginnend bis n
hochgezählt (pro Nachricht wird 1 addiert).
10.1.6.6 REMADV
Wenn in REMADV_NACHRICHTEN.AVIS_NR ein Wert enthalten ist, wird dieser verwendet. Sonst
UNB.0020 + - + Wert aus REMADV_NACHRICHTEN.UNH_REF. Wenn
REMADV_NACHRICHTEN.UNH_REF leer ist, dann wird von der KomA bei 1 beginnend bis n
hochgezählt (pro Nachricht wird 1 addiert).
Aktuell dürfen bei REMADV nicht mehrere Nachrichten in einer Übertragungsdatei verschickt
werden, damit ist die die generierte UNH_ID immer 1.
10.1.6.7 REQOTE
Wenn in REQOTE_NACHRICHTEN.BGM_REF ein Wert enthalten ist, wird dieser verwendet. Sonst
UNB.0020 + - + Wert aus REQOTE_NACHRICHTEN.UNH_REF. Wenn
REQOTE_NACHRICHTEN.UNH_REF leer ist, dann wird von der KomA bei 1 beginnend bis n
hochgezählt (pro Nachricht wird 1 addiert).
10.1.6.8 QUOTES
Wenn in QUOTES_NACHRICHTEN. BGM_REF ein Wert enthalten ist, wird dieser verwendet. Sonst
UNB.0020 + - + Wert aus QUOTES_NACHRICHTEN.UNH_REF. Wenn
QUOTES_NACHRICHTEN.UNH_REF leer ist, dann wird von der KomA bei 1 beginnend bis n
hochgezählt (pro Nachricht wird 1 addiert).
10.1.7
Zeichenkodierung in der Datei
Der Zeichensatz wird bei dem, vom BDEW herausgegeben, Format durch die Allgemeinen Festlegungen
spezifiziert und lautet aktuell UNOC UN/ECE-Zeichensatz C, was ISO 8859-1 entspricht. Diese Angabe ist
im UNB-Segment im Gruppendatenelement S001.0001 hinterlegt.
Der EDI-Importfilter wurde inzwischen so konzipiert, dass im Fall einer auftretenden BOM der
Zeichensatz (z.B. UTF-8, UTF-16BE, UTF-16LE) automatisch erkannt und die Datei, entgegen der
Marktregeln, stillschweigend korrekt eingelesen wird.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 181 von 384
10.2 Kurzanleitung Formatwechsel
In diesem Kapitel werden die Besonderheiten bezüglich der Formatumstellung (01.04 bzw. 01.10)
behandelt.
10.2.1
Anleitung zum Vorabtest des Formatwechsels
Um den Formatwechsel bereits vor dem eigentlichen Umstellungsdatum testen zu können, kann mittels
eines Referenz-Zeitstempels das Systemdatum des Kommunikationsservers geändert werden. Die
Einstellung des Referenz-Zeitstempels erfolgt in der Datei Config.properties im Ordner config auf dem
KomA-Server. Dazu muss eine der drei folgenden Varianten in die Datei eingetragen werden (Variante 1
ist die verständlichste und sollte bevorzugt verwendet werden).
Variante 1:
# konstantes Datum (Beispiel kursiv):
RefDate.fixed = 01.04.2013 09:00
Das Datum muss mit dem Format dd.MM.yyyy HH.mm angegeben werden. Angaben die diesem
Format nicht entsprechen werden mit der Fehlermeldung "Invalid date in parameter RefDate.fixed
x" quittiert.
dd = Tag im Monat
MM = Monat im Jahr (z. B. 10 für Oktober)
yyyy = Jahr (z. B. 2013)
HH = Stunde 0-23
MM = Minute in Stunde
Variante 2:
# Ecount-Referenzzeit mittels EC_WFB.FNC_SYS_DATE() - diese muss dem
EC_XCH gegranted sein:
RefDate.fnc_sys_date = Y
In diesem Fall wird der Datumswert zum Test der WPM-Komponente im globalen Parameter
SYSDATE Testdatumswert (Gruppe Workflow) im Format DD.MM.YYYY eingestellt.
Test der Abfrage als Nutzer EC_XCH: select ec_wfb.fnc_sys_date from dual
Sollte das Grant nicht vorhanden sein: grant execute on ec_wfb.fnc_sys_date to
ec_xch
Variante 3:
# Offset zur Systemzeit:
Seite 182 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
RefDate.offsetYear = 0
RefDate.offsetMonth = 1
RefDate.offsetDay = 0
RefDate.offsetHour = 0
RefDate.offsetMinute = 0
Das eingestellte Datum wird zur Ermittlung der aktuell gültigen Versionsnummer sowie für das
Nachrichtendatum verwendet, wenn die Informationen nicht schon Datenbankseitig vorgegeben
wurden. Das heißt, dass die neue Version nur dann vom Kommunikationsserver vergeben wird, wenn
am Datenversandabo keine Formatversion eingestellt wurde.
Abbildung 10-3: Maske Lastgangabo: Definition der aktuell gültigen Versionsnummer
Nachdem das Systemdatum des Kommunikationsservers geändert wurde, können Dateien mit der
neuesten Formatversion importiert und vom System automatisch verarbeitet werden. Beim Export wird,
sofern im Datenversandabo keine Version eingestellt wurde, automatisch die zum Systemdatum des
KomA-Servers bzw. dem eingestellten Referenzdatum aktuelle Formatversion versendet.
Hinweise:
Die Versionsnummer muss auch aus der EDI.properties-Datei entfernt werden.
In der KomA kann unter /config/export/EDI.properties auch explizit eine Version angegeben
werden. Beispiel: Version=2.1d
Diese Angabe muss entfernt werden damit die Version über RefDate automatisch festgelegt werden
kann.
10.2.2
Import von „ALT“ - Versionen während der Übergangszeit (KomA)
Der KomA-Server prüft beim Import von EDIFACT-Dateien, ob die Version in der Datei die aktuell gültige
ist. Ist dies nicht der Fall wird der Import mit einer Fehlermeldung quittiert.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 183 von 384
Damit am Tag der Formatumstellung, oder kurz danach, noch EDIFACT-Dateien importiert werden
können die in der alten Version erstellt worden sind, gibt es folgende Einstellungen für die Datenquelle
EDI. Die Einstellungen müssen in der korrespondierenden Properties-Datei (per Default EDI.properties)
vorgenommen werden. Die relevanten Einstellungen sind MK_DEFAULTS und
MSG_VERSION_TOL_DAYS.
Einstellung: MSG_VERSION_TOL_DAYS
Erwartet eine Ganzzahl, gültige Werte sind -1 (deaktiviert) und 1 bis n. Gibt damit die Anzahl an Tagen
an, an denen EDIFACT-Dateien mit alten Versionen ohne negative Versionsprüfung importiert werden
können.
Einstellung: MK_DEFAULTS
Steht für „Marktkommunikation-Default-Einstellungen“ und setzt somit zahlreiche Einstellungen auf
möglichst sinnvolle Werte. Der Default ist N (false). Mit MK_DEFAULTS=Y in der Datei EDI.properties
wird automatisch die Einstellung MSG_VERSION_TOL_DAYS=3 gesetzt (falls diese nicht explizit in der
Properties-Datei gesetzt wurde). D.h. bis zu 3 Tage nach dem Formatwechsel kann die Vorgängerversion
noch ohne Probleme importiert werden.
10.2.3
Datenquelleneinstellungen (Maske Import-Dateien)
In der Maske Import-Dateien (MF_IFI) werden die zu importierenden Daten angezeigt, diese
Informationen stammen aus der Tabelle IMPORT_FILE.
Abbildung 10-4: Maske Import-Dateien
Tabelle 10-2: Zuordnung Maske MF_IFI) – Tabelle IMPORT_FILE:
Feldbezeichnung in der Maske Import-Dateien
Tabellenspalte
Zeitstempel Datei
IMPORT_FILE.ZEITSTEMPEL
Import Zeitstempel
IMPORT_FILE.IMPORT_ZEITSTEMPEL
Reiter Intern – Feld Eingang
IMPORT_FILE.EINGANGS_ZEITSTEMPEL
Der ZEITSTEMPEL ist immer der Zeitstempel der Datei/E-Mail der vom Betriebssystem/E-Mail-Server
geliefert wird, dieser Wert ist nicht manipulierbar.
IMPORT_ZEITSTEMPEL wird seit eCount-00046696 (PKG_IMPORT_API in Version 05.00.15.00)
automatisch mit FNC_SYS_DATE gefüllt.
Für EINGANGS_ZEITSTEMPEL kann der Wert über die Datenquellen-Einstellungen
BWDI.EINGANGS_ZEITSTEMPEL und BWDI:KomA.EINGANGS_ZEITSTEMPEL verändert
werden.
Seite 184 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Falls die Einstellungen nicht vorgenommen wurden, verhält sich das System, als wäre fnc_sys_date
eingestellt. Für normale Tests zum Formatwechsel sollten die Einstellungen auf dem Testsystem (falls
vorhanden) gelöscht bzw. auf fnc_sys_date gesetzt werden, sodass der E-Mail-Eingang ebenfalls mit
der verschobenen Systemzeit aufgezeichnet wird.
Für spezielle Tests, bei denen zwischen Eingang und Verarbeitung ein deutlicher Abstand liegen soll
(sodass ein Formatwechsel-Stichtag oder eine Fristgrenze überschritten wird), bieten die Einstellungen
genügend Manipulations-Möglichkeiten, siehe Hilfetext im Report zur Datenquelle.
Die Anpassungen an den Datenquellen-Einstellungen müssen an allen Datenquellen vorgenommen
werden, die in den Test involviert sind.
10.3 Import-Standardparameter (Config.properties)
Tabelle 10-3 enthält Standardparameter, die über die Datei Config.properties angegeben und
ausgewertet werden, wenn diese nicht über die Datenquelle (z. B. EDI.properties) definiert/übersteuert
werden.
Tabelle 10-3: Import-Standardparameter EDIFACT: config.properties
Parameter/Beschreibung
Standardwert
common.reply_method
Dieser Parameter wird ausgeführt wenn in der Datenquelle (z. B. EDI.properties)
MK_DEFAULTS=N (oder nicht gesetzt/angegeben ist) und auch die Einstellung
reply_method nicht definiert wurde.
CD
Einstellungen siehe reply_method.
10.4 Export-Standardparameter (Config.properties)
Tabelle 10-4: Export-Standardparameter EDIFACT: config.properties
Parameter/Beschreibung
Standardwert
export.UNB_ID_Prefix
Das Präfix für die UNB-Referenz von exportierten EDIFACT-Nachrichten kann über
diese Einstellung parametriert werden, siehe 10.1.4.
10.5 Import-Standardparameter (Datenquelle)
Tabelle 10-5 enthält Parameter, die für alle EDIFACT-Formate gelten. Diese Parameter werden per
Default über die Datenquelle EDI importiert.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 185 von 384
Tabelle 10-5: Import-Standardparameter EDIFACT: Datenquelle EDI
Parameter/Beschreibung
Standardwert
MK_DEFAULTS
N
Y/N. Steht für „Marktkommunikations-Default-Einstellungen“ und setzt die zahlreichen
Einstellungen auf die systemeigenen Standardwerte. Zu den Einstellungen gehören u.a.:
-
MSG_VERSION_TOL_DAYS
ERROR_ON_UNB_NAD_DIFFERENCE
BREAK_ON_WARNING
MSG_VERSION_TOL_DAYS
Beim Import von EDIFACT-Dateien wird geprüft, ob die Version in der Datei die aktuell
gültige ist. Ist dies nicht der Fall, wird der Import mit einer Fehlermeldung quittiert.
Damit am Tag der Formatumstellung, oder kurz danach, noch EDIFACT-Dateien
importiert werden können, die in der alten Version erstellt worden sind, gibt es diese
Einstellungen.
Erwartet eine Ganzzahl, gültige Werte sind -1 (deaktiviert) und 1 bis n. Gibt damit die
Anzahl an Tagen an, an denen EDIFACT-Dateien mit alten Versionen ohne negative
Versionsprüfung importiert werden können.
Ist MK_DEFAULTS=Y und diese Einstellung nicht gesetzt, so wird automatisch
MSG_VERSION_TOL_DAYS=3 gesetzt. Dies bedeutet, dass die Vorgängerversion
noch bis zu 3 Tage nach dem Formatwechsel ohne Probleme importiert werden kann.
Test_Systembetreiber
Y/N. Der Parameter ist nur sinnvoll, wenn es im System nur einen Systembetreiber gibt.
Dieser wird in der Maske Vertragspartner (MF_VPR) über das Kontrollfeld
Systembetreiber gekennzeichnet. Steht der Parameter auf Y, werden fehlgeleitete
EDIFACT-Nachrichten mittels APERAK Z06 abgewiesen.
Für den Import von EDIFACT-Nachrichten wird die Funktionalität mittels Property
Test_Systembetreiber = Y in der EDI-Format-spezifischen Properties-Datei
aktiviert.
Manuelle Angabe der Systembetreiber-IDs (Umgehen der Datenbank-Prüfung) über
Property
Test_Systembetreiber.IDs = 9800000000001, 9900000000001, 4000000000001
Die Informationen dazu stammen aus
SELECT k.VTP_ID_MANDANT, i.wert from
ec_sys.VTP_KOMM_EINSTELLUNGEN k, ec_sys.VTP_IDENTIFIKATOREN
i WHERE k.SYSTEMBETREIBER_J_N ='J' AND k.vtp_id = i.vtp_id
Test_Systembetreiber = Y i.V.m. VTP_ID_MANDANT = X kann zu
schwerwiegenden Problemen führen (z. B. Doppel-Import in mehrere Mandanten),
wenn der Systembetreiber ein anderer Mandant ist als in der Einstellung
VTP_ID_MANDANT definiert.
N
Seite 186 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Standardwert
BREAK_ON_WARNING
N
Y/N. Abbruch der Datei bei "Fehlern" in der Datei, die als Warnung interpretiert
werden. Z. B. führende Leerzeichen innerhalb von Datenelementen aber auch jede
Menge Unstimmigkeiten in der EDI-Datei (aufgrund der Vielzahl an Prüfungen existiert
keine genaue Liste).
BREAK_ON_ERROR
Y
Y/N. Abbruch bei Fehler in der Datei. Ist nur für interne Kommunikation sinnvoll, bei
der fehlerhafte Dateien ggf. ignoriert werden können!
CHECK_DUPLICATE_UNB
N
Prüfung auf Doppelimport (Eindeutigkeit der UNB_REF und der SenderID)
verwendete SQL-Abfrage:
SELECT *FROM EDIFACT_FILE WHERE UNB_REF=? AND SENDER_ID=?
AND IFI_ID IS NOT NULL ORDER BY ID DESC
IGNORE_MISSING_DIGIT_EXCEPTION
N
Y/N. Seit 01.10.2014 (CONTRL 2.0) werden Zahlen mit fehlender Ziffer vor dem
Dezimalzeichen (z. B. „.5“ statt „0.5“) mit dem Code 38 abgelehnt. Diese Prüfung kann
mit IGNORE_MISSING_DIGIT_EXCEPTION=Y deaktiviert werden (sinnvoll bei
Inhouse-Kommunikation)
IGNORE_INVALID_DECIMAL_POINT_EXCEPTION
Y/N. Seit 01.10.2014 (CONTRL 2.0) werden Zahlen mit falscher Dezimalbeschreibung,
betrifft hier nur Komma (,) und Punkt (.), mit dem Code 19 (Ungültige
Dezimalbeschreibung) abgelehnt. Intern erfolgt automatisch eine Korrektur der
Dezimalbeschreibung sodass die Werte dennoch übernommen werden (u.a. sinnvoll bei
Inhouse-Kommunikation). Ist dies nicht gewünscht, kann mittels
IGNORE_INVALID_DECIMAL_POINT_EXCEPTION=N die automatische Korrektur
deaktiviert werden. Ist der Inhalt des Datenelements für die Zahl nicht konvertierbar,
wird ein Fehler mit Code 37 (Ungültige Zeichenart) erstellt.
Erklärung: Im UNA könnte ; als Dezimaltrennzeichen verwendet werden, im QTY ist
jedoch 1#5 enthalten. Ob die Raute nun als Dezimaltrennzeichen gedacht ist (Wert 1.5)
oder ob die Raute einfach überflüssig ist (Wert 15) oder einen anderen Wert
interpretieren soll (z. B. Wert 135), kann nicht erkannt werden.
Beispiel: UNA: Punkt (.) – QTY: Komma (,) – „0,5“
IGNORE_INVALID_DECIMAL_POINT_EXCEPTION=N
-> Fehler 19 – Datei wird abgewiesen
IGNORE_INVALID_DECIMAL_POINT_EXCEPTION=Y
-> Datei wird problemlos importiert
Beispiel: UNA: Komma (,) – QTY: Punkt (.) – „0.5“
IGNORE_INVALID_DECIMAL_POINT_EXCEPTION=N
Y
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Seite 187 von 384
Standardwert
-> Fehler 19 – Datei wird abgewiesen
IGNORE_INVALID_DECIMAL_POINT_EXCEPTION=Y
-> Datei wird problemlos importiert
Beispiel: UNA: Punkt (.) – QTY: Raute (#) – „0#5“,
IGNORE_INVALID_DECIMAL_POINT_EXCEPTION=N
-> Fehler 37 – Datei wird abgewiesen
IGNORE_INVALID_DECIMAL_POINT_EXCEPTION=Y
-> Fehler 37 – Datei wird abgewiesen
10.6 Export-Standardparameter (Datenquelle)
Tabelle 10-6: Export-Standardparameter EDIFACT: Datenquelle EDI
Parameter/Beschreibung
Standardwert
ObisMapping
Siehe 12.1.1
10.7 Einrichtung der EDI-Datenquelle
Alle EDIFACT-Formate werden über die Datenquelle EDI
(HandlerClass=de.robotron.ecount.dataimport.filter.EDIFACTHandler)
importiert.
Werden die EDIFACT-Dateien ohne ZIP-Funktionalität (5.1.4.4) bzw. gänzlich ohne Comimport in den
Importordner hinterlegt, so ist folgende Konfiguration in der datenimport.ini ausreichend:
*.txt EDI import/EDI
Werden die Dateien jedoch mittels ZIP-Funktionalität des Comimport abgelegt, so muss als
Importformat (5.1.3) EDI gewählt worden sein. Ist dies nicht der Fall, muss sichergestellt werden, dass
die anderen Importformate auf die EDI-Datenquelle verweisen, z. B.: Wurde ORDERS beim Comimport
als Importformat gewählt, so muss es eine ORDERS.properties unter config/import geben, die entweder
auf eine vorhandene EDI.properties verweist oder direkt den entsprechenden Filter definiert.
config/import/ORDERS.properties
alias=EDI
oder
HandlerClass = de.robotron.ecount.dataimport.filter.EDIFACTHandler
Seite 188 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
10.8 ALOCAT
Die ALOCAT dient der Übermittlung von Bilanzkreis- und /oder Netzkonto- relevanten
Allokationsmengen. Der Austausch findet zwischen Netzbetreibern, Marktgebietsverantwortlichen und
Bilanzkreisverantwortlichen statt.
Im Einzelnen werden mit der ALOCAT folgende Mengen übertragen:
-
Gemessene und prognostizierte Allokationsdaten
Ersatzwerte für SLP-Zeitreihen
Lastgang von Netzkopplungspunkten
Flüssiggaseinspeisungen
Marktgebietsübergreifende Transporte
10.8.1
Export-Parameter
Exportparameter werden per Default in der ALOCAT.properties im Verzeichnis *KomA*/config/export
hinterlegt.
Tabelle 10-7: ALOCAT Export Parameter
Parameter/Beschreibung
Standardwert
SPLIT_DIFFERENT_DTMZ01
Y/N. Linien mit unterschiedlichen Zeitbereichen müssen in unterschiedlichen Dateien
versandt werden. Dieses Verhalten kann über SPLIT_DIFFERENT_DTMZ01=N
deaktiviert werden. eCount- 00039334
Y
UNH_COUNTER
Y/N. Mittels UNH_COUNTER=Y wird beim Splitt der Datei auch die UNH-Referenz
(UNH.0062) hochgezählt.
N
minScale
Minimale Anzahl an Nachkommastellen. Nur für Inhouse-Versand verwenden, da
DVGW-Vorgaben explizit die Anzahl der Nachkommastellen begrenzen!
0
maxScale
Maximale Anzahl an Nachkommastellen. Nur für Inhouse-Versand verwenden, da
DVGW-Vorgaben explizit die Anzahl der Nachkommastellen begrenzen!
10.8.2
0
Import-Parameter
Die Einstellmöglichkeiten bezüglich ALOCAT beziehen sich primär auf die Festlegung der FK-ID-Spalten
(FK-ID1 bis FK-ID4). Folgende Parameter können zur Generierung der FK-ID verwendet werden.
Die Parameter müssen in der Properties-Datei mit {} eingeschlossen werden.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 189 von 384
Tabelle 10-8: ALOCAT Import-Parameter
Parameter
Beschreibung
ALOCAT_TYPE
Wert aus BGM+C002:1001
ALOCAT_VER
Aktuelle Version, Wert aus UNH.S009.0057
CLEARING_FLAG
Bei vorhandenem Wert in SG1+RFF+ANX wird der Text CLEARING erstellt, ist
kein Wert vorhanden, bleibt die Variable leer (null). (seit eCount- 00051360)
LIN_DIR
Wert aus SG37.QTY+ C186:6063
LIN_TYPE
Mappingwert aus SG37.STS+C601:9015 (z. B. 09G = SLPsyn)
LIN_STA
Wert aus SG37.STS+C601:9015
LIN_STA2
Zweitstatus der ALOCAT (Zusatzqualifier 10G, 12G)
MSG_TYPE
Wert aus BGM.C002:1001. Laut aktueller eingeschränkter Codeliste für BGMC002:1001 z. B. X1G, X1G
NAD:ZES.ID
SG39.NAD+C082:3039 (wenn NAD+3035=ZES)
NAD:ZES.TYPE
SG39.NAD+C082:3055 (wenn NAD+3035=ZES)
NAD:ZSH.ID
SG39.NAD+C082:3039 (wenn NAD+3035=ZSH)
NAD:ZSH.TYPE
SG39.NAD+C082:3055 (wenn NAD+3035=ZSH)
NAD:ZSO.ID
SG39.NAD+C082:3039 (wenn NAD+3035=ZSO)
NAD:ZSO.TYPE
SG39.NAD+C082:3055 (wenn NAD+3035=ZSO)
NAD1.ID
SG39.NAD+C082:3039 (1. SG39-Segment)
NAD1.ROLE
SG39.NAD +3035 (1. SG39-Segment)
NAD1.TYPE
SG39.NAD+C082:3055 (1. SG39-Segment)
NAD2.ID
SG39.NAD+C082:3039 (2. SG39-Segment)
NAD2.ROLE
SG39.NAD +3035 (2. SG39-Segment)
NAD2.TYPE
SG39.NAD+C082:3055 (2. SG39-Segment)
NAD3.ID
SG39.NAD+C082:3039 (3. SG39-Segment)
NAD3.ROLE
SG39.NAD +3035 (3. SG39-Segment)
NAD3.TYPE
SG39.NAD+C082:3055 (3. SG39-Segment)
Seite 190 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter
Beschreibung
NAD4.ID
SG39.NAD+C082:3039 (4. SG39-Segment)
NAD4.ROLE
SG39.NAD +3035 (4. SG39-Segment)
NAD4.TYPE
SG39.NAD+C082:3055 (4. SG39-Segment)
RECEIVER_ID
Wert aus SG3.NAD.C082:3039
RECEIVER_ID_TYPE Wert aus SG3.NAD.C082:3055
RECEIVER_ROLE
Wert aus SG3.NAD.3035
SENDER_ID
Wert aus SG3.NAD.C082:3039
SENDER_ID_TYPE
Wert aus SG3.NAD.C082:3055
SENDER_ROLE
Wert aus SG3.NAD.3035
ZPT_ID
Wert aus SG36.LOC+ 3227
ZPT_ID_TYPE
ZPT falls der Wert „172“ in SG36.LOC+ 3227 angegeben wurde, ansonsten
NKP (Netzkopplungspunkt)
ZPT_TYPE
Wert aus SG36.LOC+C517.3055 (mit ALOCAT 5.6 wurde das Feld gestrichen)
Beispiel-Konfiguration für FK-ID:
ORDRSP.ALOCAT.FK_ID1=ALOCAT{ALOCAT_TYPE};{NAD1.ROLE}={NAD1.ID},{NAD1.TYPE};{NAD2.ROLE}={NAD2.ID},
{NAD2.TYPE}
ORDRSP.ALOCAT.FK_ID2={SENDER_ROLE}={SENDER_ID},{SENDER_ID_TYPE};{RECEI
VER_ROLE}={RECEIVER_ID},{RECEIVER_ID_TYPE};{LIN_TYPE};{LIN_DIR}
10.8.3
Probleme/Lösungen
10.8.3.1 NAD+ZES/NAD+ZSH fehlt
Über dieses Segment werden Bilanzkreis-Codes, Netzkontonummern und Netzbetreibernummern
übermittelt. Der Wert muss im ecount explizit gepflegt werden. Hier muss entweder die DatensenkenEigenschaften NETZKONTO_VON und NETZKONTO_AN beim entsprechenden Abo oder eben die
Zählpunktdetails NETZKONTO_VON, NETZKONTO_AN gesetzt werden.
Variante 1: Über das ABO (Beispiel für NETZKONTO_VON)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 191 von 384
Export > Datenversand
Im Reiter Allgemein bei Eigenschaften (neben Format) muss als dynamische Eigenschaft die Einstellung
NETZKONTO_VON mit dem zu versendenden Netzkonto angegeben werden.
Variante 2: Zählpunkt-Verwaltung
Maske Zählpunkt-Verwaltung: Das Zählpunktdetail NETZKONTO_VON muss mit dem entsprechenden
Wert für den zu exportierenden Zählpunkt angelegt werden.
Abbildung 10-5: Maske Zählpunkt-Verwaltung: Zählpunktdetail NETZKONTO_VON
Technisch: Der Wert ergibt sich aus dem XML-Element ZAEHLPUNKT.NB_EIC_CODE bzw.
ZAEHLPUNKT.HB_EIC_CODE und wird über die Tabelle.Spalte EXPORT_ZAEHLPUNKTE.NB_EIC_CODE
bzw. EXPORT_ZAEHLPUNKTE.HB_EIC_CODE bereitgestellt.
10.8.3.2 Export – Splitmerkmale: Größe bei Zählpunkt nicht umgesetzt
Es ist möglich, beim ALOCAT-Versand ein Splitting (= Erzeugung einer neuen Datei) pro Netzkonto,
Bilanzkreis oder Zählpunkt vorzunehmen. Beim Zählpunkt kann über das Abo zusätzlich eine Größe
angegeben werden (z. B. Split nach 100 Zählpunkten). Diese Logik wurde im zugehörigen KomA-Modul
mit eCount- 00054905 (Version 4.0.2.64 vom KOMA-EXPORT-FILTER ALOCAT) implementiert.
10.9 CONTRL
Stand 09.09.2014:
KomA sendet ab dem 01.10.2014 nur noch negative CONTRL (falls aktiviert). Positive CONTRL und
APERAK werden ausschließlich von internen ecount-Prozessen (Workflows, Import-API) erstellt.
10.9.1
Lizenz / Datenquelle (Format)
Das Format EDI_CONTRL wird für den CONTRL-Versand nur dann benutzt, wenn der Kunde die passende
Export-Lizenz E_EDI_CONTRL aktiviert hat. Ansonsten verwendet der Importfilter (z. B. beim Import
einer MSCONS-Datei) die frühere EDI-Datensenke auch für CONTRL.
Seite 192 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Die Datensenke heißt EDI und nicht MSCONS, weil ursprünglich alle EDIFACT-Formate über diese
versendet werden sollten, dies waren damals MSCONS, CONTRL und APERAK.
Die Lizenz E_EDI_CONTRL ist nicht zwingend notwendig, sorgt aber für eine bessere Unterscheidung
zwischen MSCONS und CONTRL. Diese Lizenz wird aktuell nicht ausgeliefert, kann jedoch in Projekten
explizit angefordert werden.
10.9.2
Parameter
Die Parameter werden in der EDI.properties gepflegt.
Die Beschreibung ist gültig ab dem 01.10.2014.
Tabelle 10-9: Parameter für EDI_CONTRL
Parameter/Beschreibung
Standardwert
APERAK.FROM
Angabe in
CONTRL.FROM
Die APERAK-Absender-Adresse kann ebenfalls aus der Ziel-Adresse bzw. den
Marktteilnehmer-Identifikatoren analog zu CONTRL mittels der Einstellung
APERAK.FROM = to; [email protected]
eingestellt werden.
CONTRL.FROM
Hiermit wird die Absenderadresse der ausgehenden CONTRL definiert.
Hier kann entweder eine Standardadresse (z. B. „[email protected]“)
to wenn
MK_DEFAULTS=Y
, sonst leer
oder mittels to die Funktion zur Ermittlung der From-Adresse aus der TO-Adresse
der importierenden E-Mail (wenn die Datei über Import-Kommunikation geladen
wurde) angegeben werden. Es ist auch möglich, bei to eine Standardadresse
anzugeben, dies ist sinnvoll, wenn die Datei nicht über die Import-Kommunikation
geladen wurde. Die Syntax ist folgende:
CONTROL.FROM = to; [email protected]
CONTRL.SUBJECT
Der E-Mail-Betreff für die zu versendende CONTRL, der Default (${FILENAME}))
wird beim Export aufgelöst.
CONTRL.SUBJECT.<MP-ID>
Möglichkeit zur Festlegung einer marktpartnerspezifischen Betreffzeile, nur für EMail-Versand verwendbar. (eCount- 00041023)
Beispiel:
CONTRL.SUBJECT.123=${FILENAME} $TRUST$
CONTRL.TO.<MP-ID>
Möglichkeit zur Festlegung einer Marktpartner spezifischen Antwort-E-MailAdresse. (eCount- 00041023)
Beispiel:
[email protected]
${FILENAME}
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 193 von 384
Parameter/Beschreibung
Standardwert
CONTRL_APERAK.SUBJECT.SOURCE
S
Die Quelle für die Einstellungen (CONTRL.SUBJECT.<MP-ID> und
CONTRL.TO.<MP-ID>) kann zwischen SENDER und EMPFÄNGER gewechselt
werden. (eCount- 00043813)
CONTRL_APERAK.SUBJECT.SOURCE=S (Sender)
CONTRL_APERAK.SUBJECT.SOURCE=R (Receiver)
CONTRL2.TEXT
E-Mail-Nachrichtentext beim Versand der negativen CONTRL. Sollte dieser Text
angepasst werden, dürfen die Platzhalter (${IN_FILENAME}, ${UNB_REF})
nicht entfernt werden!
Standardwert:
Sehr geehrte Damen und Herren,\\ndie EDIFACT Nachricht ${IN_FILENAME} mit der
Referenz ${UNB_REF} wurde empfangen, enthielt jedoch Fehler:\\n
DefaultCONTRLAddress
Default Adresse, an die die CONTRL-Nachrichten verschickt werden (falls keine
Adresse ermittelt werden kann)
FILE://cont
rl/
disable_control_messages
Dieser Parameter ist zum 01.10.2014 weggefallen!
reply_method
Mögliche Ausprägungen: V, C und D, die beliebig miteinander kombiniert werden
können. Die Abarbeitung erfolgt immer von links nach rechts, wird bei einer
Methode keine Adresse ermittelt, so wird die nächste Methode ausgeführt.
Beispiel: Bei VD wird erst die IMPORT-API nach einer Adresse gefragt, ist keine
vorhanden wird die Default-Adresse verwendet.
V nutzt ecount zur Ermittlung der Adresse, diese Daten werden in der Maske
Stammdaten > Marktteilnehmer gepflegt.
Folgende API ist dafür zuständig:
EC_SYS.pkg_import_api.fnc_get_vtp_nas_id(p_mp_id=>?,p_mp_
id_typ=>?)
(Die Werte können in der DB über v_nas_adressen, nas_adressen
kontrolliert werden.)
C: Absender-Adresse von empfangener E-Mail benutzen (falls über ImportKommunikation abgeholt). Die Daten werden über die COM_MESSAGE.ID (diese
ID steht als ZIP-Kommentar in der Datei, die der Comimport ablegt) in der
Detailtabelle COM_MESSAGE_DETAIL gesucht.
D: Defaultadresse, hierbei wird der Parameter DefaultCONTRLAddress (siehe
entsprechenden Abschnitt) ausgewertet.
Kann über keine der definierten Funktionen eine Adresse ermittelt werden, wird die
Fehlermeldung: „No valid reply address found“ ausgegeben.
VCD wenn
MK_DEFAULTS
=Y, sonst leer
Seite 194 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Standardwert
Sollte die EDIFACT-Datei nicht über den COMIMPORT importiert worden sein,
kann die Suche über C auch nicht zum Erfolg führen, da keine E-MailInformationen extrahiert und in COM_MESSAGE_DETAIL abgelegt wurden.
Auch die Nutzung von D und den Parameter CONTRL.FROM = to führt nicht
zum Erfolg, da auch hier nach den Informationen, die nur der COMIMPORT
ablegen kann, gesucht wird.
Send_CONTRL
Gültige Werte sind A und N
-
A (Always) = CONTRL immer senden
N (Never) = CONTRL niemals senden
A wenn
MK_DEFAULTS
=Y, sonst N
Im Fehlerfall, d.h. wenn der Parameter falsch definiert wurde (z. B.
Send_CONTRL=X), wird per Default keine CONTRL erzeugt.
Die Parameter Y und J werden inzwischen wie A interpretiert!
import.IGNORING_DUPLICATE_CONTRL
N
Y/N. Beim Doppel-Import einer positiven CONTRL auf eine positive CONTRL oder
negative CONTRL auf eine negative CONTRL kann die CONTRL-DoppelimportWarnung nun mit der Einstellung Y deaktiviert werden.
import.IGNORING_DUPLICATE_CONTRL_NEGATIVE
Y/N. Beim Doppel-Import einer zweiten negativen CONTRL auf eine bereits
erhaltene positive CONTRL kann die Warnung mit der Einstellung Y deaktiviert
werden.
Beispiel-Konfiguration - Marktkonformer EDI-Import mit CONTRL-Versand:
MK_DEFAULTS=Y
Send_CONTRL=A
BREAK_ON_ERROR=Y
BREAK_ON_WARNING=N
Beispiel-Konfiguration - Inhouse-Kommunikation ohne CONTRL und EDIFACT-Regeln:
MK_DEFAULTS=N
Send_CONTRL=N
BREAK_ON_ERROR=N
BREAK_ON_WARNING=N
N
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
10.9.3
Seite 195 von 384
CONTRL 2.0 (01.10.2014)
10.9.3.1 Syntaxprüfung für Datenelemente die es laut MIG nicht gibt
Sobald ein Datenelement in der BDEW MIG nicht beschrieben wurde, d. h. nicht im Dokument enthalten
ist, handelt es sich um einen Syntaxfehler, wenn in der Übertragungsdatei ein derartiges Datenelement
enthalten ist. (siehe BDEW-Link)
10.9.3.2 Besonderheit zu DE0062 im UNH-Segment
„Entsprechend der für EDI@Energy-Nachrichten geltenden Regeln müssen die Inhalte des DE0062 aller
in der Übertragungsdatei enthaltenen Nachrichten lediglich bezogen auf diese Übertragungsdatei
eindeutig sein. Jeder Marktteilnehmer kann innerhalb einer Übertragungsdatei jeweils mit 1 beginnen
und je Nachricht (entspricht dem UNH-Segment) jeweils um eins hochzuzählen. Eine Ablehnung ist somit
nur zulässig, wenn in mehreren UNH-Segmenten (einer von Ihnen empfangenen Übertragungsdatei) im
DE0062 der Wert "1" stehen würde.“ (siehe BDEW-Link)
10.9.4
Probleme/Lösungen
10.9.4.1 Import „Alle passenden Nachrichten sind bereits beantwortet.“
Die Warnung sagt aus, das bereits eine CONTRL für die EDI-Datei (entspricht Datenaustauschreferenz
und Absender-ID) importiert wurde.
Folgendes Select wird für eine CONTRL ausgeführt:
SELECT EE.ID, EE.NACHRICHTEN_ID, EE.KONVERTIERUNGSDATUM, EE.EAU_ID,
EE.EMS_ID, EE.CONTRL_STATUS
FROM EXPORT_EDIFACT EE, EDIFACT_FILE EF
WHERE EE.EAU_ID = EF.EAU_ID
AND (EE.EMS_ID IS NULL OR EE.EMS_ID = EF.EMS_ID)
AND EE.DATENAUSTAUSCHREFERENZ = '2024238E'
AND EF.SENDER_ID = '9904834000007'
Abbildung 10-6: Anzeige der CONTRL im robotron*EdifactKonverter (Ausschnitt)
Seite 196 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Die Warnung "Alle passenden Nachrichten sind bereits beantwortet." wird angezeigt, wenn
-
ein Datensatz gefunden wurde (EAU_ID not null)
die Spalte CONTRL_STATUS schon mit einen Wert belegt ist (not null)
Mit eCount- 00055809 wurden neue Parameter zur Deaktivierung der Prüfungen implementiert.
Die Prüfung beziehungsweise Warnung beim doppelten Import einer CONTRL auf eine EDIFACT-Datei ist
nun konfigurierbar. Beim Import einer positiven CONTRL auf eine negative CONTRL ist kein Schalter
notwendig da dieses Verhalten vom BDEW standardisiert ist.
Beim Import einer positiven CONTRL auf eine positive CONTRL oder negative CONTRL auf eine negative
CONTRL kann die Warnung nun mit der Einstellung
import.IGNORING_DUPLICATE_CONTRL=Y
in der Config.properties ignoriert/deaktiviert werden.
Soll die Warnung beim Import einer negativen CONTRL auf eine positive CONTRL im System auch
unterbunden werden muss die Einstellung:
import.IGNORING_DUPLICATE_CONTRL_NEGATIVE=Y
in der Config.properties gesetzt werden. Diese Einstellung sollte jedoch mit Bedacht eingesetzt werden,
da der Anwendungsfall nicht BDEW-konform ist.
10.9.4.2 Keine Nachricht mit Referenz xyz, Absender <null> gefunden
Das Problem tritt mit der Modulversion import/import_contrl.jar kleiner 4.0.2.4 auf. Sollte die
Modulversion aktuell sein (>4.0.2.4) dann kann mithilfe des robotron*EdifactKonverter überprüft
werden ob der Sender in der Datei überhaupt angegeben wurde. Diese Information ist in der Gruppe
S002 im Datenelement 0004 enthalten.
Abbildung 10-7: CONTRL-Anzeige EdifactKonverter (EDIFACT)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 197 von 384
Abbildung 10-8: CONTRL-Anzeige EdifactKonverter (Daten)
10.9.4.3 CONTRL wird mit falschem Absender generiert
Beispiel:
MSCONS-Import + CONTRL-Generierung (MP-ID sind Erfindungen):
-
Import einer MSCONS mit Absender-ID 99 und Empfänger-ID 978
Export einer CONTRL mit Absender-ID 123 und Empfänger-ID 99.
Dass CONTRL mit falschem Absender generiert werden, kann folgende Ursachen haben:
Der Empfänger einer „Original-Nachricht“ (z. B. MSCONS) (= Absender der Rückmeldung, z. B. CONTRL)
muss immer ein Systembetreiber sein (sofern keine Abschaltung oder Ausnahme definiert ist).
Andernfalls wird als Absender der Rückmeldung irgendein (der „naheliegendste“ = Besitzer des 1:1Postfaches, falls bekannt) Systembetreiber aus dem Mandanten eingesetzt.
Dieses Problem kann auf eine Reihe von Ursachen zurückzuführen sein. Eine Variante ist die Einstellung
Test_Systembetreiber = Y in der EDI.properties. Diese Option ist nur dann sinnvoll, wenn es
genau einen Systembetreiber geben kann (Aufgrund von Änderungen ist diese Konstellation jedoch
nicht mehr als Standard anzusehen). Daher sollte geprüft werden, ob die Option aktiviert ist.
Eine andere Variante ist eine fehlerhafte EDIFACT-Datei. In einer EDIFACT-Datei werden Absender und
Empfänger inklusive des Typs der ID mind. 2x angegeben (1x im UNB-Segment und 1x im NAD-Segment).
Nach den allgemeinen Festlegungen gilt aktuell (Stand 01.09.2014) Folgendes:
Die im UNB- und NAD-Segment für den Absender/Empfänger verwendeten MP-ID sind identisch (und
damit auch die Typen).
Zwischen KomA und Datenbank (Import-API) findet eine Kommunikation, unter anderem bezüglich der
Bestimmung der Absender-/Empfänger-ID, statt. Dies geschieht nach der Auswertung des UNBSegments in der EDIFACT-Datei. Dabei werden auch Absender (UNB.S002) und Empfänger (UNB.S003)
übermittelt. Im konkreten Fehlerfall gab es eine Abweichung zwischen den Typen der ID im UNB- und im
NAD-Segment (wobei das UNB-Segment fehlerhafte, aber gültige, Werte enthielt).
UNB+UNOC:3+99:500+978:500+140804:1000+
NAD+MS+99::332'NAD+MR+978::332'
Seite 198 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Dadurch wird an die Import-API der Wert VDEW als Typ übergeben. Mit diesem Parameterwert konnte
jedoch keine gültige Adresse von der Import-API gefunden werden, da im robotron*ecount der
richtige Typ DVGW definiert wurde. Mit Version 4.0.2.165 des KomA-Moduls (edifact_mscons.jar) gibt es
eine Quer-Prüfung bezüglich UNB und NAD. Tritt ein Unterschied auf, wird dies in der Maske ImportDateien (MF_IFI) im ecount als Warnung dargestellt.
Tabelle 10-10: Übersicht Mapping von Absender-/Empfänger-Typ
NAD.C082.3055
UNB.S002/S003.0007
Code im ecount
9 (GS1)
14 (GS1 Germany)
ILN
293 (DE, BDEW)
500 (DE, BDEW)
VDEW
321 (EASEE-Gas)
501 (EASEE-gas)
EDIGAS
332 (DE, DVGW)
502 (DE, DVGW)
DVGW
305 (ETSO)
ZZZ (ETSO)
EIC
10.10 IMBNOT (Imbalance Mitteilung)
10.10.1 Import-Parameter
Die Einstellmöglichkeiten beziehen sich primär auf die Festlegung der FK-ID-Spalten (FK-ID1 bis FK-ID4)
und können in der EDI.properties hinterlegt werden. Folgende Parameter können zur Generierung der
FK-ID verwendet werden.
Die Parameter müssen in der Properties-Datei mit {} eingeschlossen werden.
Tabelle 10-11: IMBNOT – FKID-Variablen
Parameter
Beschreibung
IMBNOT_TYPE
Wert aus BGM+C002:1001
IMBNOT_VER
Aktuelle Version, Wert aus UNH.S009.0057
LIN_TYPE
Gemappter Wert aus SG37.QTY+C186:6063 (z. B. für ZZH = BIOFLEX)
LIN_TYPE_ORIG
Originalwert aus SG37.QTY+C186:6063
MSG_TYPE
Wert aus BGM.C002:1001. Laut aktueller eingeschränkter Codeliste für BGMC002:1001 z. B. X1G, X1G
NAD:ZSH.ID
SG39.NAD+C082:3039 (wenn NAD+3035=ZSH)
NAD:ZSH.TYPE
SG39.NAD+C082:3055 (wenn NAD+3035=ZSH)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter
Beschreibung
NAD:ZSO.ID
SG39.NAD+C082:3039 (wenn NAD+3035=ZSO)
NAD:ZSO.TYPE
SG39.NAD+C082:3055 (wenn NAD+3035=ZSO)
NAD1.ID
SG39.NAD+C082:3039 (1. SG39-Segment)
NAD1.ROLE
SG39.NAD +3035 (1. SG39-Segment)
NAD1.TYPE
SG39.NAD+C082:3055 (1. SG39-Segment)
NAD2.ID
SG39.NAD+C082:3039 (2. SG39-Segment)
NAD2.ROLE
SG39.NAD +3035 (2. SG39-Segment)
NAD2.TYPE
SG39.NAD+C082:3055 (2. SG39-Segment)
NAD3.ID
SG39.NAD+C082:3039 (3. SG39-Segment)
NAD3.ROLE
SG39.NAD +3035 (3. SG39-Segment)
NAD3.TYPE
SG39.NAD+C082:3055 (3. SG39-Segment)
NAD4.ID
SG39.NAD+C082:3039 (4. SG39-Segment)
NAD4.ROLE
SG39.NAD +3035 (4. SG39-Segment)
NAD4.TYPE
SG39.NAD+C082:3055 (4. SG39-Segment)
RECEIVER_ID
Wert aus SG3.NAD.C082:3039
RECEIVER_ID_TYPE Wert aus SG3.NAD.C082:3055
RECEIVER_ROLE
Wert aus SG3.NAD.3035
SENDER_ID
Wert aus SG3.NAD.C082:3039
SENDER_ID_TYPE
Wert aus SG3.NAD.C082:3055
SENDER_ROLE
Wert aus SG3.NAD.3035
10.11 MSCONS
10.11.1 Import
Beinhaltet Informationen bezüglich des Imports von MSCONS-Dateien
Seite 199 von 384
Seite 200 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
10.11.1.1 Konfigurationsparameter
Parameter werden auch über die Datenquellen-Properties (meist EDI.properties) gepflegt.
Tabelle 10-12: Standardparameter EDIFACT: Datenquelle EDI: EDI.properties
Parameter/Beschreibung
Standardwert
ALLOW_NEGATIVE_MSCONS_VALUES
Y/N. Negative Werte werden per Default nur für Temperaturwerte akzeptiert.
Sollen für andere Einheiten Warnungen bei negativen Werte erzeugt werden,
muss die Einstellung ALLOW_NEGATIVE_MSCONS_VALUES=N gesetzt werden.
Falls aufgrund anderer Einstellungen oder Defaults Warnungen geschrieben
werden, aber nicht erwünscht sind, muss die Einstellung
ALLOW_NEGATIVE_MSCONS_VALUES=Y gesetzt werden.
Der Standardwert ergibt sich aus MK_DEFAULTS:
Y wenn MK_DEFAULTS=N
N wenn MK_DEFAULTS=Y
IGNORE_MABIS
N
Y/N. MaBiS spezifische Einstellungen ignorieren. Enthält die Nachricht z. B.
BGM+BK (Zeitreihen im Rahmen der Bilanzkreisabrechnung), so übergibt die KomA
bei IGNORE_MABIS=Y nicht wie üblich Nachrichtentyp MSCONS#BK an die
Import-API, sondern MSCONS#7 (wie bei BGM+7), die BK-Daten werden hierbei
also wie normale Lastgangdaten importiert.
Auch wenn die Datenquellen-Einstellung BWDI.ON_NACHRICHTENTYP auf dem
Wert MaBiS steht, wird diese dann nicht nach EDI_BK verschoben, da MSCONS#7
eine normale GPKE-MSCONS ist und in EDI verbleibt.
MSCONS.ALLOW_INCOMPLETE_MONTH
N
Y/N. Lücken in der MSCONS-Datei werden automatisch mit 0F Werten belegt.
MSCONS.CHECK_UNB_NAD_SEGMENT
Y/N. Ist der Parameter aktiviert, wird eine Querprüfung zwischen der Sender- und
Empfängerangabe im UNB-Segment und im NAD-Segment durchgeführt. Dies ist
notwendig, da Fehler im UNB-Segment Auswirkungen auf den CONTRL-Versand
haben können, die nur sehr schwer zu analysieren sind. Deshalb darf der
Parameter nur bei inhouse- oder nicht marktkonformer-Kommunikation
deaktiviert werden!
MSCONS.EM_UNB_DE0026_AS_FKID2_SUFFIX
Y/N. Ist dieser Parameter aktiviert, wird bei der FK-ID2 für MSCONS-Dateien mit
der Kennzeichnung EM der Suffix ;EM an die FK-ID2 angehangen (ist die FK-ID2
leer, wird nur EM hinterlegt). Damit ist es möglich EM von VL zu unterscheiden.
Beispiel: statt GAS_BRENNWERT wird GAS_BRENNWERT;EM übermittelt.
Y wenn
MK_DEFAULTS=
Y, sonst N
N
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 201 von 384
Parameter/Beschreibung
Standardwert
MSCONS.IGNORE_DTM9_ERROR_FOR_EM
Y
Mit dem Parameter MSCONS.IGNORE_DTM9_ERROR_FOR_EM=Y ist es
möglich, MSCONS-Dateien (in Version kleiner 2.2c) vom Typ EM mit vorhandenen
DTM+9, ohne Fehler, zu importieren. Mit 2.2c (gültig ab 01.10.2014) ist DTM+9
auch bei Messwert-Energiemenge (Prüfidentifikator 13001) erlaubt/Pflicht.
MSCONS.IGNORE_TO_MANY_DATA
N
Y/N. Laut den allgemeinen Festlegungen sind zu viele übermittelte Informationen
zu ignorieren. Um dieser Vorgabe gerecht zu werden, wurde dieser Parameter
eingeführt. Aktuell ist die Option nur für das SG6.DTM+157-Segment
(Beginndatum einer Profilschar) aktiv. (seit eCount- 00047955, KOMA-EDIFACTMSCONS 4.0.2.160)
MSCONS.OBIS_MAPPING_FK2
Y
Y/N. Mit MSCONS.OBIS_MAPPING_FK2=N kann das Mapping der FK-ID2 auf
GAS_BRENNWERT;GAS_ENDGUELTIG bzw.
GAS_BRENNWERT;GAS_VORLAEUFIG deaktiviert werden. Dann wird als FK2
die OBIS verwendet! Die Einstellung wird nur für den Brennwert ausgewertet,
wenn dieser nach vorläufig oder endgültig aufgeteilt werden muss.
ORIGINAL_OBIS
N
Y/N. Y = Es wird die original OBIS (= OBIS in der zu importierenden Datei) an die
Import-API weitergegeben
(pkg_import_api.prc_add_zaehlerwechsel(…p_EDIS_KENNZ=>?.
..)), falls in der KomA ein Mapping der OBIS stattfindet. Dieses Mapping der OBIS
findet statt, wenn OBIS_MAPPING_DEFAULTS=Y oder
ObisMapping.<alte obis>=<neue obis> definiert wurde und dieses
Mapping auf eine OBIS der Datei zutrifft.
Beispiel: Die OBIS 7-19:3.0.0 würde (für den Zählerstand) trotz Aktivieren von
OBIS_MAPPING_DEFAULTS nicht auf 7-1:3.0.0 geändert werden. Das betrifft
die Spalte Edis Kennz in der Maske StandardImport Viewer (MF_SIEC) im Reiter
Verbrauchsdaten. Es wird also die unveränderte OBIS aus der Datei in den ImportMasken angezeigt, was die Klärung von Problemen erleichtern kann.
Sort_Timestamps
N
Y/N. Parameter wird nur für MSCONS-Versionen 1.5 bis 2.1g (gültig bis
01.04.2009) unterstützt und ist aktuell nicht mehr von Bedeutung. Über diesen
Parameter konnte eine Sortierung der Zeitstempel vorgenommen werden. Dies
war notwendig, da nirgends spezifiziert wurde, dass die Zeitstempel in
chronologischer Reihenfolge angegeben werden müssen und es gelegentlich
vorkam, dass ein Marktpartner Werte durcheinander geliefert hatte.
VL_FKID2_SLP
Y
Seite 202 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Standardwert
Y/N. Für Verbrauchs-/Verrechnungsdaten relevant. Fügt an die FKID2 folgende
Zeichenkette an #SLP
Beispiel die FKID2 sieht für die OBIS 7-20:99.23.17 wie folgt aus:
VL_FKID2_SLP=Y  7-20:99.23.17#SLP
VL_FKID2_SLP=N  7-20:99.23.17
VL_FKID2_FIX
Mit Parameter kann eine konstante FKID2 für Verbrauchs-/Verrechnungsdaten
benutzt werden. Dieser Parameter ersetzt dann VL_FKID2_SLP.
Beispiel:
VL_FKID2_FIX = 1-1:1.9.1#SLP
10.11.1.1.1Status (Statuskodierung MSCONS (QTY) zu ecount)
Der Default-Status (wenn kein Statuscode in der MSCONS übermittelt wird = „“) kann über folgende
Einstellung definiert werden:
status=F
Statusangaben für einzelne Werte können über status.<mscons_status>=<ecount_status>
angegeben werden. Beispiel:
status.220 = V
status.86 = W
status.88 = W
Sind keine expliziten Status-Kodierungen definiert, werden folgende Standardkodierungen
vorgenommen:
Tabelle 10-13: Statuscodierungen MSCONS – ecount
MSCONS-QTY
ecount
MSCONS-QTY
ecount
MSCONS-QTY
ecount
220
W
46
W
ZZ1
K
201
V
86
W
ZZZ
?
20
F
88
W
E
E
68
W
69
W
F
F
67
E
87
W
ZZ2
K
99
E
79
W
G
G
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 203 von 384
MSCONS-QTY
ecount
MSCONS-QTY
ecount
MSCONS-QTY
ecount
262
V
187
V
V
V
182
S
427
K
„“
W
10.11.1.1.2 Einheitenkodierung (obis2unit)
Seit MSCONS 2.1d wird die Einheit direkt über die OBIS-Kennzahl mitgeteilt. Es existieren jedoch OBISKennzahlen, die im EDI@Energy OBIS-Kennzahlen-System nicht eindeutig definiert sind, beispielsweise
für den Wobbeindex. Daher wurde für den Wobbeindex die Einheit none verwendet. Mit eCount00054245 (Version 4.0.2.229 von ecount_import_EDI.jar) ist es möglich, für MSCONS-Versionen ab 2.1d
eine Einheit über die OBIS per Properties-Einstellung obis2unit.<obis>=<einheit>)
mitzugeben.
Beispiel - Einheit kWh/m³ für den Wobbeindex: obis2unit.7-1:70.10.16 = kWh/m³
Die Einstellung obis2unit ist nur für OBIS-Kennzahlen möglich, die nicht bekannt sind oder deren
Einheit explizit als none definiert wurde (Wobbeindex, unterer Wobbeindex, Methanzahl).
10.11.1.1.3 Nutzung Feature ZRQ (Import-API) MSCONS.ENABLE_ZRQ_FOR_OBIS
Für die Importverarbeitung der Gasbeschaffenheiten (Brennwert, CO2, H2 usw.), welche in den Perioden
stündlich, täglich, monatlich geliefert werden können, ist ein konfigurierbarer Import unter Nutzung des
ZRQ-Features notwendig. D. h. das ZRQ-Feature muss über die KomA für den jeweiligen Importordner
deaktiviert sowie für bestimmte OBIS-Kennzahlen aktiviert bzw. der Default übersteuert werden
können.
Das ZRQ-Feature bewirkt, dass die zu importierenden Daten nicht als Lastgang sondern als
Verbrauchsdaten an die Import-API übergeben werden. Im ecount ist das in der Maske StandardImport
Viewer (MF_SIEC) über die Reiter Lastgang und Verbrauchsdaten für den Anwender sichtbar.
Das ZRQ-Feature kann komplett deaktiviert werden mit der Einstellung:
MSCONS.DISABLE_FEATURE_ZRQ=Y
Ist dies gesetzt wird MSCONS.ENABLE_ZRQ_FOR_OBIS nicht mehr ausgewertet.
Das ZRQ-Feature kann für einzelne OBIS-Kennzahlen über MSCONS.ENABLE_ZRQ_FOR_OBIS
aktiviert werden, hierbei kann auch das * als Jokerzeichen verwendet werden.
Beispiel: MSCONS.ENABLE_ZRQ_FOR_OBIS=7-*:70.66.*;7-0:54.0.20; 7-1:70.61.22
Die OBIS-Kennzahlen werden durch ein Semikolon (;) getrennt angegeben. Die Werte müssen in einer
Zeile stehen, es darf also bei längeren Listen kein Newline-Zeichen (Enter) zur besseren Lesbarkeit
eingefügt werden.
Seite 204 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
10.11.1.1.4 OBIS-Mapping (ObisMapping und OBIS_Mapping)
Die OBIS dient ecount als Identifikationsmerkmal und wird über die Import-API mithilfe der FremdkanalID2 (FKID2) mitgeteilt. Es kann jedoch sein, dass die importierten OBIS-Kennzahlen von dem im System
hinterlegten abweichen (allein schon wegen Vorgabe im OBIS-Kennzahlen-System: Kanal (irrelevant), b =
0 ... 64). Aus diesem Grund ist ein Mapping der OBIS notwendig.
Es gibt zwei Arten von OBIS-Mapping. Zum einen kann die OBIS-Kennzahl an sich detailliert manipuliert
werden; z. B. kann der Kanal auf 1 gesetzt werden. Zum zweiten ist es möglich, bestimmte OBISKennzahlen auf virtuelle OBIS-Kennzahlen (z.B. GAS_NORMDICHTE oder
GAS_BRENNWERT;GAS_ENDGUELTIG) zu mappen.
Im System sind einige Standard-Mappings hinterlegt, die per Default aktiviert sind und mit
OBIS_MAPPING_DEFAULTS=N deaktiviert werden können.
10.11.1.1.4.1 ObisMapping
Über diese Einstellung können Regeln zur Manipulation der OBIS-Kennzahl vorgenommen werden.
Syntax: ObisMapping.<name>=<OBIS-Suche> ; <OBIS-Ersetzung>
Beispiel:
Um alle Gas-OBIS-Codes auf den Kanal 1 zu zwingen, kann die Zeile
ObisMapping.G1 = 7-x:x.x.x ; 7-1:*.*.*
in config/import/EDI.properties konfiguriert werden (Properties-Dateiname kann anders lauten). Die
Regeln werden in alphanumerischer Reihenfolge des angegebenen Namens (hier G1) ausgewertet und
die erste treffende Regel gilt. Sollte es also für diese OBIS eine zweite Regel unter den Namen G2 geben,
wird diese nicht mehr ausgeführt.
Um zu verhindern, dass bei den OBIS-Codes 7-20:3.0.0 und 7-20:3.2.0 der Kanal auf 1 gesetzt wird,
können folgende Properties gesetzt werden:
ObisMapping.G00a = 7-20:3.0.0 ; *-*:*.*.*
ObisMapping.G00b = 7-20:3.2.0 ; *-*:*.*.*
ObisMapping.G00c = 7-20:6.0.0 ; *-*:*.*.*
ObisMapping.G00d = 7-20:6.2.0 ; *-*:*.*.*
Durch den Namen G00a – G00d wird sichergestellt, dass die Regel vor der Regel G1 ausgeführt wird.
Platzhalter, Beispiel: ObisMapping.G1 = 7-x:x.x.x ; 7-1:*.*.*
Links die Platzhalter (x) gelten als Joker-Suchkriterium, damit die Regel gefunden wird und die
rechten Platzhalter (*) gelten für die Übernahme der entsprechenden Felder aus der eingehenden
OBIS-Kennzahl. Basierend auf der Angabe trifft die Regel also für alle OBIS-Kennzahlen zu, die mit 7
(= Medium GAS) importiert werden. Für OBIS-Kennzahlen, auf die die Regel zutrifft, wird jeder Kanal
auf 1 gesetzt, die Messgröße(n) und der Zeitbezug werden aus der eingehenden OBIS übernommen.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 205 von 384
Wenn OBIS_MAPPING_DEFAULTS=Y (oder nicht spezifiziert, da Default=Y) gelten die folgenden
Standard-Mappings:
-
ObisMapping.g00a = 7-10:99.33.17 ; *-*:*.*.*
ObisMapping.g00b = 7-10:99.36.17 ; *-*:*.*.*
ObisMapping.g00c = 7-20:99.33.17 ; *-*:*.*.*
ObisMapping.g00d = 7-20:99.36.17 ; *-*:*.*.*
ObisMapping.g00e = 7-20:3.0.0 ; *-*:*.*.*
ObisMapping.g00f = 7-20:3.2.0 ; *-*:*.*.*
ObisMapping.g01a = 7-x:3.0.0 ; *-1:*.*.*
ObisMapping.g01b = 7-x:13.0.0 ; *-1:*.*.*
ObisMapping.g02a = 7-x:3.2.0 ; *-1:*.*.*
ObisMapping.g02b = 7-x:13.2.0 ; *-1:*.*.*
ObisMapping.g03 = 7-x:6.0.0 ; *-1:*.*.*
ObisMapping.g04 = 7-x:6.2.0 ; *-1:*.*.*
ObisMapping.g11 = 7-x:54.0.x ; *-0:*.*.*
ObisMapping.g12 = 7-x:52.0.x ; *-0:*.*.*
Die Standard-Mappings sollen hierbei einige OBIS-Kennzahlen explizit auf den Kanal 1 oder 0 mappen
bzw. verhindern, dass einige OBIS-Kennzahlen übersteuert werden (z. B. 7-10:99.36.17). Dies ist wichtig,
da bei MDL->VNB in 7-b:99.33.17 das b wirklich „beliebig“ ist, jedoch bei VNB->LIEF mit b=10/20
zwischen vorläufig und endgültig unterschieden wird!
Beispiele:
Um die OBIS 7-1:70.66.20 auf 7-1:71.67.22 zu ändern, kann diese Einstellung vorgenommen werden:
ObisMapping.A01=7-1:70.66.20 ; 7-1:71.67.22
Soll nur der Zeitbezug aller OBIS-Kennzahlen (Medium Gas, Kanal 1) manipuliert werden, kann folgende
Einstellung genutzt werden:
ObisMapping.A01=7-1:x.x.x ; 7-1:*.*.22
10.11.1.1.4.2 OBIS_Mapping
Dies ist der Vorgänger der Konfigurationseinstellung ObisMapping. Hier kann eine OBIS gegen eine
andere OBIS getauscht werden. Diese Einstellung sollte deshalb bevorzugt verwendet werden, wenn ein
Mapping auf eine Zeichenkette vorgenommen werden soll, die keine direkte OBIS ist, z. B.
GAS_CO2_ANTEIL oder GAS_NORMDICHTE (auch als virtuelle OBIS bezeichnet). Dieses Mapping wird
von der KomA anschließend als FKID2 an die Import-API übergeben. Bei der Einstellung gibt es keine
Reihenfolge – sobald eine OBIS auf eine Einstellung passt, wird diese verwendet.
Wenn OBIS_MAPPING_DEFAULTS=Y (oder nicht spezifiziert, da Default=Y) gelten die folgenden
Standard-Mappings:
-
7-0:52.0.16 = GAS_Z_ZAHL
7-0:52.0.20 = GAS_Z_ZAHL
7-0:52.0.22 = GAS_Z_ZAHL
7-0:54.0.16 = GAS_BRENNWERT
7-0:54.0.20 = GAS_BRENNWERT
7-0:54.0.22 = GAS_BRENNWERT
7-1:13.0.0 = GAS_BETRIEBSVOLUMEN;GAS_ZAEHLERSTAND;GAS_AUSSPEISUNG
7-1:13.2.0 = GAS_NORMVOLUMEN;GAS_ZAEHLERSTAND;GAS_AUSSPEISUNG
Seite 206 von 384
-
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
7-1:3.0.0 = GAS_BETRIEBSVOLUMEN;GAS_ZAEHLERSTAND;GAS_AUSSPEISUNG
7-1:3.2.0 = GAS_NORMVOLUMEN;GAS_ZAEHLERSTAND;GAS_AUSSPEISUNG
7-1:33.2.71 = GAS_ENERGIEWERT;GAS_ENDGUELTIG
7-1:33.2.71#BRW = GAS_BRENNWERT;GAS_ENDGUELTIG
7-1:33.2.71#ZZA = GAS_Z_ZAHL
7-1:33.3.71 = GAS_ENERGIEWERT;GAS_VORLAEUFIG
7-1:33.3.71#BRW = GAS_BRENNWERT;GAS_VORLAEUFIG
7-1:33.3.71#ZZA = GAS_Z_ZAHL
7-1:36.2.71 = GAS_ENERGIEWERT;GAS_ENDGUELTIG;GAS_EINSPEISUNG
7-1:36.2.71#BRW = GAS_BRENNWERT;GAS_ENDGUELTIG
7-1:36.2.71#ZZA = GAS_Z_ZAHL
7-1:36.3.71 = GAS_ENERGIEWERT;GAS_VORLAEUFIG;GAS_EINSPEISUNG
7-1:36.3.71#BRW = GAS_BRENNWERT;GAS_VORLAEUFIG
7-1:36.3.71#ZZA = GAS_Z_ZAHL
7-1:99.33.17 = GAS_ENERGIEWERT;GAS_ENDGUELTIG;GAS_AUSSPEISUNG
7-1:99.36.17 = GAS_ENERGIEWERT;GAS_ENDGUELTIG;GAS_EINSPEISUNG
7-10:99.33.17 = GAS_ENERGIEWERT;GAS_VORLAEUFIG;GAS_AUSSPEISUNG
7-10:99.33.17#BRW = GAS_BRENNWERT;GAS_VORLAEUFIG
7-10:99.33.17#ZZA = GAS_Z_ZAHL
7-10:99.36.17 = GAS_ENERGIEWERT;GAS_VORLAEUFIG;GAS_EINSPEISUNG
7-10:99.36.17#BRW = GAS_BRENNWERT;GAS_VORLAEUFIG
7-10:99.36.17#ZZA = GAS_Z_ZAHL
7-20:3.0.0 = GAS_BETRIEBSVOLUMEN;GAS_ZAEHLERSTAND;GAS_AUSSPEISUNG
7-20:3.2.0 = GAS_NORMVOLUMEN;GAS_ZAEHLERSTAND;GAS_AUSSPEISUNG
7-20:99.33.17 = GAS_ENERGIEWERT;GAS_ENDGUELTIG;GAS_AUSSPEISUNG
7-20:99.33.17#BRW = GAS_BRENNWERT;GAS_ENDGUELTIG
7-20:99.33.17#ZZA = GAS_Z_ZAHL
7-20:99.36.17 = GAS_ENERGIEWERT;GAS_ENDGUELTIG;GAS_EINSPEISUNG
7-20:99.36.17#BRW = GAS_BRENNWERT;GAS_ENDGUELTIG
7-20:99.36.17#ZZA = GAS_Z_ZAHL
Beispiele:
Der Zeitbezug (Intervall) für den Brennwert soll berücksichtigt und in eine eigene FKID2 gespeichert
werden, z. B.:
OBIS_Mapping.7-0:54.0.16 = GAS_BRENNWERT;STUNDE
OBIS_Mapping.7-0:54.0.20 = GAS_BRENNWERT;TAG
OBIS_Mapping.7-0:54.0.22 = GAS_BRENNWERT;MONAT
Seit eCount- 00056592 ist es möglich, mit dem Wildcard-Zeichen * zu arbeiten. Damit ist es möglich,
Einstellungen wie diese vorzunehmen:
OBIS_Mapping.7-*:70.66.* = GAS_CO2_ANTEIL
10.11.1.1.4.3 Achtung – Reihenfolge der OBIS-Einstellungen
Umfangreiche Konfigurationen können schnell zu Seiteneffekten führen. Hierbei muss beachtet werden,
dass erst die ObisMapping.<name> ausgewertet wird und dann auf der manipulierten OBIS-
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 207 von 384
Kennzahl (oder auf der originalen OBIS, falls keine ObisMapping-Regel gefunden wurde) die
Einstellungen OBIS_Mapping angewendet werden.
Beispiel:
In der MSCONS wird die OBIS 7-1:70.66.20 übermittelt.
Über ObisMapping.A01=7-1:x.x.x ; 7-1:*.*.22 wird der Zeitbezug der OBIS manipuliert,
gleichzeitig soll jedoch über OBIS_Mapping.7-1:70.66.20=GAS_H2_ANTEIL die OBIS auf eine
virtuelle OBIS (FKID2) gemappt werden. Es wird zuerst die OBIS 7-1:70.66.20 auf 7-1:70.66.22 geändert,
anschließend wird mit 7-1:70.66.22 in OBIS_Mapping auf einen Wert geprüft. In unserem Fall ist für
OBIS_Mapping kein Wert hinterlegt, sodass die FKID2 nicht auf GAS_H2_ANTEIL gesetzt wird.
Mit der Einstellung OBIS_Mapping.7-1:70.66.22=GAS_H2_ANTEIL würde die FKID2 für die
gemappte OBIS korrekt geschrieben werden.
10.11.1.2 MSCONS-Format spezifische Prüfungen (AHB) auf dem KomA
Beschreibung gültig für Formate ab Version 2.2c.
Fehlt der Prüfidentifikator (RFF+Z13), wird eine negative CONTRL erstellt (da das Segment mit R
gekennzeichnet ist).
Das MSCONS-Format wird primär über die KomA und der Import-API im robotron*ecount verarbeitet.
Dabei werden die Werte der MSCONS vorbereitet/aggregiert und an die Import-API übergeben
(Performance). Dies führt jedoch dazu, dass in der Import-API nicht mehr alle Informationen der
MSCONS enthalten sind, die Erzeugung der APERAK kann also von der Import-API nicht allein
bewerkstelligt werden. Aus diesem Grund werden bei MSCONS schon zahlreiche Prüfungen von der
KomA durchgeführt. Treten Verstöße auf, werden diese in der DB registriert und die Import-API nutzt
anschließend die aufbereiteten „Fehler“ für den weiteren APERAK-Prozess.
Folgende Prüfungen sind implementiert:
-
-
Es findet eine Querprüfung mit dem Wert aus UNB.0026 (TL, VL, EM) gegen das BGM.1001 statt.
Für BGM.1001 und die Werte BK, Z06/Z20, Z15, Z16 und Z21 wird geprüft ob der Wert TL in
UNB.0026 steht, ist dies nicht der Fall wird für alle MSCONS-Versionen ab 2.2c eine APERAK mit
dem Fehlercode Z29 angelegt (für ältere Versionen wird, wie bisher, eine negative CONTRL
erstellt)
Es findet eine Querprüfung mit dem Wert aus RFF+Z13.C506.1154 (Prüfidentifikator [PI]) gegen
das BGM.1001 statt. Es wird eine APERAK mit dem Fehlercode Z29 erzeugt wenn
o
o
o
o
o
-
BGM.1001=7 und PI nicht 13001 oder 13002 oder 13006
BGM.1001= BK und PI nicht 13003
BGM.1001=Z06 oder Z20 und PI nicht 13004
BGM.1001=Z15 und PI nicht 13005
BGM.1001=Z21 und PI nicht 13007
Bei BK wird geprüft, ob bei den Mengenangaben nur 1 Monat übergeben wurde (siehe eCount00050372). Mehrere Monate müssen in mehreren UNH-Segmenten (also Nachrichten)
übertragen werden. Eine Verletzung der Vorgabe wird mit APERAK Z30 behandelt.
Es wird geprüft, ob gar keine Mengenangaben (SG10-Segmente) übermittelt wurden, dann wird
eine APERAK Z29 erstellt.
Seite 208 von 384
-
-
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Es wird geprüft, ob Lücken zwischen den Mengenangaben auftauchen (SG10-Segmente), Lücken
werden mit APERAK Z30 beantwortet.
Es wird geprüft, ob Erzeugungs-/ Aggregationszeitpunkt/ Versionsangabe vorhanden ist
(SG6.DMT+293), dies ist der Fall, wenn BGM.1001 den Wert Z06 oder Z20 hat und das
Zeitintervall zwischen ersten SG10 DTM+163 und letzten SG10 DTM+164 mindestens einen
Monat umfasst. Schlägt die Prüfung an, wird eine APERAK Z29 angelegt.
Bei BK oder Z15 in BGM.1001 wird geprüft ob die Mengenangaben an der Monatsgrenze
beginnen. Ist dies nicht der Fall, wird eine APERAK Z30 erstellt.
10.11.1.3 Verwendung der MSCONS-Segment-Felder in ecount
Tabelle 10-14: Verwendung der MSCONS-Segment-Felder in ecount
MSCONS-Segment
Ablage in ecount / DB-Tabelle
DTM+9 (Ablese-, Erfassungs-,
Erzeugungszeitpunkt)
IMPORT_FILE.ZEITSTEMPEL
SG6.DTM+157 (Gültigkeit eines Profils bzw. Versionsnummer der Profilschar, wird in FK_ID1
einer Profilschar)
verwendet (nur bei Profilscharen)
10.11.1.4 Medienart (Bestimmung im KomA)
Mit eCount- 00047757 wird die Medienart über die KomA festgelegt. Die Ablage erfolgt dabei in der
Tabelle MSCONS_NACHRICHTEN in der Spalte RMEA_ID. Die Medienart wird beispielsweise in der
Maske EDIFACT-Cockpit zur Filterung verwendet.
Für MSCONS ab Version 2.1d ist folgende Logik implementiert:
Bei MSCONS und BGM mit einem Wert aus "BK, Z06, Z15, Z16, Z20" wird "Strom" (S) verwendet.
Zusätzlich wird im NAD-Segment bei der Code-Stelle (C082.3055) über den Typ eine Identifizierung
durchgeführt. Kann die Medienart nicht eindeutig bestimmt werden, wird X (Unbekannt) in die Spalte
eingefügt.
Für MSCONS bis 2.1c wurde die Logik in eCount- 00049059 nachgetragen. Dabei wird jedoch nur
zwischen Strom und Gas unterschieden.
10.11.2 Export
Beinhaltet Informationen bezüglich des Exports von MSCONS-Dateien
10.11.2.1 Konfigurationsparameter
Tabelle 10-15: Konfigurationsparameter für den MSCONS-Export
Parameter/Beschreibung
Standardwert
MAX_BK_FILE_SIZE
9900000
MSCONS-BK-Summen werden automatisch vor ca. 10 MB gesplittet. Dabei wird immer
an Zählpunkt-Grenzen geteilt. Die Angabe erfolgt in Byte (9900000 = 9,9 MB)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 209 von 384
Parameter/Beschreibung
Standardwert
MSCONS_Z24_GZIP
Y
Y/N. Der Allokationslistenversand (BGM+Z24) wird immer mit GZIP-Komprimierung
durchgeführt. Über diese Einstellung kann dies deaktiviert werden.
Nachkommastellen
Damit kann die Anzahl an Nachkommastellen manipuliert werden. Nur bei InhouseKommunikation verwenden, da die Anzahl an Nachkommastellen vom BDEW vorgeben
wird! Diese Einstellung sollte im ecount im Abo bei der dynamischen Eigenschaft
hinterlegt werden und muss nicht zentral in der EDI.properties angegeben werden
(kann aber).
Da die Einstellung teilweise abhängig von der Medienart, MSCONS-Version und
anderen Einflussgrößen ist, kann nicht sichergestellt werden, dass diese Einstellung
exakt funktioniert.
NAD_RECEIVER_ID_FROM_HDL
Y/N. Empfänger im Segment SG2.NAD+MR wird aus den Feldern „Händler“ befüllt. Die
Daten werden aus der Tabelle EXPORT_SENDER_EMPFAENGER und den Spalten
HAENDLER_ID und HAENDLER_IDTYP extrahiert.
N
NAD_SENDER_ID_FROM_NB
Y/N. Sender im Segment SG2.NAD+MS wird aus den Feldern „Netzbetreiber“ befüllt.
Die Daten werden aus der Tabelle EXPORT_SENDER_EMPFAENGER und den Spalten
NETZBETREIBER_ID und NETZBETREIBER_IDTYP extrahiert.
REMOVE_RUECKSTELLZIFFER_OBIS
N
Y
Y/N. Die Übertragung der Rückstellkennziffer der OBIS ist nicht BDEW konform und
wird per Default nicht exportiert. Der Export der Rückstellkennziffer kann jedoch mit
der Einstellung REMOVE_RUECKSTELLZIFFER_OBIS=N unter
config/export/EDI.properties aktiviert werden.
Beispiel:
REMOVE_RUECKSTELLZIFFER_OBIS=Y: 1-1:1.29.0
REMOVE_RUECKSTELLZIFFER_OBIS=N: 1-1:1.29.0*255
RemoveVD*Units
N
Y/N. Rückstellkennziffer am OBIS entfernen, falls von ecount geliefert.
Beispiel: 1.6.1*12 kann mit RemoveVD*Units=Y zu 1.6.1 geändert werden.
SEND_BRW_MON_AVG
Y/N. Mit SEND_BRW_MON_AVG=N kann der Brennwert auch stündlich oder täglich
versendet werden. Dazu muss die Periode der Linie jedoch auch stündlich oder täglich
sein. Mit Y wird immer 7-0:54.0.22 (Monatsmittelwerte) versendet, bei stündlichen
oder täglichen Linien wird hierbei eine Aggregation dieser Werte auf die KomA
durchgeführt um den Monatsmittelwert ausgeben zu können.
N
Seite 210 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Standardwert
SEND_ZZA_MON_AVG
Y
Y/N. Mit SEND_ZZA_MON_AVG=N kann die Z-Zahl als Stundenwerte verschickt
werden. Als OBIS-Kennzahlen wird 7-0:52.0.22 (Mittelwert) versendet.
STATUS20
Über diesen Status ist es möglich das ecount-Status ungleich N auch mit den MSCONSStatus 20 (Nicht verwendbarer Wert) exportiert werden. Mehrere ecount-Status
werden durch Komma getrennt angegeben.
Beispiel: ecount-Status V soll auch als MSCONS-Status 20 exportiert werden
STATUS20=V
unit.<alt>=<neu>
Nur bis Version 2.1d relevant! Damit kann ein Einheitenmapping vorgenommen
werden. Beispiel: Einheit K3 als KAH umsetzen: unit.K3 = KAH
UNIT_IN_QTY
N
Y/N. Nur bis Version 2.1d relevant!
Definiert ob in MSCONS-Versionen vor 2.1d die Einheit mit ausgeben werden soll.
ZST_MON_BRW
Y
Y/N. Mit ZST_MON_BRW=N kann der Brennwert für Zählerstände stündlich versendet
werden. Mit Y wird 7-0:54.0.22 (Monatsmittelwerte), mit N 7-0:54.0.16
(Stundenmittelwerte) als OBIS-Kennzahl versendet (Tagesmittelwerte - 7-0:54.0.20 werden aktuell nicht unterstützt).
ZST_SEKUNDAERWERTE
N
Y/N. Mit ZST_SEKUNDAERWERTE=Y kann der Export von von Primär- auf
Sekundärwerte umgeschalten werden.
10.11.2.2 Split von MSCONS beim Export
Ein Splitting ist bei MSCONS für Zählpunkte, Linien oder nach Dateigröße möglich. Das Splitting wird vom
ecount-Datenversand in der Tabelle EXPORT_ECOUNT in der Spalte RSPL_ID mitgegeben. Falls RSPL_ID
nicht gefüllt ist, dafür aber die Spalte TEILUNG, dann wird auf Zählpunktebene gesplittet.
Tabelle 10-16: Split von MSCONS beim Export
Split
Beschreibung
(EXPORT_ECOUNT.RSPL_ID)
ZPT
Es wird pro Zählpunkt eine neue Datei erstellt.
LIN
Es wird pro Linie eine neue Datei erstellt.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 211 von 384
Split
Beschreibung
(EXPORT_ECOUNT.RSPL_ID)
FILESIZE
Bei Überschreibung der Dateigröße wird eine neue Datei erstellt. Die
Angabe der Dateigröße erfolgt in KB. Damit die MSCONS-Dateien
korrekt aufgebaut werden, erfolgt die Prüfung auf die Dateigröße nicht
sofort sondern beispielsweise nach Abarbeitung einer Linie. Damit ist
die Dateigröße der erzeugten MSCONS-Datei nie exakt.
Die Prüfung der Dateigröße erfolgt auf der originalen MSCONS-Datei. Ist
beim Exportauftrag zusätzlich Komprimierung (gzip) aktiviert, erfolgt die
Komprimierung erst nach dem Split der Datei (die FILESIZE-Prüfung
erfolgt also nicht auf die GZIP-Datei).
10.11.2.3 Brennwert-Versand – OBIS-Kennzahl
Der Brennwert kann aktuell in drei Ausprägungen (stündlich = 7-0:54.0.16, täglich = 7-0:54.0.20 und
monatlich 7-0:54.0.22) exportiert werden. Bis zur Anpassung in eCount- 00055853 wurde der Versand
immer stündlich oder monatlich durchgeführt. Monatlich wurde versendete wenn der Parameter
SEND_BRW_MON_AVG auf Y steht (was per Default der Fall war), hierbei wurde bei stündlichen oder
täglichen Linien der Mittelwert auf die KomA gebildet. Bei den meisten Systemen sollte der Brennwert
also immer monatlich versendet worden sein auch wenn die Linie in ecount stündlich bzw. täglich
definiert war.
Jetzt kann der Versand sowohl stündlich, täglich und monatlich erfolgen. Der Defaultwet für
SEND_BRW_MON_AVG wurde auf N gesetzt. Dieser Parameter kann global in der EDI.properties oder im
ABO über die Einstellung Brennwertlinie mit Periode monatlich versenden gesetzt werden. Alle
bestehenden ABOS werden über ein Migrationsskript (siehe eCount- 00055853) mit dieser Einstellung
versehen um das bestehende Verhalten nicht zu verändern. Mit dieser Änderung werden die
Brennwerte dann so versendete, wie sie im ecount definiert wurden (wenn SEND_BRW_MON_AVG
nicht auf Y gesetzt wird).
10.11.2.4 Export-Tabellen - Struktur
Eine MSCONS-Übertragungsdatei hat einen Eintrag in der Tabelle EDIFACT_FILE. Innerhalb einer
Übertragungsdatei können mehrere Nachrichten enthalten sein, da MSCONS Multi-UNH fähig ist. Dies
bedeutet, dass es mehrere Einträge in MSCONS_NACHRICHTEN geben kann.
In MSCONS_NACHRICHTEN wird die Beziehung zu EDIFACT_FILE über die Spalte EDIF_ID hergestellt.
Innerhalb von EDIFACT_FILE ist über die Spalte EAU_ID wiederum die Beziehung zur Tabelle
EXPORT_AUFTRAEGE vorhanden.
Um herauszufinden, welche Daten innerhalb einer MSCONS-Nachricht überhaupt versendet wurden,
kann mit der ID aus MSCONS_NACHRICHTEN in den beiden Tabellen EXPORT_TAGESLASTPROFILE (für
Lastgänge) und EXPORT_VERBRAUCHSDATEN (z. B. für Zählerstände) in der Spalte MSCN_ID gesucht
werden. Die Datensätze aus EXPORT_TAGESLASTPROFILE hängen über die Spalte LIN_ID und die
Datensätze aus EXPORT_VERBRAUCHSDATEN über die Spalte ELI_ID direkt unter EXPORT_LINIEN. Die
Seite 212 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Tabelle EXPORT_LINIEN hängt via KUN_ID an EXPORT_KUNDE und dies wiederum an
EXPORT_ZAEHLPUNKTE.
Über diese Struktur ist es möglich herauszufinden, welche Linie in welcher MSCONS_NACHRICHT
verschickt wurde. Achtung: Solle der Versand wiederholt werden oder sollte die Linie auf mehrere
MSCONS-Nachrichten aufgesplittet werden, dann wird die MSCN_ID in EXPORT_TAGESLASTPROFILE
und EXPORT_VERBRAUCHSDATEN aktualisiert! Somit ist keine 100%-ige Zuordnung von Linie zu
MSCONS_NACHRICHT möglich. Ein automatisches Split einer Linie wird vorgenommen wenn die
Segment-Wiederholungen gesprengt werden, dies kann beispielsweise beim Versand von mehreren
Linien mit kurzer Periode (kleiner/gleich Periode 15) für einen Zählpunkt über einen großen
Zeitraum (z. B. 1 Jahr) stattfinden.
10.11.2.5 Export Allokationslisten Gas (BGM+Z24, RFF+Z13+13013)
Diese MSCONS-Ausprägung sieht den Versand aller relevanten Zählpunkte in einer Übertragungsserie
vor. Laut MIG dürfen max. 99 Dateien (ergibt sich aus S010.0070 - Übermittlungsfolgenummer) in einer
Serie übermittelt werden. In ecount werden immer 14.000 Zählpunkte pro Übertragungsdatei versendet
(damit sind max. 1.386.000 Zählpunkte in einer Übertragungsserie übermittelbar).
Um der BDEW-Kommunikationsrichtlinie (max. 10 MB darf eine E-Mail im EDIFACT-Umfeld aktuell groß
sein) gerecht zu werden, wird bei BGM-Z24 nun automatisch je Mail gesplittet, sprich jede Datei wird in
einer eigenen E-Mail versendet. Zusätzlich erfolgt die Komprimierung mittels gzip. Ist die GZIPKomprimierung nicht gewünscht kann dies über den Parameter "MSCONS_Z24_GZIP=N" (z.B. in der
EDI.properties) deaktiviert werden.
10.11.3 Probleme/Lösungen
10.11.3.1 Negative Werte
Bis MSCONS 2.2b (Stand: 01.10.2013) war in der MIG folgender Hinweis enthalten:
DE 6060: Im deutschen Energiemarkt werden positive Werte mit maximal 3 Nachkommastellen
verwendet.
Ab MSCONS 2.2c (Stand 01.04.2014) ist der Passus aus der MIG entfallen und in das AHB verschoben
worden.
Für die in Segmentgruppe 10 (QTY) ausschließlich positiv anzugebenden Energie- und Volumenwerte
(incl. Null) sind max. 3 Nachkommastellen vorgesehen. …
Hier steht also, dass ausschließlich „positive Werte“ versendet werden, d.h. im Umkehrschluss, dass
negative Werte nicht erlaubt sind. Da es beispielsweise Temperaturen in der Marktkommunikation (lt.
AHB) nicht gibt, werden diese auch über die entsprechende Datenquelle nicht unterstützt. Die EDIDatenquelle unterstützt hier also primär die Dinge, die vom BDEW/DVGW verbindlich geregelt sind. Die
Lösung ist die Einrichtung einer 2. Datenquelle, welche für die nicht marktkonforme Kommunikation
verwendet wird.
10.11.3.2 Unbekannte OBIS-Kennzahlen sind nicht marktkonform
Frage aus dem Forum Datenformate:
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 213 von 384
Das EDI@Energy OBIS-Kennzahlen-System verweist auf seine Quellen DIN EN 62056-61:2007-06 (Strom)
und DIN EN 13757-1:2003-03 (Gas) und gibt an, dass die DIN-Normen die "vollständige
Zusammenstellung des gesamten Systems" darstellen. Das impliziert, dass das EDI@Energy OBISKennzahlen-System nur einen Auszug und Beispiele widerspiegelt. Die Übermittlung spezieller OBISKennzahlen per MSCONS wird von Marktpartnern teilweise mit APERAK abgelehnt. Die zu klärende
Frage ist, ob nur die explizit im EDI@Energy OBIS-Kennzahlen-System dargestellten OBIS-Kennzahlen für
MSCONS zulässig sind, oder ob auch andere Kennzahlen, die in den Quell-DIN beschrieben sind,
verwendet werden können.
Antwort: „Es sind nur die explizit gekennzeichneten OBIS (In der Marktkommunikation verwendete
OBIS-Kennzahlen) für die MSCONS zulässig.“
10.11.3.3 Import
10.11.3.3.1 6660 vor der Versionsnummer (DTM+293)
Wenn 6660 vor der Version steht, wurde in der MSCONS-Datei das Segment SG6.DTM+293 übermittelt.
Das Zeitintervall in SG10 erfüllt jedoch nicht die Bedingung „Zeitintervall zwischen ersten SG10
DTM+163 und letzten SG10 DTM+164 mindestens einen Monat umfasst“.
10.11.3.3.2 Ablesegrund Turnusablesung PMR verschwindet beim Zählerstandsimport
Der Ablesegrund PMR wird von der KomA entfernt, das es den Code PMR im ecount nicht gibt.
Turnusablesung ist intern als null deklariert (historisch gewachsen, zu hoher Migrationsaufwand, …). Aus
diesem Grund ist das „verschwinden“ von PMR kein Fehler sondern zwingend notwendig, anderenfalls
würden nachfolgende Prozesse den Ablesegrund nicht korrekt identifizieren können.
Abbildung 10-9: Ablesegrund PMR verschwindet beim Zählerstandsimport
10.11.3.4 Export
10.11.3.4.1 Fehlerausgabe "Mehrere Energiewert-Linien gefunden unter x"
Prüfung, ob ggf. vorläufige und endgültige Werte im Exportauftrag enthalten sind. Es wird versucht,
innerhalb desselben Abos sowohl endgültige als auch vorläufige Liefermengen via MSCONS an den
Lieferanten zu verschicken. Das ist laut GeLi nicht vorgesehen. Sofern sowohl vorläufiger als auch
endgültiger Versand für die Linie notwendig sind, müssen diese in separate Abos ausgegliedert werden.
10.11.3.4.2 Nicht erlaubte Statusangaben für Marktrollen
Auf dem KomA wird nicht auf Marktrollen und deren erlaubte Statuswerte geprüft. Es werden alle Daten
exportiert, die in den Export-Tabellen für den jeweiligen Exportauftrag vorhanden sind. Wenn Daten
verschickt werden, die laut BDEW für die Marktrolle nicht vorgesehen sind, muss die Einstellung im
Seite 214 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Datenversand-Abo (Export > Datenversand > <jeweiliges Abo>) geprüft werden. Im Abo geschieht dies
im Reiter Umfang - Inhalt.
Beispiel:
MSCONS 2.2d als NB an LF darf der Status „201“ (Vorschlagswert) nicht versendet werden
Es ist zu prüfen, ob im Abo im Reiter Umfang - Linien die Lastgangqualität korrekt eingestellt ist. Es
dürfen weder im Feld Geforderte Statuswerte noch im Feld Zusätzlich akzeptierte Statuswerte die Werte
v oder V auftauchen (dies ist beispielsweise bei Lastgangqualität Prognose der Fall).
Abbildung 10-10: Anzeige nicht erlaubter Statusangaben für Marktrollen im Abo (Reiter Umfang – Linien)
10.11.3.4.3 Beginn der Gültigkeit des Brennwertes und der Z-Zahl erforderlich bei Gas-Zählerständen
Die Meldung besagt, dass der Wert „Beginn der Gültigkeit des Brennwertes und der Z-Zahl“ beim Export
für den Zählerstand fehlt. Die Prüfung wird nun ausgeführt wenn der Wert des Brennwertes oder der ZZahl ungleich 0 ist!
Ursprüngliche lautete die Fehlermeldung „Bezugszeitraum für Brennwert/Z-Zahl erforderlich bei GasZählerständen“, diese wurde jedoch verbessert in „Beginn der Gültigkeit des Brennwertes und der ZZahl erforderlich bei Gas-Zählerständen. [ZPT_ID: X; LINIE_ID: Y; OBIS: Z]“.
Mit dieser Information kann der relevante Zählerstand ermittelt werden. Dazu eignet sich die MF_ZST
(Zählerstände). Zu dieser gelangt man beispielsweise über die MF_ZPT (Zählpunkt-Verwaltung) auf der
entsprechenden Linie im Reiter „Information“ über den Button „Zählerstände“.
Der betroffene Wert ist im 1. Reiter „Zählerstände“ in der Spalte „Begin BWZ“ hinterlegt (bzw. in diesen
Fall anscheinend nicht). Dieser Wert ist ein Pflichtfeld und wird meist durch eine ZFA geliefert (kann
jedoch auch manuell hinterlegt werden).
Wenn der Wert nachgetragen wird, oder inzwischen von der ZFA geliefert wurde, so muss der
Export-Auftrag neu erstellt werden. Damit die neuen Daten auch für den Export in den ExportTabellen sichtbar sind.
10.12 NOMINT
Übermittlung von Nominierungen.
10.12.1 Import-Parameter
Die Einstellmöglichkeiten beziehen sich primär auf die Festlegung der FK-ID-Spalten (FK-ID1 bis FK-ID4)
und können in der EDI.properties hinterlegt werden. Folgende Parameter können zur Generierung der
FK-ID verwendet werden.
Die Parameter müssen in der Properties-Datei mit {} eingeschlossen werden.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Tabelle 10-17: NOMINT – FKID-Variablen
Parameter
Beschreibung
LIN_DIR
SG39.QTY+C186:6063
NAD:ZES.ID
SG39.NAD+C082:3039 (wenn NAD+3035=ZES)
NAD:ZES.TYPE
SG39.NAD+C082:3055 (wenn NAD+3035=ZES)
NAD:ZSH.ID
SG39.NAD+C082:3039 (wenn NAD+3035=ZSH)
NAD:ZSH.TYPE
SG39.NAD+C082:3055 (wenn NAD+3035=ZSH)
NAD:ZSO.ID
SG39.NAD+C082:3039 (wenn NAD+3035=ZSO)
NAD:ZSO.TYPE
SG39.NAD+C082:3055 (wenn NAD+3035=ZSO)
NAD1.ID
SG39.NAD+C082:3039 (1. SG39-Segment)
NAD1.ROLE
SG39.NAD +3035 (1. SG39-Segment)
NAD1.TYPE
SG39.NAD+C082:3055 (1. SG39-Segment)
NAD2.ID
SG39.NAD+C082:3039 (2. SG39-Segment)
NAD2.ROLE
SG39.NAD +3035 (2. SG39-Segment)
NAD2.TYPE
SG39.NAD+C082:3055 (2. SG39-Segment)
NAD3.ID
SG39.NAD+C082:3039 (3. SG39-Segment)
NAD3.ROLE
SG39.NAD +3035 (3. SG39-Segment)
NAD3.TYPE
SG39.NAD+C082:3055 (3. SG39-Segment)
NAD4.ID
SG39.NAD+C082:3039 (4. SG39-Segment)
NAD4.ROLE
SG39.NAD +3035 (4. SG39-Segment)
NAD4.TYPE
SG39.NAD+C082:3055 (4. SG39-Segment)
NOMINT_TYPE
Wert aus BGM+C002:1001
NOMINT_VER
Aktuelle Version, Wert aus UNH.S009.0057
RECEIVER_ID
Wert aus SG3.NAD.C082:3039
RECEIVER_ID_TYPE
Wert aus SG3.NAD.C082:3055
RECEIVER_ROLE
Wert aus SG3.NAD.3035
Seite 215 von 384
Seite 216 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter
Beschreibung
SENDER_ID
Wert aus SG3.NAD.C082:3039
SENDER_ID_TYPE
Wert aus SG3.NAD.C082:3055
SENDER_ROLE
Wert aus SG3.NAD.3035
ZPT_ID
SG38.LOC+C517:3225
ZPT_ID_TYPE
Wenn SG38.LOC+3227 den Wert 172 oder Z17 dann ZPT sonst NKP
ZPT_TYPE
SG38.LOC+C517:3055
10.13 NOMRES
Übermittlung von Nominierungsbestätigungen.
10.13.1 Import-Parameter
Die Einstellmöglichkeiten beziehen sich primär auf die Festlegung der FK-ID-Spalten (FK-ID1 bis FK-ID4)
und können in der EDI.properties hinterlegt werden. Folgende Parameter können zur Generierung der
FK-ID verwendet werden.
Die Parameter müssen in der Properties-Datei mit {} eingeschlossen werden.
Tabelle 10-18: NOMRES – FK-ID-Variablen
Parameter
Beschreibung
DATE_TIME_END
DTM+Z01 (2. Datum beim Datumsformat 719)
DATE_TIME_START
DTM+Z01 (1. Datum beim Datumsformat 719)
LIN_STATUS
SG27.IMD+C273:7009
LIN_TYPE
SG37.QTY+C186:6063
MSG_TYPE
Wert aus BGM.C002:1001. Laut aktueller eingeschränkter Codeliste für BGMC002:1001 z. B. X1G, X1G
NAD:ZSH.ID
SG39.NAD+C082:3039 (wenn NAD+3035=ZSH)
NAD:ZSH.TYPE
SG39.NAD+C082:3055 (wenn NAD+3035=ZSH)
NAD:ZSO.ID
SG39.NAD+C082:3039 (wenn NAD+3035=ZSO)
NAD:ZSO.TYPE
SG39.NAD+C082:3055 (wenn NAD+3035=ZSO)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter
Beschreibung
NAD1.ID
SG39.NAD+C082:3039 (1. SG39-Segment)
NAD1.ROLE
SG39.NAD +3035 (1. SG39-Segment)
NAD1.TYPE
SG39.NAD+C082:3055 (1. SG39-Segment)
NAD2.ID
SG39.NAD+C082:3039 (2. SG39-Segment)
NAD2.ROLE
SG39.NAD +3035 (2. SG39-Segment)
NAD2.TYPE
SG39.NAD+C082:3055 (2. SG39-Segment)
NAD3.ID
SG39.NAD+C082:3039 (3. SG39-Segment)
NAD3.ROLE
SG39.NAD +3035 (3. SG39-Segment)
NAD3.TYPE
SG39.NAD+C082:3055 (3. SG39-Segment)
NAD4.ID
SG39.NAD+C082:3039 (4. SG39-Segment)
NAD4.ROLE
SG39.NAD +3035 (4. SG39-Segment)
NAD4.TYPE
SG39.NAD+C082:3055 (4. SG39-Segment)
NOMRES_TYPE
Wert aus BGM+C002:1001
NOMRES_VER
Aktuelle Version, Wert aus UNH.S009.0057
RECEIVER_ID
Wert aus SG3.NAD.C082:3039
RECEIVER_ID_TYPE Wert aus SG3.NAD.C082:3055
RECEIVER_ROLE
Wert aus SG3.NAD.3035
SENDER_ID
Wert aus SG3.NAD.C082:3039
SENDER_ID_TYPE
Wert aus SG3.NAD.C082:3055
SENDER_ROLE
Wert aus SG3.NAD.3035
ZPT_ID
SG36.LOC+C517:3225
ZPT_ID_TYPE
Wenn SG36.LOC+3227 den Wert 172 hat dann ZPT, sonst NKP
ZPT_TYPE
SG36.LOC+C517:3055
Seite 217 von 384
Seite 218 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Tabelle 10-19: Parameter für NOMRES (über EDI.properties einstellbar)
Parameter/Beschreibung
Default
ORDRSP.NOMRES.status.<X>
Wert-Status definieren, X ist hierbei der Wert aus SG27.IMD-C273:7009 und kann z.B. die
Ausprägungen 13G, 14G, 15G, 18G, …. Umfassen.
ORDRSP.NOMRES.status.18G = W
10.14 ORDRSP
Die ORDRSP ist die Antwort auf eine ORDERS.
10.14.1 Zusammenspiel mit EDIFACT-Cockpit (MF_EDIFMON)
Import:
Beim Import wurde die Unterstützung der Verknüpfung der ORDRSP auf die ORDERS eingebaut. Bei der
Verknüpfung werden der Wert der Nachrichtennummer der Anfrage (Wert im SG1.RFF+ON) aus der
ORDRSP, sowie die Sender- und die Empfänger-Kennung verwendet.
SELECT
FROM
WHERE
AND
AND
AND
AND
N.EDIF_ID
ORDERS_NACHRICHTEN N
N.BGM_REF = ?
N.EE_ID IS NOT NULL
EMPFAENGER_ID = ?
SENDER_ID = ?
ROWNUM < 2
BGM_REF ist der Wert aus SG1.RFF+ON der ORDRSP
EMPFAENGER_ID (der ORDERS) ist der Sender der ORDRSP
SENDER_ID (der ORDERS) ist der Empfänger der ORDRSP
Es sollte immer eine 1 zu 1 Verbindung zwischen ORDERS und ORDRSP existieren, sollte die
Datenmenge aber fehlerhaft sein wird mittels ROWNUM<2 die Anzahl auf 1 Datensatz beschränkt
um keine ORA-Fehlermeldung beim Update zu erhalten.
Export:
Beim Export wird, seit dem Formatupdate zum 01.10.2016, die ORDRSP mit der ORDERS wie folgt
verknüpft. Es wird der ORDRSP_NACHRICHTEN-Datensatz angelegt, die dabei erzeugte ID wird
zwischengespeichert. Anschließend wird mittels der Referenz zur ORDERS (in der Spalte
ORDRSP_NACHRICHTEN .AUFTR_NR abgelegt) und der Sender- und Empfänger-Kennung (Sender der
ORDRSP ist dabei der Empfänger der ORDERS und umgekehrt) die EDIFACT_FILE.ID der ORDERS
selektiert (diese steht in ORDERS_NACHRICHTEN.EDIF_ID). Es sollte hier immer eine 1 zu 1 Kombination
geben. Sollte es jedoch, aus welchen Gründen auch immer, mehrere Datensätze geben wird die
EDIFACT_FILE.ID der neusten ORDERS verwendet (deswegen ist das ORDER BY ID DESC enthalten).
SELECT
FROM
WHERE
AND
AND
AND
AND
ORD.EDIF_ID
ORDRSP_NACHRICHTEN N, ORDERS_NACHRICHTEN ORD
N.ID = ?
N.AUFTR_NR = ORD.BGM_REF
N.SENDER_ID = ORD.EMPFAENGER_ID
N.EMPFAENGER_ID = ORD.SENDER_ID
ORD.IFI_ID IS NOT NULL
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 219 von 384
AND ORD.EDIF_ID IS NOT NULL
ORDER BY ORD.ID DESC
Im SQL wird zusätzlich geprüft ob die ORDERS importiert wurde (IFI_ID ist not null) und auch ein
EDIFACT_FILE-Eintrag (EDIF_ID is not null) existiert.
10.15 PRICAT
10.15.1 Export
Beim Export von PRICAT-Dateien werden die relevanten Informationen in der Tabelle
PRICAT_NACHRICHTEN abgespeichert. Dabei Datensatz wird im ecount angelegt und von der KomA nur
noch aktualisiert, dabei werden folgende Spalten werden geupdatet: EDIF_ID, ERSTVERSAND,
WIEDERHOLVERSAND, VERSION
10.16 TRANOT
TRANOT ist eine Teilmenge von ORDERS.
10.16.1 Import-Parameter
Die Einstellmöglichkeiten bezüglich TRANOT beziehen sich auf die Festlegung der FK-ID-Spalten (FK-ID1
bis FK-ID4). Folgende Parameter können zur Generierung der FK-ID verwendet werden.
Die Parameter müssen in der Properties-Datei mit {} eingeschlossen werden.
Tabelle 10-20: TRANOT Parameter für FK-Bestimmung
Parameter
Beschreibung
QTY_TYPE
Wert aus SG39.QTY.C186:6063. Beispielsweise ZPD, ZY1, ZY2, ZY6
TRANOT_VER
Aktuelle Version, Wert aus UNH.S009.0057, z. B. EG4009
UNIT
Wert aus SG39.QTY.C186:6411, z. B. KW1, KW2, HM1, HM2, TQH, …
NAD:ZOA.ID
Wert aus SG41.NAD.C082:3039 wenn ZOA in C082:3055 enthalten ist
NAD:ZOA.TYPE
Wert aus SG41.NAD.C082:3055 wenn ZOA in C082:3055 enthalten ist
NAD:ZOB.ID
Wert aus SG41.NAD.C082:3039 wenn ZOB in C082:3055 enthalten ist
NAD:ZOB.TYPE
Wert aus SG41.NAD.C082:3055 wenn ZOB in C082:3055 enthalten ist
MSG_TYPE
Wert aus BGM.C002:1001. Laut aktueller eingeschränkter Codeliste für BGMC002:1001 entweder X01 oder X02
SENDER_ROLE
Wert aus SG2.NAD.3035
Seite 220 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter
Beschreibung
SENDER_ID
Wert aus SG2.NAD.C082:3039
SENDER_ID_TYPE
Wert aus SG2.NAD.C082:3055
RECEIVER_ROLE
Wert aus SG2.NAD.3035
RECEIVER_ID
Wert aus SG2.NAD.C082:3039
RECEIVER_ID_TYPE Wert aus SG2.NAD.C082:3055
Beispiel-Konfiguration für FK-ID:
ORDERS.TRANOT.FK_ID1=TRANOT{MSG_TYPE};ZOA={NAD:ZOA.ID},ZOB={NAD:ZOB.ID},Version={TRANOT_VER},UNIT
={UNIT}
ORDERS.TRANOT.FK_ID2={SENDER_ROLE}={SENDER_ID},{SENDER_ID_TYPE};{RECEI
VER_ROLE}={RECEIVER_ID},{RECEIVER_ID_TYPE};{QTY_TYPE}
10.17 UTILMD
10.17.1 Export-Parameter
Tabelle 10-21: UTILMD Export-Parameter
Parameter/Beschreibung
Default
SPLIT_SEGMENT_COUNT
910000
Maximale Anzahl Segmente pro Nachricht
SPLIT_RECORD_COUNT
-1
Maximale Anzahl Meldungen pro Nachricht. Positive Ganzzahl oder -1 für deaktiviert.
SPLIT_FILE
Y/N. Split auf Dateiebene (Y). Mit N wird auf Meldungsebene gesplittet.
10.17.2 Import von gesplitteten UTILMD-Nachrichten
Dies wird über das UNH-Segment in der Datenelementgruppe S010 signalisiert.
Y
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 221 von 384
Abbildung 10-11: Import von gesplitteten UTILMD
Beispiel: Ablage im ecount:
UTILMD 1: UNH+XXX10049918329+UTILMD:D:11A:UN:5.1+XXX10049918329+1:C…
Ablage in folgender UTILMD_NACHRICHTEN-Spalte
-
SEQ_ID = XXX10049918329
SEQ_NR = 1
SEQ_FIRST_LAST = C
UTILMD 2: UNH+REA10049920270+UTILMD:D:11A:UN:5.1+REA10049918329+8'
Ablage in folgender UTILMD_NACHRICHTEN-Spalte
-
SEQ_ID = REA10049918329
SEQ_NR = 8
SEQ_FIRST_LAST = null
10.18 Verschlüsselung und Signatur
Beim Export von EDFIACT-Dateien wird über die Spalten SIGNIEREN und VERSCHLUESSELN in der Tabelle
EXPORT_ECOUNT der KomA mitgeteilt ob die Nachricht signiert und verschlüsselt werden muss (mit
dem Wert Y). Ist das Zertifikat für das Verschlüsseln zusätzlich in ecount gepflegt (Tabelle
NAS_ZERTIFIKATE) muss der Wert aus der Spalte NAS_ID auch beim Export übergeben werden. Die
NAS_ID muss dabei in der Tabelle EXPORT_ADRESSEN in der Spalte NAS_ID für den Empfänger der Datei
(entspricht EXPORT_ADRESSEN.KLASSE=TO) übermittelt werden.
Seite 222 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Besitzt EXPORT_ECOUNT.VERSCHLUESSELN also den Wert Y und ist für den Empfänger eine NAS_ID
gepflegt, wird beim Verschlüsseln in der KomA das Zertifikat aus ecount geladen.
10.18.1 Besonderheit CONTRL
CONTRL-Nachrichten werden zum Teil vom KomA, zum andern Teil von ecount erzeugt. Die Ermittlung
der Informationen für Signatur und/oder Verschlüsselung sowie die NAS_ID des Empfängers (der
anschließenden CONTRL) werden dabei von der Import-API beim Import der eigentlichen EDFIACT-Datei
(ungleich CONTRL) ermittelt und in der Tabelle IMPORT_REPLY_INFO abgelegt.
Beim Anlegen des Exportauftrages werden diese Informationen anschließend wiederverwendet. Sodass
CONTRLS (und auch APERAKS) mit den vorgesehen Einstellungen bezüglich der Signatur und der
Verschlüsselung exportiert werden.
10.19 Allgemeine EDIFACT Probleme/Lösungen
Im nachfolgenden Kapitel sind bekannte Probleme und deren Lösungsmöglichkeiten beschrieben.
10.19.1 Doppelimport in zwei Mandanten
Auf einigen Systemen wurden Probleme erkannt, die im Zusammenhang mit der Einstellung
Test_Systembetreiber stehen. Diese Einstellung war aktiviert, zusätzlich wurde jedoch explizit
eine Mandanten-ID über VTP_ID_MANDANT übermittelt. Dies hatte zur Folge, dass der Import mit
Mandant 1 startete. Anschließend wurde die Mandanten-ID des Systembetreibers überprüft und die
neue ID gesetzt. Das Problem tritt demnach nur auf, wenn VTP_ID_MANDANT ungleich Mandanten-ID
des Systembetreibers und beide Einstellungen in der EDI.properties enthalten sind.
Konfiguration in EDI.properties:
Test_Systembetreiber = Y
VTP_ID_MANDANT = 1
Log-Auszug:
05.06.14 16:46:38 Debug(7): Setze VTP-ID-Mandant 1
05.06.14 16:46:38 Debug(7): New Import file id 3472354
05.06.14 16:46:38 Debug(7): Insert CMSG_ID=2085949 / cma_id=null
05.06.14 16:46:38 Debug(7): New Edifact-File ID 1457117
05.06.14 16:46:38 Debug(7): Setze VTP-ID-Mandant 99999
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 223 von 384
10.19.2 Änderungen in EDIFACT_Tabellen protokollieren/nachvollziehen
Einige Tabellen im Schema EC_EDIFACT werden per Trigger auf Änderungen protokolliert. Das betrifft
aktuell die Tabellen: IFTSTA_MELDUNGEN, IFTSTA_NACHRICHTEN, IFTSTA_WIM_MELDUNGEN,
INSRPT_DOKUMENTE, INSRPT_MELDUNGEN, INSRPT_NACHRICHTEN, ORDERS_MELDUNGEN,
ORDERS_NACHRICHTEN, ORDRSP_MELDUNGEN, ORDRSP_NACHRICHTEN, QUOTES_MELDUNGEN,
QUOTES_NACHRICHTEN, REQOTE_NACHRICHTEN.
Eine globale Abfrage auf Änderung der Spalte REF_VERSION in IFTSTA_MELDUNGEN wird wie folgt
ausgeführt:
SELECT *
FROM EDIFACT_AENDERUNGEN X
WHERE X.TABELLE = 'IFTSTA_MELDUNGEN'
AND X.SPALTE = 'REF_VERSION'
AND X.ZEITSTEMPEL > SYSDATE – 10
Für einen Datensatz kann folgendes Select ausgeführt werden:
SELECT * FROM edifact_aenderungen WHERE tabelle = 'IFTSTA_NACHRICHTEN'
AND daten_id = 3086
Die Daten-ID ist die ID aus IFTSTA_NACHRICHTEN bzw. ISN_ID aus IFTSTA_MELDUNGEN.
10.19.3 Probleme bei Dateinamen im Gas-Umfeld
Damit auf der KomA die Dateinamen nach der richtigen Konvention erstellt werden können, muss in der
Abo-Definition das Feld Anhang-Dateiname leer gelassen werden.
Alternativ kann in der KomA der Dateiname übersteuert werden, dies ist global und wird in der
Config.properties via calculateFilename=E realisiert.
10.20 Zusammenspiel mit EDIFACT-Cockpit (MF_EDIFMON)
Beim Export von EDIFACT-Dateien können diese Dateien im ecount abgespeichert werden. Im EDIFACTCockpit können diese Dateien im Reiter „Allg.“ (Allgemein) über die beiden Schaltflächen „speichern
unter…“ und „anzeigen“ betrachtet werden.
Damit diese Funktionalität ausgeführt wird muss in der KomA der den Export übernimmt in der
Config.properties-Datei folgendes Option gesetzt werden:
export.edifact.insert_ec_doc = Y
Dabei wird die Datei über die Import-Zwischentabelle „EC_DOK.GTMP_DOK_IMPORT_QUEUE“
importiert und anschließend durch die PL/SQL-Prozedur
„ec_dok.pkg_dokumente.prc_process_new_dokuments()“ verarbeitet. Dadurch wird die Datei gzipkomprimiert in der Tabelle „EC_DOK.DOK_BLOBS“ abgelegt. In der Tabelle
„EC_XCH.EDIFACT_FILE“findet anschließend die Verknüpfung zu dem Datensatz über die Spalte
„DOK_ID“ statt.
Seite 224 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Die beiden Schaltflächen sind deaktiviert wenn die Ablage in den EC_DOK-Tabellen deaktiviert ist oder
ein Fehler während der Ablage auftrat.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 225 von 384
11 Importfilter
11.1 Allgemeine Einheitenkonvertierung
Für alle Importfilter die in die Import-Zwischentabellen schreiben existiert eine globale Logik für die
Einheitenkonvertierung. Notwendig ist dies da in ecount nur Einheiten erlaubt sind die auch gepflegt
wurden (Tabelle REF_EINHEITEN).
Beispiel:
In ecount ist einheitenlos mit none spezifiziert, wenn in der Import-Datei jedoch bspw. - für
einheitenlos steht muss dies konvertiert werden, anderenfalls scheitert die Nachverarbeitung. Des
Weiteren ist es möglich die Einheitenkonvertierung global für alle oder nur für eine ausgewählte
Datenquelle zu aktivieren.
Die Einheitenkonvertierung kann in der Config.properties konfiguriert werden. Es ist jedoch sinnvoll,
diese in eine extra Datei auszulagern. Im Folgenden werden beide Varianten beschrieben.
1. Config.properties – Datei
Globale Syntax:
import.unitconvert.global.<Einheit-Alt>=<Einheit-Neu>
Beispiel - Die Einheit KWH soll für alle Formate nach kWh konvertiert werden:
import.unitconvert.global.KWH = kWh
Datenquelle-Syntax:
import.unitconvert.ds:<Datenquelle>.<Einheit-Alt> = <Einheit-Neu>
Beispiel - Nur für das Format EDI soll die Einheit KWH nach kWh konvertiert werden:
import.unitconvert.ds:EDI.KWH = kWh
2. import.unitconvert.properties - Datei
Damit die Einheitenkonvertierung zentral gepflegt wird, bietet es sich an, die
import.unitconvert.properties im gleichen Ordner wie die Config.properties (config-Ordner) anzulegen.
Da hierbei aus den Dateinamen die Syntax schon teilweise hervorgeht, weicht die Syntax von der der
Config.properties-Datei ab.
Globale Syntax:
global.<Einheit-Alt>=<Einheit-Neu>
Beispiel – Einheit „-“ in none ändern
global.-=none
Datenquelle-Syntax:
ds:<Datenquelle>..<Einheit-Alt>=<Einheit-Neu>
Beispiel – Einheit „-“ in none für Format GASX ändern
ds:GASX.-=none
Seite 226 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Die Datenquelle ist dabei das Format-Kürzel (2. Parameter) aus der datenimport.ini, falls keine
Properties-Datei für diesen Eintrag existiert.
Beispiel:
-
datenimport.ini: *.xml GASX_TEST import/GASX
import.unitconvert.properties: ds:GASX_TEST.-=none
Oder falls eine Properties-Datei existiert (z. B. config/import/GASX_TEST.properties) und in dieser Datei
für die Einstellung datenquelle (die Groß- und Kleinschreibung ist irrelevant) ein Wert definiert
wurde, dieser Wert.
Beispiel:
-
GASX_TEST.properties: datenquelle=GASBEST
import.unitconvert.properties: ds:GASBEST.-=none
Die Konfiguration der Datenquelle hat immer Vorrang vor der globalen Einheitenkonvertierung.
Damit ist es möglich, dass für ein ausgewähltes Format eine andere Einheit verwendet wird als für
die restlichen Formate.
11.2 Wichtige Hinweise zur Nutzung der Import-API (Nachkommastellen)
Der Import über die zentrale Import-API nutzt eine Datenstruktur, die für einen Wert 17 Stellen vorsieht.
Dabei sind 6 Stellen für den Dezimalbereich (nach dem Komma) und 11 Stellen vor dem Komma
vorgesehen.
Werden nun Zahlen mit mehr als 6 Nachkommastellen importiert, wird standardmäßig von der KomA
gerundet (round half up). Eine andere Rundungslogik muss explizit beantragt und im jeweiligen ImportFilter implementiert werden.
Erfolgt der Import über den Importkonfigurator und handelt es sich um sehr kleine Zahlen,
beispielsweise eine Zahl mit 8 Nachkommastellen deren Genauigkeit beibehalten werden soll, so wäre
eine Möglichkeit der Umsetzung die Multiplikation des Wertes mit 1000. Damit können die Daten
vorerst ohne Nachkommastellenverlust in die Importzwischentabellen übernommen werden. In der
nachfolgenden Anwendungslogik (PL/SQL) müssen dann die Werte wieder mit 1000 dividiert werden.
Wenn noch kleinere Werte (z. B. Zahlen mit 10 oder 30 Nachkommastellen) importiert werden müssen,
ist die Nutzung des Allgemeines/Zweck des Dokumentes11.6 oder eines Spezialfilters projektspezifisch
in Betracht zu ziehen, der die Daten in separate (meist kundenspezifische) Datenbank-Import-Tabellen
übertragen kann und ohne die Begrenzung der 17 Stellen arbeitet.
11.3 CSV (Universeller Importkonfigurator)
FILTER = CSV
Siehe Kapitel 13 Importkonfigurator.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 227 von 384
11.4 DWD_ELE (Temperaturdaten - IST und PROGNOSE – im XML-Format)
Hinweise:
HandlerClass = de.robotron.ecount.dataimport.filter.DWD_ELEHandler
Pfad: filter_import\ecount_import_DWD_ELE.jar
Es handelt sich um einen Importfilter, der Wetterdaten im XML-Format einlesen kann. Dabei werden Istund Prognose-Daten importiert.
XML-Beispiel:
<?xml version="1.0" encoding="ISO-8859-1"?>
<DATEN Quelle="MeteoGroup Deutschland GmbH" Typ="Wetterdaten"
Ort="Berlin_B" Datum="2013-12-17" Zeit="05:01" Zeitzone="UTC" >
<WETTERDATEN Typ="Temperatur" Einheit="°C">
<WERT Datum="2013-12-16" Zeit="00:00">1.6</WERT>
<WERT Datum="2013-12-16" Zeit="01:00">2.0</WERT>
<WERT Datum="2013-12-16" Zeit="02:00">1.6</WERT>
<WERT Datum="2013-12-16" Zeit="03:00">1.3</WERT>
<WERT Datum="2013-12-16" Zeit="04:00">1.5</WERT>
<WERT Datum="2013-12-16" Zeit="05:00">1.4</WERT>
<WERT Datum="2013-12-16" Zeit="06:00">1.5</WERT>
<WERT Datum="2013-12-16" Zeit="07:00">1.1</WERT>
<WERT Datum="2013-12-16" Zeit="08:00">1.6</WERT>
<WERT Datum="2013-12-16" Zeit="09:00">2.9</WERT>
<WERT Datum="2013-12-16" Zeit="10:00">5.4</WERT>
<WERT Datum="2013-12-16" Zeit="11:00">7.5</WERT>
<WERT Datum="2013-12-16" Zeit="12:00">8.8</WERT>
<WERT Datum="2013-12-16" Zeit="13:00">9.2</WERT>
<WERT Datum="2013-12-16" Zeit="14:00">9.1</WERT>
<WERT Datum="2013-12-16" Zeit="15:00">7.8</WERT>
Seite 228 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
<WERT Datum="2013-12-16" Zeit="16:00">6.7</WERT>
<WERT Datum="2013-12-16" Zeit="17:00">6.4</WERT>
<WERT Datum="2013-12-16" Zeit="18:00">5.7</WERT>
<WERT Datum="2013-12-16" Zeit="19:00">5.4</WERT>
<WERT Datum="2013-12-16" Zeit="20:00">5.7</WERT>
<WERT Datum="2013-12-16" Zeit="21:00">4.5</WERT>
<WERT Datum="2013-12-16" Zeit="22:00">3.5</WERT>
<WERT Datum="2013-12-16" Zeit="23:00">4.1</WERT>
</WETTERDATEN>
Tabelle 11-1: Formatspezifische Einstellungen DWD_ELE
Parameter/Beschreibung
BEZEICHNUNG_LINIE_IST
Name der Linie für die Wetterdaten (IST)
BEZEICHNUNG_LINIE_PROGNOSE
Name der Linie für die Vorhersage-Daten (Prognose)
STATUS_LINIE_IST
ecount-Status für die zu importierenden Werte für die IST-Daten
Standardwert
_Temperatur_Import_IST
_Temperatur_Import_PRG
W
STATUS_LINIE_PROGNOSE
ecount-Status für die zu importierenden Werte für die Prognose-
V
Daten
IGNORE_UNIT_CHECK
Y/N. Mit dem Wert N werden nur Temperaturen mit der Einheit °C
importiert. Mit Y werden alle Daten importiert.
N
USE_FKID3
Y/N. Mit dem Wert N wird beim Import nur die FK_ID1 und FK_ID2 N
verwendet, mit Y wird als FK_ID3 zusätzlich der Wert aus dem XMLElement „Daten“ und mit dem Attribut „Quelle“ verwendet.
FILTER_TYP
Filterung anhand des „Typ“-Attributes im XML-Element
WETTERDATEN bzw. VORHERSAGE
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Seite 229 von 384
Standardwert
IGNORE_UTC_TIMEZONE
Y/N. Um UTC in der Datei zu ignorieren und die Standardzeitzone
des Servers zu nutzen. Bei Y wird beim Sommer-Winter-Wechsel 1
beliebige Stunde addiert, bei Winter-Sommer-Wechsel eine
beliebige Stunde entfernt. Zusätzlich wird ein Filter anhand des
„Typs“ aktiviert, der nur noch Tagesmitteltemperatur
berücksichtigt. Da bei der Tagesmitteltemperatur die Werte
konstant sind, ist das Hinzufügen/Löschen eines beliebigen Wertes
bei der Zeitumstellung nicht problembehaftet.
N
D.h. aber, dass der Modus IGNORE_UTC_TIMEZONE nicht für
andere Typen außer der Tagesmitteltemperatur
vorgesehen und unterstützt ist! (seit eCount- 00047602 KomAIMPORT-FILTER DWD_ELE - 1.1.2.5).
11.5 EBIX
Format für den Schweizer Energiemarkt.
11.5.1
GZIP-Support
Mit eCount- 00063422 (R 5.1 – 6032) wurde für den EBIX-Importfilter der Support für GZIPkomprimierte Dateien explizit implementiert. Per Default unterstützt der KomA-Datenimport nur
Rohdateien (XML, TXT, XLSX, …) und ZIP-Dateien. Diese Feature wurde in den Filter eingebaut da der
ebIX-Manager dieses Feature bietet und es somit für den Anwender intuitiver ist (alle EBIX-Tools
arbeiten nach dem gleichen Prinzip).
Es werden keine GZIP-Archive unterstützt die mehr als eine Datei beinhalten!
11.6 ELDR (EcountLoader)
FILTER=ELDR
Der Import Filter ELDR ist ein an den Oracle-SQL-Loader angelehnter Filter, der es ermöglicht, einfache
Tabellenstrukturen aus flachen CSV- oder Excel-Dateien in eine Datenbank-Tabelle zu importieren
(Master-Detail-Beziehungen werden nicht unterstützt). Die eigentliche Verarbeitung der Daten erfolgt
dann meist durch nachgelagerte PL/SQL-Routinen.
Die Konfiguration erfolgt neben der standardmäßigen .properties-Datei mittels einer zusätzlichen
Loader-Definitionsdatei in einem speziellen Format. Die .properties-Datei enthält dabei mindestens
folgende Einträge, mit denen der Filter und das Loader-Skript angegeben werden:
FILTER=ELDR
config_skript = config/import/ELDR.ldr
Weitere Einstellung der .properties-Datei sind folgende.
Seite 230 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Tabelle 11-2: Formatspezifische Einstellungen ELDR
Parameter/Beschreibung
BATCH_COUNT
Parameter zur Festlegung ob die Inserts in die Datenbank als Batch erfolgen sollen. Positive Ganzzahl
zwischen 2 und 10000 ist. Siehe 11.6.4.6
ENCODING_LDR
Zum Einlesen der ldr-Datei wird das Default-Encoding (ISO-8859-1) verwendet. Soll ein anderes
Zeichenencoding mitgegeben werden kann dies über diese Einstellung geschehen. Z.B. kann explizit
UTF-8 mit folgender Einstellung in der .properties-Datei angefordert werden.
ENCODING_LDR=UTF-8
Speziell bei Umlauten oder bei andere Zeichen (z.B. russischen Schriftzeichen) ist es erforderlich UTF-8
für die ldr-Dateien zu definieren. Sollte in der ldr-Datei das BOM vorhanden sein, über das das
Encoding bestimmt werden kann, wird das Encoding aus der BOM verwendet.
In Anlage 5 Konfigurationsbeispiele für Loader-Import sind einige Beispiel-Konfigurationen zum
schnelleren Einstieg zu finden.
Im Folgenden wird nun die Syntax dieses Loader-Skriptes beschrieben.
Kommentare können wie in vielen anderen Sprachen auch mit // für einzeilige und /* ... */ für
mehrzeilige Kommentare angegeben werden.
Die gesamte Syntax basiert auf geklammerten Ausdrücken. Der äußere Ausdruck ist immer e*countload-definition(). Dieser enthält zuerst die verwendeten Datenbank-Verbindungen, danach die
Formatdefinition für die Eingabedatei und danach die Definitionen der Ziel-Tabellen. Dies alles sind
jeweils wieder einzelne Ausdrücke, die ohne weitere Verkettungszeichen hintereinander geschrieben
werden.
Für Datenbank-Verbindungsdefinitionen gibt es 3 verschiedene Typen:
Tabelle 11-3: Typen für Datenbank-Verbindungsdefinitionen am ELDR
Attribut
Beschreibung
databaseOCI()
Damit kann eine Oracle-Datenbank-Verbindung mit Hilfe des nativen OracleOCI-Treibers definiert werden.
databaseTHIN()
Damit kann eine Oracle-Datenbank-Verbindung mit Hilfe des Java-JDBCOracle-Treibers definiert werden.
Mit dieser Verbindungsart kann die in der Kommunikationsautomatisierung
databaseECOUNT() eingestellte Datenbankverbindung genutzt werden, wahlweise mit neuen
Anmeldeinformationen.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 231 von 384
Hinweise:
Wenn möglich, sollte immer databaseECOUNT(), ohne zusätzliche Verbindungsparameter,
verwendet werden! D.h. die Tabellen müssen für den Nutzer EC_XCH erreichbar sein und mit den
benötigten Grants versehen werden (SELECT, INSERT, UPDATE). Damit ist sichergestellt, dass beim
Ändern des Passwortes für EC_XCH nicht alle Konfigurationen geändert werden müssen! Es sollte
also niemals databaseECOUNT(user = "ec_xch"
passwd = "xyz") verwendet
werden!
Liegen die Tabellen nicht im KomA-Schema EC_XCH, ist es ratsam, die Tabellen an EC_XCH zu
granten und die jeweiligen Synonyme zu vergeben. Somit müssen Nutzer und Passwort nicht im
Klartext für ein anderes Schema auf der KomA in einer Datei abgelegt werden.
Die Datenbank-Verbindungen haben mehrere Attribute:
Tabelle 11-4: Attribute für Datenbank-Verbindungsdefinitionen am ELDR
Attribut
Beschreibung
id
Wenn mehrere Datenbanken angegeben wurden, der Name, mit dessen Hilfe
die Verbindung innerhalb des Skriptes referenziert wird
connect
Je nach Verbindungstyp unterschiedlicher Connect-String
host
Servername für THIN-Verbindungstyp
port
Serverport für THIN-Verbindungstyp
user
Der anzumeldende Datenbank-Nutzer
passwd
Das Anmeldepasswort
transaction_mode
AUTO_COMMIT, COMMIT_AFTER(num), ROLLBACK_ON_ERROR,
COMMIT_ON_CLOSE; Modus für die Transaktionsverwaltung
Die einzelnen Verbindungstypen unterstützen davon folgende Attribute (in der angegebenen
Reihenfolge):
Tabelle 11-5: Unterstützung der Attribute pro Verbindungstyp am ELDR
Attribut
Beschreibung
databaseOCI()
required: connect, user, passwd
optional: id, transaction_mode
databaseTHIN()
required: connect oder (host, port, service), user, passwd
optional: id, transaction_mode
databaseECOUNT() optional: id, user , passwd, transaction_mode
Seite 232 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Nach den Datenbank-Verbindungen folgt die Definition des Eingabeformates. Hierfür wird ein Ausdruck
namens inputFormat() angegeben. Dieser hat folgende Attribute:
Tabelle 11-6: Attribute für Ausdruck inputFormat()
Attribut
Beschreibung
encoding
Zeichensatz, nur bei Typ CSV anwendbar. Standard: ISO-8859-1 (optional)
CSV
FIXED_LENGTH
EXCEL
EXCEL_POI
type
EXCEL kann nur das Format XLS einlesen. EXCEL_POI kann sowohl XLS als
auch XLSX einlesen. Wird eine XLSX-Datei importiert, wird automatisch auf
EXCEL_POI umgeschaltet, falls EXCEL konfiguriert wurde. Für neue
Konfigurationen sollte immer EXCEL_POI verwendet werden!
EXCEL war die erste Implementierung, die auf JExcelAPI basiert und aktuell
desupportet ist. EXCEL_POI basiert auf APACHE POI und stellt aktuell den
besten Standard zur Verfügung und wird auch aktiv Weiterentwickelt.
Bei Typ EXCEL oder EXCEL_POI kann eine Komma-separierte Liste von Namen
zu verarbeitender Arbeitsblätter definiert werden, z. B. Tabelle1 (optional)
excelSheets
Die Angabe des Namens des Arbeitsblattes ist „case insensitive“. Intern wird
mit To-UpperCase gearbeitet um Probleme mit Groß- und Kleinschreibung zu
umgehen.
Wird in der Excel-Datei kein Arbeitsblatt mit den definierten Namen gefunden,
wird die Excel-Datei mit der Fehlermeldung „Keine verarbeitbaren
Arbeitsblätter gefunden“ in das Error-Verzeichnis verschoben.
separator
Kennzeichnet beim Typ CSV das Separator-Zeichen (Default: ; ) (optional)
escape
Kennzeichnet beim Typ CSV das Escape-Zeichen zum Entwerten eines Separators
(optional)
quotes
true / false, bei Typ CSV innerhalb doppelter Anführungszeichen
vorkommende Separatoren werden nicht als solche verarbeitet (optional)
fieldLengths
Bei Typ FIXED_LENGTH wird eine Komma-separierte Liste mit Feldlängen
generiert (optional)
stripSpaces
true / false, Leerzeichen am Anfang und Ende von Feldern abschneiden
(optional)
headerRow
Zeilennummer, die als Kopfzeile interpretiert werden soll, mit 1 beginnend
(optional)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Attribut
Seite 233 von 384
Beschreibung
firstDataRow Zeilennummer, die als erste Datenzeile verarbeitet werden soll (optional)
onEmptyRow
Werte skip, stop, error;
Verhalten beim Auffinden von Leerzeilen (optional)
Abschließend folgen ein oder mehrere Blöcke mit Zieltabellen-Definitionen vom Typ targetTable().
Diese enthalten folgende Elemente:
Tabelle 11-7: Zieltabellen-Definitionen vom Typ targetTable() am ELDR
Attribut
Beschreibung
db_id
ID der verknüpften Datenbank (optional)
schema
DB-Schema der Zieltabelle (optional)
createOnMissing
true / false, Angabe, ob Zieltabelle bei Bedarf angelegt werden soll;
wenn true, müssen Datentypen und weitere Storage-Parameter befüllt
werden (optional)
table_space
Ziel-Tablespace, wenn Tabelle angelegt werden soll (optional)
name
Name der Tabelle
comment
Kommentar für Tabelle, wenn diese angelegt werden soll (optional)
importAssignments
Enthält die Definitionen und Zuordnungen der Tabellenspalten und
zusätzliche Verarbeitungsregeln
Innerhalb des Blocks importAssignments() werden zuerst die Tabellenspalten-Definitionen und
Zuordnungen mit column()-Blöcken angegeben. Danach können optional noch zusätzliche Regeln
angefügt werden, die ein Sonderverhalten erzwingen.
Die column()-Blöcke haben folgenden Aufbau:
Tabelle 11-8: Zieltabellen-Definitionen vom Typ column()-am ELDR
Attribut
Beschreibung
name
Spaltenname in der Importtabelle
dataExpression(), Ausdruck der angibt, wie die Spalte befüllt werden soll
src
Beispiele:
src=toNumber(fileColumn(13))
src=ifi_id()
Seite 234 von 384
Attribut
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Beschreibung
src=toNumber(property("VTP_ID_MANDANT"))
src=fileColumn(3)+fileColumn(4)
type
Optional;
Datentyp in der Datenbank zum Anlegen der Tabelle; NUMBER, VARCHAR2, CHAR,
DATE
Optional;
Wird beim Anlegen der Tabelle verwendet;
primary_key
Angabe, dass es sich um einen Primärschlüssel handelt; Es kann zusätzlich die
Position innerhalb des Primärschlüssels mit einer Zahl angegeben werden.
references
Zielspalte: optional;
Zum Anlegen der Tabelle;
Angabe, dass es sich um einen Fremdschlüssel handelt
not_null
Optional;
Zum Anlegen der Tabelle;
Angabe, dass die Spalte ein Pflichtfeld ist
comment
Optional;
Zum Anlegen der Tabelle;
Angabe eines Spaltenkommentars
Die folgende Übersicht beschreibt nun die möglichen Ausdrücke zur Angabe der Werte für die
Tabellenspalten in dataExpression():
Tabelle 11-9: Zieltabellen-Definitionen vom Typ dataExpression()-am ELDR
Attribut
Beschreibung
ChrarcterLiteral Ein beliebiges Zeichen z. B. 'A'
columnHead(IntegerLiteral column)
columnHead
Wert der Kopfzeile in der angegebenen Spalte
decode(StringExpression source [,
StringExpression default] (,
(StringLiteral key, StringLiteral
value))+)
decode
Expression
String
CellExpression
StringDekodiert den Wert source an Hand der Wertepaare, ist
Expression
ein Default-Wert angegeben, wird im Falle, dass kein
passender Schlüssel in der Dekodiertabelle gefunden wird,
dieser Default-Wert ausgegeben, sonst der Eingabewert aus
source.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Attribut
Beschreibung
Seite 235 von 384
Expression
fileCell(IntegerLiteral column,
IntegerLiteral row)
Absolute Zellenangabe
fileCell
Diese Funktion wird aktuell nur für das Input-Format
EXCEL_POI unterstützt (eCount- 00049235).
CellExpression
Bsp. Excel-Zeile 1 Spalte 2 als Wert übernehmen:
src=fileCell(2,1)
fileColumn
fileColumn(IntegerLiteral colNr)
Spalte in der Datei mit Spaltennummer 1 beginnend zu
zählen
FileColumn
fileColumn( (StringLiteral colName |
IntegerLiteral colNr) [, optional]
[,numericPrecision = IntegerLiteral
colNr])
Spalte in der Datei entweder mit colName anhand des
Spaltennamens in der Kopfzeile (s.o. headerRowDefinition) oder mit colNr die Spaltennummer (von 1
beginnend zu zählen).
fileColumn
Mit dem Parameter optional kann die Spalte als optional CellExpression
markiert werden, d.h. es erscheinen keine Warnungen,
wenn die Spalte in der Datei fehlt. Beispiel:
fileColumn("ILN_ALTLIEFERANT", optional)
Mit numericPrecision kann die Anzahl der
Nachkommastellen beim Auslesen numerischer Werte
angegeben werden (Standard 6). Beispiel:
fileColumn(1, numericPrecision=12)
filename()
filename
Liefert den Dateinamen der verarbeiteten Datei ohne evtl.
Präfix der ZIP-Datei
filenameZip()
filenameZip
Liefert den Dateinamen der verarbeiteten Datei mit evtl.
Präfix der ZIP-Datei
ifi_id()
Aktuelle ID in IMPORT_FILE.
ifi_id()
Nur wenn diese Funktion verwendet wird, wird
überhaupt die Import-API genutzt d.h. ohne diese
Funktion sieht man in der Import-Dateien-Maske auch
keine Einträge!
StringExpression
StringExpression
NumberExpression
Seite 236 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Attribut
Beschreibung
Expression
IntegerLiteral
Beliebige Zahl z. B. 5
Number
line_nr()
NumberExpression
line_nr()
Zeilennummer in der Datei
lowerCase
Wandelt alle Zeichen ([A-Z]) in Kleinbuchstaben
StringExpression
NumberLiteral
Vorkommastellen.Nachkommastellen z. B. 10.59
Number
nvl
nvl(DateExpression source, DataExpression
nullReplace)
DateExpression
Liefert Werte von source, wenn vorhanden, sonst Wert
von nullReplace
lowerCase(StringExpression source)
nvl2(Expression expr1, Expression expr2,
Expression expr3)
Dies ist eine NULL-Handling-Funktion alternativ Werte für
NULL und NICHT NULL liefert.
expr1 = Ausdruck der verglichen werden soll.
expr2 = Wert der zurückgegeben wird wenn expr1 nicht null
und nicht leer ist.
expr3 = Wert der zurückgegeben wird wenn expr1 null/leer
ist.
nvl2
Die Parameter der Funktion müssen immer identisch sein,
sprich es ist nicht möglich als expr1 eine Zeichenkette zu
verwenden und als expr2 ein Date.
Beispiel Zeichenkette:
…src=nvl2(fileColumn("A"), "XYZ", null))
Wenn in der Spalte A ein Wert enthalten ist (nicht null und
nicht leer) so wird "XYZ" in die Spalte "Detail" eingefügt,
anderenfalls wird null übergeben. (statt null könnte hier
auch der Wert "123" stehen, es soll jedoch gezeigt werden
dass auch null-Werte gehen).
Beispiel Date:
src=nvl2(toDate(fileColumn("A"),
"dd.MM.yyyy"),
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Attribut
Beschreibung
Seite 237 von 384
Expression
toDate(fileColumn("MSB_B"),
"dd.MM.yyyy"),null))
Alle 3 Parameter müssen vom Typ „Date“ sein, nur der
letzte Parameter darf auch null sein.
nvld
nvld(DateExpression source,
DateExpression nullReplace)
Spezielle nvl-Variante für Datentyp DATE
property
recordCount()
replace
DateExpression
property(StringExpression name)
Liefert den Wert der Filtereinstellung aus der zugehörigen
Properties-Datei
StringExpression
recordCount()
NumberExpression
Einfacher Satzzähler
replace(StringExpression source,
StringLiteral find, StringLiteral
replace)
Ersetzt alle Vorkommen von find in source durch
replace
StringExpression
replaceAll(StringExpression source,
StringLiteral regex, StringLiteral
replacement)
replaceAll
Ersetzt jedes Zeichen dieser Zeichenfolge (source), die
dem angegebenen regulären Ausdruck (regex) entspricht,
mit dem Wert aus replacement.
Beispiele:
Ersetze alle Zeichen, die keine Ziffer sind:
src=replaceAll(fileColumn(1), "\\D", "")) String"abc123adf54664" --> 12354664
Expression
Ersetze alle Ziffern [0-9]:
src=replaceAll(fileColumn(1), "\\d", ""))
"abc123adf54664" --> abcadf
Ersetze alle Zeichen, die weder Buchstabe noch Zahl noch
Unterstrich sind (also [^a-zA-Z_0-9]):
src=replaceAll(fileColumn(1), "\\W", ""))
abc123adf5523~sd~#-4664 --> abc123adf5523sd4664
siehe Anlage 3
replaceFirst
replaceFirst(StringExpression source,
StringLiteral regex, StringLiteral
replacement)
StringExpression
Seite 238 von 384
Attribut
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Beschreibung
Expression
Ersetzt die erste Zeichenkette dieser Zeichenfolge
(source), die dem regulären Ausdruck (regex)
entspricht, mit dem Wert aus replacement.
Beispiel: Ersetze das erste Vorkommen von AA durch XX:s
src=replaceFirst(fileColumn(1),"AA",
"XX")
siehe Anlage 3
Sequence
sequence( [schema = StringLiteral] name =
StringLiteral [createOnMissing = true |
Numberfalse])
Expression
Liefert den Wert einer DB-Sequence und legt diese bei
Bedarf an, wenn createOnMissing gesetzt ist
StringLiteral
Beliebige Zeichenkette z. B. TEXT
String
subString(StringExpression source,
IntegerLiteral start [, IntegerLiteral
length])
subString
Liefert den Teilstring, der ab Zeichen start (ab 0 zählend)
beginnt und ggf. bis zur Länge length, wenn die Länge der StringExpression
Quellzeichenfolge kürzer ist als durch length gefordert,
wird die Teilzeichenfolge bis zum Ende der
Quellzeichenfolge ausgegeben, liegt start sogar hinter
dem Ende der Quellzeichenfolge, wird eine leere
Zeichenfolge geliefert
SYSDATE
SYSDATE
Gibt das Systemdatum (des Kommunikationsservers) an
DateExpression
toDate(StringExpression source,
StringLiteral pattern)
toDate
DateExpression
Konvertiert einen String in ein Datum anhand der
Datumsmaske, pattern siehe Anlage 2 Datumsformatierung
tokenize(StringExpression source,
StringLiteral separators, IntegerLiteral
tokenIdx)
tokenize
Zerteilt die Zeichenfolge source an den durch
separators angegebenen Zeichen und liefert die
Teilzeichenfolge mit der Nummer tokenIdx zurück,
tokenIdx wird ab 0 gezählt; ist der Wert negativ, beginnt
die Zählung ab der letzten Teilzeichenfolge, -1 bezeichnet
also die letzte Teilzeichenfolge
StringExpression
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Attribut
Beschreibung
toLowerCase
Gleichbedeutend zu lowerCase
toNumber
Seite 239 von 384
Expression
toNumber(StringExpression source [,
format= StringExpression, decimal =
CharacterLiteral, group =
CharacterLiteral])
Konvertiert eine Zeichenfolge in eine Zahl
format beschreibt eine Formatmaske nach Anlage 2
Datumsformatierung
decimal gibt den Dezimal-Trenner an
group gibt das Tausender-Trennzeichen an
toString(source)
toString
Primär zur Konvertierung von Ganz-Zahlen in eine
Zeichenkette gedacht. Ist der Inputwert bereits eine
Zeichenkette, wird diese nicht verändert. Ist der Inputwert
eine Zahl wird diese in eine Zeichenkette gewandelt. Ist der
Inputwert ein Datum wird dies mit folgender Formatmaske
behandelt (dd.MM.yyyy HH:mm), dabei wir die Zeitzone der
KomA-Instanz (USER_TIMEZONE in der env.cmd|sh)
Stringverwendet.
Expression
Ein Anwendungszweck dieser Funktion war die
Konvertierung einer Datumsspalte (Quelldatei war eine
EXCEL-Datei) in eine Zeichenkette um anschließend das
Date-Objekt richtig erzeugen zu können. (Hintergrund sind
hier öfters Inkompatibilitäten zwischen Excel und Apache
POI). Beispiel:
src=toDate(toString(fileColumn("X")),"yyyyMMdd"))
toUpperCase
Gleichbedeutend zu upperCase
trim(StringExpression source)
trim
Schneidet führende und folgende Leerzeichen ab
upperCase(StringExpression source)
upperCase
Wandelt alle Zeichen ([a-z]) in Großbuchstaben
StringExpression
StringExpression
Zuletzt können nun, wie bereits oben erwähnt, Regeln angegeben werden, die die Verarbeitung
weiterer Spaltenzuweisungen steuern. Diese werden mit rule()-Ausdrücken angegeben. Diese Regeln
enthalten jeweils eine Bedingung und eine Spaltenzuweisung mittels eines column()-Ausdruckes, wie
oben beschrieben. Die Bedingung wird mit einem condition-Attribut angegeben und enthält einen
Ausdruck vom Typ BooleanExpression. Dafür existiert zurzeit nur die Funktion
notNull(DateExpression), die dann einen wahren Wert ergibt, wenn der übergebene Ausdruck
Seite 240 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
einen gültigen Wert enthält. Ist mindestens eine solche Regel vorhanden, wird die aktuelle Datenzeile
nur dann verarbeitet, wenn mindestens eine Regel wirksam ist.
Die maximale Genauigkeit beim EcountLoader liegt bei 6 Nachkommastellen.
11.6.1
Mandantenfähigkeit
Existiert in der Import-Tabelle eine Spalte für den Mandanten (z. B. VTP_ID_MANDANT) so muss diese
Spalte durch den Loader berücksichtigt werden. Wenn der Mandant nicht in der zu importierenden
Datei enthalten ist kann dieser über die Properties-Datei definiert werden.
Beispiel:
Loader-Datei nutzt die Properties-Einstellung VTP_ID_MANDANT
Im Abschnitt importAssignments muss die Spalte definiert sein:
…
column(name="VTP_ID_MANDANT"
src=toNumber(property("VTP_ID_MANDANT")))
…
Sollen nun zwei Mandanten über diese Loader-Konfiguration geladen werden, müssen 2 Einträge in der
datenimport.ini und zwei unterschiedliche Properties-Dateien, die den Mandanten definieren, hinterlegt
werden.
Beispiel:
Die Loader-Datei heißt ELDR.ldr, die Properties-Datei für Mandant 1 heißt ELDR_M1.properties und die
Properties-Datei für Mandant 2 heißt ELDR_M2.properties. Die Properties-Dateien haben dabei
folgenden Aufbau.
ELDR_M1.properties
FILTER=ELDR
DATENQUELLE=XYZ
VTP_ID_MANDANT=1
config_skript=config/import/ELDR.ldr
ELDR_M2.properties
FILTER=ELDR
DATENQUELLE=XYZ
VTP_ID_MANDANT=2
config_skript=config/import/ELDR.ldr
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
11.6.2
Seite 241 von 384
Hinweise bei der Nutzung von Excel (XLS, XLSX)
Der ELDR-Filter nutzt für Excel-Dokumente die Apache POI-Bibliothek (siehe Hinweise unter 12.14) und
nicht Microsoft Excel. Die Excel-Dokumente sollten einen einfachen Aufbau haben und möglichst auf
komplexe Formeln und unterschiedliche Spalten-Typen und Spalten-Formatierungen verzichten.
Hintergrund: Bei der Ablage des Inhaltes der Excel-Dokumente muss unter Umständen eine
Konvertierung vorgenommen werden. Damit stimmt der extrahierte Inhalt mit der Anzeige im Excel
nicht überein (Beispiel Spalten-Typ „Boolean“, im deutschen Excel wird „WAHR“ angezeigt aber über
Apache POI wird „TRUE“ geliefert).
Mit eCount- 00053450 wurde Unterstützung für die Excel-Typen „Boolean“ und „Formular“ (Formeln)
implementiert, wenn der Inhalt als Zeichenkette (Varchar-Spalte) in der Datenbank abgelegt werden
soll.
Bei Formel-Spalten wird auf den Cache-Wert zugegriffen (weil POI nicht alle Formeln von MS Excel
unterstützen kann). Der Cache-Wert ist der Wert, den Microsoft Excel berechnet hat und separat
abspeichert. Werden also Formeln verwendet und werden Daten „on the fly“ geändert, die in den
Formeln Anwendung finden, muss sichergestellt werden, dass diese von Microsoft Excel berechnet
werden (das muss insbesondere dann beachtet werden wenn automatisiert Excel-Dokumente
erstellt werden, die auf einem Template mit Formeln basieren).
11.6.3
Beispielkonfigurationen
Die in diesem Kapitel hinterlegten Beispiele sind nur vereinfacht dargestellt, die relevanten Befehle sind
markiert.
11.6.3.1 CSV mit Komma als Trennzeichen
inputFormat(
encoding = "ISO8859-1"
type = CSV
separator=","
…
)
11.6.4
Probleme/Lösungen
11.6.4.1 Zeichenkodierung (encoding)
Die Kodierung einer Datei und die entsprechende Konfiguration in der Loader-Datei müssen
übereinstimmen. Es kommt oft vor, dass Fehlermeldungen erstellt werden, die am Ende auf eine
Abweichung zwischen EcountLoader-Konfiguration und zu importierender Datei zurückzuführen sind.
So ist beispielsweise in der Konfiguration das Encoding auf ISO8859-1 eingestellt, die importierende
Datei ist jedoch als UTF-8 konvertiert. Diese Problematik trifft speziell bei CSV-Dateien oft auf.
Seite 242 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Um solche Probleme zu analysieren, lohnt sich oft die Nutzung eines HEX-Tools. Beispielsweise sieht
eine Unicode kodierte Datei dabei wie folgt aus (die Leerzeichen verraten hier schon einmal, dass es
nicht ISO8859-1 kodiert sein kann):
Abbildung 11-1: Importdatei UNICODE kodiert
Mit eCount- 00051053 wird die Zeichenkodierung anhand der BOM (Byte Order Mark) bestimmt. Die
BOM-Prüfung umfasst folgende Charsets:
-
UTF-8
UTF-16LE (UTF-16 little-endian)
UTF-16BE (UTF-16 big-endian)
UTF-32LE (UTF-32 little-endian)
UTF-32BE (UTF-32 big-endian)
Wird eine BOM gefunden, wird anhand dieser Information die Zeichenkodierung bestimmt und nicht die
EcountLoader-Konfiguration verwendet. Ist in der zu importierenden Datei kein BOM enthalten, wird
ganz normal die EcountLoader-Konfiguration genutzt. Wird eine Datei in UTF-16 kodiert, jedoch ohne
BOM geliefert, und weicht diese Kodierung von der EcountLoader-Konfiguration ab, wird es weiterhin
ungewünschte Effekte/Probleme geben.
11.6.4.2 Zeichenproblem bei Excel-Dateien
Für den Import von Excel-Dateien existieren intern 2 Methoden. Eine basiert auf JExcelAPI (type =
EXCEL) und die andere auf Apache POI (type = EXCEL_POI). Der Support für JExcelAPI wurde seit
Langem eingestellt, sodass Apache POI aktuell die beste Implementierungsbasis darstellt.
Kommt es zu Problemen, d.h. Zeichen werden bspw. mit umgedrehten Fragezeichen dargestellt, bei
Umlauten oder anderen Zeichen wie dem ß, so sollte geprüft werden, ob der type auf EXCEL steht. Ist
dies der Fall, sollte EXCEL_POI verwendet werden.
11.6.4.3 Zieltabelle xyz nicht gefunden
Wenn die Fehlermeldung trotz korrekt gesetzter Rechte (Select, Insert) auftritt, befindet sich die Tabelle
mit hoher Wahrscheinlichkeit in einem anderen Schema als über databaseXYZ() definiert wurde.
Wird beispielsweise die Default KomA-Datenbankverbindung (EC_XCH) via databaseECOUNT()
genutzt und befindet sich die Tabelle MEINE_IMPORT_TABELLE im SCHEMA EC_MEINE, so muss
die targetTable-Definition das richtige schema enthalten.
Beispiel:
e*count-load-definition (
databaseECOUNT()
inputFormat(
…
)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 243 von 384
targetTable(
schema="EC_MEINE"
name="MEINE_IMPORT_TABELLE"
…
Technischer Hintergrund: Ohne Schema-Angabe wird mit folgendem Select geprüft, ob die Tabelle
vorhanden ist:
select TABLE_NAME from USER_TABLES where TABLE_NAME=
‚MEINE_IMPORT_TABELLE'
Mit Schema-Angabe wird folgendes Select abgesetzt:
select TABLE_NAME from ALL_TABLES where TABLE_NAME=? and
upper(OWNER)=?
11.6.4.4 Sequence xyz nicht gefunden
Wenn die Fehlermeldung trotz korrekt gesetzter Rechte (select) auftritt, befindet sich die Sequenz in
einem anderen Schema, als über databaseXYZ() definiert wurde.
Beispiel:
Der Loader ist so konfiguriert, dass die EC_XCH-Verbindung genutzt wird.
e*count-load-definition (
databaseECOUNT(
transaction_mode = COMMIT_AFTER(500)
)
Die Sequenz “MEINE_SEQ” befindet sich jedoch im Schema “ec_irgendwas”. Damit muss bei der
Definition der sequence-Spalte auch das Schema mitgegeben werden.
column(name="ID" src=sequence(schema="ec_irgendwas” name="MEINE_SEQ"))
Technischer Hintergrund: Ohne Schema-Angabe wird die Sequenz mit folgendem Select geprüft:
SELECT SEQUENCE_NAME FROM USER_SEQUENCES WHERE SEQUENCE_NAME =
'MEINE_SEQ'
Mit Schema-Angabe wird folgendes Select abgesetzt:
SELECT SEQUENCE_NAME FROM ALL_SEQUENCES WHERE SEQUENCE_NAME =
'MEINE_SEQ' AND SEQUENCE_OWNER = 'EC_IRGENDWAS'
Seite 244 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
11.6.4.5 Spalten mit Anführungszeichen ("SPALTE_X")
Sind in der zu importierenden Datei die Spalten mit Anführungszeichen aufgeführt (beispielsweise beim
Export über robotron*CsvExport), so müssen die Anführungszeichen auch in der Loader-Konfiguration
berücksichtigt werden. Hierbei muss beachtet werden dass " ein Sonderzeichen im Java-Umfeld ist und
dieses Zeichen somit mit einem Backslash \ maskiert (escaped) werden muss.
Beispiel:
CSV-Datei und Loader-Konfiguration:
CSV-Datei:
"Spalte_A";"SPALTE_B"
Loader-Konfiguration:
…
src=fileColumn("\"SPALTE_A\"")
…
src=fileColumn("\“SPALTE_B\“")
…
11.6.4.6 Performance bei großen Datenmengen (BATCH_COUNT)
Bei großen Datenmengen (mehrere hunderttausend Datensätze) benötigt der EcountLoader sehr viel
Zeit. Ursache kann hier unter anderem eine langsame Verbindung zwischen KomA und DB sein, da der
EcountLoader aktuell jeden Datensatz einzeln in die Datenbank überträgt. Mit eCount- 00052604
(Version 4.0.2.20 des Moduls KOMA-IMPORT-FILTER ELDR) wurde ein Batch-Modus implementiert mit
dem die Anzahl an Datensätzen festgelegt werden kann, nachdem das Insert stattfinden soll.
Dazu muss die Einstellung BATCH_COUNT=x (wobei x eine positive Ganzzahl zwischen 2 und 10000 ist)
in der jeweiligen Properties-Datei spezifiziert werden. Mit BATCH_COUNT=1000 wird also mitgeteilt,
dass der Import aller 1000 Datensätze erfolgen soll. Bei Angabe eines Wertes <= 1 wird der BatchModus deaktiviert, bei mehr als 10000 wird auf 10000 begrenzt.
Beispielkonfiguration (MY_LOADER.properties):
FILTER=ELDR
DATENQUELLE=XYZ
BATCH_COUNT=1000
config_skript=config/import/MY_LOADER.ldr
Der richtige Wert für den BATCH_COUNT hängt hauptsächlich von folgenden Restriktionen ab.
-
Der Größe der jeweiligen Datensätze (Anzahl an Spalten pro Datensatz und deren
Wertausprägung z. B. nur Number(1) oder Varchar2(1000)?)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
-
Seite 245 von 384
Dem zur Verfügung stehenden Speicherplatz (Stichwort OutOfMemoryError), mit dem der
Datenimport gestartet wurde (siehe Kapitel 3.3.4). Hintergrund: Intern wird jeder Datensatz im
Speicher gehalten bevor das Insert in die Datenbank erfolgt.
Es ist daher ratsam, auf dem System Testläufe mit verschiedenen Werten für BATCH_COUNT
durchzuführen, um den besten Wert zu ermitteln, z. B. mit 100, 1000, 5000.
11.6.4.7 Problem mit Umlauten und Sonderzeichen
Wird in der ldr-Datei mit Umlauten oder Sonderzeichen (oder anderen Zeichen wie russischen
Schriftzeichen gearbeitet) kommt es beim Import oft zu seltsamen Effekten (z.B. das einzelne Spalten
nicht importiert werden).
Bis Version 4.0.2.28 vom ecount_import_ELDR.jar wurde die ldr-Datei immer mit ISO-8859-1 eingelesen.
Wurde die ldr-Datei aber beispielsweise mit UTF-8 angelegt kommt es bei Umlauten zu Zeichensalat (aus
einen „ä“ wird z.B. ein „ä“, damit klappen dann interne Zuordnung über diese Zeichenkette nicht
mehr). Mit Version 4.0.2.29 ist es möglich die Zeichenkodierung der LDR-Datei zu definieren, dies kann
in der zugehörigen Properties-Datei über die Einstellung ENCODING_LDR geschehen.
Beispiel UTF-8:
ENCODING_LDR=UTF-8
Sollte die LDR-Datei ein Byte Order Mark (BOM) besitzen, wird die Zeichenkodierung über die BOM
abgeleitet, dabei wird die Einstellung ENCODING_LDR überschrieben/ignoriert. Mit Notepad++ kann
sehr schnell herausgefunden werden ob das Encoding z.B. UTF-8 oder UTF-8 ohne BOM ist.
Abbildung 11-2: Überprüfung Encoding
11.6.4.8 AFTER_FILE_CLOSE_TRIGGER und TRANSACTION_MODE
Damit in der Datenquelle (Import-API in PL/SQL) Code für den AFTER_FILE_CLOSE_TRIGGER ausgeführt
wird, muss in der Loader-Konfiguration die Funktion ifi_id() verwendet werden. Ohne diese
Funktion erfolgen die INSERT nur in die Datenbank-Tabelle, ohne Aufruf der Import-API.
Seite 246 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Zusätzlich muss der TRANSACTION_MODE der Loader-Definition auf AUTO_COMMIT stehen, sonst sind
die Daten im AFTER_FILE_CLOSE_TRIGGER nicht sichtbar.
11.7 EEX-Daten (.xls - Dateien)
Für den Import von Daten vom EEX-Portal http://www.eex.de existieren 2 vordefinierte Filter. Die Daten
können mit Hilfe des HTTP-Import-Moduls automatisch abgeholt werden. Von diesen Daten können zum
einen die Spot-Historie (z. B. https://ftp.eex.de/statistic/energy_spot_historie_2005.xls) mit dem Filter
EEX und zum anderen die Futures-Historie (z. B.
https://ftp.eex.de/statistic/energy_phelix_power_futures_historie_2005.xls) mit Hilfe der
vordefinierten CSV-Konfiguration EEX_FUTURES importiert werden.
Für beide Importe werden Zählpunkte mit Zählpunktbezeichnungen angelegt, die mit
DE000EEX00000_ beginnen. Dafür existiert ein spezieller, datenbankseitiger Datenimport-Job, der
die neuen Daten automatisch sofort in die Linien importiert.
Von den Daten der Spot-Historie werden Preise (Arbeitsblatt Prices) sowie Energiemengen (Arbeitsblatt
Volumes) importiert. Von beiden Blättern werden jeweils die Werte der Spalten mit den Überschriften:
Phelix Day Base, Phelix Day Peak, Off Peak I 01 - 08, Off Peak II 21 - 24, Night 01 - 06, Morning 07 - 10,
Business 09 - 16, High Noon 11 - 14, Afternoon 15 - 18, Rush Hour 17 - 20, Evening 19 - 24, Hour 1 00 01, EEX Volume Total, EEX Volume Continuous Block Trading und EEX Volume Auction Market importiert.
Für die Futures-Historie muss zuerst die Filter-Konfiguration aus
config/samples/import/EEX_FUTURES.properties unter config/import installiert werden. Diese kann
dann noch z. B. mit einem Texteditor oder mit dem Importkonfigurator angepasst werden. Die Liste der
verarbeiteten Arbeitsblätter findet sich im Parameter
EXCEL_SHEETS = F1BM, F1BQ, F1PM, F1PQ, F1PY
Die zu importierende Spalte wird durch den Parameter
COLUMN_SKIP_CRITERIA = not(in(cellValue(n,2),"Settlement Price"))
als die Spalte mit der Überschrift Settlement Price festgelegt (es werden alle Spalten übersprungen,
deren Überschrift nicht Settlement Price lautet). Soll hier eine weitere Spalte importiert werden, so kann
diese Bedingung entsprechend erweitert werden.
11.8 EEX_XML
Basierend auf dem Dokument EoD – XML – Market Results Interface Specification
(www.eex.com/download/en/65940) ist der EEX_XML-Filter in der Lage, folgende XML-Ausprägungen zu
importieren.
-
FuturesMarketResults
GasSpotMarketResults
GasSpotMarketSettlementResults
o
-
Support für SettlementPrices mit eCount- 00053931
PowerSpotMarketAuctionResults
o
Support für HourPrices mit eCount- 00053931
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
-
Seite 247 von 384
EmissionSpotMarketResults und EmissionFuturesMarketResults
GasSpotMarketDRPResults (mit eCount- 00053931)
PowerFutureMarketResults (mit eCount- 00053931)
GasFutureMarketResults (mit eCount- 00053931)
Tabelle 11-10: Formatspezifische Einstellungen für EEX_XML
Parameter/Beschreibung
Standardwert
DefaultUnit
Standardeinheit, falls nicht anders in der XML-Datei (im Element
Currency) spezifiziert. Bei EmissionSpot wird diese Einstellung
nicht beachtet.
EUR/MWh
EmissionSpot.IntradayAuctionPrice_FKID2
FK-ID2 für
IntradayAuctionPrice
EmissionSpotMarketResults.Prices.Product.Intra
dayAuctionVolume
EmissionSpot.IntradayAuctionPrice_IMPORT
Y/N. Mit Y kann das Element IntradayAuctionPrice
(EmissionSpotMarketResults.Prices.Product.Intr
adayAuctionPrice) importiert werden.
N
EmissionSpot.IntradayAuctionPrice_UNIT
Basiseinheit (t, MWh, etc...) für den IntradayAuctionPrice.
Die Einheit ergibt sich aus dem Currency-Element. Einheit und
Basiseinheit werden automatisch mit einem / getrennt.
EmissionSpot.IntradayAuctionVolume_FKID2
FK-ID2 für
IntradayAuctionVolume
EmissionSpotMarketResults.Prices.Product.Intra
dayAuctionVolume
EmissionSpot.IntradayAuctionVolume_IMPORT
Y/N. Mit Y kann das Element IntradayAuctionVolume
(EmissionSpotMarketResults.Prices.Product.Intr
adayAuctionVolume) importiert werden.
EmissionSpot.IntradayAuctionVolume_UNIT
Einheit für IntradayAuctionVolume
N
MWh
EmissionSpot.OTCVolume_FKID2
FK-ID2 für
OTCVolume
EmissionSpotMarketResults.Prices.Product.OTCVo
lume
Seite 248 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Standardwert
EmissionSpot.OTCVolume_IMPORT
Y/N. Mit Y kann das Element OTCVolume
(EmissionSpotMarketResults.Prices.Product.OTCV
olume) importiert werden.
EmissionSpot.OTCVolume_UNIT
Einheit für OTCVolume
N
MWh
EmissionSpot.SettlementPrice_FKID2
FK-ID2 für
SettlementPrice
EmissionSpotMarketResults.Prices.Product.Settl
ementPrice
EmissionSpot.SettlementPrice_IMPORT
Y/N. Mit Y kann das Element SettlementPrice
(EmissionSpotMarketResults.Prices.Product.Sett
lementPrice) importiert werden.
N
EmissionSpot.SettlementPrice_UNIT
Basiseinheit (t, MWh, etc...) für den SettlementPrice. Die
Einheit ergibt sich aus dem Currency-Element. Einheit und
Basiseinheit werden automatisch mit einem / getrennt.
EmissionSpot.TotalVolume_FKID2
FK-ID2 für
TotalVolume
EmissionSpotMarketResults.Prices.Product.Total
Volume
EmissionSpot.TotalVolume_IMPORT
Y/N. Mit Y kann das Element TotalVolume
(EmissionSpotMarketResults.Prices.Product.Tota
lVolume) importiert werden.
EmissionSpot.TotalVolume_UNIT
Einheit für TotalVolume
N
MWh
EmissionSpot.USE_UNIT
Y/N. Damit kann gesteuert werden, ob die Einheit für die Kanäle
von der KomA festgelegt werden soll (Y) oder nicht (N).
FK_ID2_GAS_SPOT_DRP
FK-ID2 für die GasSpotMarketDRPResults-Elemente
Y
Price
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Seite 249 von 384
Standardwert
FK_ID2_POWER_SPOT_PRICE
FK-ID2 für
Price
PowerSpotMarketAuctionResults.HourPrices.Hours
.Price
FK_ID2_POWER_SPOT_VOLUME
FK-ID2 für
Volume
PowerSpotMarketAuctionResults.HourPrices.Hours
.Volume
FK_ID2_SPOT
FK-ID2, für den Import in die ecount-Zwischentabellen, für
GAS_SPOT-Dateien
Price
FK_ID2_SPOTSETTLEMENT
FK-ID2, für den Import in die ecount-Zwischentabellen, für
GAS_SPOT_SETTLEMENT-Dateien
FUTURE .OpenInterestContracts_FKID2
FK-ID2 für Products.Product.OpenInterestContracts
Price
Volume
FUTURE .OpenInterestContracts_IMPORT
Y/N. Mit N können die OpenInterestContracts-Elemente
importiert werden.
FUTURE.ContractVolume_FKID2
FK-ID2 für *.Results.Product.ContractVolume
N
Volume
FUTURE.ContractVolume_IMPORT
Y/N. Mit N kann ContractVolume (*.Results.Product.
ContractVolume) importiert werden.
FUTURE.ContractVolume_UNIT
Einheit für *.Results.Product.ContractVolume
N
MWh
FUTURE.HighPrice_FKID2
FK-ID2 für
HighPrice
FuturesMarketResults.Products.Product.HighPric
e
FUTURE.HighPrice_IMPORT
Y/N. Mit Y kann das Element HighPrice
(FuturesMarketResults.Products.Product.HighPri
ce) importiert werden, (Einheit = EUR/MWh).
N
Seite 250 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Standardwert
FUTURE.HighPrice_UNIT
Basiseinheit (t, MWh, etc...) für HighPrice. Die Einheit ergibt sich aus
dem Currency-Element. Einheit und Basiseinheit werden
MWh
automatisch mit einem / getrennt.
eCount- 00053931 wird bei den 2015-Formaten nicht mehr
ausgewertet.
FUTURE.LastPrice_FKID2
FK-ID2 für
LastPrice
FuturesMarketResults.Products.Product.LastPric
e
FUTURE.LastPrice_IMPORT
Y/N. Mit Y kann das Element LastPrice
(FuturesMarketResults.Products.Product.LastPri
ce) importiert werden, (Einheit = EUR/MWh).
N
FUTURE.LastPrice_UNIT
Basiseinheit (t, MWh, etc...) für LastPrice. Die Einheit ergibt sich aus
dem Currency-Element. Einheit und Basiseinheit werden
MWh
automatisch mit einem / getrennt.
eCount- 00053931 wird bei den 2015-Formaten nicht mehr
ausgewertet.
FUTURE.LowPrice_FKID2
LowPrice
FK-ID2 für
FuturesMarketResults.Products.Product.LowPrice
FUTURE.LowPrice_IMPORT
Y/N. Mit Y kann das Element LowPrice
(FuturesMarketResults.Products.Product.LowPric
e) importiert werden, (Einheit = EUR/MWh).
N
FUTURE.LowPrice_UNIT
Basiseinheit (t, MWh, etc...) für LowPrice. Die Einheit ergibt sich
aus dem Currency-Element. Einheit und Basiseinheit werden
automatisch mit einem / getrennt.
MWh
eCount- 00053931 wird bei den 2015-Formaten nicht mehr
ausgewertet.
FUTURE.OpenInterest_FKID2
FK-ID2 für
OpenInterest
FuturesMarketResults.Products.Product.OpenInte
rest
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Seite 251 von 384
Standardwert
FUTURE.OpenInterest_IMPORT
Y/N. Mit Y kann das Element OpenInterest
(FuturesMarketResults.Products.Product.OpenInt
erest) importiert werden, (keine Einheit)
FUTURE.OpenInterestVolume_FKID2
FK-ID2 für *.Results.Product.OpenInterestVolume
N
Volume
FUTURE.OpenInterestVolume_IMPORT
Y/N. Mit Y kann OpenInterestVolume
(*.Results.Product.OpenInterestVolume) importiert
werden.
N
eCount- 00053931 wird bei den 2015-Formaten nicht mehr
ausgewertet.
FUTURE.OpenInterestVolume_UNIT
Einheit für *.Results.Product.OpenInterestVolume
MWh
FUTURE.OpenPrice_FKID2
FK-ID2 für
OpenPrice
FuturesMarketResults.Products.Product.OpenPric
e
FUTURE.OpenPrice_IMPORT
Y/N. Mit Y kann das Element OpenPrice
(FuturesMarketResults.Products.Product.OpenPri
ce) importiert werden, (Einheit = EUR/MWh).
N
FUTURE.OpenPrice_UNIT
Basiseinheit (t, MWh, etc...) für OpenPrice. Die Einheit ergibt sich
aus dem Currency-Element. Einheit und Basiseinheit werden
MWh
automatisch mit einem / getrennt.
eCount- 00053931 wird bei den 2015-Formaten nicht mehr
ausgewertet.
FUTURE.SettlementPrice_FKID2
Price bei Gas sonst unitFK-ID2 für
FuturesMarketResults.Products.Product.Settleme unique EUR/MWh
ntPrice
FUTURE.SettlementPrice_IMPORT
Y/N. Mit N kann das Element SettlementPrice vom Import
ausgeschlossen werden
Y
Seite 252 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Standardwert
(FuturesMarketResults.Products.Product.Settlem
entPrice).
FUTURE.SettlementPrice_UNIT
Basiseinheit (t, MWh, etc...) für SettlementPrice. Die Einheit
ergibt sich aus dem Currency-Element. Einheit und Basiseinheit
werden automatisch mit einem / getrennt.
MWh
eCount- 00053931 wird bei den 2015-Formaten nicht mehr
ausgewertet.
FUTURE.TradedContracts_FKID2
FK-ID2 für
TradedContracts
FuturesMarketResults.Products.Product.TradedCo
ntracts
FUTURE.TradedContracts_IMPORT
Y/N. Mit Y kann das Element TradedContracts
(FuturesMarketResults.Products.Product.TradedC
ontracts) importiert werden, (keine Einheit).
FUTURE.TradedVolume_FKID2
FK-ID2 für *.Results.Product.TradedVolume
N
Volume
FUTURE.TradedVolume_IMPORT
Y/N. Mit Y kann das Element TradedVolume
(*.Results.Product) importiert werden.
FUTURE.TradedVolume_UNIT
Einheit für *.Results.Product.TradedVolume
eCount- 00053931 wird bei den 2015-Formaten nicht mehr
ausgewertet.
MWh
FUTURE.USE_UNIT
Y/N. Damit kann gesteuert werden, ob die Einheit für die Kanäle
von der KomA festgelegt werden soll (Y) oder nicht (N).
Y
FUTURE.Volume_FKID2
FK-ID2 für
FuturesMarketResults.Products.Product.Volume
Volume
FUTURE.Volume_IMPORT
N
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Seite 253 von 384
Standardwert
Y/N. Mit Y kann das Element Volume
(FuturesMarketResults.Products.Product.Volume)
importiert werden, (Einheit = MWh).
FUTURE.Volume_UNIT
Basiseinheit (t, MWh, etc...) für Volume. Die Einheit ergibt sich aus MWh
dem Currency-Element. Einheit und Basiseinheit werden
automatisch mit einem / getrennt.
FUTURE_PREFIX
Für die Generierung der FK-ID1 notwendig. Bestimmt, in Verbindung F0=DE,F1=DE,G0=DE,G2=D
mit dem Wert <Contract>G0BM</Contract> aus der XMLE,F2=FR
Datei, einen Teil der FK-ID1. Per Default wird bei G0 also DE
verwendet.
IMPORT_BLOCK_PRICES
Y/N. Für POWER_SPOT relevant. Damit kann der Import der XMLElemente BlockPrices aktiviert werden.
IMPORT_TYPE
Über diese Einstellung wird dem Filter mitgeteilt, um welche XMLDatei es sich handelt (da es nur 1 Filter für alle XML-Ausprägungen
gibt).
Mögliche Werte sind:
-
GAS_SPOT_SETTLEMENT
POWER_SPOT
GAS_SPOT
GAS_FUTURE
POWER_FUTURE
EMISSION_FUTURE (eCount- 00045885)
EMISSION_SPOT
GAS_DRP (eCount- 00053931)
FUTURE_RESULTS_2015 (eCount- 00053931)
Seit eCount- 00049753 wird, beim Fehlen dieser Einstellung, über
den Dateinamen versucht, den Typ korrekt zu bestimmen. Dies
funktioniert jedoch nur, wenn die Dateinamen den Richtlinien der
Spezifikation entsprechen.
-
GAS_SPOT_SETTLEMENT wird verwendet, wenn der
Dateiname mit GasSpotMarketSettlementResults beginnt
POWER_SPOT wird verwendet, wenn der Dateiname mit
PowerSpotMarketAuctionResults beginnt
GAS_SPOT wird verwendet, wenn der Dateiname mit
GasSpotMarketResults startet
N
Seite 254 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
-
Standardwert
GAS_FUTURE wird verwendet, wenn der Dateiname
GasFuturesMarketResults enthält
POWER_FUTURE wird verwendet, wenn der Dateiname
PowerFuturesMarketResults enthält.
EMISSION_FUTURE wird genutzt, wenn der Dateiname
EmissionSpotMarketResults oder
EmissionFuturesMarketResults enthält.
INCLUDE_AREA_ALIASE
Für POWER_SPOT relevant. Damit wird spezifiziert, welche Areas
aus der XML-Datei importiert werden.
DE-AT
PowerSpot.VOLUME_IMPORT
Y/N. Mit N kann der Import der HourPrices.Hours.VolumeElemente unterbunden werden.
PowerSpot.VOLUME_UNIT
Einheit für Volume
SPOT_INDEX_NAME
Für POWER_SPOT relevant. Wird zur Generierung der FK-ID1 bei
BlockPrices verwendet.
ValuesFlag
ecount-Statuswert für die zu importierenden Werte
Y
MWh
DEAT=PHELIX,CH=SWISSIX,F
R=FRANCE
W
Alle zusätzlichen Informationen/Elemente werden nur importiert wenn SettlementPrice nicht
den Wert für ein nicht gehandeltes Produkt (0.01 bzw. 0.001 bei Gas) enthält.
11.8.1
Fremdkanal-ID 1(FK-ID1)
Für alle FK-ID1 gilt: Wenn 33 Zeichen noch nicht erreicht sind, wird mit 0 aufgefüllt, bei mehr als 33
Zeichen wird abgeschnitten.
Die FK-ID1 ergibt sich wie folgt:
FuturesMarketResults
-
Mapping aus FUTUR_PREFIX i.V.m. Wert aus Contract
000EEX0
Wert aus Contract, 3 Stellen, B=BASE, P=PEAK, O=OFFPEAK
Beispiel: FR000EEX0F2CR_R122014_00000000000
EmissionSpotMarketResults
-
DE000EEX00
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
-
Seite 255 von 384
Wert aus Product.ProductID
Falls ContractStart und ContractEnd vorhanden sind: _ContractStartContractEnd_
_SPOT_CO2
Beispiel: DE000EEX00EUSP_20122021__SPOT_CO2
PowerSpotMarketAuctionResults
-
FK-ID1 ergibt sich aus den ersten beiden Buchstaben von AREA.Alias +
000EEX00000_PRI_HOUR_1_00_-_01_
FK-ID1 für BlockPrices ergibt sich aus dem Block-Alias. Aktuell werden nur folgende Aliase
supportet:
-
BL06 - 000EEX00000_PRI_OFF_PEAK_II_21_
BL07 - 000EEX00000_PRI_{1}_DAY_BASE
BL08 - 000EEX00000_PRI_{1}_DAY_PEAK
BL10 - 000EEX00000_PRI_OFF_PEAK_I_01_-
Bei BL07 und BL08 wird der Platzhalter über die Einstellung SPOT_INDEX_NAME bestimmt.
GasSpotMarketSettlementResults
-
DE000EEX
AREA.ALIAS (5 Zeichen, wenn weniger wird vorher mit 0 aufgefüllt)
_SPOTSETTLEMENT_
AREA.ALIAS
GasSpotMarketResults
-
DE000EEX
AREA.ALIAS (5 Zeichen, wenn weniger wird vorher mit 0 aufgefüllt)
_SPOT_
AREA.ALIAS
GasSpotMarketDRPResults
-
DE000EEX
Product. MarketArea (5 Zeichen, wenn weniger wird vorher mit 0 aufgefüllt)
_SPOT_
Product. MarketArea
11.9 ESS_LG (nur Import von Daten ohne Fahrplan)
Umsetzung mit eCount- 00030512. ESS-Confirmationreports können importiert werden, ohne dass ein
Fahrplanmanagement mit dem System betrieben wird. D.h. es gibt keine zusätzlichen Prüfungen auf
Einträge in der Tabelle FPL_DATEIEN oder Ähnliches.
Der Filter unterstützt Confirmationreport- als auch Acknowledgement-XML-Dateien.
11.10 GASX (von Mummert Consulting)
HandlerClass=de.robotron.ecount.dataimport.filter.GASXHandler
Pfad: filter_import/ecount_import_GASX.jar
Seite 256 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Tabelle 11-11: Formatspezifische Einstellungen GASX
Parameter/Beschreibung
statusmapping_W
statusmapping_V
statusmapping_E
statusmapping_G
statusmapping_N
Anstelle von "status.<Datei-Status>=<eCount-Status>" gibt es nun für jeden ecount-Status eine
eigene Einstellung. Die Werte werden dabei durch Semikolon getrennt. Die Werte dürfen
jedoch nicht durch ein Enter-Zeichen, zur besseren Lesbarkeit, getrennt werden!
Defaults: Import-Status -> ecount-Status
OK -> W
(leerer Status) ->W
K -> W
OE -> E
E -> E
- -> -
? -> F
V -> V
OV -> G
O -> G
VD -> G
D -> G
! -> F
Beispiel:
statusmapping_W=v --;v;v--;V
statusmapping_V=OE --;OE;OE--;E --;E
statusmapping_E=E1 --;E1
statusmapping_G=z --;z;z-statusmapping_N=X
FKID2_MIT_PERIODE
Y/N (Default Y). Wenn aktiviert, wird die Kanal-ID2 wie folgt gebildet:
vop.quantity / vopset.period
Ist die Option deaktiviert, wird nur der Wert aus vop.quantity übermittelt.
FKID1
Mit FKID1=CODE wird als FKID1 der Wert aus dem "code"-Attribut des Elements vopset
verwendet.
FKID2
Mit FKID2=QUANTITY_MAPPING wird die FKID2 über den Wert im "quantity"-Attribut
bestimmt, der zusätzlich über die Einstellung QUANTITY_MAPPING gemappt wird.
QUANTITY_MAPPING
Wird nur ausgewertet bei FKID2=QUANTITY_MAPPING. Angabe des Wertes des "quantity"Attributes, gefolgt von = und dem zu setzenden Wert. Mehrere Einträge werden durch
Semikolon getrennt.
Default:
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 257 von 384
Parameter/Beschreibung
QUANTITY_MAPPING=QN=7-20:99.33.17;Qn_v=7-10:99.33.17
Für QN wird als FKID2 also 7-20:99.33.17 übernommen, bei Qn_vwird 7-10:99.33.17
verwendet.
FKID2_MIT_WERTESTATUS
Y/N (Default N). Wenn Y wird dies für FKID2_MIT_WERTESTATUS.Hon und
FKID2_MIT_WERTESTATUS.Zu verwendet/aktiviert.
Diese Einstellung ist aus Kompatibilitätsgründen enthalten.
FKID2_MIT_WERTESTATUS.Hon
Y/N (Default N). Wenn Y, wird bei Hon (Brennwert) der Status ("state"-Attribut des Elementes
vopset) gegen die Einstellung STATUS_FKID2_HON_ZU geprüft.
Wenn der Status in STATUS_FKID2_HON_ZU enthalten ist, wird an der FKID2 ein _E
anderenfalls ein _V (bei _V wird zusätzlich der Status auf V gestellt und damit wird also
vopset.state überschrieben) angefügt.
FKID2_MIT_WERTESTATUS.Zu
Y/N (Default N). Wenn Y, wird bei Zu (Umwerterfaktor) ein _E angefügt.
STATUS_FKID2_HON_ZU
Angabe einer Liste mit Statuswerten, die gegen den Wert aus vopset.state geprüft wird. Ist der
Status enthalten wird das _E an die FKID2 angefügt, sonst _V.
Mehrere Einträge werden durch ein Semikolon getrennt.
Default: OK und OE
Beispiel:
STATUS_FKID2_HON_ZU=OK;OE;OV
FKID2_CHANGE_STATUS_HON_OK
Y/N (Default Y). Wenn der Status (vopset.state) in STATUS_FKID2_HON_ZU enthalten ist,
kann die Änderung des Status auf V mit den Parameterwert N unterbunden werden. Ist der
Status nicht enthalten wird immer auf V geändert.
FKID2_CHANGE_STATUS_ZU_OK
Y/N (Default Y). Wenn der Status (vopset.state) in STATUS_FKID2_HON_ZU enthalten ist,
kann die Änderung des Status auf V mit den Parameterwert N unterbunden werden. Ist der
Status nicht enthalten wird immer auf V geändert.
FKID3_AUS_VOPSET_CODE_HINZUFUEGEN
Y/N (Default N)
Mit Y wird als FKID3 der Wert aus vopset.code übermittelt.
Seite 258 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
11.11 INVCC
Pfad: filter_import/ecount_import_INVCC.jar
Importfilter für das Robotron INVOIC-CSV-Format. Aufbau ist identisch zu der Beschreibung des
Exportfilters siehe Kapitel 12.18.
11.12 LPEX
Hinweise:
HandlerClass = de.robotron.ecount.dataimport.filter.LPEXHandler
Pfad: filter_import/ecount_import_LPEX.jar
Tabelle 11-12 Parameter für LPEX
Parameter/Beschreibung
InvalidFlagError
Y/N (Default Y). Mit N wird das Schreiben des Import-Fehlers „Invalid flag in line x: …“ unterbunden.
11.13 LOADER_BCX
Hinweise:
HandlerClass = de.robotron.ecount.dataimport.filter.LOADER_BCXHandler
Pfad: filter_import/ecount_import_LOADER_BCX.jar
Mit diesem Filter ist es möglich, die zu importierende Datei in eine BLOB, CLOB oder XMLTYPE-Spalte zu
übertragen.
Bei der Übertragung einer Text-Datei in eine CLOB- oder XMLTYPE-Spalte kann es zu Problemen
bezüglich der Kodierung kommen, wenn die Kodierung der Datei nicht mit der Kodierung der
Datenbank (Parameter NLS_CHARACTERSET) übereinstimmt. Die sicherste Variante ist die
Übertragung der Datei in eine BLOB-Spalte. Für XMLTYPE besteht zusätzlich eine Option, den Inhalt
der zu importierenden Datei in die Kodierung der DB zu konvertieren.
Tabelle 11-13: Parameter für LOADER_BCX
Parameter/Beschreibung
CHARSET
Wird nur benötigt wenn CODING_TO_DB_CHARSET=Y und wenn das Encoding nicht aus der Datei
ableitbar ist (es wird nach der BOM gesucht und wenn vorhanden das Charset gesetzt). Ist das Charset
nicht aus der Datei ableitbar und ungleich UTF-8 (z.B. UTF-16) so muss dies über diese Einstellung
mitgeteilt werden z.B. CHARSET=UTF-16
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 259 von 384
Parameter/Beschreibung
CODING_TO_DB_CHARSET
Y/N (Default N). Bei Y ist zusätzlich die Angabe von NLS_CHARACTERSET erforderlich. Hierbei wird
der Dateiinhalt in die Kodierung (unter NLS_CHARACTERSET definiert) konvertiert. Dadurch ist es
möglich, UTF-8 kodierte Dateien in einer Datenbank mit NLS_CHARACTERSET=WE8MSWIN1252 zu
importieren, ohne dass es zum Verlust von Umlauten oder ähnlichen „Sonderzeichen“ kommt.
Parameter wird nur bei den Spalten CLOB und XMLTYPE ausgewertet!
DATENQUELLE
Optionale Zeichenkette, die als Datenquellen-ID verwendet werden kann. Wird ausgewertet wenn
INDEX_RDQ_ID > 0
INDEX_CONTENT
Platzhalter-Index (Fragezeichenposition) der Spalte für die Datei in SQL_INSERT (positive Ganzzahl, SQL
bei 1 beginnend)
INDEX_IFI_ID
Platzhalter-Index (Fragezeichenposition) der IFI_ID-Spalte (IMPORT_FILE.ID) in SQL_INSERT (positive
Ganzzahl, SQL bei 1 beginnend)
INDEX_RDQ_ID
Platzhalter-Index (Fragezeichenposition) der Datenquellen-Spalte in SQL_INSERT (positive Ganzzahl, SQL
bei 1 beginnend).
INDEX_VTP_ID_MANDANT
Platzhalter-Index (Fragezeichenposition) der Mandanten-Spalte in SQL_INSERT (positive Ganzzahl, SQL
bei 1 beginnend)
NLS_CHARACTERSET
Notwendig, wenn CODING_TO_DB_CHARSET=Y.
Mögliche Werte sind z. B. WINDOWS-1252, UTF-8
SKIP_BOM
Y/N (Default Y). Mit Y wird der BOM einer Datei entfernt.
SQL_INSERT
Das Insert-Statement für die Ablage der Datei. Hier ist mind. die Spalte zur Ablage der Datei
erforderlich. Es kann aber auch noch eine Spalte für die IFI_ID, VTP_ID_MANDANT, RDS_ID angegeben
werden.
Bsp: SQL_INSERT: INSERT INTO TABLE (BLOB )VALUES (?)
TYP
Der Typ der zu importierenden DB-Spalte (BLOB, CLOB oder XMLTYPE)
Seite 260 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
VTP_ID_MANDANT
Optional kann der Mandant übertragen werden.
Wird ausgewertet, wenn INDEX_VTP_ID_MANDANT > 0
XSD_DIRECTORY
Ordner, in dem die XSD-Dateien liegen (ausgehend vom KomA-Basisverzeichnis). Nur notwendig, wenn
unter XSD_FILENAME kein absoluter Pfad definiert wurde.
Default: config/import/xsd
XSD_FILENAME
Dateiname (dann ist XSD_DIRECTORY noch erforderlich) oder der absolute Pfad auf die XSD-Datei.
XSD_VALIDATION
Y/N (Default N). Bei XML-Dateien kann zusätzlich die Validierung der XML-Dateien gegen eine XSD (wird
über XSD_FILENAME spezifiziert) aktiviert werden.
11.13.1 Beispiele
11.13.1.1 Import einer Datei in eine XMLTYPE-Spalte
HandlerClass =
de.robotron.ecount.dataimport.filter.LOADER_BCXHandler
TYP=XMLTYPE
SQL_INSERT=INSERT INTO TABLE (XML_CONTENT, IFI_ID) VALUES (?, ?)
INDEX_CONTENT=1
INDEX_IFI_ID=2
11.13.1.2 Import einer Datei in BLOB
HandlerClass =
de.robotron.ecount.dataimport.filter.LOADER_BCXHandler
TYP=BLOB
SQL_INSERT=INSERT INTO table (blob_content, ifi_id, VTP_ID_MANDANT,
RDQ_ID) VALUES (?, ?, ?, ?)
INDEX_CONTENT=1
INDEX_IFI_ID=2
INDEX_VTP_ID_MANDANT=3
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 261 von 384
INDEX_RDQ_ID=4
RDQ_ID=XYZ
VTP_ID_MANDANT=1
11.13.1.3 Import einer Datei in XMLTYPE mit impliziter Kodierung
Import einer Datei in eine Datenbank-Spalte vom Typ XMLTYPE mit Zeichensatzkodierung. Der
Dateiinhalt soll dabei in der Kodierung WINDOWS-1252 in der Datenbank abgelegt werden. Die
Kodierung der zu importierenden Datei kann hier eine andere sein. Diese wird über die BOM (falls
vorhanden) der zu importierenden Datei bestimmt bzw. es wird UTF-8 (= Default der CHARSETEinstellung) verwendet. Das Beispiel umfasst nur die relevanten Einstellungen!
HandlerClass =
de.robotron.ecount.dataimport.filter.LOADER_BCXHandler
TYP=XMLTYPE
…
CODING_TO_DB_CHARSET=Y
NLS_CHARACTERSET=WINDOWS-1252
Hierbei wird eine Konvertierung des Dateiinhaltes nach WINDOWS-1252 vorgenommen. Dies ist z. B.
notwendig, wenn die Datenbank als Windows-1252 konfiguriert wurde, die zu importierende Datei aber
mit einer UTF-8 Kodierung vorliegt.
11.13.1.4 Import einer Datei in XMLTYPE mit expliziter Kodierung
Als Beispiel wird eine CSV-Datei mit UTF-16 Kodierung in eine UTF-8 Datenbank importiert. Die zu
importierende Datei besitzt hierbei kein BOM, d.h. die Kodierung der Datei muss dem Filter über die
Einstellung CHARSET mitgegeben werden. Das Beispiel umfasst nur die relevanten Einstellungen!
HandlerClass = de.robotron.ecount.dataimport.filter.LOADER_BCXHandler
TYP=XMLTYPE
…
CHARSET=UTF-16
CODING_TO_DB_CHARSET=Y
NLS_CHARACTERSET=UTF-8
11.14 MCW (Wetterdaten in XML-Format)
Pfad: filter_import/ecount_import_MCW.jar
HandlerClass: de.robotron.ecount.dataimport.filter.MCWHandler
Seite 262 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Filter zum Import von Wetterdaten in XML-Format. Es können sowohl Prognosen (XML-Element
VORHERSAGE) als auch IST-Daten (XML-Element WETTERDATEN) übertragen werden.
Die Importdateien haben folgenden Aufbau.
<DATEN xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Quelle="XYZ" Typ="Vorhersage" Ort="10147_V" Datum="2016-05-02"
Zeit="13:30" Zeitzone="UTC">
<VORHERSAGE Typ="Temperatur" Einheit="°C">
<WERT Datum="2016-01-01" Zeit="05:00">3.9011202346041</WERT>
…
</VORHERSAGE>
<WETTERDATEN Typ="Temperatur" Einheit="°C">
<WERT Datum="2013-10-17" Zeit="00:00">6.9</WERT>
</WETTERDATEN>
</DATEN>
Tabelle 11-14: MCW - Parameter
Parameter/Beschreibung
FKID-2
Hier kann TYP oder EINHEIT spezifiziert werden (Default EINHEIT). Bei TYP wird als FKID2 der Wert aus
dem XML-Element VORHERSAGE.Typ, bei Einheit aus VORHERSAGE.Einheit übernommen.
ValueFlag
Bei VORHERSAGE ist der Default V, bei WETTERDATEN ist der Default W. Über das ValueFlag können
andere Status für die darin befindlichen Werte (die an die Import-API übergeben werden) definiert
werden.
11.15 VESP_EXCEL
Pfad:
filter_import/ecount_import_VESP_EXCEL.jar
Kundenspezifischer Filter für den Import einer Excel-Datei mit 2 Sheets. Das erste Sheet umfasst
Stammdaten. Dabei werden die Spalten A und B in der Tabelle EC_VESP.IMP_BESTELLUNGEN abgelegt.
Das zweite Sheet umfasst Daten in der Form Zeitstempel und Wert, die in der Tabelle
IMP_BESTELLUNGEN_PROFILE abgelegt werden.
Da es für Gas- und Stromdaten abweichende Excel-Strukturen gibt (z. B. sind Gas-Werte immer nur
täglich angegeben, bei Strom 96x 15 Minutenwerte), muss dem Filter über die Einstellung MODUS
mitgeteilt werden, ob Strom- oder Gas-Dateien importiert werden. Mögliche Einstellungen sind GAS
oder POWER (Standardwert).
Als Zeitzone wird MEZ verwendet, es gibt keine Zeitumstellung!
11.16 ZVW (Geräteverwaltung)
Import von Gerätedaten, unterstützt XML-Format (eCount- 00036822) sowie ein Excel-Format (eCount00042974). Die Daten werden im DB-Schema EC_XCH in den Importtabellen IMP_ZVW_* abgelegt.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 263 von 384
11.16.1 ELS-Format (eCount- 00047331)
Der ImportFilter_ZVW wurde um ein neues Format elektronischer Lieferscheine (ELS) erweitert.
Die Properties-Datei in der KomA (config/import) ist zwingend notwendig.
Beispiel ZVW_ELS.properties (ggf. Mandant und Datenquelle anpassen!)
HandlerClass =
de.robotron.ecount.dataimport.filter.ZVWHandler
FORMAT = ELS
VTP_ID_MANDANT =
RDQ_ID=ZVW_ELS
# VTP_ID des standarmäßigen Eigentümers (default = Wert des Parameters
'VTP_ID_MANDANT')
VTP_ID_EIGENTUEMER =
11.16.2 WEMAG-Format
Tabelle 11-15: WEMAG-Formate
Tabelle: IMP_ZVW - Spalte
Wert
IFI_ID
IMPORT_FILE.ID (automatisch vergeben)
VTP_ID_MANDANT
Wert aus Einstellung VTP_ID_MANDANT der Properties-Datei
RDQ_ID
Wert aus Einstellung RDQ_ID der Properties-Datei
Tabelle: IMP_ZVW_GERAETE Spalte
Wert
IZVW_ID
IMP_ZVW.ID (automatisch vergeben)
ZVGE_EXID
Element Geraet Attribut Id
ZVGE_IMPORT_ID
Element Geraet Attribut Id
VTP_ID_MANDANT
Wert aus Einstellung VTP_ID_MANDANT der Properties-Datei
ZVGE_TYP
Wert aus Element Geraeteart
ZVGE_ZUSATZFELD_01
Wert aus Element Geraeteart
ZVGE_HERSTELLER
Wert aus Element Hersteller
Seite 264 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Tabelle: IMP_ZVW_GERAETE Spalte
Wert
ZVGE_GERAETENUMMER
Wert aus Element Geraetenr
ZVGE_BAUJAHR
Wert aus Element Baujahr
ZVGE_EICHGUELTIG_BIS
Wert aus Element GeeichtBis (Formatierung dd.MM.yyyy und
dd.MM.yyyy HH:mm zulässig)
ZVGE_BEFESTIGUNGSART
Wert aus Element Befestigungsart
ZA_ZAEHLERTYP
Wert aus Element Zaehlertyp
KUNSP_B
Wert aus Element Zaehlverfahren
ZA_MESSERFASSUNGSART
Wert aus Element MWErfassung
WA_FAKTOR
Wert aus Element WDLFaktor
ZA_ZAEHLERTARIF
Wert aus Element Tarifanzahl
ZA_ZAEHLRICHTUNGEN
Wert aus Element Zaehlrichtung
ZA_TURNUSINTERVALL
Wert aus Element Zaehlwerk.Ableseturnus
ZA_TURNUSABLESUNG_VON
Wert aus Element Zaehlwerk.Ablesemonat
ZA_TURNUSABLESUNG_BIS
Wert aus Element Zaehlwerk.Ablesemonat
Tabelle: IMP_ZVW_ZAEHLWERKE Spalte
Wert
Wert aus Element Zaehlwerk.Aktiv
ZW_AKTIV_FLAG
Wird N geliefert, so soll sich das N nur auf GPKE und MPES
beziehen und daher ist hier G in der Importtabelle
einzutragen.
OBIS_KENNZIFFER
Wert aus Element Zaehlwerk.OBISKz
ZAEHLWERKSNUMMER
Wert aus Element Zaehlwerk Attribut ZwNummer
ZW_IMPORT_ID
Wert aus Element Zaehlwerk Attribut Id
IZVWGE_ID
IMP_ZVW_GERAETE.ID (automatisch vergeben)
VTP_ID_MANDANT
Wert aus Einstellung VTP_ID_MANDANT der Properties-Datei
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 265 von 384
Tabelle: IMP_ZVW_ZAEHLWERKE Spalte
Wert
ZAEHLWERKSART
Wert aus Element Zaehlwerk.ZwArt
ZUORD_ZA_ZW_VON
Wert aus Element Zaehlwerk.Von
ZUORD_ZA_ZW_BIS
Wert aus Element Zaehlwerk.Bis
VORKOMMASTELLEN
Wert aus Element Zaehlwerk.VKStellen
NACHKOMMASTELLEN
Wert aus Element Zaehlwerk.NKStellen
SCHWACHLASTKENNZEICHEN
Wert aus Element Zaehlwerk.Schwachlast (bei false wird
ZNS, bei true wird ZSF eingetragen)
Tabelle: IMP_ZVW_GER_SPERRHIST
Wert
- Spalte
IZVWGE_ID
IMP_ZVW_GERAETE.ID (automatisch vergeben)
VON
Wert aus Element Sperrungen.Von
Wert aus Element Sperrungen.Bis
BIS
Beim BIS-Datum wird 1 Tag addiert, falls das Format
dd.MM.yyyy verwendet wird, bei Datumsformat mit Uhrzeit
wird die Addition nicht vorgenommen.
Tabelle:
Wert
IMP_ZVW_EIGENTUMSHIST - Spalte
IZVWGE_ID
IMP_ZVW_GERAETE.ID (automatisch vergeben)
Wert aus Element Geraet.Von
VON
eCount- 00040355: Wenn das Von-Datum im GERAET
angegeben, dann wird dieses (inklusive dem Bis-Datum)
verwendet, anderenfalls werden das Von- und Bis-Datum des
ersten Zählwerkes verwendet.
Wert aus Element Geraet.Bis
BIS
eCount- 00040355: Wenn das Von-Datum im GERAET
angegeben, dann wird dieses (inklusive dem Bis-Datum)
verwendet, anderenfalls werden das Von- und Bis-Datum des
ersten Zählwerkes verwendet.
Seite 266 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Tabelle:
Wert
IMP_ZVW_EIGENTUMSHIST - Spalte
VTP_ID_MANDANT
Wert aus Einstellung VTP_ID_MANDANT der Properties-Datei
VTP_EXID
Wert aus Einstellung VTP_ID_EIGENTUEMER der PropertiesDatei (falls nicht angegeben, wird der Wert aus der Einstellung
VTP_ID_MANDANT der Properties-Datei verwendet)
EIGENTUMSNUMMER
Wert aus Element Geraet Attribut Eigentumsnr
Tabelle: IMP_ZVW_ZUORD_ZPT Spalte
Wert
IZVWGE_ID
IMP_ZVW_GERAETE.ID (automatisch vergeben)
VTP_ID_MANDANT
Wert aus Einstellung VTP_ID_MANDANT der Properties-Datei
ZPT_MET_CODE
Wert aus Element Sperrungen.Meteringcode
Wert aus Element Geraet.Von
VON
eCount- 00040355: Wenn das Von-Datum im GERAET
angegeben, dann wird dieses (inklusive dem Bis-Datum)
verwendet, anderenfalls werden das Von- und Bis-Datum des
ersten Zählwerkes verwendet.
Wert aus Element Geraet.Bis
BIS
eCount- 00040355: Wenn das Von-Datum im GERAET
angegeben, dann wird dieses (inklusive dem Bis-Datum)
verwendet, anderenfalls werden das Von- und Bis-Datum des
ersten Zählwerkes verwendet.
Zusatzgeräte:
Element Zusatzgeraet mit den Attributen ReferenzId und Eigentumsnr sowie den
Unterelementen Hersteller und Geraetenr werden in die folgenden 4 Import-Tabellen
übertragen.
Tabelle 11-16: Importtabellen Zusatzgeräte
Tabelle: IMP_ZVW_GERAETE Spalte
Wert
ZVGE_EXID
Wert aus Element Zusatzgeraet Attribut ReferenzId
IZVW_ID
IMP_ZVW.ID (automatisch vergeben)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 267 von 384
Tabelle: IMP_ZVW_GERAETE Spalte
Wert
VTP_ID_MANDANT
Wert aus Einstellung VTP_ID_MANDANT der Properties-Datei
ZVGE_HERSTELLER
Wert aus Element Zusatzgeraet.Hersteller
ZVGE_GERAETENUMMER
Wert aus Element Zusatzgeraet.Geraetenr
Tabelle:
Wert
IMP_ZVW_EIGENTUMSHIST - Spalte
IZVWGE_ID
IMP_ZVW_GERAETE.ID (ID des Zusatzgerätes, automatisch
vergeben)
VTP_ID_MANDANT
Wert aus Einstellung VTP_ID_MANDANT der Properties-Datei
VTP_EXID
Wert aus Einstellung VTP_ID_EIGENTUEMER der PropertiesDatei (falls nicht angegeben, wird der Wert aus der Einstellung
VTP_ID_MANDANT der Properties-Datei verwendet)
Wert aus Element Geraet.Von
VON
eCount- 00040355: Wenn das Von-Datum im GERAET
angegeben, dann wird dieses (inklusive dem Bis-Datum)
verwendet, anderenfalls werden das Von- und Bis-Datum des
ersten Zählwerkes verwendet.
Wert aus Element Geraet.Bis
BIS
eCount- 00040355: Wenn das Von-Datum im GERAET
angegeben, dann wird dieses (inklusive dem Bis-Datum)
verwendet, anderenfalls werden das Von- und Bis-Datum des
ersten Zählwerkes verwendet.
EIGENTUMSNUMMER
Wert aus Element Zusatzgeraet Attribut Eigentumsnr
Tabelle: IMP_ZVW_ZUORD_ZPT Spalte
Wert
IZVWGE_ID
IMP_ZVW_GERAETE.ID (ID des Zusatzgerätes, automatisch
vergeben)
ZPT_MET_CODE
Wert aus Element Geraet. Meteringcode
VTP_ID_MANDANT
Wert aus Einstellung VTP_ID_MANDANT der Properties-Datei
VON
Wert aus Element Geraet.Von
Seite 268 von 384
Tabelle: IMP_ZVW_ZUORD_ZPT Spalte
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Wert
eCount- 00040355: Wenn das Von-Datum im GERAET
angegeben, dann wird dieses (inklusive dem Bis-Datum)
verwendet, anderenfalls werden das Von- und Bis-Datum des
ersten Zählwerkes verwendet.
Wert aus Element Geraet.Bis
eCount- 00040355: Wenn das Von-Datum im GERAET
angegeben, dann wird dieses (inklusive dem Bis-Datum)
verwendet, anderenfalls werden das Von- und Bis-Datum des
ersten Zählwerkes verwendet.
BIS
Tabelle: IMP_ZVW_ZUORD_ZVGE Spalte
Wert
IZVWGE_ID
IMP_ZVW_GERAETE.ID (ID des Zusatzgerätes, automatisch
vergeben)
ZVGE_M_EXID
Element Geraet Attribut Id
Wert aus Element Geraet.Von
eCount- 00040355: Wenn das Von-Datum im GERAET
angegeben, dann wird dieses (inklusive dem Bis-Datum)
verwendet, anderenfalls werden das Von- und Bis-Datum des
ersten Zählwerkes verwendet.
VON
Wert aus Element Geraet.Bis
eCount- 00040355: Wenn das Von-Datum im GERAET
angegeben, dann wird dieses (inklusive dem Bis-Datum)
verwendet, anderenfalls werden das Von- und Bis-Datum des
ersten Zählwerkes verwendet.
BIS
11.16.3 EC-Format (eCount- 00052357)
XML-Struktur mit folgender DTD-Struktur (Document Type Definition).
<!ELEMENT ZVW (GERAETE*)>
<!ELEMENT GERAETE (GERAET*)>
<!ELEMENT GERAET (EIGENTUMSHISTORIEN, KOMPARAMETER*,
KOMROLLENPROFILE*, ZUORD_GERAETE*, (ZAEHLER?|KOMGERAET?)) >
<!ATTLIST GERAET
geraetetyp CDATA #IMPLIED>
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
<!ELEMENT EIGENTUMSHISTORIEN (EIGENTUMSHIST+)>
<!ELEMENT EIGENTUMSHIST EMPTY>
<!ATTLIST EIGENTUMSHIST
eigentumsnummer CDATA #REQUIRED>
<!ELEMENT ZAEHLER EMPTY>
<!ATTLIST ZAEHLER
ZAEHLERTYP CDATA #IMPLIED
freischaltung_push_flag CDATA #IMPLIED
messperiode CDATA #IMPLIED
server_id CDATA #IMPLIED>
<!ELEMENT ZUORD_GERAETE (ZUORD_GERAET+)>
<!ELEMENT ZUORD_GERAET EMPTY>
<!ATTLIST ZUORD_GERAET
kom_master CDATA #IMPLIED
von CDATA #IMPLIED
bis CDATA #IMPLIED>
<!ELEMENT KOMGERAET EMPTY>
<!ATTLIST KOMGERAET
server_id CDATA #IMPLIED>
<!ELEMENT KOMPARAMETER (KOMPARAM+)>
<!ELEMENT KOMPARAM EMPTY>
<!ATTLIST KOMPARAM
telefonnummer CDATA #IMPLIED
komschnittstelle CDATA #REQUIRED>
<!ELEMENT KOMROLLENPROFILE (KOMROLLENPROF+)>
<!ELEMENT KOMROLLENPROF EMPTY>
<!ATTLIST KOMROLLENPROF
Seite 269 von 384
Seite 270 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
nutzer CDATA #IMPLIED
passwort CDATA #IMPLIED
parametrierpasswort CDATA #IMPLIED>
11.16.4 INTERN_EXCEL-Format (eCount- 00053633)
Bildet als Excel-Datei die Import-Tabellen (IMP_ZVW*) ab. Damit ist es möglich, mittels MS Excel, alle
relevanten Daten zu übermitteln.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 271 von 384
12 Exportfilter
Für jedes Exportformat (Eintrag in der der Tabelle EXPORT_ECOUNT in der Spalte FORMAT) wird
während der Abarbeitung eine Lizenzprüfung durchgeführt. Die Lizenz für Exportformat beginnt
dabei immer mit E_ gefolgt vom Format (die Lizenz für EDI heißt also E_EDI).
Diese Filter liegen in der KomA im lib-Unterverzeichnis filter_export.
Die filterspezifische Konfiguration der Exportformate erfolgt über Properties-Dateien
<BASE>/config/export/<Format>.properties. In den Dateien wird dann über <key>=<value> die
Festlegung der Parameter durchgeführt.
Beispiel:
<BASE>/config/export/FFF.properties
Separator=,
12.1 Globale Export-Parameter
In diesem Kapitel sind Einstellmöglichkeiten erklärt, die für alle Export-Formate gültig sind.
12.1.1
ObisMapping
Die Funktionalität wird beim Abrufen der Daten von der KomA aus der Datenbank ausgeführt. Es ist
möglich, ein globales Mapping in der Config.properties zu hinterlegen. Dies ist sinnvoll, wenn
unterschiedliche Formate mit dem gleichen Mapping arbeiten sollen. Die Konfigurationen werden im
Abschnitt export angegeben:
Syntax: ObisMapping.<name>=<OBIS-Suche> ; <OBIS-Ersetzung>
Beispiel:
export.ObisMapping.a = 7-20:99.33.17 ; 7-1:33.2.71
export.ObisMapping.b1 = 7-20:99.36.17 ; 7-1:36.2.71
export.ObisMapping.b2 = 1-x:x.29.x*x ; 1-x:x.9.x*x
Hinweise:
Platzhalter, Beispiel: export.ObisMapping.G1 = 7-x:x.x.x ; 7-1:*.*.*
Links die Platzhalter (x) gelten als Joker-Suchkritierum, damit die Regel gefunden wird und die
rechten Platzhalter (*) gelten für die Übernahme der entsprechenden Felder aus der eingehenden
OBIS-Kennzahl. Basierend auf der Angabe trifft die Regel also für alle OBIS-Kennzahlen zu, die mit 7
(= Medium GAS) importiert werden. Für OBIS-Kennzahlen auf die die Regel zutrifft, wird jeder Kanal
auf 1 gesetzt, die Messgröße(n) und der Zeitbezug werden aus der eingehenden OBIS übernommen.
Die globalen Regeln können wiederum pro Format mit der Einstellung ObisMapping = N
deaktiviert bzw. durch eigene Regeln ersetzt werden.
Die Regeln werden nach Namen sortierter Reihenfolge abgearbeitet. Der Name der Regel ist der
letzte Bestandteil vor dem = (im Beispiel: a, b1, b2).
Seite 272 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Soll das Mapping nur für ein Format gelten, muss dies in der filterspezifischen Properties-Datei ohne das
Präfix export angegeben werden (z. B. für MSCONS in der Datei config/export/EDI.properties).
12.2 Abschlüsse CSV (Format ABSCSV)
Der Export der Abschlüsse per CSV wird intern als Format ABSCSV bezeichnet. Auf der KomA wird dieses
Format über das Modul filter_export/ecount_export_VERTRAG.jar realisiert. Die dazugehörige JavaKlasse ist hier de.robotron.ecount.exportcom.filter.VERTRAGHandler.
Export mit folgenden Kopfdaten:
KUNDENNAME;VERTRAGSTYP;VERTRAGSNUMMER;VON;BIS;METERINGCODE;OBIS;TYP;VO
N;BIS;TARIF;EDIS;TYP;STATUS;WERT;ZEITPUNKT
Sollten mehrere Tarife vorhanden sein, werden die Spalten EDIS;TYP;STATUS;WERT;ZEITPUNKT
wiederholt.
Tabelle 12-1: Parameter Abschlüsse CSV (Format ABSCSV)
Parameter/Beschreibung
Standardwert
EXPORT_OBIS
Y/N. Mittels EXPORT_OBIS=Y wird der Export der OBIS zwischen
Liniennamen und Typ aktiviert. Wird nur ausgewertet, wenn
EXPORT_OBIS_INSTEAD_LINIENNAME=N ist.
N
…METERINGCODE;LINIENNAME;OBIS;TYP;…
EXPORT_OBIS_INSTEAD_LINIENNAME
Y/N. Bei Y wird anstelle des Liniennamens die OBIS-Kennzahl exportiert:
N
…METERINGCODE;OBIS;TYP;….
ExportUnit
Y/N. Mit ExportUnit=Y wird zwischen Wert und Zeitpunkt zusätzlich noch
N
die Einheit ausgegeben:
… EDIS;TYP;STATUS;WERT;Einheit;ZEITPUNKT…
SHORT_OBIS
Früher wurde die OBIS für Energiewerte von ecount in Kurzform (z. B. 1.29.0)
geliefert. Mit Umstellung in eCount- 00050344 wird nun die Langform (z. B. 11:1.29.0) verwendet.
Ist dieser Parameter aktiviert, wird nach dem Zeichen : (Trennzeichen 2 N
ASCII 3A) geprüft. Ist das Zeichen vorhanden, wird das Trennzeichen inklusive
aller vorhergehenden Zeichen (Medium, Trennzeichen 1 - ASCII 2D, Kanal)
entfernt.
Es wird nicht garantiert, dass dieser Parameter bei zukünftigen
Änderungen Bestand hat. Der Parameter ist hier solange gültig, solange
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Seite 273 von 384
Standardwert
die OBIS nach der aktuellen Systematik (EDI@Energy OBIS-KennzahlenSystem, Stand: 12. Juni 2014, Version: 2.2b) gültig sind und auch in dieser
Form übergeben werden!
12.3 BELVIS (BELVIS CSV Lastgänge)
Pfad: filter_export/ecount_export_BELVIS.jar
BELVIS ist ein kundenspezifischer Exportfilter für Lastgänge im CSV-Format. Der Aufbau der CSV-Datei
enthält keine Kopfdaten, es werden sofort die Werte in folgender Form exportiert:
Zählpunktname;Tag (dd.MM.yyyy);Uhrzeit (HH:mm); Status;Wert;MEZ
Als Status wird für W-Werte 0, für E-Werte 1 und ansonsten 2 exportiert. Die Zeichenkette MEZ ist hart
hinterlegt.
12.4 CSV/XML (Format CSV)
Der Aufbau des Formates ist grob wie folgt definiert:
Abbildung 12-1: Aufbau Format CSV/XML
Gelb ist die Legende (alles was mit einer Raute # beginnt). Blau sind die Kopfdaten (basiert hier auf einer
Konfiguration mit Header1 und Header2), danach folgen die Lastgangdaten (Datum + Zeit, Wert).
Tabelle 12-2: Parameter CSV/XML (Format CSV)
Parameter/Beschreibung
csvSeparator
Trennzeichen für die CSV-Spalten
decimalSeparator
Dezimaltrennzeichen
Standardwert
;
,
Exportiere_Legende
Y/N. Bei Y wird bei nutzerspezifischen Kopfdaten (Nutzung von Header1, Header2, ...)
die Legende als Kopfzeile exportiert.
N
Seite 274 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Standardwert
SO_WI_03h
Y/N. Mit Parameter SO_WI_03h=Y werden Zeitstempel während der Umschaltstunde N
von Sommer auf Winter mit 03:00 statt 02:00 kodiert (Zeitstempel vor der
Umschaltung).
WI_SO_02h
Y/N. Mit Parameter WI_SO_02h=Y kann die Winter-Sommer-Umschaltstunde von
03:00 auf 02:00 geändert werden.
N
Anzahl_Nachkommastellen
Angabe der Nachkommastellen für die Werte. Dieser Parameter kann direkt im Abo
definiert werden.
Default "so viele wie möglich, so wenig wie nötig"
Trennzeichen_Zwischen_Datum_Zeit
Y/N. Bei Y werden Datum und Zeit durch ein Trennzeichen (;), bei N werden Datum
und Zeit durch ein Leerzeichen ( ) getrennt.
N
Dieser Parameter kann direkt im Abo definiert werden.
Exportiere_Kopfdaten
Y/N. Mit N kann die Ausgabe der Kopfdaten (der Header1 – Header6 - Angaben)
deaktiviert werden.
Y
Dieser Parameter kann direkt im Abo definiert werden.
Exportiere_Header
Y/N. Mit Y kann eine Kopfzeile in Form: „Datum/Zeit ZP-Bezeichnung-Linie1, ZPBezeichnung-Linie2...“ ausgegeben werden. Ist dieser Parameter aktiviert, werden
weder Exportiere_Kopfdaten noch Exportiere_Legende ausgewertet und N
auch nicht ausgegeben!
Im Datenversand ist die Formateigenschaft Exportiere_Header beim Format "CSV
mit Status" auswählbar.
Header1 bis Header9
Folgende Informationen können als Kopfdaten, über die in der Liste aufgeführten
Codes, extrahiert werden. Die Angabe erfolgt in Form „Headerx = Code Ausgabetest“.
-
MET_CODE (= Zählpunkt- Meteringcode)
OBIS_CODE (= Obis-Code)
UNIT (= Einheit)
KUNDE_NAME (=Name des Kunden)
LINE_WEB_DESC (= Linien-Webbezeichnung)
COUNT_POINT_WEB_DESC (= Zählpunkt-Webbezeichnung)
VOLT_ABNAHME_STELLE (Sucht nach einer Zuordnung des Zählpunkts zu
einem Dienstleistungsvertrag. Ist dieser gefunden, wird der Name des VTP2
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
-
und der Ort des Netzanschlusses über dem ZPT als Zeichenkette, mit Komma
getrennt, zurückgegeben.)
LINE_STATUS_DETAIL (Originalstatus des Wertes)
ZRD_ID (ID der Zeitreihendefinition)
Soll also nur der Meteringcode als Text „ZP-Meteringcode“ ausgegeben werden, ist
folgende Konfiguration notwendig:
Header1 = MET_CODE ZP-Meteringcode
Soll der Meteringcode (Text: Metcode), gefolgt von der Linien-Webbezeichnung (Text:
Linie) und der Einheit (Text: Einheit) ausgegeben werden, ist folgende Konfiguration
anzuwenden.
Header1 = MET_CODE Metcode
Header2 = LINE_WEB_DESC Linie
Header3 = UNIT Einheit
12.4.1
Beispiel: Metering-Code und OBIS als Kopfspalten mit Legende
Basierend auf folgender Konfiguration:
Header1 = MET_CODE Metering-Code
Header2 = OBIS_CODE OBIS-Code
Exportiere_Legende = Y
# Datum der Auswertung: 11.11.2014
# Zeitraum der Auswertung: 10.11.2014 - 11.11.2014
# Zählpunkte:
# ZP1 ZP1 1-1:1.9.0 Kundenname - (137121)
# ZP1 ZP1 1-1:3.9.0 Kundenname - (137121)
Metering-Code;ZP1;ZP1
OBIS-Code;1-1:1.9.0;1-1:3.9.0
10.11.2014 00:15;77,6;25,2
10.11.2014 00:30;81,6;26,8
12.4.2
Beispiel: Metering-Code und OBIS als Kopfspalten ohne Legende
Basierend auf folgender Konfiguration:
Header1 = MET_CODE Metering-Code
Header2 = OBIS_CODE OBIS-Code
Exportiere_Legende = N
Seite 275 von 384
Standardwert
Seite 276 von 384
Metering-Code;ZP1;ZP1
OBIS-Code;1-1:1.9.0;1-1:3.9.0
10.11.2014 00:15;77,6;25,2
10.11.2014 00:30;81,6;26,8
12.4.3
Beispiel: Trennzeichen_Zwischen_Datum_Zeit = Y
Basierend auf folgender Konfiguration:
Header1 = MET_CODE Metering-Code
Header2 = OBIS_CODE OBIS-Code
Exportiere_Legende = N
Trennzeichen_Zwischen_Datum_Zeit = Y
Metering-Code;ZP1;ZP1
OBIS-Code;1-1:1.9.0;1-1:3.9.0
10.11.2014;00:15;77,6;25,2
10.11.2014;00:30;81,6;26,8
12.4.4
Beispiel: Exportiere_Kopfdaten = Y
Basierend auf folgender Konfiguration:
Header1 = MET_CODE Metering-Code
Header2 = OBIS_CODE OBIS-Code
Exportiere_Kopfdaten = Y
Metering-Code;ZP1;ZP1
OBIS-Code;1-1:1.9.0;1-1:3.9.0
10.11.2014 00:15;77,6;25,2
10.11.2014 00:30;81,6;26,8
12.4.5
Beispiel: Exportiere_Kopfdaten = N
Basierend auf folgender Konfiguration:
Header1 = MET_CODE Metering-Code
Header2 = OBIS_CODE OBIS-Code
Exportiere_Kopfdaten = N
10.11.2014 00:15;77,6;25,2
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 277 von 384
10.11.2014 00:30;81,6;26,8
10.11.2014 00:45;135,2;29,6
10.11.2014 01:00;132;28
10.11.2014 01:15;122;28,8
12.4.6
Beispiel: Exportiere_Header = Y
Basierend auf folgender Konfiguration:
Header1 = MET_CODE Metering-Code
Header2 = OBIS_CODE OBIS-Code
Exportiere_Header = Y
Datum/Zeit;ZP1;ZP1
10.11.2014 00:15;77,6;25,2
10.11.2014 00:30;81,6;26,8
10.11.2014 00:45;135,2;29,6
Die Parameter Exportiere_Legende und Exportiere_Kopfdaten werden nicht
ausgewertet und auch nicht ausgegeben!
12.4.7
Beispiel: Header1 bis Header5
Basierend auf folgender Konfiguration:
Header1 = MET_CODE Metering-Code
Header2 = OBIS_CODE OBIS-Code
Header3 = UNIT Einheit
Header4 = KUNDE_NAME Kundenname
Header5 = LINE_WEB_DESC Linie
Exportiere_Header = Y
Exportiere_Legende = Y
# Datum der Auswertung: 11.11.2014
# Zeitraum der Auswertung: 10.11.2014 - 11.11.2014
# Zählpunkte:
# ZP1 ZP1 1-1:1.9.0 Kundenname - (137121)
# ZP1 ZP1 1-1:3.9.0 Kundenname - (137121)
Metering-Code;ZP1;ZP1
Seite 278 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
OBIS-Code;1-1:1.9.0;1-1:3.9.0
Einheit;kWh;kvarh
Kundenname;Kundenname - (137121);Kundenname - (137121)
Linie;1-1:1.9.0;1-1:3.9.0
10.11.2014 00:15;77,6;25,2
10.11.2014 00:30;81,6;26,8
10.11.2014 00:45;135,2;29,6
12.5 CSV2
Bei dem CSV2-Filter handelt es sich primär um einen konfigurierbaren CSV-Export des
robotron*EdifactKonverter, der aber auch in der KomA verwendet werden kann.
Tabelle 12-3: Formatspezifische Einstellungen CSV2
Parameter/Beschreibung
Default
ZST_SEKUNDAER_WERT
Y/N. Mit aktivierter Einstellung ist es möglich, Sekundärwerte der
Zählerstände zu verschicken (ähnlich dem Parameter
ZST_SEKUNDAERWERTE=J in der EDI.properties)
SEPARATOR
Trennzeichen in der CSV-Datei.
ENCODING
Zeichenkodierung für die zu erstellende Datei
12.6 CSV_MEMI2016_RV (Format CSV_MEMIRV)
MeMi Schnittstelle – Abo-Export in CSV-Format.
Das Format umfasst folgende Spalten:
•
•
•
•
•
•
•
•
•
•
•
1. Belegnummer (aus Abrechnungssystem)
2. Zählpunkt (Meteringcode)
3. Richtung
4. ANTW: Netzkonto Nummer
5. ANTW: MP-Id Lieferant (Antwort)
6. ANTW: MP-Id Netzbetreiber (Antwort)
7. ANTW: Flag Bilanzierung
8. ANTW: Bil-Zeitraum Von
9. ANTW: Bil-Zeitraum Bis
10. ANTW: BIL-Wert
11. ANTW: NN-Zeitraum von
N
;
ISO-8859-1
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
•
•
•
•
•
Seite 279 von 384
12. ANTW: NN-Zeitraum bis
13. ANTW: NN-Wert (Verbrauchswert tariflos)
14. ANTW: MMM-Wert
15. Storno
16. PLAUSI_ALOLISTE (Plausibilität Allokationslisten)
Die Von- und Bis-Spalten (8, 9, 11, 12) werden in den Format DD.MM.YYYY exportiert.
Die Spalten BIL-Wert und NN-Wert werden per Default wie folgt formatiert:
-
kein Tausendertrennzeichen
Komma als Dezimaltrennzeichen
maximal 3 Nachkommastellen, es wird kaufmännisch gerundet
Tabelle 12-4 Parameter für CSV_MEMIRV
Parameter/Beschreibung
decimalSeparator
Dezimaltrennzeichen
maxFractionDigits
Maximale Anzahl an Nachkommastellen
Default
,
3
12.7 CSV_MMM (CSV für Rahmenverträge)
Mit eCount- 00042647 wurde das Format "CSV für Rahmenverträge" erstellt, mit dem
Beispiel - Ausgabe:
# Mehrmindermengen
# Rahmenvertrag RV_XYT
# Vertrag von 01.10.2010
#;;;;;;Abrechnungszeitraum;;Bilanzierungszeitraum
Typ;Bezeichnung;MeteringCode;Verbrauch;Prognose;Mehrmindermenge;von;bis;von;bis;Belegnummer
NNA
Einzelwerte;Haush MFH.;DE00xx;18000;17701,054731;298,945269;01.01.2012;31.12.2012;01.01.2012;31.12.2012;
Einzelwerte;Gartenbau Allg;DE00xx;12000;11192,19362;807,80638;01.01.2012;31.12.2012;01.01.2012;31.12.2012;
Einzelwerte;Haush EFH Alt.;DE00xx;16000;15475,98412;524,01588;01.01.2012;31.12.2012;01.01.2012;31.12.2012;
Einzelwerte;Haush EFH Alt Rhzg. + WW.;DE00xx;20000;16164,967421;3835,032579;01.01.2012;31.12.2012;01.01.2012;31.12.2012;
Rahmenvertragssummen;;;66000;60534,199892;-5465,800108;01.01.2012;31.12.2012;;;
Seite 280 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
12.8 CSV_ROHDAT
Pfad:
filter_export/ecount_export_CSV_ROHDAT.jar
CSV-Exportformat für Zähler/Zählerwerte mit folgender Kopfzeile:
METERING_CODE;ZEITSTEMPEL_UTC;DRIFT_SEKUNDEN;EIGENTUMSNUMMER;IMPULSANZAHL;SEKUND
AERWERT;SEKUNDAERWERT_EINHEIT;SEKUNDAERWERT_KENNUNG;SEKUNDAERWERT_KENNUNG_ZFA;
KUMULATIV;ALLGEMEINE_KONSTANTE;IMPULSKONSTANTE;SPANNUNG_PRIM;SPANNUNG_SEK;STROM
_PRIM;STROM_SEK;IMPULSWERTIGKEIT_ZAEHLER;IMPULSWERTIGKEIT_NENNER;IMPULSWERTIGKEIT_E
INHEIT;PRIMAERWERT;PRIMAERWERT_EINHEIT;PRIMAERWERT_KENNUNG;PRIMAERWERT_KENNUNG_
ZFA;SEKUNDENINDEX;SIGNATUR;SKALIERUNGSFAKTOR
Ab Zeile 2 folgen die Daten, jeder Datensatz wird auf eine neue Zeile geschrieben.
Tabelle 12-5: Parameter CSV_ROHDAT
Parameter/Beschreibung
encoding
Bestimmung des Zeichensatzes für die zu exportierende Datei.
NUMBER_FORMAT
Es sollte folgendes Format verwendet werden: #######.0000
Default
ISO8859-1
0.0000
Vorlage
Mit der Einstellung VEM ist es möglich, den Export in ein anderes CSV-Format zu betreiben.
In diesem Modus werden auch die Parameter NUMBER_FORMAT und eHZ ausgewertet.
Mit Vorlage=VEM wird folgende Kopfzeile mit 14 Spalten generiert:
Ablesezeit;Wandlerfaktor;ZPB;1-0:0.0.0;1-0:1.8.0;1-0:1.8.1;10:1.8.2;7-0:0.0.0;7-0:3.1.0;6-0:0.0.0;6-0:1.0.0;8-0:0.0.0;80:1.0.0;1-0:2.8.0
eHZ
N
Y/N
12.9 CSV_ZST (CSV Zählerstandsversand)
Das im robotron*ecount auswählbare Format „CSV Zählerstände“ (KomA CSV_ZST) wird über die
Lizenz E_CSV_ZST bereitgestellt.
Ausgehend von der folgenden Beispiel-Konfiguration der Properties-Datei erfolgt die Ausgabe in
folgendem Format:
1. Zeile (Kopfzeile) mit folgenden Spalten:
Zählpunkt; Eigentumsnummer; OBIS-Kennzahl; Datum; Zählerstand;
Wandlerfaktor; Vorkommastellen; Nachkommastellen; Kennung; Einheit;
Ablesegrund; Erfassungsart; Anfang/Ende
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 281 von 384
Zeile 2 bis n jeweiligen Zählerstände (Beispiel 1 Datensatz)
DE00039676756S4785000008VERM09010; 24361927; 1-1:1.8.1; 18.03.2013;
44781; 1; 6; 1; W; kWh; ROM; Automatische Fernauslesung; Ende
12.9.1
Export-Attribute
Die nachfolgende Tabelle beschreibt die möglichen Attribute die exportiert werden können.
Tabelle 12-6: Export-Attribute für CSV_ZST (CSV Zählerstandsversand)
Variablenbezeichnung
Beschreibung
ABLESEGRUND
Der Ablesegrund des Zählerstandes oder des Verbrauchs
ABLESUNG_ANFANG_ENDE
Beginn/Ende des Zählerstandes
EIGENTUMSNR
Eigentumsnummer bei Verbrauch
EINHEIT
Einheit, Default: kW
ERFASSUNGSART
Erfassungsart (Zählerstand oder Verbrauch)
MET_CODE
MeteringCode des Zählpunktes
NACHKOMMASTELLEN
Nachkommastellen des Zählwerks
VORKOMMASTELLEN
Vorkommastellen des Zählwerks
OBIS_CODE
OBIS-Code des Zählerstandes
STATUS
Zählerstandskennung
WANDLERFAKTOR
Wandlerfaktor
BRENNWERT
Brennwert
Z_ZAHL
Zustands-Zahl
ZAEHLWERKSKENNZEICHEN
Kennzeichen des Zählwerkes
SCHWACHLASTKENNZEICHEN
Schwachlastkennzeichen
12.9.2
Beispiel-Konfiguration (Properties-Datei auf dem KomA)
HandlerClass = de.robotron.ecount.exportcom.filter.CSV2Handler
CalculateFilename = E
ENCODING = ISO-8859-1
Seite 282 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
TYPE = ZST
SEPARATOR = ;
DATE_FORMAT = dd.MM.yyyy
TIME = "00:00"
NUMBER_FORMAT = #####0.###
NUMBER_FORMAT.DECIMAL_SEPARATOR = ,
NUMBER_FORMAT.GROUPING_SEPARATOR = .
ZST_SEKUNDAER_WERT = Y
VALUE_FIELD_DIMENSION = {0,1}
EXPORT.VALUE_AT(1,1) = Zählpunkt
MET_CODE = cellValue(1,n)
EXPORT.VALUE_AT(2,1) = Eigentumsnummer
EIGENTUMSNR =
cellValue(2,n)
EXPORT.VALUE_AT(3,1) = OBIS-Kennzahl
OBIS_CODE =
cellValue(3,n)
EXPORT.VALUE_AT(4,1) = Datum
DATE =
cellValue(4,n)
EXPORT.VALUE_AT(5,1) = Zählerstand
FIRST_VALUE_FIELD =
cellValue(5,2)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 283 von 384
EXPORT.VALUE_AT(6,1) = Wandlerfaktor
WANDLERFAKTOR =
cellValue(6,n)
EXPORT.VALUE_AT(7,1) = Vorkommastellen
VORKOMMASTELLEN =
cellValue(7,n)
EXPORT.VALUE_AT(8,1) = Nachkommastellen
NACHKOMMASTELLEN =
cellValue(8,n)
EXPORT.VALUE_AT(9,1) = Kennung
STATUS = cellValue(9,n)
EXPORT.VALUE_AT(10,1) = Einheit
EINHEIT =
cellValue(10,n)
EXPORT.VALUE_AT(11,1) = Ablesegrund
ABLESEGRUND = decode(cellValue(11,n), "", ("", ""), ("COM", "COM"),
("COS", "COS"), ("COT", "COT"), ("", ""), ("Gerätewechsel", "COM"),
("Lieferantenwechsel", "COS"), ("Tarifwechsel", "COT"))
EXPORT.VALUE_AT(12,1) = Erfassungsart
ERFASSUNGSART = decode(cellValue(12,n), "", ("", ""), ("AMR", "AMR"),
("MMR", "MMR"), ("CMR", "CMR"), ("Automatische Fernauslesung", "AMR"),
("Ablesung durch Netzbetreiber", "MMR"), ("Kundenselbstablesung",
"CMR"))
EXPORT.VALUE_AT(13,1) = Anfang/Ende
ABLESUNG_ANFANG_ENDE = decode(cellValue(13,n), "?", ("", ""),
("Anfang", "A"), ("Ende", "E"))
Seite 284 von 384
12.9.3
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Beispiel zusätzliche Ausgabe von Schwachlast und Zählwerkskennzeichen
in config/export/CSV_ZST.properties sind beispielsweise folgende Zeilen zu ergänzen (basiert auf dem
ersten Beispiel, der nächste Spalten-Index lautet also 14):
EXPORT.VALUE_AT(14,1) = Zählwerkskennzeichen
ZAEHLWERKSKENNZEICHEN = cellValue(14,n)
EXPORT.VALUE_AT(15,1) = Schwachlastkennzeichen
SCHWACHLASTKENNZEICHEN = cellValue(15,n)
12.10 DATENREBAP
DATENREBAP ist ein Exportfilter für Lastgangdaten im CSV-Format (kundenspezifische Entwicklung).
Pfad:
filter_export/ecount_export_DATENREBAP.jar
Tabelle 12-7:Parameter für DATENREBAP
Parameter/Beschreibung
Standardwert
FILTER_DATA_SOURCE
Mit der Einstellung kann zwischen DATENREBAP und DATENOC umgeschaltet
werden. Dies hat Einfluss auf die Auswertung von Liniendetails.
DATENREBAP
Bei DATENREBAP wird EXPORT_BEZEICHNUNG_REBAP, ansonsten
EXPORT_BEZEICHNUNG_OC für die Linienbezeichnung ausgewertet.
csvSeparator
Spalten-Trennzeichen für die Ausgabedatei
decimalSeparator
Dezimaltrennzeichen
DATE_FORMAT
Formatierung der Datumswerte in der Ausgabedatei
Encoding
Zeichenkodierung für die Ausgabedatei
12.11 EDIS_INVC
Exportfilter für INVOIC im CSV-Format an IS/U (kundenspezifische Entwicklung).
;
,
dd.MM.yyyy
HH:mm
ISO-8859-1
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 285 von 384
Die CSV-Datei besteht aus 3 Kopfzeilen. In der ersten Zeile steht Sender;Empfänger in der zweiten
Zeile die ID des Senders und des Empfängers. In der 3. Zeile werden 26 Spalten mit folgender
Reihenfolge/Ausprägung ausgegeben, darunter folgen dann die eigentlichen Daten:
Zählpunkt, Name, Strasse, Hausnr ,Hausnrerg, PLZ, Ort, Nachrichtentyp,
Stornierung, Rechnungsdatum, Fälligkeitsdatum, Abrechnungszeitraumvon,
Abrechnungszeitraumbis, Nachrichtennr, Rechnungstyp,
Originalrechnungsnr, Originalrechnungsdatum, Rechnungswährung,
Kundennummer, Netto, NettoSteuerfrei, Gesamtsteuerbetrag,
Rechnungsbetrag, VorausbezahlterBetrag, VorausbezahlterSteuern,
fälligerBetrag
12.12 EEX (European Energy Exchange Excel)
Es geht um Excel-Dateien von EEX mit den Tabellenblättern PRICES und VOLUMES.
Die Abarbeitungsreihenfolge im Excel-Sheet erfolgt nach dem Bottom-Up-Prinzip, d.h. die Abarbeitung
beginnt mit der letzten Zeile im Sheet.
Tabelle 12-8: Formatspezifische Einstellungen EEX
Parameter/Beschreibung
Standardwert
PRICES_BREAK_BY_ROW_COUNT
Möglichkeit zur Definition der Anzahl der zu importierenden Zeilen für das Excel-Sheet
PRICES
VOLUMES_BREAK_BY_ROW_COUNT
Möglichkeit zur Definition der Anzahl der zu importierenden Zeilen für das Excel-Sheet
VOLUMES
BOTTOM_UP
Die Abarbeitungsreihenfolge im Excel-Sheet erfolgt nach dem Bottom-Up-Prinzip, d.h.
Y
die Abarbeitung beginnt mit der letzten Zeile im Sheet. Mit dem Parameter
BOTTOM_UP=N kann die Reihenfolge für PRICES_BREAK_BY_ROW_COUNT und
VOLUMES_BREAK_BY_ROW_COUNT nach dem TOP-Down-Prinzip verändert werden.
valuesFlag
Status des Wertes beim Import nach ecount
unit.prices
Einheit beim Import für das Sheet PRICES
unit.volumes
Einheit beim Import für das Sheet VOLUMES
Beispiel:
W
EUR/MWh
MWh
Seite 286 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
VOLUMES_BREAK_BY_ROW_COUNT=1
Nur der Wert für den 01.01.2012 würde importiert werden.
Beispiel:
VOLUMES_BREAK_BY_ROW_COUNT=1
BOTTOM_UP=N
Nur der Wert für den 13.09.2012 würde importiert werden.
Beispiel:
VOLUMES_BREAK_BY_ROW_COUNT=5
BOTTOM_UP=N
Die Werte vom 13.09. bis 09.09. würden importiert werden.
12.13 ESS-XML-Fahrpläne (ETSO Scheduling System)
ETSO Scheduling System = standardisiertes Fahrplanaustausch-Format
Pfad: filter_export/ecount_export_ESS.jar
Tabelle 12-9: Formatspezifische Einstellungen ESS
Parameter/Beschreibung
Standardwert
StatusRequestVersion
1
Version des Statusrequests, aktuell nur 1 und 2 unterstützt. Wird nur ausgewertet bei
der Abo-Art „SR“
StatusRequestRelease
Version für DtdRelease, z. B. im XML-Element <StatusRequestDocument>
0
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 287 von 384
Parameter/Beschreibung
Standardwert
STYLECHEET_STATUS_REQUEST
Der href-Wert für das xml-stylesheet-Element
StatusRequestDTD
Standardwert:
Bei StatusRequest 1: ../scheduleV2r3/dtd/request-xml.dtd
Bei StatusRequest 2: wird aktuell keine DTD-Information exportiert
StatusRequestStylesheet
Bei StatusRequest 2:
../statusrequestv2r0/stylesheet/request-xsl.xsl
Kein Standardwert für StatusRequest 1
12.14 Excel-Reports (XLS_REP)
KomA-JAR:
ecount_export_XLS_REP.jar
Dieser Filter übernimmt die Verarbeitung der Excel-Reports auf die KomA (siehe 14).
12.15 EXP/XML (Format EXP)
Export von Verrechnungsdaten aus der Görlitz-ZFA.
12.16 Fröschl Flat File (Format FFF)
Formatspezifische Einstellungen.
Tabelle 12-10: Formatspezifische Einstellungen FFF
Parameter/Beschreibung
Separator
Legt das Trennzeichen zwischen den einzelnen Elementen fest
UsePadding
Definiert, dass alle Attribute bis zur maximalen Länge mit Leerzeichen aufgefüllt werden
Default
;
0
12.17 GAS-XML (Format GASX)
Pfad: filter_export/ecount_export_GASX.jar
Mit Version 4.0.2.14 (eCount- 00034137) unterstützt der Filter die Zählpunkt- und Linien-Platzhalter für
Dateinamen.
Seite 288 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
12.18 INVCC
Pfad: filter_export/ecount_export_INVCC.jar
Hierbei handelt es sich um ein Robotron INVOIC-CSV-Format.
Mit eCount- 00052653 wurden Änderungen im Format vorgenommen die nicht mehr 100%
identisch zur Vorversion sind. Der hier beschriebene Aufbau entspricht der neuen Fassung aus
eCount- 00052653.
Der Aufbau der Datei ist wie folgt:
1. Zeile: Kopfdaten der Datei mit folgenden Spalten:
* Ziel-Dateiname;Absender-ID;Absender-ID-Typ;Empfänger-ID;Empfänger-ID-Typ;UNB-Referenz;UNBZeitstempel
Spalte
Beschreibung
Ziel-Dateiname
Dateiname
Absender-ID
ID des Absenders
Absender-ID-Typ
Typ (ILN, VDEW, DVGW, EDIGAS)
Empfänger-ID
ID des Empfängers
Empfänger-ID-Typ
Typ (ILN, VDEW, DVGW, EDIGAS)
UNB-Referenz
UNB.0020
UNB-Zeitstempel
UNB.S004
2. Zeile: die entsprechenden Werte
3. Zeile – Kopfdaten für die INVOIC-Nachricht mit folgenden Spalten:
INVOIC-Version;Nachrichten-ID;Rechnungstyp;Rechnungsfunktion;Datum;Beginn
Abrechnungszeitraum;Ende Abrechnungszeitraum;Abrechnungsart;Rech-Nr Orig;Rech-Dat
Orig;Währung;Fällig;Steuerpfl.Betrag;Summe Ust.-frei;Steuern ges.;Rech-Betr. incl. Steuern;VorausBetrag incl. Steuern;Voraus-Steuern;Fälliger Betrag incl. Steuern;Buchungsdatum
Spalte
Beschreibung
INVOIC-Version
UNH.DE0057
Nachrichten-ID
BGM.DE1004
Rechnungstyp
BGM.DE1001
Rechnungsfunktion
BGM.DE1225
Datum
DTM+137
Beginn Abrechnungszeitraum
DTM+155
Ende Abrechnungszeitraum
DTM+156
Abrechnungsart
IMD.DE7081
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 289 von 384
Rech-Nr Orig
SG1.RFF+OI
Rech-Dat Orig
SG1.DTM+171
Währung
SG7.CUX+2
Fällig
SG8.PYT-DTM+265
Steuerpfl.Betrag
SG50.MOA+125
Summe Ust.-frei
SG50.MOA+389
Steuern ges.
SG50.MOA+176
Rech-Betr. incl. Steuern
SG50.MOA+77
Voraus-Betrag incl. Steuern
SG50.MOA+113
Voraus-Steuern
SG50.MOA+115
Fälliger Betrag incl. Steuern
SG50.MOA+9
Buchungsdatum
DTM+9
4. Zeile: die entsprechenden Werte
5. Zeile: Kopfzeile für den Absender mit folgenden Spalten:
* Absender-ID;ID-Typ;Name;Name2;Straße, Hausnummer;Str/Hnr2;Str/Hnr3;Str/Hnr4;Ort;PLZ;Land;UstNr.;Steuer-Nummer;Anwend-Ref.;Zus. Partner-ID;Ansprechpartner;Ansp. Email;Ansp. Tel.;Ansp.
Fax;Ansp. 2. Telefon;Ansp. Mobil
Spalte
Beschreibung
Absender-ID
SG2.NAD.MS.DE3039
ID-Typ
SG2.NAD.MS.DE3055
Name
SG2.NAD.MS.DE3036(1+2)
Name2
SG2.NAD.MS.DE3036(3+4)
Typ
SG2.NAD.MS.C080.3045
Straße Hausnummer
SG2.NAD.MS.DE3042(1)
Str/Hnr2
SG2.NAD.MS.DE3042(2)
Str/Hnr3
SG2.NAD.MS.DE3042(3)
Str/Hnr4
SG2.NAD.MS.DE3042(4)
Ort
SG2.NAD.MS.DE3164"
PLZ
SG2.NAD.MS.DE3251
Land
SG2.NAD.MS.DE3207
Ust-Nr.
SG3.MS.RFF+VA
Steuer-Nummer
SG3.MS.RFF+FC
Anwend-Ref.
SG3.MS.RFF+AGK
Zus. Partner-ID
SG3.MS.RFF+API
Ansprechpartner
SG5.CTA.DE.3412
Ansp. Email
SG5.COM+EM
Seite 290 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Spalte
Beschreibung
Ansp. Tel.
SG5.COM+TE
Ansp. Fax
SG5.COM+FX
Ansp. 2. Telefon
SG5.COM+AJ
Ansp. Mobil
SG5.COM+AL
6. Zeile: die entsprechenden Werte
7. Zeile: Kopfzeile für den Empfänger mit folgenden Spalten:
* Empfänger-ID;ID-Typ;Name;Name2;Straße,
Hausnummer;Str/Hnr2;Str/Hnr3;Str/Hnr4;Ort;PLZ;Land;Ust-Nr.;Steuer-Nummer;Anwend-Ref.;Zus.
Partner-ID
Spalte
Beschreibung
Empfänger-ID
SG2.NAD.MR.DE3039
ID-Typ
SG2.NAD.MR.DE3055
Name
SG2.NAD.MR.DE3036(1+2)
Name2
SG2.NAD.MR.DE3036(3+4)
Typ
SG2.NAD.MR.C080.3045
Straße Hausnummer
SG2.NAD.MR.DE3042(1)
Str/Hnr2
SG2.NAD.MR.DE3042(2)
Str/Hnr3
SG2.NAD.MR.DE3042(3)
Str/Hnr4
SG2.NAD.MR.DE3042(4)
Ort
SG2.NAD.MR.DE3164
PLZ
SG2.NAD.MR.DE3251
Land
SG2.NAD.MR.DE3207
Ust-Nr.
SG3.MR.RFF+VA
Steuer-Nummer
SG3.MR.RFF+FC
Anwend-Ref.
SG3.MR.RFF+AGK
Zus. Partner-ID
SG3.MR.RFF+API
8. Zeile: die entsprechenden Werte
9. Zeile: Kopfzeile für die Lieferanschrift mit folgenden Spalten:
Lieferanschrift-Name;Lieferanschrift-Name2;Straße,
Hausnummer;Str/Hnr2;Str/Hnr3;Str/Hnr4;Ort;PLZ;Land;Zählpunkt;Int. Kundennummer;AnwendRef.;Zus. Partner-ID
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 291 von 384
Spalte
Beschreibung
Lieferanschrift-Name
SG2.NAD.DP.DE3036(1+2)
Lieferanschrift-Name2
SG2.NAD.DP.DE3036(3+4)
Typ
SG2.NAD.DP.C080.3045
Straße, Hausnummer
SG2.NAD.DP.DE3042(1)
Str/Hnr2
SG2.NAD.DP.DE3042(2)
Str/Hnr3
SG2.NAD.DP.DE3042(3)
Str/Hnr4
SG2.NAD.DP.DE3042(4)
Ort
SG2.NAD.DP.DE3164
PLZ
SG2.NAD.DP.DE3251
Land
SG2.NAD.DP.DE3207
Zählpunkt
SG2.LOC+172
Int. Kundennummer
SG3.DP.RFF+IT
Anwend-Ref.
SG3.DP.RFF+AGK
Zus. Partner-ID
SG3.DP.RFF+API
10. Zeile: die entsprechenden Werte
11. Zeile: Kopfzeile für die Rechnungspositionen mit folgenden Spalten:
* Rechnungsposition;Produkt-Nummer;Produkt-Nummer-Typ;Menge;Einheit;Beginn
Abrechnungszeitraum;Ende Abrechnungszeitraum;Positionsbetrag;Berechnungspreis;Berechnungspreis
Qualifier;Zählernummer;Steuersatz;Menge 2;Einheit
2;Gemeinderabatt;Umspannungszuschlag;BetriebsmittelZuschlag;Rabatt;Gesamt-Zuschlag/-Abschlag
Spalte
Beschreibung
Rechnungsposition
SG26.LIN.DE1082
Produkt-Nummer
SG26.LIN.DE7140
Produkt-Nummer-Typ
SG26.LIN.DE3055
Menge
SG26.QTY+47.DE6060 (wenn nicht vorhanden
dann SG26.QTY+136.DE6060)
Einheit
SG26.QTY+47.DE6411 (oder
SG26.QTY+136.DE6411)
Beginn Abrechnungszeitraum
SG26.DTM+155
Ende Abrechnungszeitraum
SG26.DTM+156
Positionsbetrag
SG26.MOA+203.DE5004
Berechnungspreis
SG29.PRI+CAL.DE5118
Berechnungspreis Qualifier
SG29.PRI+CAL.DE6411
Zählernummer
SG30.RFF+MG
Seite 292 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Spalte
Beschreibung
Steuersatz
SG34.TAX+7+VAT.DE5278
Menge 2
SG26.QTY+136.DE6060
Einheit 2
SG26.QTY+136.DE6411
Gemeinderabatt
SG39.ALC+A+Z01
Umspannungszuschlag
SG39.ALC+C+Z02
BetriebsmittelZuschlag
SG39.ALC+C+Z03
Rabatt
SG39.ALC+A+Z04
Gesamt-Zuschlag/-Abschlag
SG27.MOA+131.DE5004
Ab den dann folgenden Zeilen Ausgabe der Position, pro Position eine Zeile
12.19 KISS
Fahrplanformat im KISS-Format - Excel Tabelle mit 15min Lastgängen.
Tabelle 12-11:Parameter für KISS
Parameter/Beschreibung
Standardwert
XLSX
Y/N. Mit N kann die Generierung der Ausgabedatei im XLSX-Format aktiviert werden,
Default ist XLS.
N
12.20 Abschlüsse KVASY (Format KVASY)
CSV-Export von Abschlüssen mit folgender Dateistruktur:
•
•
•
•
Zählpunktbezeichnung
OBIS
Zählerstand (entspricht im kvasy bei den Lastgangzählern der Menge der Abschlussperiode)
Ablesedatum (letzter Tag der Abschlussperiode, für Juli also der 31.07.2007)
Formatspezifische Einstellungen
Tabelle 12-12 Parameter für Exportformat KVASY
Parameter/Beschreibung
SEPARATOR
Trennzeichen in der CSV-Datei
DEZIMALTRENNER
Dezimaltrennzeichen
Standardwert
;
.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 293 von 384
Parameter/Beschreibung
Standardwert
encoding
Kodierung der Datei, z.B. „ISO_8859_1“
DEZIMALSTELLEN
Anzahl der Dezimalstellen
OBIS_DEC
Der mit DEZIMALSTELLEN gesetzte Wert kann pro OBIS-Kennzahl mit einer individuellen
Einstellung OBIS_DEC.[OBIS] übersteuert werden. Existiert ein Wert in OBIS_MAP so
wird der gemappte Wert auf diese Einstellung angewandt!
OBIS_MAP
Mapping der OBIS-Kennzahl im Filter.
z.B. OBIS_MAP.1-1:1.6.0 = 1-1.6.1
OBIS_IGNORIER
OBIS-Kennzahlen die nicht exportiert werden sollen. Prüfung erfolgt auf die OriginalOBIS aus dem ecount (nicht auf die gemappte OBIS)
12.21 LPEX/XML (Format LPEX)
HandlerClass: de.robotron.ecount.exportcom.filter.LPEXHandler
Pfad: filter_export/ecount_export_LPEX.jar
Lizenz: E_LPEX
Tabelle 12-13: Formatspezifische Einstellungen LPEX
Parameter/Beschreibung
DecimalSeparator
Legt das Dezimaltrennzeichen innerhalb von Messwerten fest
Linebreak
Legt die Behandlung von Zeilenumbrüchen fest – voreingestellt ist DOS, d.h. 0Dh 0Ah.
Andere Einstellungen, wie UNIX, bewirken nur 0Dh als Zeilenumbruch.
IGNORE_STATUS
Mit eCount- 00045240 können für LPEX auch Einzelwerte exportiert werden. Dabei
werden alle Werte ignoriert, die nicht den zu exportierenden Status, der über den
Exportparameter IGNORE_STATUS mitgeteilt wird, ausgegeben.
Beispiel: IGNORE_STATUS = N,?
Alle Werte mit dem Status N oder ? werden beim Export ignoriert.
Standardwert
, (KOMMA)
Seite 294 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Parameter/Beschreibung
Standardwert
IsLPEX2
Y/N. Mit dieser Einstellung kann zwischen LPEX-Version 1 und 2 gewechselt werden. Bei
Version 2 werden unter anderem zwei Kopfdaten ausgegeben, deren Aufbau ist wie
folgt:
1 Kopfzeile:
N
LPEX V2.0
2. Kopfzeile:
Datum;Zeit;Kundennummer;Kundenname;eindeutigeKDNr;GEId;GEKANr;KALINr;Linie;ei
ndeutigeLINr;ZPB;Kennzahl;Einheit;Wandlerfaktor;MPDauer;Werte
12.22 MMMKVASY (MEMI_SST_KVASY)
HandlerClass: de.robotron.ecount.exportcom.filter.MMMKVASYHandler
Pfad: filter_export/ecount_export_MMMKVASY.jar
Lizenz: E_MMMKVASY
Export von Mehr-Minder-Mengen im CSV-Format. Folgende Spalten (nicht als Kopf in der Datei
enthalten) werden ausgegeben.
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Lieferant (ENERGIEDATEN.RVPI_WERT_LIEF)
Netzbetreiber (ENERGIEDATEN.RVPI_WERT_VNB)
ZP-Bezeichnung (ENERGIEDATEN.METERINGCODE)
Richtung (ENERGIEDATEN.RKAT_ID)
Netzkonto (ENERGIEDATEN.BILG_EIC)
Bilanziert ab (BIL_VON)
Bilanziert bis (BIL_BIS)
Bilanzierungsmenge (PROG)
Bilanzierungsflag (BILANZIERT)
Netznutzung ab (Att_VON)
Netznutzung bis (Att_BIS)
Netznutzungsmenge (Att_VBR)
Mehr-/Mindermenge (Att_MMM)
Storno (STORNO)
MSCONS-Ref (REFERENZ)
MSCONS Versand
Belegnummer (ABL_BELEG)
Tabelle 12-14 Formatspezifische Einstellungen MMMKVASY
Parameter/Beschreibung
decimalSeparator
Legt das Dezimaltrennzeichen fest.
Standardwert
, (KOMMA)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 295 von 384
12.23 OBM_VD_CSV
Bei dem Format OBM_VD_CSV handelt es sich um einen kundenspezifischen CSV-Export von
Verrechnungsdaten zu OBM.
Die Kopfzeile setzt sich aus folgenden Spalten zusammen:
-
UTC-Zeitstempel des Ablesevorganges
OSM-/Zählerkennung (alphanumerisch möglich) (0-0:96.1.0)
Beginn des Ladevorgangs (UTC)
Einheit (Zählerstand zu Beginn des Ladevorgangs)
Zählerstand zu Beginn des Ladevorgangs
Ende des Ladevorgangs (UTC)
Einheit (Zählerstand zum Ende des Ladevorgangs)
Zählerstand zum Ende des Ladevorgangs
Lieferanten-Kennung (alphanumerisch möglich) (1-0:0.0.3)
Systemsteckdosen-Kennung (alphanumerisch möglich) (1-0:0.0.4)
Systemsteckdosen-Ladevorgangszähler (1-0:0.0.5)
Signatur Ladelastgangdatensatz (1-0:0.0.6)
Signatur Zählerstandsdatensatz (1-0:0.0.7)
OSM-Ladevorgangszähler (1-0:0.0.8)
Statuswort / Fehlercode (1-0:96.5.5)
12.24 Reports (Format REPORT)
Im System robotron*ecount können nutzerspezifische Reports (ecount: Reports > Benutzerreports)
erzeugt werden. Diese werden über de.robotron.ecount.exportcom.filter.ReportHandler abgearbeitet.
Tabelle 12-15 Formatspezifische Einstellungen REPORT
Parameter/Beschreibung
EXPORT_COLUMN_HEADER
Y/N (Default Y). Damit kann der Export der Kopfspalte, bei der alle im SQL enthaltenen
Spaltennamen exportiert wird, deaktiviert werden.
useSecuredEcountLogon
Y/N (Default N). Ist diese Einstellung aktiviert wird folgende Funktion aufgerufen
ec_sys.pkg_db_security_logon.set_role. Über diese Funktion soll sichergestellt werden,
dass der Nutzer keiner Möglichkeit hat DB-Objekte zu lesen oder zu ändern.
Die Formatierung von Zahlen ist ein oft gebrauchtes Feature. Dabei stehen folgende Parameter zur
Verfügung (Report.properties unter config/export):
-
numberFormat (Zeichenkette Formatierungszeichen)
decimalSeparator (Dezimaltrennzeichen, genau 1 Zeichen)
groupSeparator (Gruppierungszeichen, genau 1 Zeichen)
enable_groupSeparator (Y/N, Default ist Y)
Seite 296 von 384
Beispiele:
Formatierung für Schweizer Kunden (Wert 12345678,90):
numberFormat=###,###.###
decimalSeparator=.
groupSeparator='
Ergebnis: 12‘345‘678.90
Beispielwert: 25599,85 und 0,75
Beispiel 1:
numberFormat = system
Ergebnis: 25.599,85 und 0,75
Beispiel 2:
numberFormat = #,###,##0.00
Ergebnis: 25.599,85 und 0,75
Beispiel 3:
numberFormat = #0.00
Ergebnis: 25599,85 und 0,75
Beispiel 4:
numberFormat = #.00
Ergebnis: 25599,85 und ,75
Beispiel 5:
numberFormat = system
enable_groupSeparator = N
Ergebnis: 25599,85 und 0,75
Beispiel 6:
numberFormat = #.00000
Ergebnis: 25599,85000 und ,75000
Beispiel 7:
numberFormat = #.#
decimalSeparator = .
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 297 von 384
Ergebnis: 25599.8 und 0.8
Legende:
, -> Grouping separator
# -> Digit, zero shows as absent
0 -> Digit
. -> Decimal separator or monetary decimal separator
numberFormat "system" -> 0.##########
12.25 SAPEDM
HandlerClass: de.robotron.ecount.exportcom.filter.SAPEDMHandler
Pfad: filter_export/ ecount_export_SAPEDM.jar
Lizenz: E_SAPEDM
Kundenspezifisches CSV-Format:
<Zählpunkt>;<Datum>;<OBIS>;<Periode>;<Abweichung zur
UTC>;<Umstellungskennzeichen>;<Wert1>;…<Wertn>
Tabelle 12-16: Formatspezifische Einstellungen SAPEDM
Parameter/Beschreibung
InsertCR
Y/N (Default N). In Kombination mit InsertLF nutzbar. Mit Y wird für den Zeilenumbruch
ein Wagenrücklauf (engl. carriage return, kurz CR, hexadezimal 0D) hinzugefügt.
InsertLF
Y/N (Default N). In Kombination mit InsertCR nutzbar. Mit Y wird für den Zeilenumbruch
ein Zeilenvorschub (englisch line feed, kurz LF, hexadezimal 0A) hinzugefügt.
CorrectOBIS
Y/N (Default N). Wandelt in der OBIS die Zeichenkette „.9.0“ nach „.9.1“.
AnzahlNachkommastellen
Anzahl der maximalen Nachkommastellen für den Dezimalbereich, es wird
kaufmännisch gerundet.
Default: 3
DUPLICATE_LINE_CHECK
Y/N (Default N). Mit Y werden doppelte Linien (unter einem Zählpunkt) ignoriert. Die
Identifizierung findet über die LINIEN_ID statt.
Seite 298 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
12.25.1 Zeilenumbruch
Windows (CR LF)
InsertCR=Y
InsertLF=Y
Linux (LF)
InsertCR=N
InsertLF=Y
Max (CR)
InsertCR=Y
InsertLF=N
12.26 STD_XML
HandlerClass: de.robotron.ecount.exportcom.filter.STD_XMLHandler
Pfad: filter_export/ecount_export_STD_XML.jar
Die Beschreibung der XML-Struktur ist unter export\STD_XML in Anlage 4 zu finden.
Der Exportfilter unterstützt folgende 3 Ausprägungen an Export-Abos:
-
Verrechnungsdaten
Lastgänge
Zählerstände/Verbräuche.
12.26.1 Zusammenspiel Abo – Export-Tabelle – XML-Output
Tabelle 12-17: Abo – Export-Tabelle – XML-Output
Abo
Export-Tabelle
XML-Element
Verrechnungsdaten
EXPORT_ABLESUNG
METER_READING
Lastgang
EXPORT_TAGESLASTPROFILE
VALUES
EXPORT_VERBRAUCHSDATEN,
CONSUMPTION_DATA und
METER_STATUS
EXPORT_VERTRAEGE
CONTRACT
Zählerstände/Verbräuche
12.26.2 Konfigurationsparameter
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 299 von 384
Tabelle 12-18: Konfigurationsparameter für STD_XML
Parameter/Beschreibung
Standardwert
Typ
DATE_FORMAT
dd.MM.yyyy
HH:mm:ss
String
. (PUNKT)
String
UTF-8
String
Ausgabeformatierung der Zeitstempel
DecimalSeparator
Dezimaltrennzeichen
ENCODING
XML-Datei-Encoding, nur auf der KomA nicht pro Abo
definierbar, Standardwert sollte in den meisten Fällen passen
FILE_EXTENSION_XSLT
String
Spezifiziert eine Dateierweiterung bei der Nutzung von XSLT. Es
ist beispielsweise möglich, per Transformation die XML-Datei
nach CSV zu konvertieren. Dann kann die Dateierweiterung csv
hier übermittelt werden, ohne den Anhang-Dateinamen
anpassen zu müssen, dieser kann weiterhin auf XML enden.
Ist primär für das schnelle Umschalten zwischen Transformation
und nicht Transformation sinnvoll. Die Transformation kann
mittels USE_TRANSFORMATION=N (oder löschen) deaktiviert
werden. Anschließend werden die korrekten
Dateierweiterungen gebildet, ohne eine weitere Konfiguration
vornehmen zu müssen.
GroupingSeparator
String
Tausendertrennzeichen, wenn nicht spezifiziert dann wird auch
kein Tausendertrennzeichen verwendet.
INTERN_OBIS_MAPPING
Y
Bool
N
Bool
Die ecount internen OBIS-Codes (GAS_BRENNWERT,
GAS_Z_ZAHL) werden in eine BDEW konforme OBIS
gewandelt.
SEND_EXPORT_PARAMETER
Y/N. Mit Y können die Parameter des Exportauftrages mit
exportiert werden, falls die Gegenstelle mit diesen
Informationen etwas anfangen kann.
Statusmapping: status.<ecount-status>=<neuer status>
Folgende Status können von ecount geliefert werden:
W (wahrer Wert)
E (Ersatzwert)
G (gestörter Wert)
V (vorläufiger Wert)
String
Seite 300 von 384
Parameter/Beschreibung
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Standardwert
Typ
UTC
String
N
Bool
F (fehlender Wert)
N (Nicht vorhandener Wert)
? (unbekannte Kennung)
Soll statt dem Status E hier 220 exportiert werden, so muss
Folgendes definiert werden:
status.E=220
Der Status wird aktuell ausschließlich im Element V verwendet.
TIMEZONE
Zeitzone für die Ausgabe von Datumsangaben.
UTC, Europe/Berlin und MEZ werden unterstützt
USE_TRANSFORMATION
Y/N. Mit Y kann die XSLT-Transformation aktiviert werden.
XSLT_DIR
config/export/xslt Dir
Bei der relativen Angabe der XSLT-Datei kann das
Basisverzeichnis (innerhalb des KomA) für die
Transformationsdateien mit diesem Parameter konfiguriert
werden.
XSLT_PATH
String
Pfad zur XSLT-Datei (wird nur bei USE_TRANSFORMATION=Y
ausgewertet). Absolute oder relative Angabe möglich. Wenn die
Angabe relativ erfolgt wird per Default in der KomA unter
config/export/xslt nach der Datei gesucht. Der Ordner kann über
die Einstellung XSLT_DIR modifiziert werden.
12.26.3 XSLT – Transformation
Eine Transformation ist mit folgenden Einstellungen möglich:
USE_TRANSFORMATION=Y
XSLT_PATH=XSLT_TLP_CSV.xsl
Die Datei XSLT_TLP_CSV.xsl ist relativ angegeben, damit wird in der KomA im Verzeichnis
config/export/xslt nach dieser Datei gesucht. Da auch eine Transformation in ein anders Dateiformat,
z. B. CSV, stattfinden kann ist ggf. die Angabe der neuen Dateierweiterung sinnvoll. Dies ist aber nur
notwendig, wenn im Namen z.B. *.xml definiert wurde und die Transformation das Dateiformat ändert
(zum Beispiel auf CSV via FILE_EXTENSION_XSLT=csv)
Befinden sich die Transformationsdateien (XSL) in einem anderen Verzeichnis, kann dies über die
Einstellung XSLT_DIR übermittelt werden, Beispiel:
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 301 von 384
USE_TRANSFORMATION=Y
XSLT_PATH=XSLT_TLP_CSV.xsl
XSLT_DIR= c:\KomA\config\export\xslt
12.26.4 XML-Elemente:
12.26.4.1 TIMEZONE
Gibt die Zeitzone an, in der Datumswerte definiert wurden (Standardwert UTC). Möglich sind aktuell
noch Europe/Berlin und MEZ.
12.26.4.2 DATETIMEFORMAT
Angabe der Datumsformatierung (Java) z. B. dd.MM.yyyy HH:mm:ss
Folgende Elemente verwenden diese Formatierung:
Tabelle 12-19: Elemente für DATETIMEFORMAT
BAL_END
BAL_START
CREATION_DATE
READING
START
END
TIME
LINE_DETAIL (Attribut start, end)
V (Attribut start, end)
METERING_POINT_DETAIL (Attribut start, end)
12.26.4.3 NUMBERFORMAT
Angabe der Zahlenformatierung
ds = DecimalSeparator
gs = GroupingSeparator
gs_enable
Folgende Elemente verwenden diese Formatierung:
Tabelle 12-20: Elemente für NUMBERFORMAT
V
VALUE
Z_NUMBER
CALORIFIC_VALUE
SECONDARY_VALUE
12.26.4.4 EMISSION
Medienart, folgende Werte sind möglich.
Seite 302 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Tabelle 12-21: Elemente für EMISSION
Electricity
Gas
Abstract objects
Heat (cost)
Other commodities
Heat
Cold
Storable fuels
Water (hot)
Water (cold)
12.26.4.5 PERIOD
-
1 – minütlich
15 – für Viertelstunden Werte
30 – halbstündlich
hour – für stündliche Werte
day – für Tagesdaten
month – für Monatsdaten
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 303 von 384
13 Importkonfigurator
Der Importkonfigurator bietet Support für den Import von CSV- und einfachen Excel-Dateien für
Lastgangdaten. Die Daten werden direkt an die ecount-Import-API übergeben. Der Importkonfigurator
ist im Modul Import-Filter CSV (filter_import/ecount_import_CSV.jar) implementiert.
Hinweise:
Achtung: Manuell vorgenommene Änderungen in der Properties-Datei (z. B. bei der Definition von
File- oder Kanal-Detail) werden beim Speichern über die Oberfläche des Importkonfigurators
überschrieben bzw. entfernt!
Datumsinformationen werden an die Import-API immer in der Zeitzone MEZ (deutsche Winterzeit)
übergeben. Diese Bedingung muss beim internationalen Betrieb berücksichtigt werden. D.h., die
Nachverarbeitung muss ggf. die Datumsinformationen von MEZ in eine andere konvertieren, um
diese in der Landeszeitzone anzuzeigen.
13.1 Mehrsprachenfähigkeit
Mit eCount- 00057288 ist es möglich, den Importkonfigurator auch mit anderen Sprachen zu nutzen,
folgende Modulversionen sind dafür notwendig:
-
filter_import/ecount_import_CSV.jar : 4.0.2.76
filter_import/ecount_import_CSV2.jar : 4.0.2.37
Die Mehrsprachendateien sind sogenannte Resource-Dateien (Dateiendung RES). Diese werden von
Robotron ausgeliefert (teilweise jedoch nur mit deutschem Inhalt, welcher durch den Kunden dann
übersetzt werden muss). Diese Resource-Dateien werden in einem Ordner hinterlegt, der anschließend
über die Config.properties-Datei referenziert wird.
Beispiel: Die Resource-Dateien für die englische Sprache liegen unter: *\resources\en\
In der *\config\Config.properties-Datei wird über die Einstellung common.resourceDir der Pfad zu
den Ressourcen mitgeteilt (hier common.resourceDir = resources\en).
13.2 Unterschied FILTER=CSV vs. FILTER=CSV2
Die Verarbeitung in der KomA und die Übertragung an ecount kann über zwei Filter realisiert werden.
Der CSV-Filter nutzt intern andere Funktionen (fnc_add_lg_str, …) aus PKG_IMPORT_API als der CSV2Filter (fnc_add_lg_tab, …).
Der CSV2-Filter muss außerhalb von Europa/Berlin zwingend genutzt werden da dieser Filter die
Zeitstempel in einer anderen Zeitzone als „Europa/Berlin“ (nicht konfigurierbarer Default des CSVFilters) an die Import-API übertragen kann.
Eine automatische Migration von CSV nach CSV2 ist nicht vorgesehen, die Migration muss manuell
erfolgen. Dazu muss ein neuer Filter mit den Importkonfigurator angelegt werden und als Filter-Variante
Seite 304 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
muss Zählpunkt/OBIS ausgewählt werden (steht als Synonym für CSV2). Die Filter-Variante für den
CSV-Filter heißt Fremd-Kanal-IDs.
Abbildung 13-1 Importkonfigurator FILTER=CSV2
Abbildung 13-2 Importkonfigurator FILTER=CSV
13.3 Grundmodell
Horizontale Lastgangdaten: Alle Werte eines Tages stehen nebeneinander (Leserichtung von links nach
rechts). Es wird eine Zeile gelesen, beim Zeilenende ist der Tag zu Ende und der aktuelle Lastgang wird
geschlossen. Auf der nächsten Zeile wird ein neuer Lastgang angelegt.
Abbildung 13-3 Anzeige Importkonfigurator horizontales Lastgangdatenmodell
Vertikale Lastgangdaten: Die Werte eines Tages stehen untereinander (Leserichtung von oben nach
unten). Der Lastgang wird geschlossen wenn ein neuer Tag identifiziert wird (ausgehend von der
Messperiode und dem Datum + Uhrzeit)
Abbildung 13-4 Anzeige Importkonfigurator vertikales Lastgangdatenmodell
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 305 von 384
13.4 Funktionen
Folgende Funktionen stehen beim Importkonfigurator zur Verfügung:
-
Angaben in [] sind als optional zu verstehen.
Dürfen Angaben beliebig oft wiederholt werden, sind diese mit einem Plus + versehen
Expression ist ein allgemeiner Datentyp, IntegerExpression/ BooleanExpression sind speziellere
Datentypen, die sich überall dort anwenden lassen, wo Expression verlangt wird.
(EdisSignExpression kann nur bei den Funktionen verwendet werden, die genau diesen Typ
erwarten).
Tabelle 13-1: Funktionen Importkonfigurator
Funktion
Beschreibung
cellValue(RelativeNumber column, RelativeNumber row [,
Expression defaultValue] [, errorOnMissing])
Wert einer Zeile
cellValue
Beispiel:
cellValue(3,18) -> Wert aus Zeile 18, Spalte 3
cellValue(n,1) -> Wert aus Zeile 1, Spaltenangabe dynamisch
cellValue(n,n) ->Zeile- und Spaltenangabe dynamisch
column()
Spalte des aktuellen Wertes (von 1 gezählt). (IntegerExpression)
contains(Expression source, Expression searchString)
contains
Test, ob source die Zeichenfolge searchString enthält.
(BooleanExpression)
cutLeft(Expression source, IntegerExpression length)
cutLeft
Linksseitiges Abschneiden von source auf die Länge length (Expression)
cutRight(Expression source, IntegerExpression length)
cutRight
Rechtseitig Abschneiden von source auf die Länge length (Expression)
dateCompare(DateTimeExpression expr1, String operator,
DateTimeExpression expr2)
expr1 ist das Datum welches mit dem Operator gegen die expr2 geprüft wird.
Als operator sind folgende Anweisungen erlaubt:
dateCompare
•
•
•
•
•
•
> für größer als
< für kleiner als
>= für großer oder gleich
<= für kleiner oder gleich
== für gleich
!= sowie <> für nicht gleich
Seite 306 von 384
Funktion
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Beschreibung
Besonderheiten:
•
•
•
Liefert <expr1> und <expr2> als Ergebnis null so wird true zurückgegeben
bei ==, sonst false.
Ist <expr1> null und <expr2> not null so wird true zurückgegeben bei !=
sowie <>, sonst false.
Ist <expr1> not null und <expr2> null so wird true zurückgegeben bei >
und !=, sonst false.
Beispiel:
Wert-Status: dynamische Belegung mittels Zeitstempel:
(dateCompare(toDate(cellValue(2,2)),>,toDate(cellValue(1,n))) ? "W" : "V")
decode(Expression source [, Expression default] [, (
Expression sourceValue, Expression targetValue )]+)
Werte konvertieren. (Expression)
decode
Beispiel:
decode(cellValue(n+1,n),"?",("","W"),("W","W"),("X","E"
)))
-> Konvertiert eine leere Zeichenkette nach W, X nach E, W bleibt W, trifft keine
der Regel zu, wird ? verwendet.
edisAA
edisAA(IntegerExpression newMessart, EdisSignExpression
source)
Messart ersetzen. (EdisSignExpression)
edisDefKK
edisDefKK(IntegerExpression defaultKanal,
EdisSignExpression source)
Standard-Kanal eintragen. (EdisSignExpression)
edisDefM
edisDefM(IntegerExpression defaultMedium,
EdisSignExpression source)
Standardwert für Medium in Edis-Kennzeichen eintragen, falls nicht vorhanden
edisDefRR
edisDefRR(IntegerExpression defaultRueckstellung,
EdisSignExpression source)
Standard-Rückstell-Kennziffer eintragen. (EdisSignExpression)
edisDefTT
edisDefTT(IntegerExpression defaultTarif,
EdisSignExpression source)
Standard-Tarif eintragen. (EdisSignExpression)
edisGG
edisGG(IntegerExpression newMessgroesse,
EdisSignExpression source
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Funktion
Seite 307 von 384
Beschreibung
Messgröße ersetzen. (EdisSignExpression)
edisKK
edisKK(IntegerExpression newKanal, EdisSignExpression
source)
Kanal ersetzen. (EdisSignExpression)
edisM(IntegerExpression newMedium, EdisSignExpression
source)
edisM
edisRR
Medium in Edis-Kennzeichen source ersetzen ( -1 : Medium entfernen) .
(EdisSignExpression)
edisRR(IntegerExpression newRueckstellung,
EdisSignExpression source)
Rückstell-Kennziffer ersetzen. (EdisSignExpression)
edisSign(Expression source)
edisSign
edisTT
source als OBIS-Kennzeichen (vormals als EDIS bezeichnet) interpretieren.
(EdisSignExpression)
edisTT(IntegerExpression newTarif, EdisSignExpression
source)
Tarif ersetzen. (EdisSignExpression)
endOfFile(CellValueExpression cell)
endOfFile
Test, ob sich Zelle cell hinter dem Dateiende befindet. (BooleanExpression)
endOfLine(CellValueExpression cell)
endOfLine
Test, ob sich Zelle cell hinter dem Zeilenende befindet. (BooleanExpression)
endsWith(Expression source, Expression searchString)
endsWith
Test, ob source mit Zeichenfolge searchString endet. (BooleanExpression)
equals(Expression source, Expression searchString)
equals
filename()
Test, ob source die Zeichenfolge searchString enthält.
(BooleanExpression)
Dateiname der verarbeiteten Datei - ggf. vorangestellter Name des
umschließenden ZIP-Archives mit / abgetrennt. (Expression)
fillLeft(Expression source, Expression fillString,
IntegerExpression length)
fillLeft
fillRight
Linksseitiges Auffüllen des Ausdrucks source auf die Länge length mit Hilfe
der Zeichenfolge fillString. (Expression)
fillRight(Expression source, Expression fillString,
IntegerExpression length)
Seite 308 von 384
Funktion
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Beschreibung
Rechtsseitiges Auffüllen des Ausdrucks source auf die Länge length mit Hilfe
der Zeichenfolge fillString. (Expression)
in(Expression source (, Expression value)*)
in
Prüfung, ob Wert in Werteliste vorhanden ist. (BooleanExpression)
isEmpty(Expression source)
isEmpty
Test, ob Wert von source leer ist. (BooleanExpression)
length(Expression source)
length
Anzahl von Zeichen von source ermitteln. (IntegerExpression)
lowerCase(Expression source)
lowerCase
source in Kleinbuchstaben umwandeln. (Expression)
not(BooleanExpression source)
not
Negation eines booleschen Ausdrucks. (BooleanExpression)
replace(Expression source, STRING oldString, STRING
newString)
replace
Alle Zeichenfolgen oldString in source durch newString ersetzen.
(Expression)
Beispiel: Entferne alle Plus-Zeichen (+)
replace(cellValue(n,n),"+","")
replaceAll
replaceFirst(Expression source, Expression regex,
Expression replacement)
Manipulation einer Zeichenkette durch Nutzung von regulären Ausdrücken (siehe
Anlage 3).
Beispiel: Entferne alle Ziffern a, b und c
replaceAll(cellValue(n,n),"[abc]","")
replaceFirst
replaceFirst(Expression source, Expression regex,
Expression replacement)
Manipulation einer Zeichenkette durch Nutzung von regulären Ausdrücken (siehe
Anlage 3:). Hierbei wird die Verarbeitung nach dem ersten Treffer beendet.
row()
Zeile des aktuellen Wertes (von 1 gezählt). (IntegerExpression)
sheetname ()
Name des aktuell verarbeiteten Arbeitsblattes. (Expression)
startsWith(Expression source, Expression searchString)
startsWith
Test, ob source mit Zeichenfolge searchString beginnt.
(BooleanExpression)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Funktion
Seite 309 von 384
Beschreibung
subString(Expression source, INTEGER start, INTEGER
length)
subString
Teilzeichenfolge von source ab Position start mit Länge length, start
zählt ab 0. (Expression)
toDate(Expression source [, dateFormat(Expression
format)])
Wandelt eine Zeichenkette (source) in ein Date-Objekt (DateTimeExpression),
welches anschließend zum Beispiel in der dateCompare-Methode verwendet
werden kann, um.
toDate
Über das Format kann ein Formatierungsmuster übergeben werden, siehe Anlage
2. Wird kein eigenes Datumsformat spezifiziert wird das globale (Datumsformat
und/oder Zeitformat) verwendet. Der Rückgabewert ist eine DateTimeExpression.
Beispiel:
toDate(cellValue(1,n), dateFormat("yyyy-MM-dd HH:mm"))
toDate(cellValue(1,n))
token(Expression source, Expression separators,
IntegerExpression position)
token
Zeichenfolge source an Separatorzeichen separators zerlegen und das Teil
an angegebener Position position zurückliefern, position zählt von 0 an,
negative Position zählt vom letzten Teil abwärts (-1 ist letztes Token), mehrere
aufeinanderfolgende Separatorzeichen werden als ein Separator behandelt.
(Expression)
Beispiel:
token(cellValue(1,n)," ",-1)  Leerzeichen dient hier als
Separatorzeichen, es wird das letzte Zeichen zurückgegeben. „ABC 123 DEF“
liefert hier also „DEF“
tokenFix(Expression source, Expression separators,
IntegerExpression position)
tokenFix
Wie token, jedoch werden aufeinanderfolgende Separatorzeichen als mehrere
Token ausgewertet. (Expression)
toNumber(Expression source [, numberFormat(Expression
numberformat)])
toNumber
Wandelt eine Zeichenkette in eine Zahl. Es ist möglich, ein Zahlenformat zu
definieren.
trim(Expression source)
trim
Schneidet Leerzeichen am Anfang und Ende von source ab. (Expression)
upperCase
upperCase(Expression source)
Seite 310 von 384
Funktion
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Beschreibung
source in Großbuchstaben umwandeln. (Expression)
-
-
13.4.1
Boolesche Ausdrücke können mit den booleschen Standard-Operatoren && (AND), || (OR) und
^^ (XOR) verknüpft werden. Integer- und beliebige numerische Ausdrücke können mit den
Operatoren <, >, <=, >=, = (oder ==) und <> (oder !=) verglichen werden.
Arithmetische Operationen sind derzeit in geringem Umfang möglich (einfache
Grundrechenoperationen ohne Klammerung)
INTEGER-Konstante: ganzzahlige, vorzeichenlose Zahlen
FLOAT-Konstante: vorzeichenlose Zahl mit . als Dezimaltrenner und ohne TausenderTrennzeichen
STRING-Konstante: Zeichenfolgen in "
ZEICHEN-Konstante: einzelnes Zeichen in ' eingeschlossen
BOOLEAN-Konstante: Y , N , true , false
RelativeNumber: relative Zahl, z. B. 1, n , n+1, n-1
String-Ausdrücke werden ohne Trennzeichen zusammengefasst, also "ABC" "DEF" ist
gleichbedeutend mit "ABCDEF"
Datumsformat / Zeitformat
Die Formatierungsregeln richten sich nach den Java-Standard (SimpleDateFormat) siehe Anlage 2
13.4.1.1 Datums- und Zeitformat in einer Spalte
Ist in einer Spalte sowohl das Datum als auch die Zeit enthalten (z. B. 201302210000;…), kann der Wert
wie folgt extrahiert werden. Die ganze Format-Kette muss im „Zeitformat“ hinterlegt werden.
Abbildung 13-5: Beispiel: Datum und Zeit im Zeitformat hinterlegen
Denn folgende Konfiguration führt zu einem Parser-Fehler, da per Default zwischen Datums- und
Zeitformat ein Leerzeichen eingefügt wird.
Ist ein Zeitstempel in einer Spalte beispielsweise wie folgt hinterlegt: 2016-06-13T00:00:00.000+02:00
so sieht die Konfiguration wie folgt aus. Wichtig ist, dass bei Datum und Zeitstempel der gleiche
Ausdruck hinterlegt ist.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 311 von 384
13.5 Eigenschaften
13.5.1
Zeitzonen
Bezüglich der Zeitzonen muss folgendes beachtet werden. Über den Importkonfigurator kann aktuell nur
die Zeitzone der zu importierenden Datei festgelegt werden. Sprich mit welcher Zeitzone die
Datumswerte interpretiert werden müssen. Wird in der Konfiguration der CSV-Filter verwendet (in der
Properties-Datei steht FILTER = CSV), dann werden die Datumswerte in die Zeitzone Europe/Berlin
gebracht und an die Import-API (PKG_IMPORT_API) übergeben. Wird der CSV2-Filter verwendet (in der
Properties-Datei steht FILTER = CSV2), dann werden die Datumswerte in die konfigurierte Zeitzone aus
der user_env.(cmd|sh) gebracht und anschließend an die Import-API übergeben.
Der Importkonfigurator bietet Unterstützung für die nachfolgenden Zeitzonen.
13.5.1.1 MEZ
Hierbei werden alle Daten mit der Mitteleuropäischen Zeit eingelesen.
Die Differenz der Mitteleuropäischen Normalzeit (MEZ) zur Weltzeit UTC beträgt +1 Stunde.
13.5.1.2 UTC
Hierbei werden alle Daten in UTC-Zeit eingelesen. Aufgrund der Einfachheit sollte diese Variante, wenn
möglich, verwendet werden.
13.5.1.3 Deutschland mit Sommer-/Winterzeit-Umschaltung
Hierbei werden die Werte in MEZ und MESZ (Mitteleuropäischen Sommerzeit) eingelesen.
Bei der Umschaltstunde treten aktuell Warnungen im Importkonfigurator auf, die ignoriert werden
können.
Warnung: Allgemeiner Zeitstempelkorrektor konnte Problem zu Wert x auf Blatt y in Zeile z Spalte
a nicht beheben, erwarteter Zeitstempel: 30.03.2014 04:00 GMT+2, gefundener Zeitstempel:
30.03.2014 03:00 GMT+2
13.5.1.3.1 Winter-Sommer-Umschaltmethode
Standard (fortlaufende Werte)
Wenn die Anzahl an Werten nicht mit der max. Anzahl des Tages übereinstimmt wird geprüft, ob 0
Werte bei 2-3 Uhr vorhanden sind. Ist dies der Fall, werden diese (überflüssigen) Werte gelöscht.
Stunde 2-3 löschen (falls diese aus 0-Werte(n) besteht)
Am Umschalttag wird immer 1 Stunde gelöscht, jedoch nur wenn diese 0-Werte hat.
Seite 312 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Werte 2-3 Uhr ignorieren [0200-0245 bei ¼ stündlich]
Entfernt IMMER 1 Stunde bei Messperiode kleiner/gleich stündlich und prüft somit auch nicht auf 0Werte. Beispiel: Bei Periode 15 Minuten werden die Werte 02:00 bis 02:45 Uhr entfernt, bei Periode
stündlich wird nur die Stunde (2 Uhr) entfernt. (seit eCount- 00047369).
Beispiel - Werte 2-3 Uhr ignorieren:
Abbildung 13-6: Beispiel Winter-Sommer-Umschaltmethode: Werte 2-3 Uhr ignorieren
13.5.1.3.2 Sommer-Winter-Umschaltmethode
Standard (fortlaufende Werte)
Es wird davon ausgegangen, dass die Daten in der richtigen Anzahl übermittelt werden, d.h. die
Umschaltstunde ist enthalten (also 100 Werte bei ¼-Stunden-Werten am Tag der Umschaltung).
Zeitstempel mit A-/B-Markierungen
Die Umschaltstunde ist mit A bzw. B (für die Stunde, welche doppelt vorkommt) markiert.
1/4 Stundenwerte (2-3Uhr) im Paar [02:15,02:15,...,03:00,03:00]
Dieser Modus wurde in eCount- 00059170 implementiert und wird aktuell nur bei Periode 15
Minuten unterstützt. Der Aufbau der Datei ist dabei wie folgt (Umschaltstunde wird paarweise
übermittelt), wobei der erstgenannte Zeitstempel im Paar immer zur ersten Stunde und der 2. zur
zweiten Stunde gehört.
6.10.2014 02:00
26.10.2014 02:15
26.10.2014 02:15
26.10.2014 02:30
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 313 von 384
26.10.2014 02:30
26.10.2014 02:45
26.10.2014 02:4
26.10.2014 03:00
26.10.2014 03:00
13.5.1.4 Weitere Zeitzonen
Mit eCount- 00052478 können weitere Zeitzonen importiert werden.
-
Europe/Istanbul - Osteuropäische Zeit
Europe/London - Greenwich Zeit
Europe/Moscow - Moskauer Normalzeit
Europe/Sofia - Osteuropäische Zeit
Mit eCount- 00063725 können die Daten zusätzlich noch in UTC+1 bis UTC+5 und UTC-1 bis UTC-5
vorliegen.
13.5.2
Zeitstempel als Intervallbeginn
Mit der Option Zeitstempel als Intervallbeginn (in der Properties-Datei TIME_IS_INTERVALBEGIN)
kann die Interpretation des ersten Wertes gesteuert werden (z. B. 00:00 statt 00:15). In der KomA wird
per Standardeinstellung mit Endzeitstempeln gearbeitet (also der Erste Wert ist 00:15).
Beispiel:
Spalte A
Spalte B
Wert
00:00
00:15
5
00:15
00:30
10
Als Zeitstempel würde hier cellValue(1,n) erwartet (also Spalte B).
Sollte diese Spalte nicht vorhanden sein, könnte mit cellValue(0,n) und aktiviertem Zeitstempel
als Intervallbeginn gearbeitet werden.
13.5.3
Demultiplex (DEMUX_CHANNELS)
Für die korrekte Abarbeitung ist ecount_import_CSV.jar Version 4.0.2.59 erforderlich!
Die Option Demultiplex von Kanälen ist sinnvoll, wenn z. B. 3 Kanäle in der Datei auftreten, bei denen
die Zeilen nach Zeitstempel sortiert sind. Dies bedeutet, dass zuerst alle 00:15-Zeitstempel zu allen
Kanälen und dann alle 00:30-Zeitstempel zu allen Kanälen usw. angegangen werden.
Damit nicht Tausende Einzelwert-Lastgänge entstehen, entwirrt das Feature die Kanäle wieder (s.
Abbildung 13-7).
Seite 314 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 13-7: Option Demultiplex von Kanälen
13.5.4
Zeitstempel rückwärts
Die Funktion ist im Reiter Allgemein zu finden. In der Properties-Datei heißt die Einstellung
REVERSE_TIMESTAMP_ORDER.
Diese Funktion ist notwendig, wenn die Zeitangaben in der zu importierenden Datei rückwärts sind,
sprich der Wert für 23-0 Uhr ist der erste Wert und 0-1 Uhr der letzte (bei Periode stündlich). Dies ist
beispielsweise bei einigen EEX-Formaten der Fall.
Abbildung 13-8: Beispiel: Rückwärtige Zeitangaben in einer zu importierenden Datei
13.5.5
Tabulator als Trennzeichen
Wird als Trennzeichen kein ;, sondern das Steuerzeichen Tabulator verwendet, muss dies wie folgt
angegeben werden. CSV-Trennzeichen: \t
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
13.5.6
Seite 315 von 384
Spracheinstellung
Im Reiter Allgemein gibt es das Feld „Sprache“. Dieses Feld ist zum Beispiel bei Monatsnamen relevant,
wird jedoch nur ausgewertet wenn der Formatstring für den Monat mehr als 2 Zeichen enthält.
Beispiel: Erfolgt die Angabe des Datums z.B. in folgender Form: 10.März.2016 dann muss das
Datumsformat wie folgt definiert sein dd.MMMMM.yyyy. Hier greift dann die Spracheinstellung, bei
englischen Monatsnamen müsste als Sprache z.B. en_GB gewählt werden.
Abbildung 13-9 Spracheinstellungen (Monatsnamen)
13.5.7
Ignoriere Datensätze die älter als x Tage sind
Mit eCount- 00052950 gibt es ein Feature, mit dem Daten, die älter als x Tage (ausgehend vom aktuellen
Systemdatum) sind, ignoriert werden können.
Das Feature ist besonders bei täglichen Perioden sinnvoll, bei denen in den zu importierenden Dateien
viel Altlasten enthalten sind. Dies ist beispielsweise beim EEX-Import der Fall, bei dem für jeden
Handelstag im Jahr ein neuer Datensatz in der Datei eingefügt wird. Werden die Daten täglich
importiert, sind im Dezember in der Datei 90.000 Datensätze vorhanden von denen nur ein Bruchteil
noch relevant ist.
Im Importkonfigurator befindet sich diese Einstellung auf dem Reiter Format. In der Properties-Datei
wird die Einstellung unter dem Namen IGNORE_DATA_OLDER_THAN_X_DAYS abgespeichert. Mit
der Einstellung IGNORE_DATA_OLDER_THAN_X_DAYS = 20 werden somit alle Lastgänge ignoriert,
die älter als 20 Tage sind (hierbei wird der Startzeitstempel des Lastganges als Vergleichszeitpunkt
verwendet).
Abbildung 13-10: Option: Ignoriere Daten (älter als x Tage)
Die Auswertung dieses Parameters erfolgt erst während des Imports in das System
robotron*ecount. Damit ist die Auswirkung des Parameters nicht im Importkonfigurator (GUI)
sichtbar.
13.5.8
NVL (NULL und leere Zeichenketten)
Eine NVL-Funktion ist nicht implementiert, es kann jedoch über cellValue ein Standardwert
angegeben werden (cellValue(spalte,zeile,default)).
Eine andere Variante ist die Arbeit mit dem WERT-Dekoder:
Dabei ist NULL und leerer String für den Importkonfigurator dasselbe, d.h. eine NULL-Prüfung wird auch
über ““ realisiert.
Beispiel:
Seite 316 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
toNumber((isEmpty(cellValue(n,n)) ? "0" : cellValue(n,n)))
Hierbei wird auf eine leere Zeile geprüft, wenn null/leer wird 0 verwendet ansonsten der Wert aus der
Zelle. Anschließend wird dieser Wert in eine Zahl konvertiert.
Eine weitere Variante ist die Nutzung der decode-Methode:
Beispiel:
decode(cellValue(n,n),("","0"))
Hierbei werden alle NULL-Werte gegen 0 getauscht (s. Abbildung 13-11).
Abbildung 13-11: Option: Wert-Dekoder - Methode decode
13.5.9
Warnung bei Zeitumstellung (WARNING.VALUE_DISTANCE)
Y/N (Default Y). Der Importkonfigurator prüft die chronologische Reihenfolge der Werte auf Richtigkeit.
Dies erfolgt mit dem Ziel, die Datenbank zu entlasten indem falsche Werte schon im Filter erkannt
werden. Diese Prüfung hat bei der Zeitumstellung (Sommer-Winter, Winter-Sommer) jedoch teilweise
Schwierigkeiten (z. B. wenn die Datumsangaben nicht in der erwarteten Java-Notation vorliegen, für den
reinen Anwender jedoch logisch erscheinen – z. B. Sommer-Winterwechsel Sprung von 02:45 auf 02:00
statt auf 03.00).
Der Fehlertext wird in folgender Form angezeigt:
Zeitstempel x in Blatt y Zeile a Spalte b passt nicht zur Periode p , erwarteter Zeitstempel ist z ;
Abweichung w
Die Option ist im Reiter Format hinterlegt.
Abbildung 13-12: Option: Warnung bei Zeitumstellung
Der Parametername dieser Option ist WARNING.VALUE_DISTANCE.
Dieser Parameter wird als ERROR (und nicht als WARNING, wie der Parametername vermuten ließe),
behandelt. Sprich durch eine eventuell falsche Prüfung wird unter Umständen der gesamte Import
unterbrochen. In dem Fall sollte der Parameter auf N gestellt werden. Die Import-API hat
umfangreichere und genauere Prüfbedingungen implementiert, die fehlerhafte Daten dennoch
erkennen und aussteuern können.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 317 von 384
13.5.10 Abbruch bei Äquidistanzproblemen
Hintergrund: Beim Importkonfigurator kommt es zu Unstimmigkeiten beim Import von „falschen“
Werten. Im konkreten Fall wurde die Umschaltstunde nicht in der geforderten Notation übertragen.
Es wurden diese Zeitstempel übertragen (26.10.2014 02:00, 26.10.2014 02:00, 26.10.2014 02:15,
26.10.2014 02:15, 26.10.2014 02:30, 26.10.2014 02:30, 26.10.2014 02:45, 26.10.2014 02:45). Erwartet
wird jedoch 02:00, 02:15, 02:30, 02:45, 02:00, 02:15, 02:30, 02:45.
Der Importkonfigurator ist jedoch so implementiert, das alle Daten versucht werden nach ecount zu
importieren. Werden diese Daten anschließend ohne Prüfung verarbeitet kommt es zu Problemen (z.B.
weil einige Werte an den Linien falsch überschrieben werden oder ähnliches).
Mit der Importkonfigurator Einstellung: WARNING.VALUE_DISTANCE=Y
können solche Äquidistanzproblemen angezeigt werden, diese Meldungen werden auch für den ImportDatensatz protokolliert (Tabelle: IMPORT_FILE_ERR). Jedoch müssen auch hier nachfolgende Prozesse
diese Fehler-Datensätze auswerten und korrekt darauf reagieren.
Es wurde eine neue Einstellung erstellt mit der eine Datei bei Äquidistanzproblemen fehlerhaft
abgewiesen wird. Die Einstellung muss in der zugehörigen Properties-Datei der ImportkonfiguratorKonfiguration hinterlegt werden. Die Einstellung heißt
CANCEL_IMPORT_BY_VALUE_DISTANCE_ERROR, ist vom Typ Boolean (Y/N) und ist per Default
deaktiviert (N).
Um die Einstellung zu aktivieren muss folgendes in der Properties-Datei hinzugefügt werden (die mit #
beginnenden Zeilen sind Kommentare).
## Bei Äquidistanzproblemen wird die zu importierende Datei mit Fehler abgewiesen
## Y/N, Default N
CANCEL_IMPORT_BY_VALUE_DISTANCE_ERROR = Y
13.5.11 Zeitreihen fortsetzen (CONTINUE_TIMESERIES)
Diese Funktion ist sinnvoll wenn das Model weder aus horizontalen noch aus vertikalen Lastgangdaten
besteht sondern ein Mix daraus ist. Hier gibt es ansonsten Probleme bei der Umschaltstunde.
Hintergrund: Der Importkonfigurator braucht für die korrekte Erkennung von Umschaltstunden eine
fortlaufende Zeitreihe, die die Werte vor und nach der Stunde enthält. Wird jedoch jede Stunde als
einzelne Zeitreihe betrachtet (was der Fall ist bei diesem Modell ohne die Funktion der Fall ist), werden
alle separat voneinander betrachtet. Hierbei steht keine Information zu Verfügung um die
Umschaltstunde zu ermitteln (z.B. ob beim Sommer-Winter-Wechsel die 1. oder die 2. Stunde
wiederholt wird). Dies sorgt beim Import nach ecount anschließend zu Problemen.
Über die Funktion Zeitreihen fortsetzen kann das Problem bei dieser Konstellation umgangen werden.
Beispiel:
In der ersten Spalte steht ein Datum und eine Uhrzeit (volle Stunde). Die nächsten Spalten enthalten
dann die 10-min-Werte dieser Stunde.
Seite 318 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
13.5.12 Gas-Tagesgrenze 06:00
Bei Gas-Tagen läuft die Zeitgrenze von 6 Uhr bis 6 Uhr (Kalendertag 30.06 01:00 Uhr ist Gas-Tag 29.06
01:00). Um dies den Importkonfigurator mitzuteilen muss im Reiter Bedingungen die Einstellung GasTagesgrenze 06:00 auf Y gestellt werden (intern wird dies als true oder false abgespeichert).
Abbildung 13-13 Gas-Tagesgrenze aktivieren (Reiter Bedingungen)
Hierbei ist zu beachten das bei separater Datum- und Zeitstempel-Konfiguration der Zeitstempel (=
Stundenangabe) nicht mit n angegeben wird sondern fest auf die erste Stundenangabe konfiguriert
wird (siehe nachfolgendes Beispiel).
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 319 von 384
Abbildung 13-14 Beispiel Gastag mit separater Tag und Zeit
Mit der Angabe
Datum:
cellValue(3,1)
Zeitstempel:
cellValue(2,n)
Gas-Tagesgrenze 06:00:
true
Werden für den Gastag zwei Tageslastprofile angelegt. (von 7 bis 0 Uhr von von 0 bis 7 Uhr).
Seite 320 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Mit der festen Zeitangabe auf den ersten Stundenwert hingegen:
Datum:
cellValue(3,1)
Zeitstempel:
cellValue(2,18)
Gas-Tagesgrenze 06:00:
true
Wird (wie gewünscht) nur 1 Tageslastprofil von 6 bis 6 Uhr angelegt.
13.5.13 Verkettung mehrere Werte
Es können auch mehrere Zellen für einen Wert ausgewertet werden.
Beispiel: Die FK-ID1 wird aus zwei Zellen gebildet, die beiden Zellen werden durch ein Minuszeichen (-)
getrennt.
Es gibt hier keinen Verkettungsoperator (+), sodass eine Angabe aller:
cellValue(2,3) + "-" + cellValue(n,7)
fehlerhaft ist.
13.6 Anlegen einer Konfiguration
Zur einfacheren Konfiguration existiert ein separates Modul mit grafischer Benutzeroberfläche.
Abbildung 13-15: Grafische Benutzeroberfläche zum Anlegen einer Konfiguration 1/3
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 321 von 384
Die entsprechenden Dateien können auch mit einem Texteditor unter
<KomA>/config/import/<FORMAT>.properties direkt bearbeitet werden.
Gestartet wird die Oberfläche über das Skript Importkonfigurator.cmd. Hier gibt es die Sicht auf die
Datei datenimport.ini, über welche die verknüpften Formate bearbeitet werden können.
Um eine neue Formatdefinition zu erstellen, kann die Schaltfläche Neue Format-Konfiguration
verwendet werden. Hier geben Sie den Formatnamen, das Importverzeichnis und die Dateimaske an
und es wird eine neue Konfiguration für den Importkonfigurator angelegt. Diese ist zuerst mit #!
auskommentiert, so dass die Konfiguration zwar vom Konfigurator erkannt, aber im Datenversand erst
einmal ignoriert wird. Auf diese Weise kann direkt auf einem aktiven KomA-Verzeichnis getestet
werden.
Abbildung 13-16: Grafische Benutzeroberfläche zum Anlegen einer Konfiguration 2/3
Abbildung 13-17: Grafische Benutzeroberfläche zum Anlegen einer Konfiguration 3/3
Konfiguration des Formats
Zuerst ist festzulegen, welches Dateiformat importiert werden soll. Hier gibt es die Möglichkeit, für den
Parameter FILE_FORMAT entweder CSV, EXCEL, EXCEL 2007 oder FIXED_LENGTH für ein
Festlängenformat anzugeben.
Hinter EXCEL und EXCEL 2007 verbergen sich zwei unterschiedliche Implementierungen, die auf
unterschiedlichen API basieren. EXCEL 2007 ist dabei das neuere und sollte ab sofort immer
verwendet werden.
Seite 322 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abhängig vom gewählten Format, gibt es weitere Formatparameter. Für EXCEL gibt es den weiteren
Parameter EXCEL_SHEETS, der bestimmt, welche Arbeitsblätter der Excel-Dateien importiert werden
sollen. Ist der Parameter leer, werden alle vorhandenen Arbeitsblätter importiert, ansonsten wird eine
komma-separierte Liste mit Namen zu importierender Arbeitsblätter angegeben. Ggf. ist bei dem
Format aber auch die Bedingung Bedingung für Sheet-Überspringen sinnvoller.
Ist das Ausgangsformat ein normales CSV-Text-Format, sind hierfür einige Grundparameter einzustellen.
Zuerst ist das Trennzeichen mit dem Parameter SEPARATOR festzulegen, das standardmäßig ein
Semikolon ist. Mit dem Parameter ESCAPE_CHARACTER kann ein Entwertungszeichen für das CSVTrennzeichen angegeben werden. Dies ist standardmäßig ein Backslash (\). Mit dem booleschen
Parameter QUOTES (Standardwert N) kann eingestellt werden, ob in doppelte Anführungszeichen
eingeschlossener Text bei der Suche nach CSV-Trennzeichen übersprungen werden soll. Es können noch
weitere allgemeine Parameter wie TRIM_DATA und ENCODING angegeben werden, deren
Bedeutungen den Kommentaren in der mitgelieferten Beispielkonfiguration bzw. der Beschreibung der
Felder in der grafischen Konfigurationsoberfläche zu entnehmen sind.
Der nächste wichtige Parameter heißt TYPE, der das Grundmodell der CSV-Datei angibt. Dafür gibt es
zurzeit (Stand CSV-Import-Version 4.0.2.40) die folgenden Werte:
VERTICAL_SINGLE_VALUE: Lastgang-Daten, deren Werte fortlaufend untereinander stehen
(ggf. in mehreren Spalten)
- HORIZONTAL_SINGLE_VALUE: horizontal bzw. zeilenweise angeordnete Lastgangdaten
- HORIZ_DAYVALUES: horizontale Tageswerte auf Stunden-Intervall
- VERTIC_DAYVALUES: vertikale Tageswerte auf Stunden-Intervall
- HORIZ_VD: horizontal angeordnete Verrechnungs- bzw. Verbrauchsdaten
- HORIZ_PROGNOSE: horizontal angeordnete Prognosedaten
Diese Modelle legen die Vorgehensweise beim Verarbeiten der weiteren Daten fest. Im Folgenden soll
nur auf die Lastgangdaten eingegangen werden, die sich durch ihre Iterationsrichtung zeilenweise oder
spaltenweise unterscheiden.
-
Der Ausgangsparameter heißt hierfür FIRST_VALUE_FIELD und gibt an, welches das obere linke
Feld ist, das den ersten Wert enthält. Sämtliche Zeilen- und Spaltenangaben in der Konfigurationsdatei
werden bei 1 beginnend gezählt und werden mittels cellValue(<Spalte>, <Zeile>)
ausgedrückt. Der nächste Basisparameter heißt VALUE_FIELD_DIMENSION und gibt an, in welchem
horizontalen und vertikalen Abstand sich die jeweils benachbarten Wertefelder befinden. Dieser wird
fest mit {<horizontaler Abstand>, <vertikaler Abstand>} angegeben, wobei ein
horizontaler Abstand von „0“ angegeben werden kann, wenn nur eine Wertespalte existiert.
Mit den Parametern DATE_FORMAT und TIME_FORMAT können die Formatmasken für Datums- und
Uhrzeitfelder angegeben werden. Stehen beide Angaben in demselben Feld, dann wird die gemeinsame
Formatmaske für dieses Feld aus Datumsmaske und Uhrzeitmaske, mit Leerzeichen verkettet,
zusammengesetzt. Wird ein spezielles Zahlenformat verwendet, muss dieses mit Hilfe der Parameter
NUMBER_FORMAT, NUMBER_FORMAT.DECIMAL_SEPARATOR und
NUMBER_FORMAT.GROUPING_SEPARATOR eingestellt werden.
Als nächster Schritt folgt die Einrichtung der weiteren Felder, die sich jeweils auf das aktuelle Wertefeld
beziehen. Deshalb können hier relative Feldreferenzen angegeben werden. Das Feld für den
Wertestatus ist standardmäßig so definiert, dass es sich rechts neben dem zugehörigen Wertefeld
befindet. Dazu werden relative Feldkoordinaten mit der Variablen n angegeben. Das Feld rechts neben
dem Wertefeld wird also mit cellValue(n+1,n) angegeben.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 323 von 384
Wichtige Feld-Parameter sind zuerst die Parameter für die Kanalzuordnung FIELDS.FK_ID1 und
FIELDS.FK_ID2 sowie die Felder für Datum FIELDS.DATE, Uhrzeit FIELDS.TIME, Wert-Status
FIELDS.STATUS und FIELDS.PERIODE für die Messperiode.
Beispiel:
Definiertes CSV-Format mit Abbruchbedingung
Abbildung 13-18: Beispiel: Definiertes CSV-Format mit Abbruchbedingung - Format
Abbildung 13-19: Beispiel: Definiertes CSV-Format mit Abbruchbedingung - Allgemein
Seite 324 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 13-20: Beispiel: Definiertes CSV-Format mit Abbruchbedingung - Bedingungen
13.7 Import-File- und Kanal-Detail
Es ist möglich, über die Properties-Datei (es gibt keine GUI-Unterstützung) Details für Import-File
(Tabelle: IMPORT_FILE_DETAILS) und Kanäle (Tabelle: KANAELE_DETAILS) anzulegen.
Die Angabe erfolgt nach der Notation FileDetail.<Bedeutung> = <Wert>.
Beispiel: Aus der Spalte 2 soll der Wert der ersten Zeile (ist ein Datum) als Import-File-Detail
Berechnungsdatum bzw. als Kanal-Detail Berechnungsdatum abgelegt werden. Die zugehörige
Konfiguration in der Properties-Datei ist folgende:
FileDetail.Berechnungsdatum = cellValue(2,1)
KanalDetail.Berechnungsdatum = cellValue(2,1)
13.8 Beispiele
13.8.1
Einheit extrahieren
Eingangswerte:
-
Lufttemperatur (°C)
Globalstrahlung - Meteosat (Wh/m²)
Sonnenscheindauer (min)
Windgeschwindigkeit (m/s)
Variante 1: Decode (Nachteil: recht starr, Eingangswerte dürfen sich nicht ändern)
decode(subString(cellValue(n,1),0,5),"kW",("Luftt","°C"),("Windg","m/s
"),("Sonne","min"),("Globa","Wh/m²"))
Variante 2: token und replace
replace(token( cellValue(n,1), "(", -1),")", "")
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 325 von 384
token( cellValue(n,1), "(", -1)  liefert: °C), Wh/m²), min) und m/s)
replace(token(cellValue(n,1),"(",-1),")","") entfernt das letzte ")"
13.8.2
Werte multiplizieren (*1000)
Bei Zahlen mit mehr als 7 Nachkommastellen müssen Werte ggf. mit 1000 multipliziert werden. Die
Realisierung kann über den Wert-Dekoder stattfinden.
toNumber(cellValue(n,n))*1000
13.8.3
Status in Abhängigkeit zu Feldinhalt bestimmen
Anforderung: Eine CSV-Datei nur mit Werten (keine Status). Per Default soll W (wahrer Wert) als Status
übernommen werden. Jedoch existiert die Besonderheit, dass keine Zahl als ## abgebildet wird und
diese Zahl mit dem Status N (Nicht vorhandener Wert) hinterlegt werden soll.
Lösung:
Bei Wert-Status: (contains(cellValue(n,n),"##") ? "N" : "W")
13.8.4
0-Wert anhand von Codierungen ermitteln
Anforderung: Eine CSV-Datei nur mit Werten, jedoch werden 0-Werte als ## übergeben, dieser Wert
muss als 0-Wert interpretiert werden.
Lösung:
Bei Wert-Dekoder: decode(cellValue(n,n),("##","0"))
13.8.5
0-Werte mit Status N
Fehlende Werte werden mit „-„ übergeben, diese Werte sollen als 0 interpretiert werden, zusätzlich soll
aber auch der Status der Werte in ecount N sein, für alle gültigen Werte soll W verwendet werden.
Bei Wert-Dekoder:
decode(cellValue(n,n),("-","0"))
 Beim Wert-Dekoder gibt es keinen Default, wenn also „-„ in der Zelle auftaucht wird „0“
genommen, sonst wird immer der Wert aus der Zelle verwendet.
Seite 326 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Bei Wert-Status:
decode(cellValue(n,n),"W",("-","N"))
 W ist der Default-Wert, wenn jedoch „-„ in der Zelle auftaucht wird N verwendet
13.8.6
Abbruchbedingung nach x Zeilen
Über die Funktion row() kann die aktuelle Zeilenzahl ermittelt werden (diese beginnt bei 1).
Beispiel: Abbruch beim Erreichen der 19. Zeile:
row()==19
Beispiel: Abbruch, wenn die Zeilenanzahl größer 20 ist:
row()>20
13.8.7
Bei Zahlen mit führendem Plus (+) kommt es zum Fehler (Unparsable Number)
Positive Zahlen dürfen beim Konvertieren in eine Zahl in Java kein führendes Vorzeichen (+) besitzen.
Das Vorzeichen kann einfach entfernt werden, dazu muss beim Wert-Dekoder Folgendes definiert
werden: replace(cellValue(n,n),"+","")
Negative Zahlen dürfen/müssen das Vorzeichen (-) besitzen!
13.8.8
Stündliche Gas-Werte ohne Uhrzeit (nur Datum) mit 6-Uhr-Grenze
Folgende Zeile soll importiert werden:
ID; 06.08.2015; 1000; 1000; 1000; 1000; 1000; 1000; 1000; 1000; 1000; 1000; 1000; 1000; 1000; 1000;
1000; 1000; 1000; 1000; 1000; 1000; 1000; 1000; 1000; 1000
Es handelt sich hierbei um ein horizontales Lastgangmodell, der Werteabstand beträgt {1,1} und das
erste Wertefeld ist bei cellValue(3,1). Eine besondere Konfiguration kommt dem Datums- und
Zeitformat zugute, hierbei muss manuell die Zeit (bei Gas also der 6 Uhr-Wert) spezifiziert werden.
Abbildung 13-21 Ausschnitt Importkonfigurator (Reiter Allgemein)
Da es sich um Gas-Werte handelt muss im Reiter Bedingung die Gas-Tagesgrenze 06:00 aktiviert
werden, andernfalls wird der Lastgang bei 0 Uhr gesplittet.
Abbildung 13-22 Ausschnitt Importkonfigurator (Reiter Bedingung)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
13.8.9
Seite 327 von 384
Doppelte Anführungszeichen ignorieren
Beispiel-Datei:
"KUNDE_ID";"KUNDE_NAME";"KAM_ID";"KAM_NAME"
"015";""Hausmeister GmbH"";"XYZ";"Max, Mustermann"
Diese Anführungszeichen können über folgende Konfiguration eliminiert werden.
inputFormat(
..
quotes = true
..
)
13.8.10 Verwendung von toDate und dateCompare
Im konkreten Fall werden in einer Datei aktuelle Werte (wahre Werte) und vorläufige Werte
(Prognosen) geliefert. Im ecount sollen die Werte mit den richtigen Staus (W = wahrer Wert) und (V =
vorläufiger Wert) importiert werden.
Ausgehend von den Beispiel (Abbildung 13-23, Abbildung 13-24) gibt die Zelle B2 das Referenzdatum an.
Alle Werte in der Datei die vor diesen Datum liegen sind wahre Werte, alle die nach dem Datum liegen
sind Prognosedaten. Die Werte sind als Startdatum zu interpretieren, daher muss die Option
„Zeitstempel als Intervallbeginn“ aktiviert sein.
Abbildung 13-23 Beispiel-Datei (Start) - Importkonfigurator
Abbildung 13-24 Beispiel-Datei (Ende) – Importkonfigurator
Seite 328 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Die Konfiguration bezüglich der Zeitstempel sieht wie folgt aus, hierbei sind das Zeitformat und der
Zeitstempel als Intervallbeginn die entscheidenden Faktoren.
Die vollständige Anweisung für den „Wert-Status“ ist folgende:
(dateCompare(toDate(subString(replace(cellValue(2,2),"\"",""),0,14) "00"),>,toDate(cellValue(1,n))) ?
"W" : "V")
Erklärung:
•
Da in B2 der Wert mit Anführungszeichen enthalten ist, werden diese erstmal entfernt:
replace(cellValue(2,2),"\"","")
•
Die Konfiguration interpretiert aktuell die Zeitstempel als „Zeitstempel als Intervallbeginn“. Der
Zeitstempel „11.05.2016 18:00“ ist also die Stunde von 18 bis 19 Uhr. Wenn man den 18 Uhr
Wert nun mit 18:33 vergleicht wäre der 18 Uhr Wert (Anfangszeitstempel) immer kleiner.
Möchte man jedoch eher die 19 Uhr vergleichen (Endzeitstempel) machen wir einfach den Trick
indem wir das Referenzdatum auf die Stunde reduzieren und anschließend mit dem Operator
„größer als“ (>) arbeiten.
Mit subString(replace(cellValue(2,2),"\"",""),0,14) "00" wird die Zeichenkette in B2 auf diesen
Wert geändert: 2016-05-11 18:00
•
Mittels „toDate“ werden die Datum-Zeichenketten nun zu „Date“-Objekten konvertiert die
anschließend miteinander verglichen werden können (mit den Zeichenketten allein ist das nicht
möglich). Da alle Datum-Zeichenketten die gleiche Formatierung aufweisen (nämliche die im
Zeitformat spezifizierte) brauch bei „toDate“ kein extra Format angegeben werden.
Das Vergleichsdatum aus B2 wird wie folgt zum Date-Objekt:
toDate(subString(replace(cellValue(2,2),"\"",""),0,14) "00")
In Spalte A wird das Datum so erstellt:
toDate(cellValue(1,n))
•
Die Date-Objekte können mittels dateCompare verglichen werden. Solange die Angabe in B2
größer ist als in Spalte A soll der Wertstatus ein „W“ (wahrer Wert) sein, ansonsten ein „V“
(vorläufiger Wert = Prognose). Um einen Vergleich durchführen zu können muss der Ausdruck
dateCompare(…) geklammert werden, anschließend kann mittels „?“ nach „true“ gefragt
werden, der „false“-Zweig wird mittels „:“ eingeleitet.
Nach den erfolgreichen Import der Datei sehen die Daten im Import-Viewer wie folgt aus: (bis 18 Uhr
haben die Werte den Status W, danach den Status V)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 329 von 384
Abbildung 13-25 eCount-Ansicht des Import mittels dateCompare
13.8.11 Zählvariable (1 … n) statt Uhrzeit [decode-Alternative]
Es gibt Excel-formate die haben eine bestimmte Periode (z.B. viertelstündlich) und ein Datum. Die
Uhrzeiten sind nur von 1 bis n nummeriert.
Abbildung 13-26 Beispiel: CSV-Datei mit Zählvariable
Seite 330 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Anstatt dies über ein umfangreiches decode (1 zu 0015, 2 zu 0030, … wandeln) kann auch ein Feature
zur automatischen Bestimmung der Zeit verwendet werden. Ausgehend vom obigen Beispiel ist das
Datum fest in Zeile 1, Spalte 2 zu finden. Der Zeitstempel wird zu einer Zahl gewandelt und anschließend
mit 15 (da es sich hier um viertelstündliche Werte handelt) multipliziert. Im Zeitformat muss
anschließend das Format für die Stunde (mm) angegeben werden.
Datum:
cellValue(2,1)
Zeitstempel:
toNumber(cellValue(1,n))*15
Datumsformat: dd.MM.yyyy
Zeitformat:
mm
Abbildung 13-27 Konfiguration (Ausschnitt) CSV-Datei mit Zählvariable
13.9 Restriktion bezüglich Excel-Dokumenten
13.9.1
Export und anschließender Import
Es gibt Systeme, die aus ecount mittels Excel-Reports Daten exportieren (siehe Kapitel 12.24) und diese
anschließend über den Importkonfigurator wieder importieren möchten, ohne dass die Excel-Datei mit
Microsoft Excel geöffnet wurde. Dies ist möglich, aber es muss folgender Sachverhalt beachtet werden:
Sobald für den Excel-Report ein Excel-Template genutzt wird welches Formeln enthält und mit
optimistischer Formelaktualisierung gearbeitet wird, kann nicht garantiert werden dass der
Import 100% funktioniert!
Technischer Hintergrund:
Der Export erfolgt mit der Option optimistische Formelaktualisierung (Maske Excel Template > Reiter
Report > Kontrollfeld Optimistisch aktualisieren). Die Excel-Datei wird anschließend nicht manuell mit
MS Office geöffnet sondern direkt importiert. Die in der Excel-Datei definierten Formeln können von
Apache POI nicht aufgelöst werden. Durch die optimistische Formelaktualisierung wird jedoch kein
Fehler beim Export erstellt sondern es wird in der Excel-Datei eine Option gesetzt, welche die
Neuberechnung der Formeln beim Öffnen der Datei im Microsoft Excel startet. Dadurch, dass die Datei
jedoch nicht manuell geöffnet wurde, sind die Formeln auch nicht berechnet worden. Beim Import wird
die gleiche Bibliothek (Apache POI) verwendet, auch hier können die Formeln nicht berechnet werden.
Damit kommt es zu dem Fehler, dass der Export zwar einwandfrei funktioniert, der Import jedoch
scheitert.
Mögliche Lösungsvarianten:
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
-
Seite 331 von 384
Verzicht der Formeln im Template
Es muss sichergestellt werden, dass vor dem Import die Excel-Datei mit MS Excel geöffnet
wurde, damit die Neuberechnung der Formeln aktiviert wird.
Die Restriktion bezüglich der Formeln in Excel-Dokumenten besteht leider und kann von Robotron
nicht beeinflusst werden. Eine 100%-ige Kompatibilität von Excel-Dokumenten in der
Programmiersprache Java (auf dem die KomA basiert) ist nicht möglich und kann auch nicht
gewährleistet werden.
13.9.2
Problem mit Datumsformaten
Beim manuellen Erstellen einer Excel-Datei mit einer Datumsspalte – die Datumsspalte wird dabei
einfach gezogen, sodass Excel weitere Werte für das Datum automatisch anlegt – kann es zu folgenden
Problemen kommen.
Es kommt zu einer Warnung: Inexact timestamp x .005 from Excel-File. Beim
Zusammenspiel zwischen Apache POI und Excel kommt es zu einen Problem. Die Datumsinformationen
sind nicht exakt und müssen gerundet werden, die Warnung signalisiert diesen Fehlstand. Leider ist
dafür aktuell keine Lösung vorhanden, die Warnungen müssen einfach ignoriert werden.
Des Weiteren kann es, in Abhängigkeit der definierten Importkonfiguration bezüglich der Zeitzone, zu
schwerwiegenden Problemen bei der Zeitumstellung (Winter-Sommer / Sommer-Winter) kommen
obwohl die Excel-Datei fehlerfrei aussieht. Eine mögliche Lösung ist die Kontrolle der Datumsspalte und
die Änderung des Formates auf Text. Anstelle von Benutzerdefiniert oder Datum also Text nutzen
(Achtung: unter Umständen nimmt Excel eine Konvertierung des Dateninhaltes vor, der angepasst
werden muss). Damit wird vom Excel kein Date-Objekt mehr geliefert, sondern eine Zeichenkette, die im
Importkonfigurator korrekt in Abhängigkeit zur Konfiguration behandelt werden kann.
Seite 332 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 13-28 Dialog Zellen formatieren
13.10 Probleme/Lösungen
13.10.1 Eigentumsnummer beim Speichern der Konfiguration erforderlich
Mit eCount- 00058988 wurde eine Prüfung auf die Angabe einer Eigentumsnummer implementiert.
Hintergrund: Wird im Importkonfigurator das Feld Eigentumsnummer nicht gefüllt, so werden
Warnungen ins Tagebuch geschrieben. Das Problem ist aber, dass der Anwender aus der Meldung im
Tagebuch nicht darauf schließen kann, dass und in welcher Filter-Konfiguration ein Fehler aufgetreten
ist.
Beim Import (Filter CSV) wird nun eine Default-Eigentumsnummer (abgeleitet aus der FKID1, jedoch
max. die ersten 20 Zeichen) gebildet wenn keine Eigentumsnummer vorhanden ist. Dies verhindert
Warnungen im Tagebuch die keiner Datei beziehungsweise Konfiguration zugeordnet werden
können. Damit werden Warnungen aus dem Tagebuch in den Importkonfigurator verschoben, was
die Zuordnung von Fehler und Ursache deutlich einfacher gestaltet.
Lösung: Die Eigentumsnummer (Kanal-Gruppe) sollte mit einen sinnvollen Eintrag befüllt werden. Die
Eigentumsnummer kann jedoch maximal 20 Zeichen beinhalten, intern ist im Filter automatisch eine
Limitierung eingebaut wobei die ersten 20 Zeichen der Übergabezeichenkette verwendet werden.
Ein geeigneter Wert können beispielsweise die letzten 20 Zeichen des MeteringCodes sein. Benötigt
man die Eigentumsnummer nicht bzw. hat keinen sinnvollen Wert parat kann einfach die
Konfiguration der FKID-1 verwendet/kopiert werden!
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 333 von 384
13.10.2 Anzeige im Importkonfigurator stimmt nicht mit der Anzeige im eCount überein
Bei Periode täglich kommt es im StandardImport Viewer (MF_SIEC) zu einer Unschönheit. Unter
Startzeitstempel wird der rechtsbündige Wert angezeigt, das ist bei Start-Datum 16.09.2015 und Periode
täglich der 17.09.2015. In der Spalte Datum steht in dem Fall der gleiche Wert drin, hier muss dieser
Startzeitstempel also ignoriert werden!
Abbildung 13-29 StandardImport Viewer - Unschönheit bei Periode täglich
13.10.3 Datenbank-Fehler / Übermittlung von KENNUNG_ORIG
Der DB-Fehler kann unter Umständen auch eine ganz andere Ursache haben!
Beim Import kommt es zu einer Fehlermeldung deren Ursache nicht erkennbar ist.
Datenbank-Fehler: Zu großer Wert für Spalte eingefügt: "x":
java.sql.SQLException (at
de.robotron.ecount.database.PreparedStatementImpl:269/de.robotron.ecount.db_ifc.PKG_IMPORT_AP
I_Impl:1616/de.robotron.ecount.db_ifc.PKG_IMPORT_API_Wrapper:273/de.robotron.ecount.db_ifc.PK
G_IMPORT_API_Impl:48/de.robotron.ecount.dataimport.xml.EcountDatenHandler:1941)
Hintergrund:
Das Problem tritt bei der Übermittlung des Wertes KENNUNG_ORIG im Typ TY_IMPORT_API_LG_WERT
auf. Dieser Typ wird in pkg_import_api.fnc_add_lg_tab_k übermittelt. Der Wert KENNUNG_ORIG ist mit
VARCHAR2(10) definiert.
Im Importkonfigurator ist zusätzlich ein Mapping für den Wert-Status definiert der eine decode-Funktion
enthalten muss [decode(cellValue(n,n),"W",("","N"))]. Dadurch wird implizit der Wert (im Beispiel aus
cellValue(n,n)) als KENNUNG_ORIG verwendet. Der Inhalt dieser Zellen ist größer als 10 Zeichen, was die
Ursache des Problems ist.
Das Problem tritt weiterhin nur bei der Nutzung von CSV2 zu, da hier die Übergabe an die Datenbank
über den Typ TY_IMPORT_API_LG_WERT stattfindet, was bei CSV nicht der Fall ist.
Lösung:
Die Übermittlung von KENNUNG_ORIG kann per Einstellung deaktiviert werden.
Die Einstellung heißt IMPORT_ORIGINAL_STATUS und kann die Werte N oder Y tragen, der Default
ist Y. Diese Einstellung kann nicht mit den Importkonfigurator ausgewählt werden sondern muss
manuell in die Properties-Datei eingetragen werden.
Seite 334 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Bei mehr als 10 Zeichen für KENNUNG_ORIG wird der Wert nun automatisch auf 10 Zeichen gekürzt.
13.11 Besondere Import-Möglichkeiten (CSV2)
Über den CSV2-Importfilter sind spezielle Importmöglichkeiten vorhanden die in diesen Kapitel näher
beschrieben werden.
Für diese Varianten gibt es keine Konfigurationsmöglichkeit, die Anpassung/Erstellung der
Properties-Dateien muss manuell über einen Editor geschehen.
13.11.1 Import von Zählerständen aus CSV-Datei
Ausgangspunkt ist folgende CSV-Datei
ZAEHLPUNKTBEZEICHNUNG;OBIS;ERLEDIGTDATUM;Wert
DE00XXXXXXX4400000000000000XXXXXX;1-1:1.8.0;04.12.2014;2634,21
DE00XXXXXXX4710000000000001XXXXXX;1-1:2.8.0;04.12.2014;3636
DE00XXXXXXX6900000000000001XXXXXX;1-1:1.8.0;21.11.2014;4711
DE00XXXXXXX9700000101300000XXXXXX;1-1:1.8.0;04.12.2014;777777
Die zugehörige Properties-Datei (z.B. CSV_ZST.properties) hat folgenden Aufbau:
Extensions = csv
FILTER = CSV2
DATENQUELLE = CSV
ENCODING = ISO-8859-1
TYPE = ZST
SEPARATOR = ;
VTP_ID_MANDANT=x
DATE_FORMAT = dd.MM.yyyy
TIME = "00:00"
NUMBER_FORMAT = #####0.###
VALUE_FIELD_DIMENSION = {0,1}
MET_CODE = cellValue(1,n)
OBIS_CODE = cellValue(2,n)
DATE = cellValue(3,n)
FIRST_VALUE_FIELD = cellValue(4,2)
EINHEIT = "kW"
Wichtig ist über die Einstellung Filter wird der Verweis auf den CSV2-Importfilter hergestellt, die zu
importierende Datei besitzt als Kodierung ISO-8859-1 und wird über ENCODING definiert. Dass es sich
um Zählerstände handelt wird über TYPE = ZST mitgeteilt. Da weder ein Mandant noch eine Einheit
in der Datei vorkommen werden Standardwerte hinterlegt. Der erste Wert ist in der zweiten Zeile, in der
4 Spalte, dies muss mittels FIRST_VALUE_FIELD = cellValue(4,2) definiert werden. Der
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 335 von 384
nächste Wert befindet sich in der gleichen Spalte eine Zeile drunter, die Konfiguration wird mittels
VALUE_FIELD_DIMENSION = {0,1} vorgenommen.
In der ersten Spalte steht der Zählpunkt MET_CODE = cellValue(1,n) gefolgt von der OBIS
OBIS_CODE = cellValue(2,n), das Ablesedatum ist in der dritten Spalte mit der
Datumsformatierung dd.MM.yyyy (siehe DATE_FORMAT) hinterlegt. Das Datum wird inklusive Uhrzeit
erwartet (ergibt sich aus DATE und TIME), daher muss mit einen Trick TIME = "00:00" eine DefaultUhrzeit mitgegeben werden.
Nach dem Import der Datei werden die Daten im StandardImport Viewer (MF_SIEC) wie folgt angezeigt.
Abbildung 13-30 Anzeige der Zäherstand-CSV-Datei im StandardImport Viewer
In der nachfolgenden Tabelle sind die für einen Zählerstand möglichen Attribute aufgelistet die
letztendlich nach ecount (Import-Tabelle: IMPORT_VB) importiert werden können.
Tabelle 13-2: Import von Zählerständen aus CSV-Datei – mögliche Attribute
Einstellung in PropertiesDatei
OBIS_CODE
EINHEIT
WANDLERFAKTOR
Beschreibung
Feld-Referenz '{x,y}' für OBIS-Code
(p_edis_kennz in pkg_import_api. prc_add_verbrauchsdaten3)
Feld-Referenz für die Einheit, Defaultwert möglich z.B. "kW"
(p_einheit in pkg_import_api. prc_add_verbrauchsdaten3)
Feld für Wandlerfaktor (nur für Primärwerte!)
(p_wdl_faktor in pkg_import_api. prc_add_verbrauchsdaten3)
VORKOMMASTELLEN
Feld für Anzahl Vorkommastellen bei Zählern
NACHKOMMASTELLEN
Feld für Anzahl Nachkommastellen bei Zählern
STATUS
ORIG_STATUS
Feld-Referenz für Wert-Status
(p_flag in pkg_import_api. prc_add_verbrauchsdaten3)
Feld-Referenz für Original-Wert-Status
(p_original_status in pkg_import_api. prc_add_verbrauchsdaten3)
Seite 336 von 384
Einstellung in PropertiesDatei
BRENNWERT
Z_ZAHL
BWZ_VON
P_BWZ_VON
P_BWZ_BIS
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Beschreibung
Feld-Referenz für Brennwert, Defaultwert möglich z.B. 0
(p_brennwert in pkg_import_api. prc_add_verbrauchsdaten3)
Feld-Referenz für Zustandszahl, Defaultwert möglich z.B. 0
(p_z_zahl in pkg_import_api. prc_add_verbrauchsdaten3)
Feld-Referenz für Zustandszahl
(p_von in pkg_import_api. prc_add_verbrauchsdaten3)
Beginn des Brennwertzeitraumes
(p_bwz_von in pkg_import_api. prc_add_verbrauchsdaten3)
Ende des Brennwertzeitraumes
(p_bwz_bis in pkg_import_api. prc_add_verbrauchsdaten3)
Feld-Referenz für Zählwerkskennzeichen
ZAEHLWERKSKENNZEICHEN
SCHWACHLASTKENNZEICHEN
(p_zaehlwerkskennung in pkg_import_api.
prc_add_verbrauchsdaten3)
Feld-Referenz für Schwachlastkennzeichen
(p_schwachlastfaehig in pkg_import_api. prc_add_verbrauchsdaten3)
TIME
Feldreferenz für Zeitstempel zum aktuellen Werte-Feld, Defaultwert
möglich z.B. "00:00"
DATE
Feldreferenz für Datum zum aktuellen Werte-Feld
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 337 von 384
14 EXCEL Reports
Für die Abarbeitung der Excel-Reports gibt es zwei Varianten. Einmal kann die Verarbeitung automatisch
per Export-Auftrag über die KomA realisiert werden (Exportfilter 12.14). Bei der anderen Variante kann
der Anwender über die Oberfläche den Report direkt starten und das Ergebnis auf seinen Rechner
herunterladen. Bei der zweiten Variante wir der Excel-Report direkt auf den Applikations-Server (dem
Weblogic-Server) ausgeführt und das Ergebnis anschließend an den Client-Rechner übertragen.
14.1 Besonderheiten
Die Excel-Reports werden nicht über Microsoft Excel, sondern über eine 3rd Bibliothek in Java Apache
POI generiert. Daher sind keinerlei extra Lizenzkosten oder Installationen auf dem KomA-Server
notwendig.
Hinweise:
Apache POI ist damit ein Nachbau der Excel-Funktionalität in Java und aus diesem Grund nicht 100%
mit Microsoft Excel vergleichbar. So werden beispielweise nicht alle Formeln von POI unterstützt.
Selbst wenn einzelne Formeln unterstützt werden ist es möglich, dass eine Kombination
verschiedener Formeln wiederum nicht unterstützt wird. Es wird daher immer geraten, die Funktion
optimistisch aktualisieren zu verwenden.
Das Problem kann im ecount umgangen werden, indem in der Maske Excel Template (MF_EXR_TPL) die
Funktion optimistisch aktualisieren für den Report aktiviert wird. Damit wird bei nicht unterstützen
Formeln die Abarbeitung nicht unterbrochen. Zusätzlich wird dem Excel-Dokument ein Flag mitgegeben,
mit dem Microsoft Office beim Öffnen dieses Dokumentes eine Neuberechnung aller Formeln
durchführt. Damit ist bei der Nutzung von Microsoft Office das Problem behoben.
Es kann nicht garantiert werden, dass die Funktionalität auch von OpenOffice oder LibreOffice oder
anderen Tools unterstützt wird.
14.2 Restriktionen bezüglich Spalten und Zeilen
Die Excel-Format 2003 Restriktion besteht auch weiterhin für das Excel-Format 2007/2010. Die
maximale Anzahl an Spalten ist 256, die maximale Zeilenanzahl ist 65536. Ursache für diese
Einschränkung sind die zugrundeliegende Implementierung (in Apache POI und deren Abhängigkeiten)
und der Verbrauch an Hardwarespeicher. Sollen Excel-Dateien mit einer größeren Anzahl an Spalten
oder Zeilen exportiert werden, kann dies über die Implementierung eines speziellen (neuen) Filters
realisiert werden.
Mit eCount- 00065023 (R 5.2 lfd. Nr. 1197) wurden die Grenzen beim Export über die KomA erweitert.
Dies geschieht durch Abfrage des zur Verfügung stehenden Arbeitsspeichers (für den Datenversand). In
der folgenden Tabelle ist aufgeschlüsselt wie viele Spalten und Zeilen maximal zur Verfügung stehen.
Seite 338 von 384
Zur Verfügung stehender
Arbeitsspeicher
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Max. Anzahl an Zeilen
Max. Anzahl an Spalten
< 4.000 MB
65.536
256
> 4.000 MB
200.000
300
> 8.000 MB
500.000
500
> 12.000 MB
600.000
1.000
> 16.000 MB
1.048.576
2.000
Die Einrichtung eines Excel-Reports-Versand-KomA ist im Kapitel 3.3.5.5 beschrieben.
Achtung: Da Java intern selbst Arbeitsspeicher benötigt, wird die maximal Anzahl an Zeilen nicht bei
–Xmx16g sondern erst bei –Xmx17g zur Verfügung stehen!
Es können auch weiterhin OutOfMemory-Fehler auftauchen da jeder Excel-Report unterschiedlich ist
bezüglich der zu exportierenden Daten und damit auch unterschiedlich viel Arbeitsspeicher benötigt. Es
kann also nicht sichergestellt werden, dass bei 14 GB Arbeitsspeicher auch wirklich 600.000 Zeilen mit
1.000 Spalten exportiert werden können. Aus diesem Grund wurde die maximal Anzahl an Spalten auch
nur auf 2.000 erhöht (Excel selbst kann bis zu 16.384).
Tritt ein OutOfMemory-Fehler auf gibt es nur 2 Optionen:
1. Verringerung des Umfangs des Excel-Reports
2. Erhöhung des Arbeitsspeichers für den KomA-Datenversand-Prozess.
14.3 Versionsübersicht abfragen
Die Versionsabfrage kann über einen kleinen Trick aus der Oberfläche (MF_EXR_TPL) heraus geöffnet
werden. Dazu muss ein Report ausgewählt werden, über die Schaltfläche „Report erzeugen“ öffnet sich
ein kleiner Dialog indem man rechts oben ein Doppelklick tätigen muss. Daraufhin öffnet sich ein
weiteres Informationsfenster indem unter anderem die Versionen der EXCEL_REPORTS.jar ausgegeben
werden.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 339 von 384
Abbildung 14-1 Excel Reports: Versionsübersicht abfragen
14.4 EXCEL Reports über eCount-Oberfläche
Wird der Report direkt über die Oberfläche aufgerufen (aktuell existiert nur eine Forms-Oberfläche)
wird der Report direkt gestartet. Bei Forms wird auf den Applikation Server dafür ein neuer Java-Prozess
initialisiert. Dieser Java-Prozess ist unabhängig von dem Java-Prozess des Applikation Servers!
Bei der Erstellung dieses Java-Prozesses wurde aktuell die Default-Sprache des Betriebssystems
verwendet. Mit diesen Spracheinstellung werden vom Oracle JDBC-Driver automatisch die NLSParameter (NLS_LANGUAGE, …) initialisiert. Unterscheidet sich jedoch die Betriebssystem-Sprache des
Weblogic-Servers von den Spracheinstellungen des Nutzers in ecount kommt es zu ungewünschten
Resultaten (z.B. bei der Ausgabe von Monatsnamen per SQL).
Mit eCount- 00058594 wurde eine neue Einstellmöglichkeit für die EXCEL-Sprache implementiert. Es gibt
dafür eine neue globale Einstellung (EXR_NLS_LANGUAGE - Spracheinstellung für Excel Reports) der per
Default auf GERMAN steht und benutzerscharf administriert werden kann.
Abbildung 14-2 Globale Einstellung EXR_NLS_LANGUAGE - Spracheinstellung für Excel Reports
Mit dieser Einstellung wird anschließend der Java-Prozess gestartet und die NLS-Einstellungen
entsprechend gesetzt. Unterstütz werden folgende Sprachen (GERMAN, AMERICAN, ENGLISH,
NORWEGIAN, RUSSIAN, TURKISH, SPANISH, FRENCH, ITALIAN, BULGARIAN).
Seite 340 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
14.5 Logging der EXCEL-Reports in der GUI
Den folgenden Inhalt nach „/webapps/<server>/applserv/wforms/ log4j.xml“ kopieren (Datei anlegen).
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<!--====================================================================-->
<!-- Appenders
-->
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="/webapps/ece11ef11r2/applserv/java_server/EXCEL_REPORTS.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="5000KB"/>
<param name="MaxBackupIndex" value="15"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %t %-5p %c{2} - %m%n"/>
</layout>
</appender>
<!--====================================================================-->
<logger name="test.FormsReportBuilder" level="debug" additivity="false">
<appender-ref ref="FILE" />
</logger>
<logger name="test.FormsReportStreamBuffer" level="debug" additivity="false">
<appender-ref ref="FILE" />
</logger>
<logger name="test.FormsReporter" level="debug" additivity="false">
<appender-ref ref="FILE" />
</logger>
<category name="test">
<priority value="DEBUG"/>
</category>
<!--===================================================================-->
<!-- Appender Assignments
-->
<root>
<priority value="info"/>
<appender-ref ref="FILE"/>
</root>
</log4j:configuration>
Der wforms-Ordner ist der Ordner in der die Forms-GUI liegt und in der der Java-Prozess für den
Excel-Report gestartet wird, daher sucht das Log4J in diesem Ordner nach der Konfiguration.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 341 von 384
In der log4j.xml ist besonders der Pfad (Zeile 7) relevant, dieser muss angepasst werden! (da
ece11ef11r2 ein WLS bei Robotron ist).
Abbildung 14-3 Excel Reports: log4j.xml
Je nach eingestelltem Pfad sollte die Log-Datei (nachdem das ecount neugestartet wurde und ein ExcelReport über die GUI exportiert wurde) auftauchen. Im Beispiel wurde die Datei EXCEL_REPORTS.log im
Unterordner java_server abgelegt.
Abbildung 14-4 Bsp.-Verzeichnis für EXCEL_REPORTS.log
14.6 Probleme/Lösungen
14.6.1
Embedded record type expected, but Export_Profile_Values received
Dieser Fehler trat bei der Verwendung des Bausteins getProfileValues auf.
Ist-Zustand: Der Kunde hat ein Abo Datenversand mit einem Excel Report als Grundlage erstellt, die
Vorlage sah wie folgt aus:
Abbildung 14-5 ABO-Datenversand mit Excel-Report – Bausteindefinition (getProfileValues)
Seite 342 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 14-6 ABO-Datenversand mit Excel-Report – Konfiguration (getProfileValues)
Diese Vorlage funktioniert an sich. Es wird über alle Linien im Abo iteriert. Dann werden zu jeder Linie
einzeln über den Baustein getProfileValues die Zeitreihenwerte der Periode bestimmt. Man könnte sich
nun nebeneinander immer Zeitskala und Zeitreihenwerte ausgeben lassen. Der Kunde hat die Zeitskala
nur einmal ausgegeben und am Anfang der Tabelle niedergeschrieben.
Dies funktioniert aber nur wenn alle Linien im Abo über den gleichen Zeitraum gültig sind bzw. dem Abo
angehören. Wenn eine Linie z.B. in der Mitte des Monats erst zum Abo gehört werden die Werte
trotzdem an Anfang des Reports (hier ab Zeile 6) ausgegeben. Diese Werte passen dann nicht mehr zu
der Zeitskala (in Spalte A).
Lösung: Die Lösung des Problems ist der Baustein getProfiles. Dieser baut einen großen Block aus allen
Linien im Abo und dem größtmöglichen Zeitraum. Statt also nur die Zeit zu betrachten an dem eine
einzelne Linie dem Abo zugeordnet ist (getProfileValues), wird hier jede Linie mit dem Zeitbereich
gespeichert wo die Linie mit der längsten Zugehörigkeit gültig ist.
Der Trick liegt dann aber in der Konfiguration. Man kann hier nicht die Werte und Zeitstempel (wie dies
normalerweise der Fall ist) aus dem Baustein ausgeben lassen, sondern muss explizit einen Iterator
darunter setzen, auch wenn man diesem keinen weiteren Baustein unterordnet:
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 343 von 384
Abbildung 14-7 ABO-Datenversand mit Excel-Report – Bausteindefinition (getProfiles)
Abbildung 14-8 ABO-Datenversand mit Excel-Report – Konfiguration (getProfiles)
Um auch die richtige Zeitskala ausgeben zu können, muss man noch einmal ohne Schrittweite über
getProfiles iterieren und dann hieraus „größte gemeinsame Zeitskala aller Abolinien“ ausgeben:
Seite 344 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 14-9 Zeitskala bestimmen (getProfiles) - Bausteindefinition
Abbildung 14-10 Zeitskala bestimmen (getProfiles) – Konfiguration
14.6.2
Zellenformatierungen aus Template werden nicht übernommen
Wird im Excel-Template eine Formatierung für alle Zellen angegeben, so geht diese Information
während der Ausführung des Excel-Reports verloren (Kompatibilitätsproblem MS-Excel und Apache
POI). Im unteren Screenshot wurde die Zeile 2 beispielsweise fett mit grünem Hintergrund definiert.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 345 von 384
Als Workaround kann mit einer bedingten Formatierung gearbeitet werden. Dazu wird geprüft ob der
Zellenwert ungleich leer (““) ist, zu der Bedinung kann anschließend die gewünschte Formatierung
vorgenommen werden.
Seite 346 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
15 Performance-Tuning
Dieses Kapitel stellt eine Zusammenfassung wichtiger Parameter, Informationen und Lösungen bereit,
die bei Performanceproblemen angewendet werden können.
15.1 Datenempfang (ComImport)
15.1.1
Hintergrundinformation
Der Datenempfang läuft nach folgendem Schema ab. Eine Datei/E-Mail wird über das entsprechende
Importkonto (FTP, SFTP, E-Mail [= POP3, IMAP], HTTP, FILE) abgerufen, d.h. auf der KomA übertragen.
Anschließend wird für jede Datei geprüft, ob diese bereits von der KomA importiert wurde (um
Mehrfachimporte zu unterbinden). Dies erfolgt über folgendes SQL-Statement:
SELECT COUNT(1) FROM COM_MESSAGE WHERE CACC_ID=? AND
UPPER(MESSAGE_ID)=UPPER(?) AND MESSAGE_CREATED=? AND MESSAGE_SIZE=?
-
CACC_ID ist die ID des Importkontos (ID-Spalte in MF_COMIMPORT – Importkommunikation)
MESSAGE_ID ist bei einer E-Mail der Wert aus dem Header-Feld Message-ID, bei den anderen
Konten ist dies der Dateiname.
MESSAGE_CREATED ist bei einer E-Mail das Sende-Datum, bei anderen Konten das
LastModified-Datum der Datei.
MESSAGE_SIZE ist die Größe der E-Mail bzw. die Dateigröße in bytes
Diese Prüfung erfolgt jedoch nur unter folgender Voraussetzung:
-
HTTP Immer, da per HTTP nie gelöscht/verschoben werden kann
SFTP Wenn das Konto als „read only“ definiert wurde (Maske Kommunikationseinstellungen MF_RIMPORT)
FTP
Wenn das Konto als „read only“ definiert wurde (Maske Kommunikationseinstellungen MF_RIMPORT), gilt sowohl für ImportFTPConnection als auch für
ImportFTPConnection2
FILE
Wenn das Konto als „read only“ definiert wurde (Maske Kommunikationseinstellungen MF_RIMPORT)
E-Mail Wenn das Konto als „read only“ definiert wurde (Maske Kommunikationseinstellungen MF_RIMPORT)
ODER
Wenn in der Config.properties der Parameter
importcom.mex.CHECK_PROCESSED_MAILS aktiviert wurde (d.h. vorhanden ist und den
Wert Y oder J besitzt)
ODER
Wenn alle Import-Formate für das Konto keine Endaktion haben, beziehungsweise die
Endaktion keine ausgewählt wurde (Maske Importkommunikation - MF_COMIMPORT > Reiter
edit > Spalte Aktionstyp)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 347 von 384
Abbildung 15-1: Definition von "read only" für das Importkonto
Bei allen Importkonten (außer HTTP) ist es daher unbedingt notwendig, Aktionen für das Leeren der
Importordner bzw. Postfächer festzulegen! Anderenfalls kann es passieren, dass die KomA immer mehr
Zeit für den Import braucht, da zahlreiche „Datei-Schon-Import“-Prüfungen durchgeführt werden. Im
schlimmsten Fall, kann es zum Stillstand des Comimport führen. Das ist der Fall, wenn mehr Zeit für die
Prüfung benötigt wird als dem Importkonto zur Verfügung steht. Das primäre Ziel der Aktionen ist es,
also sicherzustellen, dass die zu überwachenden Ordner nicht überfüllt werden. D.h. dass die Dateien/EMails entweder in andere Ordner (die nicht von der KomA überwacht werden) verschoben oder
komplett gelöscht werden.
Werden „fremde“ Importkonten angesteuert (z. B. der FTP von EEX), so wird der Nutzer dort mit großer
Sicherheit keine Rechte für das Löschen/Verschieben von Dateien haben und deshalb ist die Definition
von Aktionen auch nicht zielführend. Hier macht die Einstellung „read only“ Sinn. Bei anderen
Importkonten, bei denen nur das Leserecht vergeben wurde, sollte mit dem jeweiligen Betreiber über
mögliche Maßnahmen zur Reduzierung der Dateien/E-Mails gesprochen werden (so dass die Daten z. B.
periodisch nach X-Tagen z. B. von einem Dritten gelöscht werden).
15.1.2
Wie sieht ein korrekt definiertes E-Mail-Konto aus?
Auf E-Mail-Konten sollte, wenn möglich, immer über das IMAP-Protokoll (also mit den Typ imap)
zugegriffen werden. Da beim Typ pop3, aufgrund der Restriktion des zugrundeliegenden POP3Protokolls, zum Beispiel kein Verschieben unterstützt wird. Bei der Verwendung von pop3 muss als
Aktion immer löschen verwendet werden. Wichtig ist, dass die Kommunikationseinstellung nicht als
„read only" definiert werden (Maske Kommunikationseinstellungen - MF_RIMPORT)!
Abbildung 15-2: Kennzeichnung eines E-Mail-Kontos als read only
Bei der Definition der Importkommunikation (Maske Importkommunikation - MF_COMIMPORT) muss
nun noch folgender Sachverhalt beachtet werden. Die Einstellung bei Operation nach dem Abholen wird
für alle Nachrichten ausgeführt, für die kein Format zutrifft. Das ist dann der Fall, wenn die
Importformate mit Filterkriterien gesteuert werden. Dazu folgen nun ein paar Beispiele, welche die
Sache verdeutlichen:
Beispiel - Falsch:
Es wird ein Format verwendet, welches E-Mails anschließend in einen Unterordner verschiebt, dies ist
i.O., da IMAP verwendet wird. Für das Format ist ein Filterkriterium spezifiziert. Es ist jedoch keine
Operation für alle anderen E-Mails definiert. Damit besteht die Gefahr, dass das Postfach überfüllt wird
(da Spam bzw. alle E-Mails, die nicht auf den Filter passen, im Postfach liegen bleiben).
Seite 348 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 15-3: Beispiel: Falsch konfiguriertes E-Mail-Konto
Beispiel – Richtig:
Zusätzlich zur Aktion für das Format ist eine Aktion für alle E-Mails definiert, die nicht auf den Filter
(Datei im Anhang beginnt mit CONTRL) passen. Damit wird das Postfach „INBOX/TEST_KOMA“ definitiv
immer geleert.
Abbildung 15-4: Beispiel: Korrekt konfiguriertes E-Mail-Konto
Muss als Typ pop3 verwendet werden, so muss als Aktion löschen gewählt werden, da verschieben
über POP3 nicht möglich ist!
15.1.3
Definition anderer Importkonten (außer HTTP)
Wie bei einem E-Mail-Konto sollte auch hier sichergestellt werden, dass bei der Nutzung von Filtern eine
Aktion für alle Dateien definiert wird, auf die kein Filterkriterium passt. Zusätzlich sollte auch hier wieder
ein Aktionstyp löschen oder verschieben verwendet werden.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 349 von 384
Abbildung 15-5: Konfiguration E-Mail-Konto: Operation für abgeholte Dateien und Aktionstyp für alle übrigen
15.1.4
Bereinigung der COM-Import-Tabellen
Über den Job „COM_IMPORT-Tab. Bereinigen“ (Import - 002735) können die Tabellen (COM_MESSAGE,
COM_MESSAGE_ATTACH, COM_MESSAGE_DETAIL, COM_ERROR) bereinigt werden.
Abbildung 15-6 Anlage COM-Import-Bereinigung
Dazu werden die beiden globalen Parameter (LIFESPAN_ERRORS und LIFESPAN_MESSAGES) verwendet
die einen Wert in Monaten erwarten. Wird beispielsweise für LIFESPAN_MESSAGES der Wert 10
definiert, werden alle COM_MESSAGE-Einträge gelöscht die älter als 10 Monate sind (Referenzspalte ist
COM_MESSAGE .MESSAGE_RECEIVED)
Abbildung 15-7 COM-Import-Bereinigung - Parameter
Seite 350 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
16 Checkliste KomA-Fehlermeldungen
Bevor eine KomA-Fehlermeldung aufgegeben wird sollte geprüft werden ob das Problem nicht bekannt
ist und eine Lösungsbeschreibung vorhanden ist.
16.1 Bekannte Probleme und deren Lösungen
In den meisten Kapiteln gibt es einen Unterpunkt „Probleme/Lösungen“ in dem bekannte Probleme
beschrieben sind. Dieses Kapitel fasst alle Kapitel zu dieser Thematik „Probleme und Lösungen“
zusammen.
-
Allgemeine siehe 4.2
E-Mail (Comimport) siehe 5.3.7
File (Comimport) siehe 5.4.2
FTP (Comimport) siehe 5.5.4
SFTP (Comimport) siehe 5.6.5
HTTP (Comimport) siehe 5.8
Datenimport siehe 6.10
E-Mail (Datenversand) siehe 7.3.6
FTP (Datenversand) siehe 7.4.6
SFTP (Datenversand) siehe 7.6.3
Datenversand Allgemein 7.8
EDIFACT – ALOCAT siehe 10.8.3
EDIFACT – CONTRL siehe 10.9.4
EDFIACT – MSCONS siehe 10.11.3
EDIFACT - Allgemein siehe 10.19
16.2 Bereitstellung aller notwendigen Informationen bei Fehlern im KomA
Das vorliegende Dokument beschreibt die Informationen, die bei einer KomA-Fehlermeldung zwingend
notwendig sind. Das heißt eine Überprüfung der Fehlermeldung kann erst nach Übermittlung aller
relevanten Informationen zielführend erfolgen.
Alle Screenshots stammen vom Robotron-System und dienen nur dem besseren Verständnis. Die
Verzeichnisstruktur kann auf Kundensystemen abweichen.
16.2.1
Allgemeine Informationen
Die in diesem Kapitel beschriebenen Informationen müssen sowohl bei Import- als auch bei
Exportfehlern stets angegeben werden!
16.2.1.1 Versionsübersicht
Die aktuelle Versionsübersicht des betreffenden KomA-Servers ist immer zu übermitteln.
Dazu muss listVersions.cmd (bei Windows-System) bzw. listVersions.sh (bei Linux-System) auf dem
KomA-Server ausgeführt werden. Im Unterverzeichnis tmp des Servers ist dann eine Datei versions.txt
enthalten, diese muss übermittelt werden.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 351 von 384
Abbildung 16-1 Ermittlung der Versionsübersicht
Abbildung 16-2 Ergebnis der Ermittlung der Versionsübersicht
Die Übermittlung des ecount – Patchstandes (bzw. einer laufenden ecount-Nummer) ist nicht
ausreichend, da KomA-Server und ecount – Patchstand oft unabhängig voneinander aktualisiert
werden. Nur über die Datei versions.txt können die aktuell verwendeten KomA-Softwarestände
bestimmt werden.
16.2.1.2 Properties-Dateien
Properties-Dateien dienen zur Konfiguration der Import- und Export-Filter auf dem KomA-Server und
liegen im Unterverzeichnis config/import bzw. config/export.
Insbesondere bei Problemen mit EDIFACT oder spezifischen Formaten wie ESS muss die entsprechende
Properties-Datei übermittelt werden. Die Properties-Dateien für den Import liegen grundsätzlich unter
config/import und heißen wie das Format in der datenimport.ini mit der Dateiendung properties. Die
Properties-Dateien für Exportformate liegen immer unter config/export.
Die Properties-Datei für den Import und Export von EDIFACT-Dateien lautet EDI.properties. Des
Weiteren ist es besser, mehr Informationen zur Verfügung zu stellen als zu wenig. Daher können
auch die Unterordner config/export bzw. config/import komplett übermittelt werden (bitte vorher
als ZIP-Datei packen).
16.2.1.2.1 Korrekte Properties-Datei für den Import identifizieren
Ausgangspunkt: Maske Import-Dateien (Import > Import-Dateien).
Seite 352 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 16-3 Properties-Datei (Import)
In der Maske Import-Dateien können verschiedene Details angesehen werden. Konkret wird das Detail
Format benötigt. Wenn dieses Detail nicht vorhanden ist, ist der Name der .properties-Datei gleich dem
der „untersten“ Ebene config/import/<Datenquellen-ID>.properties.
Bei Vorhandensein des Details Format, entspricht der Name der .properties-Datei der „untersten“ Ebene
config/import/<Inhalt-von-File-Detail-Format>.properties.
Ist die .properties-Datei der „untersten“ Ebene nicht vorhanden, so gelten die Default-Einstellungen des
Filters. Ist die .properties-Datei der „untersten“ Ebene gefunden, muss dort nachgeschaut werden, ob
die Eigenschaft ALIAS vorhanden ist. Der Wert von ALIAS verweist auf eine weitere .properties-Datei,
welche ebenfalls bereitgestellt werden muss. Das ist solange zu wiederholen, bis kein ALIAS mehr
gefunden wird oder keine .properties-Datei mehr zum Wert von ALIAS zur Verfügung steht. Von der
Datenbank aus kann also der Name der ersten .properties-Datei bestimmt werden. Um diese und die
weiteren .properties zu beschaffen, ist allerdings Zugriff auf den KomA-Server notwendig.
Es ist u. U. einfacher, den gesamten config/import-Ordner als ZIP-Datei zu packen und im Ticket zu
hinterlegen.
Ausgangspunkt ist der KomA-Server:
Es können beliebige Datenquellen angelegt werden, die anschließend per Properties-Datei auf den
richtigen KomA-Handler (Java-Klasse, die für die Abarbeitung zuständig ist) verweisen. Über die Datei
datenimport.ini kann herausgefunden werden, welcher Import-Ordner mit welcher Datenquelle
verknüpft ist.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 353 von 384
Abbildung 16-4
Properties-Datei
finden
In der Datenimport.ini wird nach der Dateierweiterung das Format angegeben.
Beispiel:
*.xml XYZ_ABC import/XYZ
Dateien, die im Importordner import/XYZ abgelegt werden, werden über die Datenquelle XYZ_ABC
bearbeitet. Nun muss überprüft werden, ob unter config/import eine XYZ_ABC.properties vorhanden ist
und falls ja, muss diese bei der Meldung des Fehlers angegeben werden.
16.2.1.2.2 Korrekte Properties-Datei für den Export identifizieren
Ausgangspunkt ist die Maske Export-Aufträge (Export > Export-Aufträge). Die richtige Properties-Datei
kann oft bereits über das Format ermittelt werden. Im Beispiel ist eine ALOCAT-Datei auf Fehler
gelaufen. Unter config/export ist eine ALOCAT.properties-Datei vorhanden, die für die Fehlermeldung
von Relevanz ist.
Seite 354 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 16-5 Properties-Datei Export-Auftrag (1)
Abbildung 16-6 Properties-Datei Export-Auftrag (2)
16.2.2
Zentrale Konfigurationsdatei (Config.properties)
Die Datei Config.properties, die sich im Unterordner config des KomA-Servers befindet, stellt eine
zentrale Konfigurationsdatei dar und sollte immer (sowohl bei Import- als auch bei Export-Problemen)
übermittelt werden.
16.2.3
LOG-Dateien
Die KomA schreibt im KomA-Unterverzeichnis log zahlreiche LOG-Dateien.
Per Default wird für den Datenimport eine datenimport.log, für den ComImport die importcom.log und
für den Export die exportcom.log geschrieben.
Die Namen können ggf. über die Config.properties in den Einstellungen export.logfile, import.logfile und
importcom.logfile verändert werden.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 355 von 384
Die Log-Dateien werden in regelmäßigen Abständen, beim Überschreiten einer Dateigrößengrenze, als
ZIP-Datei archiviert.
Es ist wichtig die entsprechenden Log-Dateien immer mitzuliefern. Bei ComImport-Problemen also die
importcom.log-Dateien, bei Export-Problemen die exportcom.log-Dateien usw.
Wenn alle Logdateien übermittelt werden, weil der Anwender nicht sicher ist in welcher Log-Datei die
Info nun steht, so muss unbedingt der Zeitpunkt des Problems genannt werden um das Problem
lokalisieren zu können.
16.3 Kochrezept – Datenermittlung bei Exportfehlern
Bei Exportfehlern ist die Übermittlung der Versionsübersicht (siehe 16.2.1.1) der Properties-Dateien
(siehe 16.2.1.2) und der zentralen Konfigurationsdatei (siehe16.2.2) zwingend notwendig.
Zusätzlich muss die interne robotron-XML-Datei für den jeweiligen Export-Auftrag angegeben werden.
Diese Datei stellt den Dateninhalt dar, der vom ecount-System (Datenbank) dem KomA-Server
übermittelt wird. Damit ist es möglich, evtl. vorhandene Fehler einzugrenzen (Fehler auf dem KomAServer, im Abo, im Datenbestand…). Die Datei kann wie folgt gefunden werden:
Ausgangspunkt ist die Maske Export-Aufträge:
Abbildung 16-7 Maske "Export-Aufträge“
Mithilfe der ID (Beispiel: 253100) kann auf dem KomA-Server gesucht werden. Dabei muss im
Exportverzeichnis des KomA-Servers (per Default ist dies der Ordner Email, es kann jedoch über die
Datei Config.properties mit der Einstellung export.archive_dir auch ein anderes Verzeichnis konfiguriert
sein) nach einer ZIP-Datei im Format ec_<export_auftrag_id>_<format>.zip gesucht werden.
Seite 356 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Ist keine XML-Datei vorhanden, wurde die Option der XML-Generierung ggf. deaktiviert. Da die
Problemanalyse ohne XML-Datei sehr schwer ist, sollte diese Option aktiviert und der Exportauftrag
(wenn möglich) wiederholt werden. Die XML-Generierung kann über folgende Optionen aktiviert
werden:
config\Config.properties: export.write_xml=Y
Abbildung 16-8 Config.properties - Einstellung XML-Datei
Der Wert bei KomA-Server (siehe Abbildung 16-7) wird vom KomA-Server eingetragen, der den
Exportauftrag abgearbeitet hat. Dieser Wert wird im KomA-Server in der Datei Config.properties in
der Einstellung importcom.comserver = x hinterlegt.
(Achtung: Kein Rechtschreibfehler, die Einstellung importcom.comserver wird für den Export
mitgenutzt).
16.3.1
Beispiel
Export-Auftrag „253100“ auf dem Robotron-Entwicklungs-KomA-Server.
Annahme:
export.archive_dir in Datei Config.properties wurde nicht modifiziert, damit ist die Suche im Unterordner
Email vorzunehmen.
Ergebnis:
Im Verzeichnis Email\error wurde für den Export-Auftrag eine ZIP-Datei gefunden. Diese ZIP-Datei muss
bei einer Fehlermeldung bezüglich eines Exportproblems immer übermittelt werden.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 357 von 384
Abbildung 16-9 Interne Robotron-XML-Datei finden
Sollte die ZIP-Datei nicht gefunden werden, kann die Einstellung export.archive_dir in der Datei
Config.properties geprüft werden. Ob überhaupt auf dem richtigen KomA-Server gesucht wird, kann
über die Datei Config.properties (importcom.comserver) und den Wert in der Spalte KomA-Server (siehe
Abbildung 16-7) kontrolliert werden.
Seite 358 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 16-10 KomA-Server
16.3.2
Ermittlung der Export-Auftrag-ID bei EDIFACT-Dateien
Steht nur die EDIFACT-Datei als Informationsquelle zur Verfügung, kann mit Hilfe eines SQL-Befehles die
Export-Auftrag-ID ermittelt werden. Beim Export wird das Datenelement „BGM.C106.1004“ (EDINachrichtennummer, die vom Absender des Dokuments vergeben ist) mit einem vom ecount
generierten, für den Absender eindeutigen, Wert belegt.
Über diesen Wert ist es möglich, im ecount (Tools > EDIFACT-Cockpit) zu suchen. Wichtig hierbei ist,
dass das von-Datum (Pflichtfeld) mit einem hinreichenden Wert eingeschränkt wird. Anschließend kann
in der Karteikarte Allg. (Allgemein) über die Spalte UNB-Ref. gesucht werden. Die Suche wird hierbei
ganz normal mit F7 eingeleitet und mit F8 ausgeführt.
Beispiel MSCONS-Datei
Die UNB-Ref. Lautet hier „EC4_260376E“:
Abbildung 16-11 MSCONS-Datei
Diese Information kann auch aus dem robotron*EdifactKonverter entnommen werden:
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 359 von 384
Abbildung 16-12 EdifactKonverter
Mit diesem Wert wird anschließend in der Maske Edifact-Cockpit gesucht. Dabei wird das von-Datum auf
einen ausreichend großen Zeitraum geändert und anschließend mit F7 die Suche eingeleitet. Danach
wird dieser Wert in der Karteikarte Allg. in die Spalte UNB-Ref. eingetragen und die Suche mit F8
ausgeführt. Wenn die Suche erfolgreich war, kann in der Karteikarte Export die Export-Auftrag-ID
ermittelt werden.
Abbildung 16-13 EDIFACT-Cockpit Suche
Seite 360 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 16-14 EDIFACT-Cockpit Export
16.3.3
Datenversand-ABO über EAU_ID identifizieren
Mit der EXPORT_AUFTRAG.ID (EAU_ID) kann folgendes Select ausgeführt werden:
select p.eah_id, p.eau_id, p.* from eab_protokolle p where p.eau_id = <EAU_ID>
Liefert das obige SQL ein Ergebnis kann mit der EAH_ID folgendes Select durchgeführt werden:
select h.eab_id, h.* from eab_historien h where id = <EAH_ID>;
Liefert das obige SQL ein Ergebnis kann über die EAB_ID das Abo identifiziert werden.
select * from eab_historien where id = <EAB_ID>
Wenn die Abfragen kein Ergebnis liefern so ist der Export-Auftrag mit großer Wahrscheinlichkeit
nicht durch ein ABO sondern durch einen automatischen Prozess entstanden.
16.3.4
Fehler beim E-Mail-Versand
Kommt es zu einem Fehler beim Versand von E-Mails (SMTP) so liegt meist ein Konfigurationsproblem
vor. Die verwendete Konfiguration kann mit expliziten Debug-Informationen ausgegeben werden, dies
sollte jedoch nur kurzfristig bei Problemanalysen erfolgen. Folgende beiden Änderungen sind
durchzuprüfen.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 361 von 384
Config.properties: Damit Debug-Ausgaben der JavaMail-Bibliothek in den Datenversand-Logdateien
landen muss folgende Zeile ergänzt/aktiviert werden:
export.MEX.debug = Y
In der Export-Communication.log.properties, Datei befindet sich im config-Ordner, muss folgende Zeile
ergänzt/aktiviert werden:
log4j.logger.de.robotron.ecount.exportcom.sender.MailSenderProperties=
DEBUG
16.4 Kochrezept – Datenermittlung bei Importfehlern
Bei Importfehlern ist die Übermittlung der Versionsübersicht (siehe 16.2.1.1), der Properties-Dateien
(siehe 16.2.1.2) und der zentralen Konfigurationsdatei (siehe 16.2.2) zwingend notwendig.
Zusätzlich muss die Importdatei angegeben werden. Auf dem KomA-Server wird bei einem ImportFehler eine ZIP-Datei mit der Datei und den zugehörigen Protokollen in einem Unterverzeichnis
abgelegt.
Bei Importfehlern wird zusätzlich zwischen ZIP-Dateien und „normalen“ Dateien (EDFIACT, Textdateien,
CSV, EXCEL, …) unterschieden. Das bedeutet, dass Zip-Dateien mit Fehlern im Gegensatz zu „normalen“
Dateien mit Fehlern in einem anderen Unterverzeichnis abgelegt werden.
Das Fehler-Unterverzeichnis für „normale“ Dateien ist standardmäßig err, kann aber über die Datei
Config.properties mit der Einstellung import.errorDir überschrieben werden. Das FehlerUnterverzeichnis für ZIP-Dateien ist standardmäßig zip-error und kann über die Einstellung
import.zipErrorDir umbenannt werden.
16.4.1
Beispiel (ZIP-Datei)
Ausgangspunkt ist die Maske Import-Dateien (Import > Import-Dateien).
Die importierte Datei lautet „IA_7337_EDI_20130404095333458.zip“. Da es eine ZIP-Datei ist, wird diese
im Fehlerfall im Unterverzeichnis zip-error abgelegt.
Seite 362 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 16-15 Beispiel ZIP-Datei (1)
Die Suche nach dem verwendeten KomA-Server kann über die Karteikarte Details erfolgen. Dabei liefert
der FILE_PATH oft Rückschlüsse über die KomA-Instanz.
Abbildung 16-16 Beispiel ZIP-Datei (2)
Die Suche nach den Dateinamen im Import-Ordner sollte die betreffende ZIP-Datei finden, kann auch
aus FILE_PATH entnommen werden, (hier import\EDI).
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 363 von 384
Abbildung 16-17 Beispiel ZIP-Datei (3)
16.4.2
Beispiel (EDIFACT-Datei „ORDERS“)
Bei einer „normalen“ Datei ist wie unter 4.1 vorzugehen.
Der einzige Unterschied ist, dass die Fehlerdatei nicht unter zip-error sondern unter err abgelegt wird.
Die Karteikarte Details liefert über FILE_PATH die Information über das Importverzeichnis.
Laufwerk C: muss hier ausgehend vom Host (rdsnt21) betrachtet werden.
Seite 364 von 384
Abbildung 16-18 Beispiel EDIFACT-Datei (1)
Abbildung 16-19 Beispiel EDIFACT-Datei (2)
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 365 von 384
16.5 Informationsbeschaffung beim ComImport
Beim Abholen von Daten von externen Quellen wie E-Mail-Servern, FTP- und SFTP-Konten können
Fehler nicht immer eindeutig identifiziert werden. Zur genaueren Analyse stehen Logging-Mechanismen
(Log4j) zur Verfügung, die temporär aktiviert werden müssen.
Die Logeinstellungen werden in Properties-Dateien hinterlegt, die wiederum im config Unterverzeichnis
des KomA-Servers abgelegt werden. Per Default heißt die Log-Properties Datei für den ComImport
Import-Kommunikation.log.properties. Sollte diese Datei nicht vorhanden sein, muss sie angelegt
werden.
Import-Kommunikation.log.properties - Beispiel-Konfiguration:
log4j.rootLogger=WARN, Ecount
log4j.appender.Ecount= de.robotron.ecount.util.Log4jAdapter
log4j.appender.Ecount.layout=org.apache.log4j.PatternLayout
log4j.appender.Ecount.layout.ConversionPattern=%d{dd.MM.yyyy HH:mm:ss}
%p %C{1}:%L %M() %m%n
log4j.logger.de.robotron.ecount.importcom=DEBUG
Die Kopfdaten (erste 4 Zeilen) müssen in der Datei immer angegeben sein. Darauf folgen verschiedene
Einstellungen je Package (Kenntnis darüber haben nur die Entwickler beim Hersteller). Für den
ComImport reicht die Zeile aus der obigen Beispiel-Konfiguration aus:
log4j.logger.de.robotron.ecount.importcom=DEBUG
Da die Einstellungen erst nach einem Neustart des ComImport wirken, muss ein Neustart erfolgen. Nach
erfolgreichem Start des ComImports werden im log-Verzeichnis des KomA-Servers in der Datei
comimport.log (Dateiname kann über die Config.properties mittels importcom.logfile auch einen
anderen Namen haben) die zusätzlichen Informationen abgelegt. Nach einer gewissen Zeit (abhängig
von der Datenmenge auf dem System und den Log-Einstellungen) wird die Log-Datei in eine Zip-Datei
gepackt, daher sind die Informationen ggf. in einer aktuellen importcom.log….-Zip-Datei zu finden.
Wichtig: Das Logging sollte aus Performancegründen nur zeitweise, zur Fehleranalyse, aktiviert werden.
Beim Deaktivieren reicht es aus, ein # vor den jeweiligen log4j.logger*-Eintrag zu setzen.
Beispiel:
log4j.rootLogger=WARN, Ecount
log4j.appender.Ecount= de.robotron.ecount.util.Log4jAdapter
log4j.appender.Ecount.layout=org.apache.log4j.PatternLayout
log4j.appender.Ecount.layout.ConversionPattern=%d{dd.MM.yyyy HH:mm:ss}
%p %C{1}:%L %M() %m%n
#log4j.logger.de.robotron.ecount.importcom=DEBUG
Seite 366 von 384
16.5.1
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Explizites Protokollieren des Empfangs von E-Mails
Wie oben erwähnt ist die Log-Konfiguration:
log4j.logger.de.robotron.ecount.importcom=DEBUG
ausreichend, jedoch werden dabei alle möglichen Importkonten (SFTP, FTP, …) protokolliert. Dies
erschwert bei größeren Systemen die Fehlersuche in den Log-Dateien. Anstelle der oben genannten
Konfiguration kann in der Import-Kommunikation.log.properties auch Folgendes hinterlegt werden:
log4j.logger.de.robotron.ecount.importcom.email.MailImportMessage=Debug
log4j.logger.de.robotron.ecount.importcom.email.MailImportMessage.Content=DEBUG
log4j.logger.de.robotron.ecount.importcom.email.ImportMailConnection=DEBUG
log4j.logger.de.robotron.ecount.importcom.email.PlainMailImportMessage=DEBUG
Damit ist die Protokollierung nur für E-Mail (MEX) aktiviert.
16.5.2
Besonderheiten beim Abholen vom Mail-Server
Die Bibliothek für das Abholen von E-Mails javamail verfügt über ein extra Debugging, welches explizit
aktiviert werden muss.
Dies geschieht über die Config.properties-Datei und folgende Einstellung:
importcom.debug
Die Default-Einstellung ist N (deaktiviert), bei der Analyse von Problemen muss diese Einstellung
aktiviert werden, dies geschieht über das Setzen auf Y, Beispiel:
importcom.debug=Y
Die zusätzlichen Informationen werden auch hier in der comimport.log im log-Verzeichnis des KomAServers hinterlegt.
Diese Einstellung muss nach dem Erstellen der erforderlichen Log-Datei wieder deaktiviert, d.h. auf N
gesetzt oder komplett gelöscht werden!
16.5.3
Speichern der E-Mails vom Mail-Server
Bei ungeklärten Problemen mit E-Mails benötigt die Robotron Datenbank-Software GmbH die E-Mail im
EML-Format. Im aktuellen Microsoft Outlook kann leider nur im proprietären MSG-Format gespeichert
werden. Diese Dateien sind zur Fehleranalyse unbrauchbar.
Aus diesem Grund muss die E-Mail entweder mit einen E-Mail-Programm, welches das EML-Format
unterstützt, heruntergeladen werden (z.B. Mozilla Thunderbird). Oder auf der KomA muss das Speichern
der E-Mails aktiviert werden, dies wird hier beschrieben.
Dazu muss in der Config.properties folgende Einstellung aktiviert sein:
importcom.save_mail=Y
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 367 von 384
(Da der Default true (Y) ist, wird auch ohne diese Einstellung die Datei gespeichert, hier muss also
primär geprüft werden ob nicht importcom.save_mail=N eingestellt ist.)
Per Default erfolgt die Ablage der E-Mail im Unterordner importmail. Dieser Ordner kann über die
Config.properties-Einstellung importcom.mail_dir jedoch auch modifiziert werden.
Die E-Mail-Daten werden als ZIP-Datei geschrieben, dabei werden „Problem“-E-Mails einfach im
importmail-Verzeichnis abgelegt. E-Mails der jeweiligen Konten werden im Unterverzeichnis
IA<Kommunikationseinstellung-ID> hinterlegt:
Abbildung 16-20 : Ablage der „Problem“-E-Mails
16.6 Informationsbeschaffung beim Problemen im EDIFACT-Umfeld
Bei Problemen im EDIFACT-Umfeld ist eine Ticketerstellung nach diesem Kapitel die Voraussetzung für
eine zügige Bearbeitung des Problemfalls.
16.6.1
Spezialfall CONTRL
Ab 01.10.2014 werden CONTRL-Nachrichten nicht mehr ausschließlich auf der KomA erzeugt, sondern
auch in der Datenbank (Import-API, Workflows). Auf der KomA werden nur noch negative CONTRLNachrichten erzeugt, positive CONTRL-Nachrichten werden ausschließlich in der Import-API erstellt.
Diese Aufteilung ist aufgrund der zu prüfenden Fehlercodes (z.B. Unbekannter Absender der
Übertragungsdatei, Empfänger der Übertragungsdatei ist nicht der tatsächliche Empfänger) und der
großen Anzahl an Konfigurationsmöglichkeiten notwendig (diese Informationen stehen in der KomA
nicht direkt zur Verfügung, können übersteuert werden etc.).
Dies macht die Fehlersuche bei Problemen natürlich komplizierter, da ggf. mehrere Stellen überprüft
werden müssen. Aus diesem Grund müssen folgende Daten übermittelt werden (ggf. muss dies über
den Support geschehen, falls die Fachanwender keinen Zugang zur KomA haben). Werden alle
relevanten Daten übermittelt, kann die Analyse des Fehlers umgehend erfolgen, nur so kann die
schnelle Bearbeitung/Hilfe sichergestellt werden.
16.6.2
Welche Daten sind zu übermitteln?
-
Versionsübersicht von der KomA siehe Kapitel 16.2.1.1.
-
Die EDIFACT-Datei, die für die Fehlermeldung relevant ist
Diese wird in KomA im Unterverzeichnis done oder err (oder zip-done und zip-error, falls die
Dateien als ZIP-Datei importiert wurden) abgelegt. Der Importordner kann dynamisch
konfiguriert werden und wird über die datenimport.ini festgelegt.
Beispiel:
Folgender Eintrag ist in der datenimport.ini vorhanden
Seite 368 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
*.txt EDI_AUTO import/EDI_AUTO
Die Dateien werden also, ausgehend vom KomA-Basisverzeichnis, im Ordner
import/EDI_AUTO/done oder import/EDI_AUTO/err… hinterlegt.
Die Datei wird standardmäßig als ZIP-Datei gepackt und umfasst neben der EDIFACT-Datei auch
die Log-Datei die beim Import von der KomA erzeugt wurde.
-
Die Properties-Datei der EDI-Datenquelle
Der Name der Properties-Datei ergibt sich aus dem 2. Parameter der Einstellung in der
datenimport.ini.
Beispiel: *.txt EDI_AUTO import/EDI_AUTO
Die zugrundliegende Properties-Datei heißt EDI_AUTO.properties.
Die Properties -Dateien für den Import werden standardmäßig im Unterverzeichnis
config/import abgelegt.
-
Diagnose-Report der Importdatei aus dem robotron*ecount ist erforderlich
Die Maske Import-Dateien ist über den Menüpunkt Import > Import-Dateien im ecount
erreichbar. Anschließend die entsprechende Import-Datei auswählen und im Reiter Intern die
Schaltfläche Diagnose drücken. Anschließend wird eine HTML-Datei (Report und Simulation
Eingangsprüfung für Import-Datei x) erzeugt und automatisch im Browser geöffnet, diese HTMLDatei ist dem Fehlerticket beizulegen
Abbildung 16-21 Diagnose-Schaltfläche in MF_IFI
Der Diagnose-Report kann mit einem erweiterten Logging ausgestattet werden. Dieses wird mit
der Datenquellen-Einstellung IAPI$LPL:LOGLEVEL auf den Wert 2 aktiviert, sodass ein lineares
Protokoll namens Import-API Debug geschrieben wird.
Auszug aus den Releasenotes eCount- 00050884:
Für die Fehlersuche durch den Support der Robotron Datenbank-Software GmbH wurde die
Datenquellen-Einstellung IAPI$LPL:LOGLEVEL bereits mit KM 50731 bereitgestellt. Die Vorgänge
innerhalb der Import-API werden aufgezeichnet, wenn der Wert der Einstellung auf 0, 1 oder 2
gesetzt wird (Debuglevel). Aktuell ist nur vorgesehen, kurzzeitig auf den Wert 2 zu setzen.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 369 von 384
Debuglevel 0 und 1 geben im Moment noch nicht signifikant weniger Informationen aus, sodass
eine längerfristige Verwendung noch nicht möglich ist.
-
Optional: Erweitertes Logging auf der KomA aktivieren
Mit Hilfe der Datei Datenimport.log.properties (im config-Verzeichnis des KomAs) kann explizit
das Logging auf DEBUG gestellt werden. Dadurch werden umfassendere Informationen von der
KomA protokolliert. Da diese Protokollierung Systemressourcen kostet, sollte das erweiterte
Logging nur vorrübergehenden aktiviert werden!
Sollte die Datei Datenimport.log.properties nicht vorhanden sein, kann diese einfach angelegt
werden. Die Datei sollte folgenden Aufbau haben.
log4j.rootLogger=WARN, Ecount
log4j.appender.Ecount=com.robotron.ecount.util.Log4jAdapter
log4j.appender.Ecount.layout=org.apache.log4j.PatternLayout
log4j.appender.Ecount.layout.ConversionPattern=%d{dd.MM.yyyy HH:mm:ss} %p %C{1}:%L %M() %m%n
log4j.logger.de.robotron.ecount.dataimport.filter.edifact.ReplyConfig=DEBUG
log4j.logger.de.robotron.ecount.database=DEBUG
Sollte die Datei schon vorhanden sein muss geprüft werden ob folgende Einstellungen gesetzt
sind:
log4j.logger.de.robotron.ecount.dataimport.filter.edifact.ReplyConfig=DEBUG
log4j.logger.de.robotron.ecount.database=DEBUG
16.6.3
Vom EDIFACT-Cockpit zum Diagnose-Report
Über das EDIFACT-Cockpit (MF_EDIFMON) sind die importieren und exportieren EDIFACT-Dateien
sichtbar. Bei importierten Dateien stehen im Reiter Import einige wichtige Informationen, unter
anderem ist hier der Wert bei Interne ID (entspricht der DB-Tabelle IMPORT_FILE Spalte ID) von
zentraler Wichtigkeit. Über die Schaltfläche anzeigen kann direkt zum Import-Dateien Datensatz
gesprungen werden.
Alternativ: Dieser Wert aus Interne_ID kann als Suchkriterium im Menu Import  Import-Dateien
(MF_IFI) bei Interne ID verwendet werden. Wird der Datensatz gefunden (d.h. dieser Datensatz
wurde noch nicht archiviert) kann der Diagnose-Report über den Reiter Intern bei der Schaltfläche
Diagnose geladen werden.
Seite 370 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Abbildung 16-22 EDIFACT-Cockpit (MF_EDIFMON)- Interne ID des Import-Datensatzes ermitteln
Abbildung 16-23 (Alternativ) Import-Dateien (MF_IFI ) Datensatz über Interne ID suchen
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Anlage 1
Seite 371 von 384
Glossar
Apache
POI
Ist eine Java Bibliothek für den Umgang mit Excel-Dateien in Java. Da es sich um einen
Nachbau handelt ist dies nie zu 100% mit Microsoft Excel vergleichbar. So werden
beispielweise nicht alle in Excel zu Verfügung stehenden Formeln von Apachen POI
unterstützt.
BOM
Byte Order Mark
Dient als Kennung zur Definition der Byte-Reihenfolge und Kodierungsform in
UCS/Unicode-Zeichenketten. Ist insbesondere bei Textdateien (txt, csv) notwendig um den
Inhalt korrekt einlesen zu können.
Z.B. besteht das BOM einer UTF-8 kodierten Datei aus 3 Bytes „EF BB BF“.
FKID
Fremd-Kanal-ID
ecount-spezifische. Beim Import von Daten wird ein Kanal über Fremd-Kanäle identifiziert.
Hierbei stehen FKID1 (Fremd-Kanal 1) bis FKID4 (Fremd-Kanal 4) zur Verfügung.
JAXP
Java API for XML Processing ist eine leichtgewichtiges standardisiertes API zum Validieren,
Parsen, Generieren und Transformieren von XML-Dokumenten.
SMB
Server Message Block-Protokoll (SMB-Protokoll) ist ein Kommunikationsprotokoll in
Netzwerken und dient überwiegend der Freigabe von Netzwerkdateien.
Seite 372 von 384
Anlage 2
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Datumsformatierung
Oft können Datumsformatierungen angegeben werden, dies erfolgt nach dem Standard Java-Pattern
(SimpleDateFormat). Die möglichen Optionen sind hier auszugsweise erklärt.
Date and Time Patterns:
Tabelle 16-1: Date and Time Patterns
Letter Date or Time Component
Examples
G
Era designator
AD
y
Year
1996; 96
Y
Week year
2009; 09
M
Month in year (context sensitive)
July; Jul; 07
L
Month in year (standalone form)
July; Jul; 07
w
Week in year
27
W
Week in month
2
D
Day in year
189
d
Day in month
10
F
Day of week in month
2
E
Day name in week
Tuesday; Tue
u
Day number of week (1 = Monday, ..., 7 = Sunday)
1
a
Am/pm marker
PM
H
Hour in day (0-23)
0
k
Hour in day (1-24)
24
K
Hour in am/pm (0-11)
0
h
Hour in am/pm (1-12)
12
m
Minute in hour
30
s
Second in minute
55
S
Millisecond
978
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 373 von 384
Letter Date or Time Component
Examples
z
Time zone (General time zone)
Pacific Standard Time; PST; GMT-08:00
Z
Time zone (RFC 822)
-800
X
Time zone (ISO 8601)
-08; -0800; -08:00
Beispiele:
Tabelle 16-2: Beispiele für Date and Time Patterns
Pattern
Ergebnis
yyyy.MM.dd G 'at' HH:mm:ss z
2001.07.04 AD at 12:08:56 PDT
EEE, MMM d, ''yy
Wed, Jul 4, '01
hh 'o''clock' a, zzzz
12 o'clock PM, Pacific Daylight Time
yyMMddHHmmssZ
010704120856-0700
yyyy-MM-dd'T'HH:mm:ss.SSSZ
2001-07-04T12:08:56.235-0700
yyyy-MM-dd'T'HH:mm:ss.SSSXXX
2001-07-04T12:08:56.235-07:00
YYYY-'W'ww-u
2001-W27-3
dd.MM.yyyy
03.06.2014
dd.MM.yyyy HH:mm
03.06.2014 09:27
Seite 374 von 384
Anlage 3
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Reguläre Ausdrücke
Über reguläre Ausdrücke ist eine umfangreiche Manipulation von Zeichenketten möglich.
Reguläre Ausdrücke besitzen in Java spezielle Regeln, einige wichtige werden hier beschrieben. Weitere
Informationen können aus der Java-Dokumentation von Oracle bezogen werden.
Tabelle 16-3: Reguläre Ausdrücke
Zeichenklasse
Enthält
x
The character x
\\
The backslash character
\xhh
The character with hexadecimal value 0xhh
\uhhhh
The character with hexadecimal value 0xhhhh
\t
The tab character ('\u0009')
\n
The newline (line feed) character ('\u000A')
\r
The carriage-return character ('\u000D')
\f
The form-feed character ('\u000C')
\e
The escape character ('\u001B')
Zeichenklasse
Enthält
[abc]
Zeichen a, b, oder c
[^abc]
Nicht die Zeichen a, b oder c (negation)
[a-zA-Z]
Groß-/Klein-Buchstaben a bis z
[0-9a-fA-F]
Zeichen 0, 1, 2, …, 9 oder Groß-/Klein-Buchstaben a, b, c, d, e, f
Zeichenklasse
Enthält
.
Jedes Zeichen
\d
Ziffer: [0-9]
\D
keine Ziffer: [^0-9] beziehungsweise [^\d]
\s
A whitespace character: [ \t\n\x0B\f\r]
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Zeichenklasse
Enthält
\S
No whitespace character [^\s]
\w
Wortzeichen: [a-zA-Z_0-9]
\W
kein Wortzeichen: [^\w]
Seite 375 von 384
Seite 376 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Anlage 4
Import- und Export-Filter (XSD, DTD
Beispiele)
Umfangreiche Dokumentationen zu den Filtern wie XML-Struktur und Beispiele sind über folgende URL
abrufbar: KOMA-Import-Export-Filter_DTD_Examples (http://support.robotron.de/ecount-comserver/KOMA-Import-Export-Filter_DTD_Examples.zip).
Die ZIP-Datei ist dabei nach import und export getrennt.
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Anlage 5
Konfigurationsbeispiele für Loader-Import
ELDR beschriebener Loader-Import.
// Minimal-Konfiguration für Loader-Import:
e*count-load-definition (
databaseECOUNT() // aktuell konfigurierte XCH-Verbindung wählen
inputFormat(
encoding = "ISO8859-1"
type = CSV
stripSpaces = true
headerRow = 1
firstDataRow = 2
onEmptyRow = skip
)
targetTable( // Zieltabelle ELDR_SAMPLE_IMPORT:
name="ELDR_SAMPLE_IMPORT“
importAssignments(
column(
name="IFI_ID"
src=ifi_id()
)
column(
name="COLUMN1"
src= fileColumn(1)
)
column(
name="COLUMN_DEMO"
src= fileColumn("DEMO")
)
Seite 377 von 384
Seite 378 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
rule(
condition=(notNull(fileColumn(2)))
column(
name="COLUMN2"
src= fileColumn(2)
)
)
)
)
)
Anlage Abbildung 1: Beispiel für minimale Loader-Konfiguration
databaseECOUNT(
id = "ec_xch"
user = "ec_xch"
passwd = "xch"
transaction_mode = COMMIT_ON_CLOSE
)
databaseTHIN(
id = "demoTHIN"
connect="dbServer:1521:orcl"
user = "scott"
passwd = "tiger"
transaction_mode = COMMIT_AFTER(1000)
)
databaseTHIN(
id = "demoTHIN"
connect =
"(description=(address=(protocol=tcp)(host=srv)(port=1521))(connect_da
ta=(sid=orcl)))"
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 379 von 384
user = "scott"
passwd = "tiger"
transaction_mode = COMMIT_ON_CLOSE
)
databaseOCI(
id="demoOCI"
connect="myDb"
user="scott"
passwd="tiger"
transaction_mode = ROLLBACK_ON_ERROR
)
Anlage Abbildung 2: Beispiele für Loader-Datenbank-Verbindungen
inputFormat(
type = EXCEL
excelSheets = "*"
stripSpaces = true
headerRow = 1
firstDataRow = 2
onEmptyRow = stop
)
Anlage Abbildung 3: Beispiel für Excel-Konfiguration im Loader-Skript
src = 1
// numerische
Konstante
src = "Test"
/Varchar-Konstante
src = fileColumn(2)
Spalte 2
// String-
// Inhalt von
Seite 380 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
src = fileColumn("Test-Spalte") + "-DEMO" // Inhalt von
Spalte mit Suffix
src = toNumber(
Number-Konvertierung
// String-nach-
fileColumn(2),
format = "###,###.###",
decimal = ',',
group = '.'
)
src = fileCell( 1, 1)
Dateizelle
// feste
src = columnHead( 1 )
// Überschrift von
src = nvl(fileColumn(2), "leer")
// Nullwerte
src = SYSDATE
// Systemdatum
Spalte 1
ersetzen
src = nvld(
toDate(
fileColumn(2),
"dd.MM.yyyy HH:mm:ss"
),
SYSDATE
)
src = sequence(name = "DEMO_DEQ")
DB-Sequence
src = sequence(
Angabe
schema = "DEMO"
name = "DEMO_DEQ"
createOnMissing = false
// Wert aus einer
// Ausführlichere
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 381 von 384
)
src = recordCount()
aktuellen Satzes
// Nummer des
src = ifi_id()
IMPORT_FILE-Satzes
// Aktuelle id des
src = line_nr()
Zeilennummer
// Aktuelle
src = filename()
verarbeiteten Datei
// Name der
src = filenameZip()
Zip-Dateiname
// s.o. mit ggf.
src = tokenize(fileColumn(2), ";,", 1)
bis zum folgenden „,“
// vom ersten „;“
src = trim(fileColumn(2))
Anfang und Ende abschneiden
// Spaces an
src = subString(fileColumn(2), 0, 3)
(maximal) 3 Zeichen
// die ersten
src = replace (fileColumn(2), "A", "BB")
„BB“ ersetzen
// alle „A“ durch
src = replace(
// mehrstufige
Ersetzung
replace(fileColumn(2), "A", "BB"),
"C", "DD"
)
// Dekodier-Funktion: B->D, C->D, alles Andere->A :
src = decode(fileColumn(2), "A", ("B", "D"), ("C", "D"))
// Dekodier-Funktion: B->D, C->D, alles Andere unverändert :
src = decode(fileColumn(2), ("B", "D"), ("C", "D"))
Anlage Abbildung 4: Beispiele für Funktionen
Seite 382 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Anlage 6
Beispielkonfiguration FTP-Empfang für
EEX-Daten
Im ecount unter Menüpunkt Import > Kommunikationseinstellungen (MF_RIMPORT) muss als erstes die
FTP-Verbindung definiert werden. Im vorliegenden Fall ist dies der Hostname infoproducts.eex.com mit
dem Nutzernamen info_at_robotron.ch (+ Passwort). Der Typ muss hier den Wert ftp haben.
Es wird der Standard-FTP-Port (21) verwendet, daher wird der Port nicht spezifiziert (-1).
Zusätzlich muss ein HTTP-Proxy definiert werden:
PROXY_TYPE=HTTP
PROXY_HOST=proxy.robotron.de
PROXY_PORT=80
Damit passives FTP verwendet wird, ist folgender Parameter zu setzen:
passive=Y
(Passives FTP: Diese Technik wird eingesetzt, wenn der Server keine Verbindung zum Client aufbauen
kann. Dies ist beispielsweise der Fall, wenn der Client sich hinter einem Router befindet, der die Adresse
des Clients mittels NAT umschreibt, oder wenn eine Firewall das Netzwerk des Clients vor Zugriffen von
außen abschirmt.)
Anlage Abbildung 5: Beispiel FTP-Verbindung (MF_RIMPORT)
Anschließend geht es um die Konfiguration der abzuholenden Daten. Unter dem Root-Verzeichnis von
infoproducts.eex.com befindet sich folgende Verzeichnisstruktur:
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Seite 383 von 384
Anlage Abbildung 6: Verzeichnisstruktur unter dem Root-Verzeichnis von infoproducts.eex.com
Im Beispiel sollen folgende Verzeichnisse (und folgende Dateien) abgefragt werden:
-
power/xls/spot_market/2014
o
o
-
power/xls/derivatives_market/2014
o
o
-
energy_phelix_power_futures_historie_*.xls
energy_german_power_futures_historie_*.xls
gas/xls/spot_market/2014
o
-
energy_spot_historie_*.xls
swiss_power_spot_market_*.xls
gas_spot_historie_*.xls
gas/xls/derivatives_market/2014
o
gas_futures_historie_*.xls
Es gibt mehrere Varianten, wie die Konfiguration vorgenommen werden kann. Im vorliegenden Beispiel
wird für jeden zu importierenden Ordner ein Import-Format (in MF_RIMPORT) angelegt. Dabei sollten
ein sprechender Name und eine eindeutige Kurzbezeichnung vergeben werden. Zusätzlich muss der
Import-Ordner auf dem KomA-Server definiert werden (Zielverzeichnis).
Anlage Abbildung 7: Importformate definieren
Seite 384 von 384
Kommunikationsautomatisierung - KomA
Version 8.0 vom 19.09.2016
Nun erfolgt die Konfiguration des Kontos über Menüpunkt Import > Kommunikationsautomatisierung
(MF_COMIMPORT). Hierbei wird die zuvor definierte FTP-Verbindung ausgewählt, der KomA-Server und
das Prüfintervall festgelegt. Anschließend werden die zuvor definierten Formate ausgewählt.
Anlage Abbildung 8: FTP-Konto
Das Verzeichnis auf dem FTP-Server wird im Feld Verzeichnispfad hinterlegt, über die Schaltfläche Filter
wird anschließend der Filter für die gewünschten Dateinamen definiert.
Anlage Abbildung 9: FTP-Verzeichnis / Filter

Similar documents