Beim Einsatz von Nintex-Forms in SAP-Integrationsszenarien ist es oft notwendig, die Eingabedaten zu prüfen, ob sie gültig im SAP-System sind, bevor wir die Form verschicken. Wenn die Form ein Eingabefeld beispielsweise für eine SAP-Kundennummer hat, wollen wir prüfen, ob diese Kundennummer im SAP-System existiert.
ECS Core bietet REST-Services für SAP-Operationen, welche von JavaScript konsumiert werden können. Die Einbindung von Custom JavaScript wird wiederum von Nintex Forms unterstützt. In diesem Beispiel werden wir die eingegebene SAP-Kundennummer in der Nintex-Form mit Hilfe von JavaScript und ERPConnect Services REST Services auf Gültigkeit im SAP-System prüfen.
Schritt 1: Textfelder definieren
In unserer Nintex-Form benötigen wir zwei Felder: Das erste Feld field_input enthält die Kundennummer. Das zweite Feld field_output enthält den SAP-Kundennamen falls die Eingabe gültig ist ansonsten eine Fehlermeldung.
Klicken Sie mit der rechten Maustaste auf das erste Feld und wählen Sie Settings.
Setzen Sie die Option Store Client ID in JavaScript Variable auf Yes.
Setzen Sie einen Namen ins Feld Client ID JavaScript variable name, z.B. field_input.
Wiederholen Sie die letzten Schritte fürs zweite Feld und benennen Sie es, z.B. field_output.
Schritt 2: JavaScript-Code einfügen
Fügen Sie eine Referenz zu unserer JavaScript-Bibliothek unter Form Settings -> Advanced -> Custom JavaScript Includes ein:
https://cdn-files.theobald-software.com/static/theobald.ecs.micro/5.7.0/index.html
Fügen Sie den JavaScript-Code unter Form Settings -> Advanced -> Custom JavaScript ein.
Im Code wird die Funktion tEcs.ExeculeXQL aufgerufen, um den Kundennamen aus der SAP-Tabelle KNA1 zu lesen.
// webpage loaded
NWF$(document).ready(function() {
// tecs5
theobald.ready(function() {
var $ = NWF$,
// material number input
tsInput = $('#' + field_input),
// description output
tsInputDescription = $('#' + field_output),
// literals
noMatchText = 'No direct match!',
errComm = 'Communication error, please see console',
selectOptionString = '{0} ({1})',
// xql query
xqlString = "SELECT TOP 2 KUNNR, NAME1 FROM KNA1 WHERE (KUNNR LIKE '%{0}') ",
// connection properties to ecscore
ecsConnection = {
ecs: {
coreApiKey: 'C30B8CD6E8DA474DBDC22CAE1958D1XX',
instance: 'EC5',
url: 'https://theobald-cloudservices.servicebus.windows.net/ecs/ws'
}
},
queryFunction = function(val) {
return tEcs.executeXql({
connection: ecsConnection,
data: tEcs.format(xqlString, val)
});
};
tsInput.on('blur', function() {
queryFunction(tsInput.val())
.done(function(data) {
if (data.length === 1) {
var firstRow = data[0];
tsInputDescription.val(tEcs.format(selectOptionString, firstRow.NAME1, firstRow.KUNNR));
} else {
tsInputDescription.val(noMatchText);
}
}).fail(function(data, data2) {
console.log(data, data2);
tsInputDescription.val(errComm);
});
});
});
});
Für weitere Informationen siehe JavaScript Library for REST.
Schritt 3: Die Nintex Form ausführen
Nun führen Sie die Form aus und geben Sie eine Kundennummer ein. Der Kundenname wird aus SAP gelesen und im zweiten Feld angezeigt.
Sollte die eingegebene Kundennummer im SAP nicht existieren, erscheint eine entsprechende Fehlermeldung.
Dieses Beispiel zeigt, wie Sie Eingabedaten in Nintex Form auf SAP-Gültigkeit prüfen. Die Prüfung wurde mit Hilfe von JavaScript und ECS Core REST Services umgesetzt.
Viele weitere Szenarien sind denkbar. Möglich wäre es z.B., eine Combobox mit SAP Kundennummern bzw. -namen zu füllen oder eine direkte SAP-Suche anzubieten.