Synchronisation von Meldepunkten aus dem SAP in die B2B

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

  1. Löschen des bestehenden Indexes bzw. Anlage eines neuen (leeren) Indexes

  2. Aufruf des FUBAs aus SystemA

  3. Übertragen aller Daten aus der Tabelle (SystemA) in den Index

  4. Aufruf des FUBAs aus SystemB

  5. Ü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