Report-Dynpro verändern

Auf einem Dynpro kann zu einer Listbox ein Funktionscode ausgelöst werden, wenn der Wert geändert wird. Auf einem Report wird es technisch zwar unterstützt, kann aber mit normalen Mitteln nicht aktiviert werden. Mit einem Trick geht es jedoch. Dieser Trick greift jedoch in die Dynprostruktur ein. Dieser Trick dient lediglich dazu, um zu zeigen, wie Dynpro-Manipulationen gemacht werden können.


HINWEIS
Dieser Tipp ist inzwischen veraltet! In aktuellen Releases muss natürlich der Zusatz USER-COMMAND verwendet werden! Die Stelle ist im Coding GRÜN hervorgehoben.


Screenshot


Bei Auswahl wird automatisch eine Checkbox aktiviert

Coding

REPORT zzreport.

*** Variablen für Dynpro-Änderung
DATA:
  h    TYPE d020s,
  f    LIKE d021s OCCURS 0 WITH HEADER LINE,
  e    LIKE d022s OCCURS 0 WITH HEADER LINE,
  m    LIKE d023s OCCURS 0 WITH HEADER LINE,
  res1 LIKE d021s_res1.

*** Variablen für die Checkbox
TYPE-POOLS vrm.
DATA:
  t_values TYPE vrm_values,
  l_value  TYPE vrm_value.

*** Selektionsbild
PARAMETERS:
  p_test AS LISTBOX VISIBLE LENGTH 20, “USER-COMMAND abc
  p_moto AS CHECKBOX,
  p_bike AS CHECKBOX,
  p_auto AS CHECKBOX.

LOAD-OF-PROGRAM.
*** Dynpro einlesen
  IMPORT DYNPRO h f e m
    ID ‘ZZREPORT                                1000’.

*** Funktionscode setzen
  LOOP AT f WHERE fnam = ‘P_TEST’.
    res1          = f-res1.
    res1-funccode = ‘TEST’.
    f-res1        = res1.
    MODIFY f.
  ENDLOOP.

*** Dynpro generieren
  GENERATE DYNPRO h f e m
    ID ‘ZZREPORT                                1000’
    MESSAGE sy-msgv1 LINE sy-msgv2 WORD sy-msgv3.

INITIALIZATION.

*** Werte für Listbox vorbereiten
  l_value-key  = ‘M’.
  l_value-text = ‘Motorrad’.
  APPEND l_value TO t_values.
  l_value-key  = ‘F’.
  l_value-text = ‘Fahrrad’.
  APPEND l_value TO t_values.
  l_value-key  =  ‘A’.
  l_value-text = ‘Auto’.
  APPEND l_value TO t_values.

*** Werte für Listbox setzen
  CALL FUNCTION ‘VRM_SET_VALUES’
       EXPORTING
            id     = ‘P_TEST’
            values = t_values.

*** Kommando auswerten
AT SELECTION-SCREEN.

  CASE sy-ucomm.
    WHEN ‘TEST’.
      CASE p_test.
        WHEN ‘M’.
*** Wahl “Motorrad”
          p_moto = ‘X’.
          p_bike = ‘ ‘.
          p_auto = ‘ ‘.

        WHEN ‘F’.
*** Wahl “Fahrrad”
          p_moto = ‘ ‘.
          p_bike = ‘X’.
          p_auto = ‘ ‘.

        WHEN ‘A’.
*** Wahl “Auto”
          p_moto = ‘ ‘.
          p_bike = ‘ ‘.
          p_auto = ‘X’.

        WHEN space.
*** Keine Auswahl
          p_moto = ‘ ‘.
          p_bike = ‘ ‘.
          p_auto = ‘ ‘.

      ENDCASE.
  ENDCASE.

Enno Wulff