Beschreibung
Eine Möglichkeit zur Befüllung des Meldepunktindex für die Systemweiche ist die Übertragung der Daten aus einem oder mehreren SAP-Systemen.
Eine konkrete Möglichkeit dazu ist der MeteringPoints2IndexJob. Dieser Job befüllt einen Lucene-Index mit Meldepunktdaten (Meldepunktindex), welcher dann von der Systemweiche zur Verteilung (Distribution) von Nachrichten oder Nachrichtenteilen benutzt wird. Der Job stellt eine Verbindung mit einem SAP-System her und bezieht von dort die Daten, welche in den Index geschrieben werden.
Die Initialbeladung kann einmal täglich ausgeführt werden. Der aufzubauenden Index wird zunächst in einem temporären Verzeichnis abgelegt und erst nach erfolgreichen Aufbau aktiviert, d.h. es kommt zu keinen Ausfallzeiten.
Zusätzlich enthält der Job eine Dublettenprüfung. Sind Meldepunkte vertragszeitraumübergreifend vorhanden, wird der Job als nicht erfolgreich ausgeführt im Monitor markiert und in den fachlichen Belegen findet man eine Auflistung der kritischen Meldepunkte.
Weiterhin ist es möglich einen Deltaabgleich zu implementieren und nur die Änderungen in den Index zu übernehmen statt ihn jedes Mal komplett neu aufzubauen.
Es werden zwei Listen von Meldepunkten übergeben:
- Zu löschende Meldepunkte
- Meldepunkte, die hinzugefügt werden sollen
Bei einer Änderung eines Meldepunktes wird er in beide Listen eingetragen.
Der Job löscht erst alle Einträge der Liste mit den zu löschenden Meldepunkten aus dem Index und fügt dann die Einträge der Liste mit den neuen Einträgen hinzu. Jeder Verarbeitete Eintrag wird in eine Acknowledgement-Liste eingetragen. Danach werden beide Acknowledgement-Listen ans SAP zurückgegeben. Alle Einträge, für die es kein Acknowledgement gab werden beim nächsten Lauf vom SAP erneut übertragen. Bricht der Job ab oder kann ein Eintrag nicht verarbeitet werden, so wird dies im nächsten Lauf nachgeholt.
MeteringPoints2IndexJobPackagesJC30Standard
Kurzbeschreibung
Vorraussetzung: Es existieren 2 SAP-Systeme (im folgenden SystemA und SystemB) mit jeweils einem FUBA, die jeweils eine Tabelle mit den Informationen zu den Meldepunkten liefern. Die Tabellenfelder müssen wie folgt benannt und belegt sein.
Feldname |
Inhalt |
Daten-Type |
EXT_UI |
Meldepunkt |
STRING |
VERTRAG |
Vertragsnummer |
STRING |
SERVICE_START |
Vertragsbeginn |
DATE |
SERVICE_END |
Vertragsende |
DATE |
SERVICE |
Netzbetreiber |
STRING |
SERVICEID |
ILN-Nummer |
STRING |
SPARTE |
Sparte |
STRING |
Funktion des Jobs: Der Job wird regelmäßig (z.B.: einmal am Tag aufgerufen) und führt folgende Schritte durch
-
Löschen des bestehenden Indexes bzw. Anlage eines neuen (leeren) Indexes
-
Aufruf des FUBAs aus SystemA
-
Übertragen aller Daten aus der Tabelle (SystemA) in den Index
-
Aufruf des FUBAs aus SystemB
-
Übertragen und Abgleich aller Daten aus der Tabelle (SystemB) in den Index. Abgleich bedeutet, dass geprüft wird ob ein Meldepunkt bereits im Index vorhanden ist und wenn ja, ob sich die Vetragslaufzeiten überschneiden. Trifft beides zu wird im Monitoring eine Warnung ausgegeben (Verarbeitungsstatus ROT und Liste aller inkonsistenten Meldepunkte im Monitoring).
Customizing
In den Services einen SCHEDULER JOB anlegen:
In den Service Properties müssen folgende Einträge gepflegt werden. Die Einträge zu SystemA und SystemB erfolgen analog.
Allgemeine Konfigurationen
Die allgemeine Konfiguration eine Schedulers:
B3P_SCHEDULER_REGISTER_CLASSNAME |
org.b2bbp.dividing.network.scheduler.MeteringPoints2IndexJobPackagesJC30Standard |
B3P_CRON_HOURS |
Stunde des Startzeitpunktes (0-23) |
B3P_CRON_MINUTES |
Minute des Startzeitpunktes (0-59) |
B3P_SCHEDULER_TYPE |
CRON |
Erstes SAP-System (Suffix A)
HINWEIS: Aus Performancegründen sollte das System, dessen Tabelle die größere Datenmenge liefert als SystemA deklariert werden
Eigenschaft |
Wert |
Beschreibung |
B3P_USER_SYSTEM_A |
mmustermann |
Benutzername des SAP-SystemsA |
B3P_PASSWORD_SYSTEM_A |
n5rGEoREwpab89OxvrL+FA== |
Benutzerpasswort des SAP-SystemsA BASE64-codiert mit den B2B-CrytUtils |
B3P_HOSTNAME_SYSTEM_A |
10.100.50.1 |
Host des SAP-Systems A |
B3P_LANGUAGE_SYSTEM_A |
DE |
Sprache des SAP-Systems A |
B3P_CLIENT_SYSTEM_A |
220 |
SAP-Client des SAP-Systems A |
B3P_SYSNR_SYSTEM_A |
00 |
System-Nummer des SAP-Systems A |
B3P_FUBA_NAME_SYSTEM_A |
ZIDE_B2B_SYNC_SWITCH_DELTA |
Name des aufzurufenden FUBAS in System A |
B3P_TABLE_NAME_SYSTEM_A |
SWITCHSYNCT |
Name der Tabelle, die gelesen wird |
B3P_PACKAGE_SIZE_A |
<Ganze positive Zahl> |
Paketgröße die bei einem Aufruf übergeben wird. |
B3P_INITIAL_LOAD_A |
X |
Ist dieser Wert gesetzt, baut der Job den Index komplett neu auf. Für die Deltabeladung siehe nächstes Kapitel. |
Zweites SAP-System (Suffix B)
Die Konfiguration des zweiten Systems findet am gleichen Job analog zum ersten statt.
Eigenschaft |
Wert |
Beschreibung |
B3P_USER_SYSTEM_B |
mmustermann |
Benutzername des SAP-SystemsB |
B3P_PASSWORD_SYSTEM_B |
n5rGEoREwpab89OxvrL+FA== |
Benutzerpasswort des SAP-SystemsB BASE64-codiert mit den B2B-CrytUtils |
… usw |
Analog können bis zu 26 Systeme registriert werden, indem man dieses Verfahren mit alphabetischen Endungen weiter fortsetzt, zum Beispiel:
B3P_USER_SYSTEM_C, B3P_USER_SYSTEM_D usw.
Definition des FUBA
Der in B3P_FUBA_NAME_SYSTEM_A angegebene FUBA mit Namen ZIDE_B2B_SYNC_SWITCH_DELTA hat folgende Definition:
function zide_b2b_sync_switch_delta .
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(I_INITIAL_LOAD) TYPE BOOLE_D OPTIONAL
*" VALUE(I_SIZE) TYPE SYTFILL OPTIONAL
*" VALUE(I_PACKAGE_NUMBER) TYPE SYTFILL OPTIONAL
*" VALUE(I_UNIQUE_POD) TYPE BOOLE_D DEFAULT ZC=>TRUE
*" VALUE(I_NO_JOIN) TYPE BOOLE_D DEFAULT ZC=>TRUE
*" EXPORTING
*" VALUE(E_PACKAGE_NUMBER) TYPE SYTFILL
*" TABLES
*" SWITCHSYNCT_INS STRUCTURE ZIDE_B2B_SWITCHSYNCS
*" SWITCHSYNCT_DEL STRUCTURE ZIDE_B2B_SWITCHSYNCS OPTIONAL
*"----------------------------------------------------------------------
*&-----------------------------------------------------------------------------------------
*& Kurztext : der Fuba liefert Informationen anhand deren die Softwareweiche
*& auf B2B entscheidet an welches SAP Backend Nachrichten ausgeliefert werden
*&-----------------------------------------------------------------------------------------
Global Properties
Bei den obigen Jobs wird der Index jeweils parallel zum bestehenden Index komplett neu aufgebaut. Nach fertiggestelltem Neuaufbau wird der Verweis auf den aktuellen Index umgeändert. Daher müssen folgende Global Properties angelegt werden:
Eigenschaft |
Wert |
Beschreibung |
B3P_METERINGPOINT_INDEX_TEMP |
<Datei-Pfad> |
Pfad zum temporären Verzeichnis für den Indexaufbau (muss von Hand angelegt werden) |
B3P_METERINGPOINT_INDEX |
<Datei-Pfad> |
Pfad zum Verzeichnis des Meldepunktindex |
(Duplikats-)Prüfungen
Beim Import werden verschiedene Prüfungen durchgeführt. Die Duplikatsprüfung ist besonders von Relevanz, wenn Daten aus mehreren Backends importiert werden. Das Ergebnis der Prüfung wird in die Property B3P_WARNING_ENTRIES geschrieben. Folgende Prüfungen werden durchgeführt:
leere Zeitscheibe
Dies ist der Fall falls Start>End gilt.
Der Eintrag wird geskipped und protokolliert.
MeteringPointIndexVO unbehandelbares Duplikat:
Für 2 Einträge gilt: gleicher Meldepunkt, überlappende/gleiche Zeitscheibe, unterschiedliches System oder Partner.
Einer der Einträge wird geskipped und protokolliert.
MeteringPointIndexVO Zeitscheiben-Merge:
Für mehrere Einträge gilt: gleicher Meldepunkt, gleiches System & Mandant.
Die Zeitscheiben werden ggf. gemerged. (Ergebnis ist eine Liste von MeteringPointIndexVOs mit disjunkten Zeitscheiben)
Diese Prüfung erfolgt nur im CSV Import.
MeteringPointIndexVO exaktes Duplikat:
2 Einträge sind “equals”, insbesondere gleicher Meldepunkt, gleiche Zeitscheibe, gleiches System & Mandant.
Ein Eintrag wird geskipped und protokolliert.
Das exakte Duplikat könnte auch als Spezialfall eines Zeitscheiben-Merges interpretiert werden.
Diese Prüfung erfolgt nur im JCO Import.
Consistent MeteringPointIndexVO
Ein Eintrag ist consistent, falls es keinen zweiten Eintrag mit gleichem Meldepunkt und überlappender Zeitscheibe gibt und falls die Zeitscheibe nicht leer ist. Dies ist der Normalfall.
View Me Edit Me