[ABAP] Werte von Dynpro-Elementen auslesen

Variante 1 (ein Wert mit GET_DYNP_VALUE)

PARAMETERS: p_test TYPE char32 DEFAULT 'Test123'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_test.
  DATA(lv_value) = VALUE char255( ).

* sy-repid und sy-dynnr müssen beim Auslesevorgang auch im akt. Ereignis vorhanden sein, sonst Exception
  CALL FUNCTION 'GET_DYNP_VALUE'
    EXPORTING
      i_field = 'P_TEST'
      i_repid = sy-repid
      i_dynnr = sy-dynnr
    CHANGING
      o_value = lv_value.

  MESSAGE lv_value TYPE 'I'.

Variante 2 (mehrere Werte mit DYNP_VALUES_READ)

PARAMETERS: p_test TYPE char32 DEFAULT 'Test123'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_test.
* Tabelle mit Feldern / GUI-Elementen, die ausgelesen werden sollen
  DATA(it_dyn_read) = VALUE dynpread_tabtype( ( fieldname = 'P_TEST' ) ).

* sy-repid und sy-dynnr müssen beim Auslesevorgang auch im akt. Ereignis vorhanden sein, sonst Exception
  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname               = sy-repid " sy-cprog
      dynumb               = sy-dynnr
    TABLES
      dynpfields           = it_dyn_read
    EXCEPTIONS
      invalid_abapworkarea = 1
      invalid_dynprofield  = 2
      invalid_dynproname   = 3
      invalid_dynpronummer = 4
      invalid_request      = 5
      no_fielddescription  = 6
      invalid_parameter    = 7
      undefind_error       = 8
      double_conversion    = 9
      stepl_not_found      = 10
      OTHERS               = 11.

  IF sy-subrc = 0.
    IF lines( it_dyn_read ) > 0.
      MESSAGE it_dyn_read[ 1 ]-fieldvalue TYPE 'I'.
    ENDIF.
  ENDIF.