Zum Hauptinhalt springen

Daten abfragen

WICHTIG

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

Der erste Eintrag des Arrays bestimmt die Tabelle und die Zeilenanzahl. Alle weiteren execution Einträge mit einem entryKey werden zusammengeführt.

Beispiel Zusammenführen

Zur Veranschaulichung wird als Beispiel die Tabelle costcenter mit folgender Einstellung verwendet:

{
"erpModule": "sap",
"erpFunction": "readTable",
"clear": true,
"execution": [
{
"sourceTable": "CSKS",
"fields": [
{
"sourceField": "BUKRS",
"targetTable": "costcenter",
"targetField": "costcenterrecipientid",
"dbKey": true,
"entryKey": true
},
{
"sourceField": "KOSTL",
"targetTable": "costcenter",
"targetField": "costcenterid",
"dbKey": true,
"entryKey": true
},
{
"sourceField": "DATBI",
"targetTable": "costcenter",
"targetField": "ufcostcentervalidto",
"dbKey": true,
"entryKey": true
},
{
"sourceField": "KOKRS",
"targetTable": "costcenter",
"targetField": "ufcostcentercontrollingarea",
"dbKey": true,
"entryKey": true
},
{
"sourceField": "BKZKP",
"targetTable": "costcenter",
"targetField": "ufcostcenterprimarybookingasisblocked"
},
{
"sourceField": "PKZKP",
"targetTable": "costcenter",
"targetField": "ufcostcenterprimarybookingplanblocked"
},
{
"sourceField": "BKZKS",
"targetTable": "costcenter",
"targetField": "ufcostcentersecondarybookingasisblocked"
},
{
"sourceField": "PKZKS",
"targetTable": "costcenter",
"targetField": "ufcostcentersecondarybookingplanblocked"
},
{
"sourceField": "VERAK",
"targetTable": "costcenter",
"targetField": "ufcostcenterresponsible"
}
]
},
{
"sourceTable": "CSKT",
"fields": [
{
"sourceField": "KOSTL",
"targetTable": "costcenter",
"targetField": "costcenterid",
"entryKey": true
},
{
"sourceField": "SPRAS",
"targetTable": "costcenter",
"targetField": "ufcostcenterlang"
},
{
"sourceField": "DATBI",
"targetTable": "costcenter",
"targetField": "ufcostcentervalidto",
"entryKey": true
},
{
"sourceField": "KOKRS",
"targetTable": "costcenter",
"targetField": "ufcostcentercontrollingarea",
"entryKey": true
},
{
"sourceField": "KTEXT",
"targetTable": "costcenter",
"targetField": "costcentername"
}
]
},
{
"sourceTable": "CSKB",
"fields": [
{
"sourceField": "KATYP",
"targetTable": "ufCostArt",
"targetField": "costArtType"
},
{
"sourceField": "KOKRS",
"targetTable": "ufCostArt",
"targetField": "costRecipient",
"entryKey": true
},
{
"sourceField": "KOSTL",
"targetTable": "ufCostArt",
"targetField": "costcenterId",
"entryKey": true
},
{
"sourceField": "KSTAR",
"targetTable": "ufCostArt",
"targetField": "costArt"
},
{
"sourceField": "DATBI",
"targetTable": "ufCostArt",
"targetField": "validTo",
"transform": "SAPtoSQLDate()"
},
{
"sourceField": "DATAB",
"targetTable": "ufCostArt",
"targetField": "validFrom",
"transform": "SAPtoSQLDate()"
},
{
"sourceField": "AUFNR",
"targetTable": "ufCostArt",
"targetField": "orderNumber"
},
{
"sourceField": "EIGEN",
"targetTable": "ufCostArt",
"targetField": "costArtProperty"
}
]
}
]
}

In der Konfiguration fungiert CSKS als Referenztabelle, die die Anzahl der Zeilen bestimmt. Die Zeilen aus CSKT und CSKB werden mit CSKS zusammengeführt.

Zusammenführen

Tabelle CSKS (Referenz)

In der CSKS kennzeichnen wir erforderliche Spalten mit entryKey.

In diesem Fall:

  • BUKRS
  • KOSTL
  • DATBI
  • KOKRS
vorsicht

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

Im nächsten Schritt werden die Daten aus CSKT und CSKB verarbeitet. Um die Daten korrekt zusammenzuführen, muss der entryKey verwendet werden.

Tabelle CSKT

Für die CSKT stehen die folgenden identischen Spalten zur Verfügung:

  • KOSTL
  • DATBI
  • KOKRS

Nun werden alle Zeilen von CSKS durchlaufen und mit den folgenden Filtern verglichen:

CSKT.KOSTL = CSKS.KOSTL AND 
CSKT.DATBI = CSKS.DATBI AND
CSKT.KOKRS = CSKS.KOKRS
tipp

Der entryKey entspricht hier somit dem Filter.

Tabelle CSKB

Für die CSKB stehen uns nur die folgenden identischen Spalten zur Verfügung:

  • KOKRS
  • KOSTL

Nun werden wieder alle Zeilen von CSKS durchlaufen und mit den folgenden Filtern verglichen:

CSKB.KOKRS = CSKS.KOKRS AND
CSKB.KOSTL = CSKS.KOSTL
tipp

Der entryKey entspricht hier somit wieder dem Filter.

Dadurch ergibt sich folgendes Schaubild:

Schaubild

Beispiel Abhängigkeiten

Es ist möglich, ein Feld als entryKey zu definieren, das nicht in der Referenztabelle vorhanden ist. Dieses Feld wird erst später von einer anderen Tabelle gefüllt.

Beispiel

Aus der MKPF benötigen wir den Wert XBLNR. Diesen erhalten wir über den Schlüssel MBLNR, der uns nur in der MSEG zur Verfügung steht.

Zusammenführen

Tabelle EKPO (Referenz)

In der EKPO kennzeichnen wir erforderliche Spalten mit entryKey.

In diesem Fall:

  • EBELN
  • EBELP
  • BUKRS
  • MATNR
vorsicht

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

Tabelle MSEG

Für die MSEG stehen die folgenden identischen Spalten zur Verfügung:

  • EBELN
  • EBELP

Nun werden alle Zeilen von EKPO durchlaufen und mit den folgenden Filtern verglichen:

EKPO.EBLN = MSEG.EBLN AND
EKPO.EBELP = MSEG.EBELP
tipp

Der entryKey entspricht hier somit dem Filter.

Durchlauf 1

Tabelle MKPF

In der MKPF steht keine Spalte der Referenztabelle zur Verfügung.

tipp

Durch die Datenanreicherung aus der MSEG haben wir aber die Spalte MBLNR.

Nun werden alle Zeilen von EKPO durchlaufen und mit den folgenden Filtern verglichen:

EKPO.MBLNR = MKPF.MBLNR

Durchlauf 2

Zusammenfassung

Durchläufe

Finale Konfiguration

{
"erpModule": "sap",
"erpFunction": "readTable",
"clear": true,
"execution": [
{
"sourceTable": "EKPO",
"fields": [
{
"sourceField": "EBELN",
"targetTable": "orderItem",
"targetField": "orderNumber",
"dbKey": true,
"entryKey": true
},
{
"sourceField": "EBELP",
"targetTable": "orderItem",
"targetField": "itemNumber",
"dbKey": true,
"entryKey": true
},
{
"sourceField": "BUKRS",
"targetTable": "orderItem",
"targetField": "recipient",
"entryKey": true
},
{
"sourceField": "MATNR",
"targetTable": "orderItem",
"targetField": "articleNumber",
"entryKey": true
},
]
},
{
"sourceTable": "MSEG",
"fields": [
{
"sourceField": "EBELN",
"targetTable": "orderItem",
"targetField": "orderNumber",
"dbKey": true,
"entryKey": true
},
{
"sourceField": "EBELP",
"targetTable": "orderItem",
"targetField": "itemNumber",
"dbKey": true,
"entryKey": true
},
{
"sourceField": "MBLNR",
"targetTable": "orderItem",
"targetField": "receiptNumber"
}
]
},
{
"sourceTable": "MKPF",
"fields": [
{
"sourceField": "MBLNR",
"targetTable": "orderItem",
"targetField": "receiptNumber",
"dbKey": true,
"entryKey": true
},
{
"sourceField": "XBLNR",
"targetTable": "orderItem",
"targetField": "deliveryNoteNumber"
}
]
}
]
}