
Das Web-Dynpro-ABAP-Framework bietet die Möglichkeit, eigene Wertehilfe-Components anzulegen und zu nutzen.
Bevor Sie eigene Wertehilfen programmieren, sollten Sie untersuchen, ob sich Ihre Wertehilfe mit einer ABAP-Dictionary-Suchhilfe abbilden lässt. Wenn Sie durchgängig die Suchhilfe und somit die Standard-Wertehilfe verwenden, trägt dies zur Einheitlichkeit Ihrer Web-Dynpro-Anwendung bei. Darüber hinaus bietet die ABAP-Dictionary-Suchhilfe die Möglichkeit, eine persönliche Werteliste (Favoriten) zu pflegen. Weiterhin lassen sich auch komplexe Suchanfragen mit Hilfe der Selektionsoptionen für die einzelnen Suchfelder formulieren. Möchten Sie diese Funktionen dem Benutzer auch für die frei programmierten Wertehilfen zur Verfügung stellen, so muss zusätzlicher Entwicklungs- und Wartungsaufwand eingeplant werden.
Eine Component, die als Wertehilfe dienen soll, muss das Interface IWD_VALUE_HELP implementieren (siehe Arbeiten mit Web-Dynpro-Component-Interfaces). Nachdem die frei programmierte Wertehilfe an ein Context-Attribut geknüpft wurde, steht dann die Wertehilfe automatisch für jedes an dieses Attribut gebundene InputField zur Verfügung.
Interface IWD_VALUE_HELP
Beim Programmieren mit Hilfe des Interfaces IWD_VALUE_HELP müssen Sie Folgendes beachten:
Die Methode SET_VALUE_HELP_LISTENER am Interface-Controller von IWD_VALUE_HELP darf nur durch das Web-Dynpro-Framework aufgerufen werden. Mit Hilfe dieser Methode übergibt das Framework ein Call-Back-Interface an die Wertehilfe-Component. Die Wertehilfe-Component kann dem Framework über dieses Interface mitteilen, dass sie geschlossen werden soll, wenn z.B. Daten ausgewählt wurden, Abbrechen gedrückt wurde oder wenn ein Fehler aufgetreten ist. Außerdem enthält dieses Interface die beiden Attribute F4_CONTEXT_ELEMENT und F4_ATTRIBUTE_INFO. Diese beiden Attribute beschreiben das Context-Element, für das die F4-Hilfe angefordert wurde.
Die Ereignisse VH_WINDOW_CLOSED und VH_WINDOW_OPENED des Component-Interfaces dürfen nur durch das Framework ausgelöst werden. Die Ereignisse kennzeichnen die Zeitpunkte des Schließens bzw. Öffnens des Wertehilfe-Fensters. Beim Implementieren des Component-Interfaces IWD_VALUE_HELP sollten diese Ereignisse in das Component-Interface der Wertehilfe-Component übernommen werden, damit sie in der aufrufenden Component zur Verfügung stehen und sich deren Ereignisbehandler auf die Ereignisse registrieren können.
Das Component-Interface IWD_VALUE_HELP verfügt über die Interface-View WD_VALUE_HELP. Die Views, die im Wertehilfe-Fenster angezeigt werden sollen, müssen in das zur Interface-View gehörende Window WD_VALUE_HELP eingebettet werden.
Nach der Erzeugung der Wertehilfe-Component durch das Web-Dynpro-Framework wird die Methode SET_VALUE_HELP_LISTENER (ebenfalls durch das Framework) aufgerufen, um das Interface IF_WD_VALUE_HELP_LISTENER an die Wertehilfe-Component zu übergeben. Dieses Interface enthält die Methode CLOSE_WINDOW, mit deren Hilfe das Wertehilfe-Fenster geschlossen werden kann.
Anbindung an ein Context-Attribut
Die Anbindung einer frei programmierten Wertehilfe erfolgt analog zur der Anbindung einer OVS-Wertehilfe in folgenden Schritten:
Anlegen einer Wertehilfe-Component und Implementieren des Component-Interface IWD_VALUE_HELP.
Anlegen einer Component-Verwendung für die Wertehilfe-Component in Ihrer Anwendungs-Component.
Anbinden der Component-Verwendung an das Context-Attribut. In diesem Fall wählen Sie (entweder beim Anlegevorgang des Attributs oder auch später in dessen Eigenschaftentabelle) für den Wertehilfe-Modus den Wert frei und geben die entsprechende Component-Verwendung an.
Context-Change-Log bei frei programmierten Wertehilfen
Auch bei der Verwendung einer frei programmierten Wertehilfe können Sie die Context-Change-Log-Funktion nutzen. Sie müssen allerdings beachten, dass die durch den Benutzer ausgewählten Werte nicht automatisch in die Änderungstabelle geschrieben werden, der Eintrag muss explizit programmiert werden (siehe hierzu OVS-Wertehilfe und Context-Change-Log).