Zum Hauptinhalt springen

Mapping-Struktur

Der Dateiname des Mappings muss zwingend mit mapping- beginnen, da nur so diese als Mappingdatei erkannt wird.

Struktur

Der Aufbau einer Mappingdatei sieht wie folgt aus:

{
"erpModule": "sap",
"erpFunction": "Funktion",
"clear": true,
"execution": [
{
"sourceTable": "Quell-Tabelle",
"fields": [
{
"sourceField": "Spaltenname der Tabelle",
"targetTable": "Tabelle in Datenbank",
"targetField": "Spalte der Tabelle in Datenbank",
"dbKey": true,
"entryKey": true,
"transform": "",
"virtual": false
}
]
}
]
}

erpModule

Definiert das ERP-Modul, in diesem Fall ist der Wert immer: sap

erpFunction

Definiert die Funktion des ERP-Moduls. Mögliche Werte sind:

  • readTable
  • createLink
  • prepost
  • post
  • updatePrepost
  • deletePrepost
  • createOrUpdateCustomer

clear

Hier wird über einen boolschen Wert definiert, ob der Inhalt der Zieltabelle (Datenbank) vor dem Datenabgleich mit SAP gelöscht werden soll. Für das Aktualisieren der Einträge muss der Wert auf false gesetzt werden.

hinweis

Dieses Flag betrifft nur, wenn erpFunction=readTable ist!

execution

In dem execution Array werden die Datentransporte konfiguriert. Es muss mindestens ein Eintrag existieren.

gefahr

Die korrekte Reihenfolge der execution-Einträge ist entscheidend, wenn Daten aus mehreren Tabellen zusammengeführt werden sollen!

Mehr zum Thema ➜ Daten abfragen

sourceTable

Definiert die Quell-Tabelle der Daten.

tipp

Je nach erpFunction ist dies

fields

Definition der Felder, die aus der SAP-Tabelle/Datenbanktabelle geladen werden sollen.

fields.sourceField

Spaltenname des Feldes innerhalb der SAP Tabelle/Datenbanktabelle.

fields.targetTable

Name der Datenbank-Tabelle bzw. SAP-Tabelle, in die das Feld synchronisiert werden soll.

fields.dbKey

Optional: Boolscher Wert zur Definition des kombinierten Primär-Schlüssels der Einträge für die Synchronisierung in die Datenbank. Vor dem Abgleich der geladenen SAP-Daten mit der Datenbank wird pro Zieltabelle der Primärschlüssel über alle Spalten aktiviert, die den Wert dbKey auf true gesetzt haben.

hinweis

Dieses Flag betrifft nur, wenn erpFunction=readTable ist!

fields.entryKey

Optional: Diese Option hat zwei Funktionen:

In der ersten Tabelle wird die Spalte als Pflichtspalte gekennzeichnet.

vorsicht

Wenn die Spalten keine Werte enthalten, werden die Zeilen gefiltert.

In den weiteren Tabellen dient sie als Filter.

tipp

Eine ausführliche Erläuterung, siehe Daten abfragen

hinweis

Dieses Flag betrifft nur, wenn erpFunction=readTable ist!

fields.virtual

Optional: Durch das virtual Flag, wird das Feld nicht in die Datenbank geschrieben. Häufig wird das virtual Flag mit der transform-Funktion verwendet, siehe Prototyp-Funktionen

fields.transform

Optional: Hier gibt es unterschiedliche, vordefinierte aber auch Javascript kompatible Funktionsaufrufe, die die Werte beim Mapping in das targetField manipulieren kann.

hinweis

Dieses Flag betrifft nur, wenn erpFunction=readTable ist!

Verfügbare Funktionen
  • formatDate(format = "YYYY-MM-DD", targetFormat = "DD.MM.YYYY"): string;
  • SAPtoSQLDate(): string; ← ruft formatDate auf
  • InvertedSAPtoSQLDate(): string; ← ruft formatDate auf
  • round(precision = 2): number;
  • parseFloat(): number;
  • take(maxLength: any): any; ← ruft substring mit StartIndex 0 auf, die maxLength ist also wie viele Zeichen übernommen werden sollen
Prototyp-Funktionen

Hier kann eine JavaScript gültige Funktion übergeben werden.

NEU

Optional lässt sich so aus der aktuellen currentRow mit anderen Feldern kombinieren.

{
"sourceField": "LAUFD",
"targetTable": "paymentproposals_getList",
"virtual": true
},
{
"sourceField": "LAUFI",
"targetTable": "paymentproposals_getList",
"virtual": true
},
{
"sourceField": "XVORL",
"targetField": "ppi_headerid",
"targetTable": "paymentproposals_getList",
"transform": "substring(0,0).concat(currentRow.LAUFD, currentRow.LAUFI)"
}

Beispiele

Daten abfragen

Möchte man Daten aus SAP-Tabellen abfragen, so müssen folgende Punkte beachtet werden:

  • erpFunction muss der Wert readTable verwendet werden
  • sourceTable muss die gewünschte SAP-Tabelle eingetragen werden, z.B. LFB1 für Lieferanten
  • sourceField sind die Spaltennamen innerhalb der SAP-Tabelle, z.B. LIFNR für Lieferantennummer
  • targetTable sind die Datenbank-Tabellen, z.B. vendor
  • targetField sind die Spaltennamen innerhalb der DB-Tabelle, z.B. vendorid
{
"erpModule": "sap",
"erpFunction": "readTable",
"clear": true,
"execution": [
{
"sourceTable": "SAP-Tabelle",
"fields": [
{
"sourceField": "Spaltenname der SAP-Tabelle",
"targetTable": "Tabelle in Datenbank",
"targetField": "Spalte der Tabelle in Datenbank"
}
]
}
]
}
hinweis

Im Gegensatz zu anderen Funktionen des SAP Connectors, werden außer dem CPIC Benutzer keinerlei Anpassungen oder Erweiterungen auf SAP Seite benötigt. Hintergrund hierfür ist, dass der SAP Connector den SAP-internen Funktionsbaustein "RFC_READ_TABLE" für den Datenabruf benutzt, welcher in allen bekannten Systemen und Versionen verfügbar und remote ausführbar ist. In restriktiven Umgebungen kann es sein, dass dem CPIC Benutzer die Berechtigung für diesen Aufruf separat zugewiesen werden muss. Sollte es zu Berechtigungs- oder Verbindungsproblemen kommen, werden diese im Log ausgegeben.

Daten senden

Möchte man Daten an SAP senden, so müssen folgende Punkte beachtet werden:

  • erpFunction muss der Wert prepost, updatePrepost oder post verwendet werden
  • sourceTable muss die gewünschte Datenbank-Tabellen, z.B. invoiceheader
  • sourceField sind die Datenbank-Tabellen, z.B. invoicedate
  • targetTable sind die SAP-Tabelle, z.B. HEADER_DATA
  • targetField sind die Spaltennamen innerhalb der SAP-Tabelle, z.B. DOC_DATE
{
"erpModule": "sap",
"erpFunction": "prepost",
"clear": true,
"execution": [
{
"sourceTable": "DB-Tabelle",
"fields": [
{
"sourceField": "Tabelle in Datenbank",
"targetTable": "SAP-Tabelle",
"targetField": "Spalte der SAP-Tabelle"
}
]
}
]
}