Groovy-Beispiele für den Einstieg und SAP CPI
Drei kurze Beispiele zeigen den Weg vom Standard-Groovy-Skript zur Verarbeitung einer SAP-CPI-Nachricht. Zu jedem Beispiel finden Sie den vollständigen Code, Eingabedaten und das erwartete Ergebnis.
Von Contiva GmbH · Veröffentlicht am 16. Oktober 2026 · Für Groovy 2.4.21 und 4.0.29
Mit „Beispiel im Editor öffnen“ werden Code und Eingabe vorausgefüllt. Wählen Sie dort bei Bedarf die Groovy-Version und klicken Sie auf Run. Der Editor ist englischsprachig und für Desktop-Browser gedacht; die Beispiele können Sie auch auf dem Smartphone lesen oder kopieren.
Pure-Groovy-Modus
Groovy-Grundlagen: Listen und Closures
Eine Liste filtern, ihre Werte verdoppeln und das Ergebnis summieren. findAll wählt Elemente aus, collect wandelt sie um und sum addiert sie.
Groovy-Code
def zahlen = [1, 2, 3, 4, 5]
def ergebnis = zahlen.findAll { it > 2 }.collect { it * 2 }
println ergebnis
println ergebnis.sum()Erwartete Konsolenausgabe
[6, 8, 10] 24
Die Werte 3, 4 und 5 erfüllen die Bedingung. Nach dem Verdoppeln entsteht [6, 8, 10]; die Summe ist 24. Dafür sind keine SAP-Klassen nötig.
Beispiel im Editor öffnenSAP-CPI-Modus
SAP CPI: JSON lesen und Nachrichteninhalt ändern
JsonSlurper liest einen JSON-Nachrichteninhalt. Das Skript entnimmt die Auftragsnummer und schreibt einen neuen Body in das Message-Objekt.
Eingabe (Input Message)
{"auftrag": "4711", "status": "neu"}Groovy-Code
import com.sap.gateway.ip.core.customdev.util.Message
import groovy.json.JsonSlurper
def Message processData(Message message) {
def daten = new JsonSlurper().parseText(message.getBody(String))
message.setBody("Auftrag " + daten.auftrag + ": " + daten.status)
return message
}Erwarteter Nachrichteninhalt
Auftrag 4711: neu
Im CPI-Modus muss processData das Message-Objekt zurückgeben. Der Aufruf getBody(String) liest den Inhalt als Text; setBody ersetzt ihn durch das Ergebnis.
Beispiel im Editor öffnenSAP-CPI-Modus
SAP CPI: Header und Exchange Properties setzen
Ein Skript kann neben dem Body auch Header und Exchange Properties verändern. Hier wird die Auftragsnummer als Header und der Verarbeitungsstatus als Property gesetzt.
Eingabe (Input Message)
4711Groovy-Code
import com.sap.gateway.ip.core.customdev.util.Message
def Message processData(Message message) {
def auftrag = message.getBody(String).trim()
message.setHeader("Auftragsnummer", auftrag)
message.setProperty("Verarbeitet", "ja")
message.setBody("Auftrag " + auftrag + " verarbeitet")
return message
}Erwarteter Nachrichteninhalt
Auftrag 4711 verarbeitet
Zusätzlich zum Body enthält die Ausgabe den Header Auftragsnummer mit dem Wert 4711 und die Property Verarbeitet mit dem Wert ja. Prüfen Sie alle drei Ergebnisse in den Ausgabebereichen des Editors.
Beispiel im Editor öffnenTypische Fehler beim Übernehmen in SAP CPI
- Falscher Modus: Skripte mit dem SAP-Message-Import gehören in den CPI-Modus. Einfache Listen- und Closure-Beispiele können im Pure-Modus laufen.
- Fehlende Eingabe: Das JSON-Beispiel erwartet gültiges JSON im Bereich Input Message. Ein leerer Body oder ungültiges JSON führt beim Parsen zu einem Fehler.
- Fehlende Rückgabe: Die CPI-Funktion muss das Message-Objekt zurückgeben. Schreiben Sie am Ende return message.
- Andere Runtime: Testen Sie mit der Groovy-Version Ihres Script Steps. Eine erfolgreiche Kompilierprüfung unter Groovy 4 ersetzt keinen Test des vollständigen iFlows.
Diese Beispiele verarbeiten synthetische Daten ohne externe Verbindungen. Adapter, Zielsysteme und weitere SAP-Dienste sind nicht Teil der Simulation. Prüfen Sie Ihr fertiges Skript deshalb auch in der SAP Integration Suite.