Ich verwende in einem Dynpro ein Customcontrol und bau mir dort via
CL_GUI_HTML_VIEWER eine Anzeige für ein HTML. Darin ist pro Text ein Dropdown. Ich würd gern im SAP die ausgewählten Einträge im HTML erhalten.
Das HTML ist wie unten angehängt aufgebaut. Das HTML bau ich mir in einem String mit dem JavaScript auf.
Via FUB DP_CREATE_URL wird ein File erzeugt.
z.B:
SAPHTMLP://htmlviewer.sap.com/TEST.htm
Ich möchte jetzt, bei einer Useraktion die ausgewählten Optionen auslesen.
Hat jemand einen Ansatz oder eine Idee für mich?
Eventuell ließe sich das mittels SAPEVENT umsetzen (https://help.sap.com/doc/saphelp_nw70/7 ... cache=true). Hierdurch wird ein Event ausgelöst, welches im ABAP-Programm abgefangen werden kann, Parameter können ebenfalls übergeben werden.
Kurz zusammengefasst:
Um deine ganzen Eingabefelder musst du im HTML einen FORM-Tag einfügen und als Attribute ACTION="SAPEVENT:IRGENDWAS" angeben. Nachdem dann das Formular mittels SUBMIT abgeschickt wurde, wird in SAP der Event SAPEVENT ausgelöst. Da drauf einfach einen Handler definieren und im Parameter POSTDATA stehen dann die Formulardaten drinnen.
P.S.: Das "IRGENDWAS" aus dem Attribute ACTION steht dann übrigens im gleichnamigen Parameter der Handler-Methode. Damit kann man sehr leicht mehrere Formulare auf einer Seite unterscheiden.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag: M4rm
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.
Ich hab es soweit mal hinbekommen, dass mein Eventhandler der CL_GUI_HTML_VIEWER reagiert, aber keine Werte bekommt.
Über meine Dropdowns hab ich eine form mal gesetzt.
Bei der Änderung des Dropdowns wird das Event SAPEVENT geschossen, und mein Ereignisbehandler reagiert.
Der Parameter ACTION ist auch mit dem Wert "INPUT_FIELDS" befüllt.
Jedoch die GETDATA, POSTDATA und QUERY_TABLE geben nichts retour.
Ziel ist die ID des selects (SELECT1) und der ausgewählte Wert (z.B.:Header1)
zurückzugeben.
Mein HTML sieht so aus:
<head><meta charset="UTF-8"><meta name="description" content="Free Web tutorials"><meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dokumentinhalt</title>
</head>
<form name="INPUT" id="val" accept-charset="utf-8" method="POST" action="SAPEVENT:INPUT_FIELDS">
<select form="val" id="SELECT1" style="height: 25px;width: 250px;" class="select" onchange="this.form.submit()">
<option value="keine Auswahl">keine Auswahl</option>
<option value="Header1">Header1</option>
<option value="Header2">Header2</option>
</select>
</form>
</div>
<p style="background-color: #d3f6ff;">Ich bin ein langes langes lange langes Langtextfeld
Test Test Test TEst Test test test test </div></body></html>
Deinem SELECT fehlt das NAME-Attribute und ein FORM-Attribute gibt es glaub ich nicht.
Ich glaub du hast generell einen Denkfehler im HTML:
Das FORM-Tag fasst ein oder mehrere Eingabefelder zusammen alleine nur indem es sie umschließt. Das bedeutet, dass das FORM keinen Bezug zu einem Element herstellen muss und umgekehrt muss auch das Eingabefeld keinen Bezug zum Formular herstellen indem es sich befindet. Das wird alles durch die Hierachie im HTML abgebildet. FORM NAME=INPUT und ID=VAL bzw. SELECT FORM=VAL sind somit sinnlos.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.
Danke schön!
Mit dem Attribute Name im Select funktioniert die Übergabe der Daten.
Das Form habe ich ebenfalls noch ausgeputzt und die ID/Name sind entfernt.
Funktioniert perfekt so!
Dafür steht ein Bier in Wien bereit :)
Schicks nach Graz. 😉
Komm leider nicht so schnell in die Hauptstadt.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.