Feldwerte im PAI auslesen
Bei der F4-Wertehilfe wird es automatisch gemacht: die aktuellen Werte aus den Dynprofeldern werden ausgelesen. Dies passiert normalerweise erst im PBO. Bei der F4-Wertehilfe ist es aber wichtig, den aktuellen Feldinhalt zu wissen, bevor der PAI und der PBO wieder durchlaufen werden.
Bei Verwendung einer Suchhilfe werden die Werte der Felder auf dem Dynpro automatisch an die Suchhilfe übergeben. Wenn man im Report eine eigene Suchhilfe programmiert, dann muss man dieses Verhalten nachprogrammieren.
Die Funktionsbausteine, die Sie evtl. benötigen, heissen:
- GET_DYNP_VALUE (Ein Feld abfragen)
- DYNP_VALUES_READ (Mehrere Felder abfragen)
- SET_DYNP_VALUE (Ein Feldwert zurückschreiben)
- DYNP_VALUES_UPDATE (Mehrere Feldwerte zurückschreiben)
Bei der Verwendung von DYNP_VALUES_READ geben Sie normalerweise die Felder mit, deren Werte Sie ermitteln möchten. Sie können es sich jedoch auch einfacher machen und einen undokumentierten Wert des Parameters “REQUEST” verwenden: In der Dokumentation steht, dass Sie ein “X” übergeben können, wenn Sie zu dem Feldwert auch die Eingabebereitschaft der Felder ermitteln möchten.
Übergeben Sie ein “A” und Sie erhalten alle Felder des Dynpros mit den entsprechenden Werten!!!
Das folgende Programm zeigt Ihnen, wie der Baustein GET_DYNP_VALUE angewendet wird:
REPORT zzwerthilfe.
DATA:
typx(1),
l_answer(6),
t_popli TYPE STANDARD TABLE OF spopli,
BEGIN OF itab OCCURS 0,
typ(1),
val(10),
END OF itab.
PARAMETERS:
p_typ(1),
p_val(10).
INITIALIZATION.
*-- Werte für "A"
APPEND 'AWert 1 ' TO itab.
APPEND 'AWert 2 ' TO itab.
APPEND 'AWert 3 ' TO itab.
APPEND 'AWert 4 ' TO itab.
*-- Werte für "B"
APPEND 'BValue 1 ' TO itab.
APPEND 'BWert 2 ' TO itab.
APPEND 'BDrei ' TO itab.
*-- Werte für "C"
APPEND 'CWert 1 ' TO itab.
APPEND 'CWert 2 ' TO itab.
APPEND 'CWert 3 ' TO itab.
*-- Werte für "D"
APPEND 'DWert 1 ' TO itab.
*-- Aufruf der Wertehilfe
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_val.
*-- Feldwert auslesen
CALL FUNCTION 'GET_DYNP_VALUE'
EXPORTING
i_field = 'P_TYP'
i_repid = sy-cprog
i_dynnr = sy-dynnr
CHANGING
o_value = typx.
*-- Tabelle für Auswahlpopup füllen
CLEAR t_popli[].
TRANSLATE typx TO UPPER CASE.
LOOP AT itab WHERE typ = typx.
t_popli-varoption = itab-val.
APPEND t_popli.
ENDLOOP.
IF t_popli[] IS INITIAL.
MESSAGE s000(vz) WITH 'Keine Werte vorhanden!'.
ELSE.
*-- Werte zur Auswahl anzeigen
CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
EXPORTING
cursorline = 1
mark_flag = ' '
mark_max = 1
textline1 = 'Bitte auswählen:'
titel = 'Auswahl'
display_only = ' '
IMPORTING
answer = l_answer
TABLES
t_spopli = t_popli
EXCEPTIONS
OTHERS = 4.
IF l_answer <> 'A'.
*-- Feld zuweisen
READ TABLE t_popli INDEX l_answer.
p_val = t_popli-varoption.
ENDIF.
ENDIF.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024