Administrationshandbuch (EVI2SAP)
Installation
Voraussetzungen für die Verwendung der Funktion
Die Beschreibung der Installation ist in der Anlage "SAP-WOIEVI2SAP-Anlage SAP SLP Schnittstelle WOI 1.7.pdf" zu finden.
Das Modul EVI2SAP muss aktiv sein.
EVI-Installation
Da mit der Installation des Moduls zur Übertragung der Daten von SAP nach EVI auch bereits das Modul zur Übertragung von EVI nach SAP installiert wird, beschränkt sich die Installation auf einige Nacharbeiten.
EVI-Benutzer einrichten
Für die Prozesse wird der Benutzer OSST_EVI2SAP verwendet. Er ist nach der Installation des Moduls in der C2-Schicht anzulegen. Dazu ist folgende Konfiguration zu benutzen:
Benutzername | Erforderliche Benutzergruppe | DefaultTemplate | Technischer Benutzer |
---|---|---|---|
OSST_EVI2SAP | DEFAULT, OSST_ADMIN, OSST_SAP_TAB | DefaultTemplate | True |
SAP-Bibliothek installieren
Damit EVI auf SAP zugreifen kann sind Bibliotheken zum Zugriff notwendig. Diese sind im Paket für die SAP-Aufrufe (SAP-Aufrufe-3.0.zip) enthalten. Dieses Paket enthält auch eine Installationsanleitung. Es genügt, den serverseitigen Anteil zu installieren.
SAP-Benutzer einrichten
In SAP wird ein RFC-fähiger Benutzer benötigt. Dieser muss in allen verbundenen SAP-Systemen vorhanden sein. Der EVI-Applikationsserver baut über diesen Benutzer die Verbindung zu dem SAP-Applikationsserver auf. Dieser muss in die folgende Konfiguration eingetragen werden.
SAP-Zugang definieren
Für jedes System in der Entität SAP-Konfiguration (Administration->Module->SAP-Konfiguration) ein Eintrag vorzunehmen.
Die Werte für Server, Mandant, Systemnummer, System-ID, Benutzername und Passwort sind beim SAP-Systemadministrator zu erfragen. Über die ID werden die Einträge einem System zugeordnet.
Globale Variable C12Servertyp prüfen: Bei einer 3 Systemlandschaft muss in jedem EVI-System diese Variable gesetzt werden. z.B.:
System | C12Servertyp | ID SAP-Konfiguration |
---|---|---|
EVI-Entwicklungssystem | DEV | DEV |
EVI-Testsystem | TEST | TEST |
EVI-Produktivsystem | PROD | PROD |
Weitere Systeme möglich |
→ Der Wert ist aus der globalen Variable C12Servertyp für das jeweilige System zu ermitteln.
BPM-Prozesse veröffentlichen
Die folgenden BPM-Prozesse müssen veröffentlicht werden:
C12OSST_EVI2SAP_Mark
C12OSST_EVI2SAP_TransferSync
C12OSST_EVI2SAP_TransferWorker
BPM-Timer einrichten und konfigurieren
Der Prozess ist dafür verantwortlich, neben den SAP-Tabellen auch die Tabelle mit den Transaktionssätzen aufzuräumen, die auch von der EVI2SAP Schnittstelle verwendet wird. Der Timer C12OSST_EVI2SAP_TransferWorker für die Verarbeitung der SAP-Daten ist zu konfigurieren.
Der Zyklus des Timers lässt sich unter Zeitplan frei konfigurieren. Es empfiehlt sich, den Zyklus auf alle 5 Minuten zu konfigurieren. Der Zeitraum sollte abhängig von regulären Arbeitszeiten konfiguriert werden. Für die EVI2SAP Schnittstelle ist der Prozess C12OSST_CleanTransactions ebenfalls als Timer einzurichten, wenn dies im Rahmen der Installation der SAP2EVI Schnittstelle nicht bereits geschehen ist.
Entitäten freischalten und konfigurieren
Bei der Auslieferung sind alle Entitäten für die Übertragung deaktiviert.
Um die Übertragung für eine Entität freizuschalten, ist die entsprechende globale Variable anzupassen. Zu jeder Entität existiert eine Variable mit dem Namen C12OSST_P_<Entität>
Sie enthält die Einstellungen im JSON-Format. Damit sie aktiv werden, ist der Kommentar "NOTUSED" am Anfang zu entfernen.
Hierbei ist zu beachten, dass die globale Variable für alle drei Systeme (Entwicklung, Test und Produktiv) einen eigenen Wert besitzt und dieser beim Customizingtransport nicht übertragen wird. Die Änderung ist also in allen drei Systemen getrennt vorzunehmen.
Danach können die Werte der JSON-Struktur angepasst werden, wenn vom Standard abweichende Einstellungen notwendig sind. Folgende Tabelle gibt eine Übersicht über die Bedeutung der einzelnen Einstellungen:
Einstellung | Beschreibung | Werte | Bemerkung |
---|---|---|---|
Type | Type der Übertragung | "Entity", "Event" | Zur Zeit nur "Entity" möglich. |
transMeth | Methode der Übertragung | "BAPI", "WEB" | Zur Zeit nur "BAPI" möglich. |
slaveRelation | Name einer Relation zu einem Hauptsatz | Namen von Linktabellen | Muss gefüllt sein, wenn bei der Übertragung eine Abhängigkeit zu einer Hauptrelation besteht. |
transOnCreate | Methode der Übertragung bei Neuanlage in SAP | "asynchron" - asynchron "synchronOnButton" -synchron nach Buttonklick "synchronOnSave" - synchron beim Speichern | |
transOnUpdate | Methode der Übertragung bei Aktualisierung in SAP | wie bei transOnCreate | |
showSuccessMessage | Erfolgsmeldung anzeigen | "onButton" bei Auslösung durch Button "onSave" bei Auslösung durch Speichern | Es ist auch die Angabe von beiden Werten (durch Komma getrennt) möglich. |
showErrorMessage | Fehlermeldung anzeigen | Wie bei showOnSuccessMessage | |
reffield | Name des Referenzfeldes | Feldname in EVI-Schreibweise z.B. "CustomerNo2.Customer" | |
Fields | SAP relevante Felder | Liste von Feldnamen in EVI-Schreibweise durch ~ getrennt. | Die Liste muss mit ~ beginnen und aufhören. |
debugParam | Ausgabe der BAPI-Strukturen in Process.log | 1 - ausgeben 0 - nicht ausgeben |
Darüberhinaus können weitere Werte definiert werden, die jedoch entitätsspezifisch sind:
C12OSST_P_Customer
Einstellung | Beschreibung | Werte | Bemerkung |
---|---|---|---|
addressCheck | SAP-seitige Prüfung der Adresse | 0 - aus 1 - ein | |
reffieldAddress | Feldname des Referenzfeldes der Adresse | Feldname in EVI-Schreibweise | Wenn zu der Entität Address der Wert reffield angepasst wird, ist in der Regel dieser Wert ebenfalls anzupassen. |
composeTel | Bestimmt die Art der Telefonnummernzusammensetzung | 0 - Verfahren 1 1 - Verfahren 2 | Siehe Abschnitt Geschäftspartner |
C12OSST_P_Address
Einstellung | Beschreibung | Werte | Bemerkung |
---|---|---|---|
addressCheck | SAP-seitige Prüfung der Adresse | 0 - aus 1 - ein | |
reffieldCustomer | Feldname des Referenzfeldes im Customer | Feldname in EVI Schreibweise | Wenn zu der Entität Customer der Wert reffield angepasst wird, ist in der Regel dieser Wert ebenfalls anzupassen. |
C12OSST_P_Activity
Einstellung | Beschreibung | Werte | Bemerkung |
---|---|---|---|
reffieldCustomer | Feldname des Referenzfeldes im Customer | Feldname in EVI-Schreibweise | Wenn zu der Entität Customer der Wert reffield angepasst wird, ist in der Regel dieser Wert ebenfalls anzupassen. |
htmlText | Aktivitäten verwenden HTML. Beim Übertragen nach SAP werden Tags entfernt. | 0 - aus 1 - ein |
SAP-Benutzer definieren
Bei der Übertragung von Aktivitäten wird in SAP ein Kürzel für den Sachbearbeiter eingetragen. Das Kürzel wird von dem EVI-Mitarbeiter-Datensatz abgeleitet, der im Feld Delegiert an in der Aktivität hinterlegt ist. Da sich die Kürzel zwischen SAP und EVI in der Regel unterscheiden, ist für jeden Mitarbeiter in EVI, der Daten nach SAP überträgt, ein Kürzel zu definieren, das bei der Übertragung nach SAP verwendet wird. Dieses Kürzel kann in das Feld SAP Benutzer im Mitarbeiterstamm eingetragen werden. Bleibt dieses Feld leer, wird kein Sachbearbeiter bei der Übertragung angegeben.
Automatische Testfälle konfigurieren
Die automatischen Tests setzen eine Verbindung zu SAP voraus. Damit die Tests gestartet werden, ist deshalb sicherzustellen, dass die globale Varibale C12OSST_Tests_mit_SAP_Verbindung den Wert true besitzt.
Das Modul enthält eine Scriptbibliothek mit automatischen Testfällen. Da jedes System seinen eigenen Satz an Schlüsselwerten definiert, müssen die Werte für diese Felder vor dem Start der automatischen Tests angepasst werden. Dazu ist die Methode SC12OSSTEVI2SAPTestUtils.addTestfieldsInC2() in C2 zu übersteuern und anzupassen. Dazu ist der Code der C1-Schicht als Vorlage zu kopieren.
Der Code if (!SC12OSSTEVI2SAPUtils.is3cEVI()) {throw new Exception ("Die Methode SC12OSSTEVI2SAPTestUtils.addTestfields … ");} muss entfernt werden, da er nur dazu dient, das Übersteuern zu erzwingen. Danach sind bei allen Felddefinitionen, die im Array testfieldsAdd abgelegt werden, Testwerte einzutragen, bei denen sichergestellt ist, dass sie sowohl auf dem EVI-System als auch auf dem SAP-System für das zugeordnete Feld als Schlüsselwert zulässig sind.
Beispiel: Auf einem SAP-System werden für die Priorität eines Kontaktes die Werte "W" (Wichtig), "U" (Unwichtig) und "S" (Sehr wichtig) verwendet. Im EVI-System werden dazu die Wert "A", "B" und "C" verwendet. Die Schnittstellen sorgen für ein entsprechendes Mapping.
Für die automatischen Tests ist einer der Werte für die Feldwerte einzutragen:
01", ["Priority.Activity"], "01", ["IS_CONTACTDATA:0;PRIORITY"],wird zu "A", ["Priority.Activity"], "S", ["IS_CONTACTDATA:0;PRIORITY"],Genauso gut können natürlich die Werte "B", "W" oder "C", "U" verwendet werden.
Technische Dokumentation
Komponentenübersicht
Prozesse
C12OSST_EVI2SAP_Mark
C12OSST_EVI2SAP_TransferSync
C12OSST_EVI2SAP_TransferWorker
C12OSST_CleanTransactions (wenn nicht schon bei der Installation von SAP2EVI bereits geschehen)
Der Prozess C12OSST_CleanTransactions der SAP-WOISAP2EVI Schnittstelle übernimmt auch das Entfernen der WOI-TRANS-Sätze der SAP-WOIEVI2SAP Schnittstelle.
Beim Einspielen des Moduls werden die Prozesse automatisch veröffentlicht, dennoch ist eine Prüfung des Veröffentlichungsstatus empfehlenswert. Entsprechende Hinweise werden auch beim Import des Moduls ausgegeben.
Skriptbibliothek
SC12OSSTEVI2SAPMain
SC12OSSTEVI2SAPMaskUtils
SC12OSSTEVI2SAPTestUtils
SC12OSSTEVI2SAPUtils
Globale Variablen
C12Servertyp
C12OSST_Tests_mit_SAP_Verbindung
C12OSST_AbortTime
C12OSST_P_Activity
C12OSST_P_Address
C12OSST_P_Customer
C12OSST_PackageSize
C12OSST_transferOnTest
Transaktionstabellen
WOI-TRANS-Tabellen
Timer
C12OSST_EVI2SAP_TransferWorker
Administrationsmöglichkeiten
Damit eine Entität an der Übertragung teilnimmt, ist eine vordefinierte globale Variable nach dem Schema C12OSST_P_<Entität> durch das Entfernen eines Kommentars zu aktivieren. Die Variable enthält im Auslieferungszustand die Standardeinstellung für die entsprechende Entität.
Definition anderer Referenzfelder
Das Referenzfeld wird über die globale Variable definiert. Hier ist der Eintrag reffield mit dem Namen des Feldes zu belegen, das als Referenzfeld dienen soll. Dabei ist zu beachten, dass dieses Referenzfeld möglicherweise auch in anderen Entitäten als fremdes Referenzfeld dient und auch dort angepasst werden muss. Die folgende Tabelle gibt einen Überblick:
Entität | Default | Ändern in |
---|---|---|
Customer | CustomerNo2.Customer | C12OSST_P_Customer.reffield |
Address | C12ISUADDRNR.Address | C12OSST_P_Address.reffield |
Actitity | ISUContact.Activity | C12OSST_P_Activity.reffield |
Definition anderer Startbedingungen
Die Startbedingung für die einzelnen Entitäten ist in der Skriptklasse SC12OSSTEVI2SAP definiert. Aus technischen Gründen gibt es zwei Methoden pro Entität, die den Namen
boolean en<Entity>CheckStart(IContainer container, String eventName, Map config)
boolean en<Entity>Check(IContainer container, String eventName, Map config)
haben, wobei <Entity> für den Namen der Entität steht. Der Unterschied zwischen den beiden Methoden ist, dass en<Entity>CheckStart innerhalb der Startbedingung aufgerufen wird und en<Entity>Check nach der Startbedingung. Prinzipiell sind Prüfungen innerhalb der Startbedingung zu bevorzugen, da bei einem negativen Ergebnis der Prozess gar nicht erst gestartet wird, was die Performance erhöht. Es ist jedoch nicht möglich, in der Startbedingung auf alle Daten zuzugreifen, weshalb in einigen Fällen zumindest ein Teil der Prüfungen in en<Entity>Check erfolgen muss. So ist beispielsweise der Zugriff auf den Geschäftspartner beim Anlegen einer Adresse nur in enAddressCheck möglich, weil die Methode WorkSpaceScriptUtils.getDependentWorkSpace() in enAddressCheckStart nicht zur Verfügung steht.
Die Methoden bekommen den aktuellen Datensatz (container), das auslösende Event (eventName) und die Einstellungen aus der globalen Variable als Map (config) als Parameter. Wenn die Startbedingung erfüllt ist - wenn der Satz also nach SAP übertragen werden soll - dann liefern beide Methoden true zurück. Um eine Übertragung zu verweigern, muss eine der Methoden false zurückliefern.
Um die Startbedingung zu ändern, sind in der C2-Schicht eine oder beide der Methoden zu überschreiben. Anhand der Werte in container kann überprüft werden, ob der Satz die Bedingung erfüllt. Andere abhängige Datensätze sind über entsprechende Methoden zu ermitteln. Der Code aus der C1-Schicht kann als Vorlage verwendet werden.
Anpassen des Feldmappings
Um das Feldmapping anzupassen, kann unmittelbar vor der Übertragung nach SAP in den Aufbau der BAPI-Strukturen eingegriffen werden. Der Code des Moduls baut aufgrund des Standmappings Datenstrukturen für einen BAPI-Aufruf zur Übertragung nach SAP auf. Unmittelbar vor der Übertragung wird die Methode
en<Entity>TransBAPIBeforeExec(Map eviData, Map sapData, Boolean neuanlage, String changedFields, Map config, Map logMap)
aufgerufen. Im Auslieferungszustand nimmt diese Methode keine Änderungen vor. In der C2-Schicht kann sie überschrieben werden, um die bereits mit Daten gefüllten BAPI-Strukturen zu manipulieren.
Der Parameter eviData ist eine Map, die alle Daten aus EVI in Form von IContainern enthält, die für die Befüllung der BAPI-Strukturen verwendet wurden. Der in der C1-Schicht vorhandene Vorlagecode enthält bereits die Aufrufe, um aus dieser Map die relevanten IContainer zu lesen.
Im Parameter neuanlage wird definiert, ob es sich bei der Übertragung um eine Neuanlage oder eine Aktualisierung handelt. Die Zeichenkette changedFields enthält im Falle einer Aktualisierung eine Liste von Feldern, die geändert wurden. Das Format entspricht dem des Parameters fields aus der globalen Variable - also eine Liste von Feldnamen durch "~" getrennt.
In der Map config stehen alle Einstellungen aus der globalen Variable zu der Entität. Die einzelnen JSON-Schlüssel können als Schlüssel der map verwendet werden. Damit besteht die Möglichkeit, das Feldmapping von der globalen Variable abhängig zu machen.
Der Parameter logMap enthält die Meldungen, die später als Protokoll in den Transaktionssatz eingetragen werden. Hier können durch Aufruf von addLog(logMap, "Meldung")
; eigene Meldungen hinzugefügt werden.
Um das Feldmapping zu ändern, können in der Übersteuerung der Funktion die Daten aus den EVI-Containern in die BAPI-Strukturen gemäß den neuen Feldmappings transportiert werden. Dabei ist zu beachten, dass hier nur die Abweichung des Mappings vom Standard programmiert werden muss, da die BAPI-Strukturen bereits gefüllt sind.
Um Werte von IContainern in BAPI-Strukturen zu transportieren, kann die Methode setBAPIParam(IContainer ac, String eviFeld, Object value, String changedFields, Boolean insert, Object o_data, Object o_dataX, String sapField);
verwendet werden. Sie transportiert den Wert aus dem Feld eviField in dem Container ac in das Feld sapField der BAPI-Strukrutur o_data. Anhand der Werte changedFields und insert wird entschieden, ob es sich um eine Neuanlage oder ein Update handelt, und ob bei einem Update der Wert geändert wurde sowie mit aufzunehmen ist. In diesem Fall wird auch die …X-Struktur gepflegt. Wenn der Wert nicht aus dem IContainer gelesen werden und stattdessen ein zuvor berechneter Wert verwendet werden soll, dann kann dieser als value übergeben werden. Ansonsten ist dieser Parameter mit null zu belegen.
Wenn bei einem geänderten Feldmapping andere Felder aus EVI als im Standard verwendet werden, dann sind diese Felder auch als SAP-relevante Felder zu definieren. Dazu ist der Eintrags fields in der globalen Variablen zu ändern.
Übersteuerungsmöglichkeiten
Grundsätzlich können die mit dem Modul bereitgestellten Komponenten wie BPM-Prozesse, -teilprozesse, Suchen und Skriptbibliotheksmethoden übersteuert werden, um diese an individuelle Anforderungen und Bedürfnisse anzupassen.
Nach dem Einspielen eines Moduls sollte geprüft werden, ob bereits Skriptmethoden im Projekt übersteuert wurden und ob die Methodenänderung aus dem Standard im Projekt übernommen werden soll.
Ein Großteil der Implementierung des Moduls liegt als Skript-Bibliothek vor. Damit ist es möglich, Funktionen zu überschreiben und ein eigenes Verhalten zu definieren.
Bei der Auslieferung der Schnittstelle werden die aufgeführten Felder der Entitäten nach SAP übertragen. Durch Customizing besteht die Möglichkeit, diese Zuordnung bezüglich der Felder als auch der Werte anzupassen. Zusammen mit den Konfigurationsmöglichkeiten sind folgende Anpassungen möglich:
Definition eines anderen Referenzfeldes.
Definition einer anderen Startbedingung.
Anpassen des Feldmappings:
Werte aus anderen EVI-Feldern übernehmen.
Werte in andere BAPI-Felder übertragen.
Werte vor der Übertragung anpassen (Mapping oder Format).
Übertragen von zusätzlichen Feldern.
Um ein Customizing vorzunehmen, sollte man sich mit der Programmierung von BAPI-Aufrufen auskennen. Weiterhin ist es sinnvoll, den Aufbau der Prozesse des Moduls und der Scriptbibliothek zu kennen.
Ablaufbeschreibung
Verwenden der Schnittstelle - Ablauf einer Übertragung
Bei einer Änderung von SAP-relevanten Daten wird ein Satz in der WOI-TRANS-Tabelle erzeugt. Dieser Satz dient zum einen als Markierung für die Änderung (Kennzeichen: Hier ist etwas zu übertragen) als auch zur Protokollierung der Übertragung.
Damit ein Satz als SAP-relevant gilt, müssen folgende Bedingungen erfüllt sein:
Die Entität des Satzes muss für die Übertragung nach SAP grundsätzlich vorgesehen und dafür konfiguriert worden sein.
Es muss sich um eine Neuanlage aus SAP-Sicht handeln, oder es muss mindestens ein Feld geändert worden sein, das eine Auswirkung auf die Daten auf SAP-Seite hat. Diese Felder sind im Auslieferungszustand festgelegt und können über eine Konfiguration geändert werden.
Die Daten des Satzes müssen die Startbedingung der Übertragung erfüllen. Über die Startbedingung lässt sich konfigurieren, dass nur bestimmte Sätze nach SAP übertragen werden. Im Auslieferungszustand wird für jede Entität eine eigene Startbedingung definiert.
Wenn ein WOI-TRANS-Satz angelegt wurde, dann werden bei einer synchronen Übertragung die Daten sofort mittels des zur Entität passenden BAPI-Aufrufes nach SAP übertragen. Bei der asynchronen Variante übernimmt das ein zyklisch gestarteter Prozess, der die WOI-TRANS-Sätze ermittelt, die zur Übertragung anstehen.
Als Ergebnis der Übertragung wird bei einer Neuanlage der von SAP vergebene Schlüssel in das Referenzfeld in EVI eingetragen. Das Vorhandensein eines Wertes in diesem Feld ist ein Kennzeichen dafür, dass in SAP ein korrespondierender Satz vorhanden ist. Bei einer Aktualisierung wird dieser Wert dem BAPI-Aufruf mitgegeben, um den passenden Satz auf SAP-Seite zu identifizieren. Meldungen, die während der Übertragung entstehen, werden im WOI-TRANS-Satz eingetragen.
Weiterhin wird der Status während der Übertragung im WOI-TRANS-Satz gepflegt:
S - Start: Der zum WOI-TRANS-Satz gehörige Satz ist für die Übertragung vorgesehen.
E - Error: Beim Übertragen des Satzes ist ein Fehler aufgetreten, oder der Satz wird gerade übertragen. Der Status wird unmittelbar vor der Übertragung auf E gesetzt, so dass bei einem Abbruch der Fehlerstatus bestehen bleibt. Deshalb ist es auch möglich, dass der Satz sich gerade in Übertragung befindet.
F - Finished: Der Satz wurde erfolgreich übertragen.
R - Retry: Der Satz soll nach einem Fehler erneut übertragen werden. Dieser Status wird nicht automatisch gesetzt, sondern ist vom Administrator nach einer Fehlerbehandlung zu setzen.
Bei einer synchronen Übertragung wird das Ergebnis nach der Übertragung an den Benutzer gemeldet.
Am Anfang steht das Ereignis, dass ein Benutzer einen Datensatz speichert. Auf dieses Ereignis reagiert der Prozess C12OSST_EVI2SAP_Mark
Der Prozess prüft, ob es zu der Entität eine gültige globale Variable gibt und ob die Startbedingung erfüllt ist.
Wenn es sich um eine explizit synchrone Übertragung handelt, wird an dieser Stelle abgebrochen.
Anschließend prüft der Prozess durch Aufruf der Methode SC12OSSTEVI2SAPCommon.en<Entity>IsFirstTrans(), ob es sich um die erste Übertragung aus SAP-Sicht handelt oder eine Folgeübertragung (Aktualisierung). Dabei handelt es sich um eine entitätsspezifische Funktion. <Entity> ist dabei ein Platzhalter. Diese Funktionen gibt es also für jede Entität.
Im Standard wird die Methode SC12OSSTEVI2SAPCommon.isFirstTrans() aufgerufen, wodurch das Referenzfeld der Entität überprüft wird.
Wenn es sich um eine Folgeübertragung handelt, dann werden die Felder bestimmt, die sich geändert haben. Wenn hier nicht mindestens ein Feld auftaucht, das auch in den SAP-relevanten Feldern durch den Eintrag fields in der globalen Variable definiert ist, wird die Übertragung abgebrochen.
Der nächste Schritt besteht darin, einen Satz in der WOI-TRANS-Tabelle anzulegen.
Danach ist der Prozess zu Ende, wenn es sich um eine asynchrone Übertragung handelt.
-----------------------------------------
Bei einer synchronen Übertragung wird diese im Folgenden vom Prozess C12OSST_EVI2SAP_Mark übernommen.
Es wird geprüft, ob es einen WOI-TRANS-Satz im Status E-Error gibt. In diesem Fall findet keine Übertragung statt. Ist kein solcher Satz vorhanden, wird die Übertragung durch Aufruf der Funktion SC12OSSTEVI2SAP.mainTrans(transPk, null) gestartet. Diese Methode liest anhand von transPk den WOI-TRANS-Satz und überträgt durch Aufruf von entitätsspezifischen Methoden den Datensatz.
Zuerst wird SC12OSSTEVI2SAP.en<Entity>TransByPk() aufgerufen. Anhand des übergebenen PK wird der Satz in einen IContainer und zur Weiterverarbeitung an SC12OSSTEVI2SAP.en<Entity>Trans() übergeben. Danach wird der Satz wieder gespeichert, weil davon ausgegangen wird, dass Änderungen vorgenommen wurden. en<Entity>Trans() wertet die Art des Aufrufs aus. Da zurzeit nur BAPI unterstützt wird, wird an dieser Stelle immer SC12OSSTEVI2SAP.en<Entity>TransBAPI() aufgerufen.
In zukünftigen Versionen ist geplant, hier auch andere (konfigurierbare) Übertragungswege zu verwenden.
en<Entity>TransBAPI() baut dann die Strukturen für die Übertragung nach SAP auf. Unmittelbar vor der Übertragung wird die Methode SC12OSSTEVI2SAP.en<Entity>TransBAPIBeforeExec() aufgerufen.
Hier besteht die Möglichkeit, durch eine Übersteuerung in C2 den Aufbau der Strukturen zu verändern.
Danach wird der BAPI-Aufruf ausgeführt. Um das Ergebnis in den IContainer einzutragen, wird die Methode SC12OSSTEVI2SAP.en<Entity>TransBAPISetResult() aufgerufen.
Auch diese Methode kann in C2 übersteuert werden, um das Ergebnis in anderer Weise zu verarbeiten.
-----------------------------------------
Im Falle einer asynchronen Übertragung werden die letzten Schritte ab dem Aufruf von mainTrans() von dem Prozess C12OSST_EVI2SAP_TransferWorker übernommen, der in zyklischen Abständen gestartet wird. Dieser ruft mainTrans() für jeden offenen Satz (Status S-Start, R-Retry) aus der WOI-TRANS-Tabelle auf.
Wenn die Übertragung explizit synchron erfolgt, wird dazu nach einem Klick auf den Aktionsbutton der Prozess C12OSST_EVI2SAP_TransferSync gestartet. Dieser Prozess verwendet die Funktion SC12OSSTEVI2SAP.transferSync() zur Übertragung, die auch in eigenen Prozessen verwendet werden kann. Wie bei der Übertragung durch C12OSST_EVI2SAP_Mark wird die Startbedingung geprüft, ein WOI-TRANS-Satz angelegt und die Übertragung durch Aufruf von mainTrans() gestartet.
Entitäten
Die folgende Beschreibung gilt für den Auslieferungszustand. Durch Customizing ist es möglich, hier Abweichungen zu programmieren.
Geschäftspartner
Startbedingung: keine
Referenzfeld: SAP GP-Nr. - CustomerNo2.Customer
SAP-relevante Felder
Feld | Interner Feldname |
---|---|
Typ | PersontypKey |
Nachname/Firma | Name1 |
Vornme/zusatz1 | Name2 |
Zusatz/Zusatz2 | Name3 |
Rechtsform (ISU) | C12ISULegal |
Logik: Ein Geschäftspartner wird bei der Neuanlage zusammen mit Adresse und Telekomunikation übertragen.
Telekom: Dabei wird für jede Nummer ein eigener Telefondatensatz in SAP angelegt. Die Zusammensetzung der Telefonnummer kann über den Eintrag composeTel in der Konfiguration des Geschäftspartners (C12OSST_P_Customer) gesteuert werden.
Steht dort 0 (Default), oder fehlt der Wert, dann gilt folgende Logik:
Land(EVI) -> Land(SAP)
0+Vorwahl(EVI) -> Nummer(SAP)
Nummer+Durchwahl(EVI) -> Nebenstelle(SAP)
Durchwahl(EVI) wird gelöscht und mit in die Nummer(EVI) aufgenommen
Steht dort eine 1, dann gilt:
0+Vorwahl+Nummer+Durchwahl(EVI) -> Nummer(SAP)
Vorwahl und Durchwahl(EVI) werden mit in die Nummer(EVI) aufgenommen
Land, Vorwahl, Durchwahl(EVI) werden gelöscht
Adresse: Bei der Adresse wird nur die Standardadresse in SAP angelegt. Sie wird mit den Werten aus der ersten Adresse aus EVI gefüllt. Wenn es weitere Adressen in EVI gibt, dann werden diese in die Standardadresse von SAP mit aufgenommen - jedoch nur, wenn es sich dabei um eine Postfachadresse oder um eine Großkundenadresse handelt und die erste Adresse keine dieser beiden Adressarten besitzt. Es wird nur eine zusätzliche Adresse mit aufgenommen, da es nicht möglich ist, sowohl Postfach- als auch Großkundenadresse mit in die SAP-Adresse aufzunehmen. Bei dem Aktualisieren eines Geschäftspartners wird nur der Geschäftspartner selbst übertragen. Änderungen und Neuanlagen von Adressen werden über die Adressschnittstelle übertragen. Nachdem die Daten übertragen wurden, liefert SAP bei der Neuanlage eine Geschäftspartnernummer und eine Adressnummer zurück. Die Geschäftspartnernummer wird in das Feld SAP GP-Nr. (CustomerNo2.Customer) eingetragen. Die Adressnummer wird in das Feld Adressnummer (ISU) (C12ISUADDRNR.Address) in jeder Adresse, die für die Übertragung verwendet wurde, eingetragen. Zusätzlich wird bei diesen Adressen das Feld Adressbezug (NameKey.Address) → ISU gesetzt
Feldmapping
Da der Fall composeTel=0 der Default ist, taucht nur dieser Fall in der Tabelle auf.
BAPI | Feld | EVI Quelle |
---|---|---|
Z_CU_FB_BUPA_CREATE_ISU | IV_ACCEPT_ERROR | =X, wenn addressCheck in globaler Variable auf 0 gesetzt ist |
Z_CU_FB_BUPA_CREATE_ISU | IV_GROUP | Fester Wert "0001" |
Z_CU_FB_BUPA_CREATE_ISU | IV_TYPE | =1 bei PersonTypeKey.Customer == H|F =3 in allen anderen Fällen |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.TITLE | =01 bei PersonTypeKey.Customer == H =02 bei PersonTypeKey.Customer == F =20 bei PersonTypeKey.Customer == U |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.SEX_M | =X bei PersonTypeKey.Customer == H |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.SEX_F | =X bei PersonTypeKey.Customer == F |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.BPKIND | C12ISUBPKIND.Customer |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.BU_SORT1 | Name1.Customer (erste 20 Zeichen) |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.PARTNERLANGUAGE | LanguageKey.Customer bei PersonTypeKey.Customer == H|F |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.NAME_FIRST | Name2.Customer bei PersonTypeKey.Customer == H|F |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.NAME_LAST | Name1.Customer bei PersonTypeKey.Customer == H|F |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.TITLE_ACA1 | AcademicTitle.Person bei PersonTypeKey.Customer == H|F |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.BIRTHDATE | DateOfOrigin.Person bei PersonTypeKey.Customer == H|F |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.NAME_ORG1 | Name1.Customer bei PersonTypeKey.Customer == U |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.NAME_ORG2 | Name2.Customer bei PersonTypeKey.Customer == U |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.LEGAL_ENTY | C12ISULegal.Customer bei PersonTypeKey.Customer == U |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.NAME_ORG3 | Name3.Customer bei PersonTypeKey.Customer == U |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.NAME_ORG4 | Name3.Customer bei PersonTypeKey.Customer == U |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.NAME_GRP1 | Name1. Customer bei PersonTypeKey.Customer == G |
Z_CU_FB_BUPA_CREATE_ISU | IS_PARTNERDATA.NAME_GRP2 | Name2. Customer bei PersonTypeKey.Customer == G |
Z_CU_FB_BUPA_CREATE_ISU | IT_ADDRESS.PO_BOX | Street.Address bei |
Z_CU_FB_BUPA_CREATE_ISU | IT_ADDRESS.POST_CODE2 | ZIPKey.Address bei |
Z_CU_FB_BUPA_CREATE_ISU | IT_ADDRESS.PO_BOX_LOC | City.Address bei |
Z_CU_FB_BUPA_CREATE_ISU | IT_ADDRESS.PO_BOX_CTY | CountryKey.Address bei |
Z_CU_FB_BUPA_CREATE_ISU | IT_ADDRESS.COUNTRY_ISO | CountryKey.Address bei |
Z_CU_FB_BUPA_CREATE_ISU | IT_ADDRESS.CITY2 | District.Address bei |
Z_CU_FB_BUPA_CREATE_ISU | IT_ADDRESS.POST_CODE1 | ZIPKey.Address bei |
Z_CU_FB_BUPA_CREATE_ISU | IT_ADDRESS.CITY1 | City.Address bei |
Z_CU_FB_BUPA_CREATE_ISU | IT_ADDRESS.STREET | Street.Address bei |
Z_CU_FB_BUPA_CREATE_ISU | IT_ADDRESS.HOUSE_NUM1 | StreetNumber.Address bei |
Z_CU_FB_BUPA_CREATE_ISU | IT_ADDRESS.HOUSE_NUM2 | StreetNumberAddition.Address bei |
Z_CU_FB_BUPA_CREATE_ISU | IT_ADDRESS.NAME_CO | CoName1.Address bei |
Z_CU_FB_BUPA_CREATE_ISU | IT_ADDRESS.POST_CODE3 | ZIPKey.Address bei |
Z_CU_FB_BUPA_CREATE_ISU | IT_TELEFONDATANONADDRESS. TELEPHONE | "0"+PhoneNoCity.Telecom (erste 30 Zeichen) |
Z_CU_FB_BUPA_CREATE_ISU | IT_TELEFONDATANONADDRESS. EXTENSION | PhoneNoBase.Telecom+ PhoneNoExtension.Telecom (erste 30 Zeichen) |
Z_CU_FB_BUPA_CREATE_ISU | IT_TELEFONDATANONADDRESS. | PhoneNoCountry.Telecom + |
Z_CU_FB_BUPA_CREATE_ISU | IT_TELEFONDATANONADDRESS. COUNTRYISO | PhoneNoCountry.Telecom |
Z_CU_FB_BUPA_CREATE_ISU | IT_TELEFONDATANONADDRESS. R_3_USER | Bei Mobilnummer: "3" |
Z_CU_FB_BUPA_CREATE_ISU | IT_TELEFONDATANONADDRESS. CONSNUMBER | Laufende Nummer |
Z_CU_FB_BUPA_CREATE_ISU | IT_TELEFONDATANONADDRESS. | "X", wenn IsDefault.Telecom gesetzt ist |
Z_CU_FB_BUPA_CREATE_ISU | IT_E_MAILDATANONADDRESS.E_MAIL | Email.Telecom |
Z_CU_FB_BUPA_CREATE_ISU | IT_E_MAILDATANONADDRESS.STD_NO | "X", wenn IsDefault.Telecom gesetzt ist |
Adressen
Startbedingung: Die Adresse muss einem Geschäftspartner zugeordnet sein, der nach SAP übertragen wurde. Es darf noch keine andere Adresse mit diesem Adressbezug geben, die bereits nach SAP übertragen wurde. Zusätzlich darf es bei einer Postfachadresse keine Großkundenadresse geben, die bereits nach SAP übertragen wurde und bei einer Großkundenadresse keine Postfachadresse.
Referenzfeld: Adressnummer (ISU) - C12ISUADDRNR.Address
SAP-relevante Felder
Feld | Interner Feldname |
---|---|
Land | CountryKey |
Postleitzahl | ZIPKey |
Ort | City |
Straße | Street |
Hausnummer | StreetNumber |
Hausnummerzusatz | StreetNumberAddition |
Co Name | CoName1 |
Logik: Es werden nur Adressen übertragen, die einem Geschäftspartner zugeordnet sind, der bereits nach SAP übertragen wurde und eine Nummer von SAP besitzt. Es wird immer die SAP-Standardadresse dieses Geschäftspartners verwendet. Die Adressnummer wird aus einer der Adressen gelesen, die zum Geschäftspartner gehört und bereits übertragen wurde. Wie bei der Übertragung des Geschäftspartners kann zur Straßenadresse zusätzlich nur eine Postfachadresse oder eine Großkundenadresse übertragen werden. Alle anderen Adressen können zwar in EVI angelegt werden, werden aber nicht übertragen. SAP liefert bei der Neuanlage und nach erfolgreicher Übertragung eine Adressnummer zurück. Diese wird in das Feld Adressnummer (ISU) (C12ISUADDRNR.Address) eingetragen. Zusätzlich wird das Feld Adressbezug (NameKey.Address) -> ISU gesetzt.
Feldmapping
BAPI | Feld | EVI Quelle |
---|---|---|
Z_CU_FB_ADDRESS_CHANGE | IS_ADDRESSDATA.IV_ADDRESSGUID | C12ISUADDRNR.Address |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS. IV_BUSINESSPARTNER | CustomerNo2.Customer |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.IV_ACCEPT_ERROR | =X, wenn addressCheck in globaler Variable auf 0 gesetzt ist |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.STANDARDADDRESS | =X, wenn DefaultCuAd.Address gesetzt |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.PO_BOX | Street.Address wenn AddressType.Address=="POSTFACH" |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.POSTL_COD2 | ZIPKey.Address wenn AddressType.Address=="POSTFACH" |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.PO_BOX_CIT | City.Address wenn AddressType.Address=="POSTFACH" |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.POBOX_CTRY | CountryKey.Address wenn AddressType.Address=="POSTFACH" |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.COUNTRYISO | CountryKey.Address wenn AddressType.Address=="STRASSE" |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.DISTRICT | District.Address wenn AddressType.Address=="STRASSE" |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.POSTL_COD1 | ZIPKey.Address wenn AddressType.Address=="STRASSE" |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.CITY | City.Address wenn AddressType.Address=="STRASSE" |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.STREET | Street.Address wenn AddressType.Address=="STRASSE" |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.HOUSE_NO | StreetNumber.Address wenn AddressType.Address=="STRASSE" |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.HOUSE_NO2 | StreetNumberAddition.Address wenn AddressType.Address=="STRASSE" |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.C_O_NAME | CoName1.Address wenn AddressType.Address=="STRASSE" |
Z_CU_FB_ADDRESS_ADD | IS_ADDRESS.POSTL_COD1 | ZIPKey.Address wenn AddressType.Address=="GROSSKUNDE" |
Aktivitäten
Startbedingung:
Im Feld Kontakt-Nr(EVI) (C12ISUContEVI) muss eine gültige Nummer eingetragen worden sein. Da dieses Feld bei der Neuanlage über ein Pattern gefüllt wird, ist das immer der Fall, wenn das Customizing an dieser Stelle nicht verändert wurde.
Im Feld Aktivität mit (DefaultContactPerson) muss ein Ansprechpartner eingetragen sein, der zu einem Geschäftspartner gehört, der bereits nach SAP übertragen wurde und einen Wert im Feld SAP GP-Nr. (CustomerNo2) besitzt.
Die Felder Kontaktklasse (C12ISUCLASS), Kontaktaktion (C12ISUACTIVITY), Kontaktart (C12ISUTYPE) müssen gefüllt sein.
Referenzfeld: Kontakt-Nr. (ISU) - ISUContact.Activity
SAP-relevante Felder
Feld | Interner Feldname |
---|---|
Beginnt am | StartDate |
Kontaktklasse (ISU) | C12ISUCLASS |
Kontaktaktion (ISU) | C12ISUACTIVITY |
Kontaktart (ISU) | C12ISUTYPE |
Hausnummer | C12ISUF_COMING |
Priorität | Priority |
Text | Text |
Logik: Im Feld C12ISUContEVI wird eine Aktivitätennummer für den Kontakt über ein Pattern generiert. Diese dient als Vorgabe für SAP. In SAP ist der durch das Pattern abgedeckte Nummernkreis als externer Nummernkreis zu definieren. Die von SAP zurückgelieferte Nummer für den Kontakt wird nach der Anlage in das Feld ISUContact geschrieben.
Feldmapping
BAPI | Feld | EVI Quelle |
---|---|---|
Z_CU_CREATE_BCONTACT | IS_CONTACTDATA.CONTACT | C12ISUContEVI.Activity |
Z_CU_CREATE_BCONTACT | IV_TEXT_LANGUAGE | „D“ |
Z_CU_CHANGE_BCONTACT | IV_BP_CONTACT | ISUContact.Activity |
Z_CU_CREATE_BCONTACT | IS_CONTACTDATA.PARTNER | CustomerNo2.Customer |
Z_CU_CREATE_BCONTACT | IS_CONTACTDATA.CONTACT_PERSON | CustomerNo2.Customer |
Z_CU_CREATE_BCONTACT | IS_CONTACTDATA.CLASS | C12ISUCCLASS.Activity |
Z_CU_CREATE_BCONTACT | IS_CONTACTDATA.ACTIVITY | C12ISUACTIVITY.Activity (Zeichen 5-9) |
Z_CU_CREATE_BCONTACT | IS_CONTACTDATA.TYPE | C12ISUCTYPE.Activity |
Z_CU_CREATE_BCONTACT | IS_CONTACTDATA.DIRECTION | C12ISUF_COMING.Activity |
Z_CU_CREATE_BCONTACT | IS_CONTACTDATA.PRIORITY | Priority.Activity |
Z_CU_CREATE_BCONTACT | IS_CONTACTDATA.CONTACT_DATE | StartDate.Activity |
Z_CU_CREATE_BCONTACT | IS_CONTACTDATA.CONTACT_TIME | StartDate.Activity |
Z_CU_CREATE_BCONTACT | IS_CONTACTDATA.CREATED_BY | C12SAPUser.Employee |
Z_CU_CREATE_BCONTACT | IS_CONTACTDATA.CREATED_ON | aktuelles Datum |
Z_CU_CREATE_BCONTACT | IT_NOTICETEXT.TEXT_LINE | Text.Activity |
Z_CU_CREATE_BCONTACT | IT_NOTICETEXT.FORMAT_COL | „/“ |
HTML-Texte: SAP kann kein HTML im Text eines Kontaktes. Deshalb müssen sämtliche HTML-Tags, die im Text einer Aktivität stehen, beim Übertragen herausgefiltert werden. Um diesen Filter zu aktivieren ist die Option htmlText=1 in der globalen Variablen zur Konfiguration zu setzen. Neben dem Entfernen von HTML-Tags findet eine Umsetzung von Zeichen statt, die in HTML-Ersatzdarstellung angegeben wurden. Folgende Zeichen werden im aktuellen Stand unterstützt.
Ersatzdarstellung | Zeichen |
---|---|
  | <Leerzeichen> |
ä | ä |
ü | ü |
ö | ö |
Ä | Ä |
Ü | Ü |
Ö | Ö |
ß | ß |
| <Leerzeichen> |
ä | ä |
ü | ü |
ö | ö |
Ä | Ä |
Ü | Ü |
Ö | Ö |
ß | ß |
> | > |
< | < |
" | " |
& | & |
Administrative Tätigkeiten
Bei der Übertragung von Daten nach SAP werden Sätze in der WOI-TRANS-Tabelle erzeugt. Aufgabe des Administrators ist es, diese Sätze zu überwachen und Fehler zu erkennen. Dazu sind in regelmäßigen Abständen die Sätze aus der WOI-TRANS-Tabelle mit dem Status Fehler zu überprüfen. Als Hilfe dazu wird die Suche C12TRANS_EVI2SAP_SCORE angeboten, mit der sich eine Score-Kachel auf dem Desktop anlegen lässt.
Durch einen Klick auf die Anzahl können die WOI-TRANS-Sätze zur Bearbeitung geladen werden. In einem WOI-TRANS-Satz können folgende Daten eingesehen werden:
Ein Protokoll der Übertragung mit Uhrzeit und Fehlermeldung
EVI-Mitarbeiter: Der Mitarbeiter, der durch den Speichervorgang oder das Klicken des Aktionsbuttons den Übertragungsvorgang ausgelöst hat.
EVI-Entität: Die Entität des Datensatzes, der übertragen werden sollte.
EVI-Primärschlüssel: Der Schlüssel des Datensatzes, der übertragen werden sollte.
Über den Aktionsbutton "EVI Datensatz öffnen" ist es möglich, den Datensatz zu betreten und sich die Daten anzuschauen, um so den Grund für den Fehler zu finden. Im Datensatz selbst gibt es den Aktionsbutton "Transaktionen", mit dem alle WOI-TRANS-Sätze zu diesem Datensatz eingesehen werden können. Dies ist hilfreich, um die Ergebnisse früherer Übertragungen zu sehen und zu bewerten.
Ansonsten ist es sinnvoll, Kontakt mit dem Mitarbeiter aufzunehmen, der aus dem Feld EVI-Mitarbeiter ersichtlich ist, um mit ihm den Fehlerfall zu klären.
Wurde der Fehler behoben, kann der Transaktionsstatus auf R-Restart gesetzt werden. Damit ist der Satz für eine erneute Übertragung vorgesehen. Bei einer asynchronen Übertragung wird der Satz dann im nächsten Zyklus noch einmal übertragen. Bei einer synchronen Übertragung muss die Übertragung nochmals manuell gestartet werden.
Um den Administrator zu entlasten, wird das Ergebnis der Übertragung bei einer synchronen Übertragung dem Benutzer angezeigt. Er kann dann selbst entscheiden, ob er den Fehler bewerten kann und den Status R-Restart auf Grund einer Ja-Nein-Abfrage setzen.