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.
 
Enno Wulff