Ansicht
Dokumentation

F4IF_INT_TABLE_VALUE_REQUEST - F4-Hilfe mit Übergabe der anzuzeigenden Werte in interner Tabelle

F4IF_INT_TABLE_VALUE_REQUEST - F4-Hilfe mit Übergabe der anzuzeigenden Werte in interner Tabelle

rdisp/max_wprun_time - Maximum work process run time   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Der Baustein ermöglicht die Realisierung der Standardhilfe zu POV mit Übergabe der anzuzeigenden Werte in einer Tabelle. Der gesamte Dialog verhält sich genau wie bei einer Standard F4-Hilfe. Dieser Baustein unterstützt auch das Eingabehilfe-Control.

Hinweis: Bevor Sie diesen Baustein zu POV (Process on Value-Request) einsetzen, überlegen Sie bitte, ob eine Suchhilfe nicht die gleiche Aufgabe übernehmen kann. Die selbstdefinierte Selektion der Werte können Sie in einem Suchhilfe-Exit realisieren. Sie hätten damit den Vorteil, daß Sie die Suchhilfe an ein Datenelement oder ein Feld einer Struktur anbinden können. Damit steht allen Verwendern des Datenelementes bzw. der Struktur automatisch die F4-Hilfe zur Verfügung.

Die anzuzeigenden Werte, werden in der Tabelle VALUE_TAB übergeben. Für die Organisation der Daten in VALUE_TAB gibt es verschiedene Möglichkeiten, die primär über den Parameter VALUE_ORG bestimmt werden.

  1. VALUE_ORG = 'S' (Structure)
Diese Art der Übergabe sollte bei neuen Entwicklungen benutzt werden. (Trotz anders lautender Defaultbelegung)
VALUE_TAB ist eine interne Tabelle mit einer (flachen) Struktur. Jede Zeile in VALUE_TAB entspricht dann einer Zeile der anzuzeigenden Liste.
Wie die Definition der Datenstruktur an den Baustein übergeben wird, ist weiter unten beschrieben.
Die Daten in VALUE_TAB liegen in interner Darstellung vor. Der Funktionsbaustein gibt die Daten in RETURN_TAB in externer Darstellung zurück.
  1. VALUE_ORG = 'C' (Column)
VALUE_TAB enthält pro Zeile den Inhalt eines einzelnen Feldes. Der Inhalt von VALUE_TAB wird Spalte für Spalte auf die Trefferliste übertragen. Die Beschreibung der Spalten wird in FIELD_TAB übergeben. Wenn alle Felder aus FIELD_TAB abgearbeitet sind, wird mit der nächsten Zeile begonnen.
Die Werte in VALUE_TAB müssen in diesem Fall in externer Darstellung übergeben werden. D.h., bei Typen mit Unterschieden zwischen externer und interner Darstellung sollten die Werte mit dem ABAP-Befehl WRITE statt mit MOVE in VALUE_TAB übertragen werden. (Das sind z.B. alle numerischen Typen, Datum, Felder mit Konvertierungsexit usw.) Benutzen sie für Zahlen den Zusatz LEFT-JUSTIFIED.
Achtung: Übertragen Sie keine Konstanten direkt in VALUE_TAB. Wenn z.B. ein Datum konstant als "01.01.1998" angegeben wird, kann es bei anderen benutzerspezifischen Einstellungen nicht mehr interpretiert werden.

Definition der Datenstruktur von VALUE_TAB.

Je nach dem, wie die interne Tabelle VALUE_TAB definiert wurde, gibt es verschiedene Möglichkeiten, diese Struktur dem Baustein mitzuteilen.

Letztendlich wird die Datenstruktur intern immer in der Tabelle FIELD_TAB abgelegt. Neben der direkten Übergabe beim Aufruf, gibt es aber verschiedene Möglichkeiten, die Tabelle durch den Baustein automatisch füllen zu lassen oder die Daten automatisch zu ergänzen.

  1. Die Struktur der internen Tabelle VALUE_TAB ist im ABAP Dictionary definiert. D.h., die Tabelle wird z.B. folgendermaßen definiert:
DATA: VALUE_TAB LIKE OCCURS 0 [WITH HEADER LINE].
In diesem Fall reicht es aus, dem Parameter DDIC_STRUCTURE den Namen der Bezugsstruktur mitzugeben. Die Tabelle FIELD_TAB sollte dann nicht zusätzlich übergeben werden, weil sie automatisch in dem Funktionsbaustein mit der Information aus dem ABAP Dictionary gefüllt wird.
Nur wenn z.B. nicht alle Felder der Struktur angezeigt werden sollen, oder die Spaltenreihenfolge oder Überschriften-Texte geändert werden sollen, muß statt dem Paramter DDIC_STRUCTUR die Tabelle FIELD_TAB versorgt werden.
Wenn in FIELD_TAB nur die Felder TABNAME und FIELDNAME gefüllt werden, besorgt sich der Baustein die restliche Information aus dem ABAP Dictionary. Damit können Sie auf einfache Art die Auswahl einzelner Felder und deren Reihenfolge bestimmen.
Wenn Sie Texte abändern wollen, sollten Sie FIELD_TAB initial mit Hilfe des Bausteins DDIF_FIELDINFO_GET füllen. Danach können sie z.B. die Texte in FIELD_TAB ändern.
  1. Die Tabelle VALUE_TAB wird z.B. folgendermaßen definiert:
DATA: BEGIN OF VALUE_TAB OCCURS 0,
FIELD1 LIKE ,
FIELD2 TYPE ,
"usw.
END OF VALUE_TAB.
Wenn alle Felder expliziten Bezug zu einem DDIC-Feld (mit LIKE) oder zu einem Datenelement (mit TYPE) haben, ist der Baustein selbst in der Lage, die Struktur von VALUE_TAB zu bestimmen. Geben Sie dann weder DDIC_STRUCTURE noch FIELD_TAB mit.
Wenn Sie die Feldbeschreibung über FIELD_TAB mitgeben möchten, (weil z.B. nicht alle Felder angezeigt werden sollen) ist es normalerweise nicht ratsam, nur TABNAME und FIELDNAME zu füllen. Der Baustein besorgt sich dann sämtliche Information aus dem ABAP Dictionary. Dazu gehört auch die relative Lage eines Feldes zum Anfang der Dictionary-Struktur. Diese stimmt aber in der Regel nicht mit der relativen Lage des Feldes in VALUE_TAB überein.
Besser ist es in diesem Fall, die Tabelle FIELD_TAB mit Hilfe des Bausteins DDIF_FIELDINFO_GET zu füllen. Danach sollte in FIELD_TAB-OFFSET die relative Lage der Felder in VALUE_TAB korrigiert werden. Dazu können sie z.B. den ABAP-Befehl DESCRIBE DISTANCE benutzen.
  1. Die Tabelle hat nur ein Feld, das die Werte spaltenweise aufnimmt. Als VALUE_ORG wird 'C' übergeben. Die Definition von VALUE_TAB könnte z.B. folgendermaßen lauten:
DATA: VALUE_TAB(100) TYPE C OCCURS 0 [WITH HEADER LINE].
Die Definition der Spalten sollte in FIELD_TAB übergeben werden. Dabei kann man sich wieder auf TABNAME und FIELDNAME beschränken, wenn die restliche Information (Typ, Länge, Überschriften) aus dem ABAP Dictionary besorgt werden soll.
Die relative Lage der Felder zum Strukturanfang (FIELD_TAB-OFFSET) spielt bei dieser Art der Datenübergabe keine Rolle.
Auch wenn Sie die vollständige Information in FIELD_TAB selbst übergeben wollen, empfiehlt es sich dennoch, FIELD_TAB zunächst mit DDIF_FIELDINFO_GET aus dem ABAP Dictionary zu füllen. Danach können Sie einzelne Felder, wie z.B. die Überschriftentexte noch abändern, bevor Sie den Baustein aufrufen.
Wenn der Parameter DDIC_STRUCTURE versorgt wird, wird FIELD_TAB intern mit der Feldbeschreibung der übergebenen DDIC-Struktur versorgt. Für die spaltenweise Übergabe der Daten ist das in der Regel nicht sinnvoll.

Die Feldnamen in FIELD_TAB müssen eindeutig sein. Wenn sie aus verschiedenen Strukturen Felder mit gleichem Namen benötigen, beschaffen Sie die Feldinformation bitte mit dem Funktionsbaustein DDIF_FIELDINFO_GET selbst, und ändern sie dann den Feldnamen ab.

Wenn das ALV Grid in den globalen F4 Einstellungen aktiviert ist und die FIELDTAB[] vom Nutzer gefüllt ist, sollte die FIELD_TAB[] mit einem beliebigen der Feldwerte (TABNAME, FIELDNAME, ROLLNAME, DATATYPE, INTTYPE) übergeben werden. TABNAME und FIELDNAME, ebenso wie ROLLNAME und DOMNAME sollten eine explizite Referenz auf Elemente des ABAP Dictionary darstellen. Wenn keiner der Werte übergeben wird, wird ein PARAMETER UNKNOWN Fehler von dem Funktionsmodul geworfen.

Zurückstellen der Auswahl ins Dynpro

Wenn die Dynpro-Information DYNPPROG, DYNPNR, DYNPROFIELD und gegebenenfalls STEPL mit angegeben wird, wird der ausgewählte Wert automatisch in das Dynpro-Feld zurückgestellt.

Geben Sie diese Informationen möglichst immer mit, weil nur mit dieser Information die amodale Control-Version der F4-Hilfe unterstützt werden kann. Ein Benutzer der das F4-Hilfe-Control eingeschaltet hat, sieht dann keinen Unterschied zwischen der Standard F4-Hilfe und einer über diesen Funktionsbaustein realisierten Hilfe.

Wenn der Benutzer die ActiveX-Hilfe eingeschaltet hat, wird die Hilfe unter folgenden Bedingungen amodal gestartet:
1. Die Dynpro-Information DYNPPROG, DYNPNR und DYNPROFIELD muß angegeben sein.
2. Beim Aufruf des Funktionsbausteins darf die RETURN_TAB nicht angegeben werden. (Beim amodalen Aufruf kehrt der Funktionsbaustein zurück, bevor der Benutzer einen Wert ausgewählt hat.)

Normalerweise wird nur in eingabebereite Felder zurückgestellt. Mit dem Parameter DISPLAY (Siehe Parameterdoku) kann das Verhalten beeinflußt werden.

Ab Release 4.6C kann der Baustein automatisch die Eingabebereitschaft des Feldes erkennen.

Beispiel

Hinweise

  • DYNPPROG und DYNNR können nicht als SY-REPID und SY-DYNNR übergeben werden, weil die Auswertung erst nach Aufruf des Funktionsbausteins erfolgt. Kopieren Sie statt dessen die SY-Felder zuvor in lokale Variablen, die sie dann dem Funktionsbaustein übergeben.
  • Der Wert für STEPL ist außerhalb einer Step-Loop 0. Innerhalb einer Step-Loop kann die aktuelle Zeile zum Zeitpunkt POV mit dem Funktionsbaustein DYNP_GET_STEPL besorgt werden.
  • Wenn das automatische Zurückstellen des ausgewählten Wertes nicht gewünscht ist, sollten die Parameter DYNPPROG, DYNNR etc. nicht versorgt werden. Ebenso wird zur Zeit nicht automatisch zurückgestellt, wenn MULTIPLE_SELECTION angekreuzt wird. Das kann sich in Zukunft aber ändern!
  • Aufrufe, die das automatische Zurückstellen nicht erlauben, können nur modal realisiert werden. Das Eingabehilfe-Control kann dennoch für die Anzeige benutzt werden. Solange das Popup angezeigt wird, ist aber keine andere Eingabe ins Dynpro möglich. Die Rückgabe erfolgt dann in der Tabelle RETURN_TAB. Wenn der Benutzer die F4-Hilfe abbricht, wird die RETURN_TAB leer zurückgegeben. (Abbrechen führt also nicht zu einer Exception.)

Weiterführende Informationen

Beachten Sie bitte auch die Dokumentation zu den Parametern, insbesondere zu VALUE und CALLBACK_FORM.





Parameter

CALLBACK_FORM
CALLBACK_METHOD
CALLBACK_PROGRAM
DDIC_STRUCTURE
DISPLAY
DYNPFLD_MAPPING
DYNPNR
DYNPPROG
DYNPROFIELD
FIELD_TAB
MARK_TAB
MULTIPLE_CHOICE
PVALKEY
RETFIELD
RETURN_TAB
STEPL
USER_RESET
VALUE
VALUE_ORG
VALUE_TAB
WINDOW_TITLE

Ausnahmen

NO_VALUES_FOUND
PARAMETER_ERROR

Funktionsgruppe

SDHI

Fill RESBD Structure from EBP Component Structure   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 12956 Date: 20240523 Time: 131143     sap01-206 ( 261 ms )