Als Ergänzung zu dem folgenden Beitrag Dropdownlist mit Autocomplete
habe ich nun eine Möglichkeit geschaffen den in der Dropdownlist ausgewählten Wert direkt in eine V[Variable] zu übernehmen.
In dem Beispiel habe ich ein InputScript welches die Daten direkt ab der SAP Datenbank mittels des Funktionsbausteins /GUIXT/DBSELECT einliest
und über ein Template das HTML File erzeugt.
Falls Sie keinen RFC Zugriff auf Ihr SAP System haben, ließe sich die Wertetabelle mit den Materialien sicher auch aus einer Textdatei einlesen.
Das HTML File wird mittels des Befehls Helpview in die SAP Maske integriert.
Die Übergabe des ausgewählten Wertes erfolgt über eine entscheidende Javascript Routine:
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
</head>
<body>
<input list="&[Name_Values]" id="materialInput" placeholder="&[Initial_Value]" size="&[Field_Size]">
<datalist id="&[Name_Values]">
&Text[Datalist] </datalist>
<script>
document.addEventListener("DOMContentLoaded", () => {
const input = document.getElementById("materialInput");
const options = Array.from(document.getElementById("&[Name_Values]").options)
.map(opt => opt.value.trim());
input.addEventListener("change", (event) => {
const value = event.target.value.trim();
// Prüfe, ob Wert aus der Liste stammt
if (options.includes(value)) {
guixthost.Set("Var_&[Name_Values]", value);
guixthost.Input("OK:?,process=Process_Enter_after_Input.txt");
} else {
console.warn("Eingabe entspricht keinem Eintrag der Liste.");
}
});
});
</script>
</body>
</html>
Die dazugehörigen Scripte und Dateien sind hier verfügbar : Beispieldateien