Skip to content

RadioGroup

Eine Gruppe von Radio-Buttons, von denen sich genau einer auswählen lässt. Im Gegensatz zu mehreren losen CheckBoxen schließen sich die Optionen gegenseitig aus.

Designer-Attribute

AttributBeschreibungDefault
controlIdEindeutige IDautomatisch generiert
selectedIndexIndex des aktuell selektierten Buttons (0-basiert)0
columnsAnzahl Spalten beim Layout1
enabledKomponente aktivtrue
visibleSichtbartrue
widthBreite (CSS-Wert)
valueStateStatus-HervorhebungNone
fontSizeSchriftgröße (CSS-Wert)
colorVordergrundfarbe (Hex)
backgroundColorHintergrundfarbe (Hex)
spanS / spanM / spanL / spanXLGrid-Layout12

Radio-Buttons werden als Kind-Komponenten (RadioButton) im View-Tree gepflegt – jeder mit text und optional key.

ABAP-API

Zugriff über me->get_radio_group( '<controlId>' ).

MethodeZweck
GET_SELECTED_INDEX / SET_SELECTED_INDEXSelektierter Index
GET_SELECTED_TEXTText des aktuell selektierten Buttons
GET_ITEMSTabelle aller Radio-Buttons
ITEMS_COUNTAnzahl Items
ADD_BUTTONNeuen Radio-Button hinzufügen
REMOVE_ITEMItem nach controlId entfernen

Konstruktor für dynamisch erzeugte Radio-Buttons: /mobbuild/cl_radio_button=>create( ).

Geerbte Methoden: siehe Control.

Beispiel: /mobbuild/cl_ex_radio_group

Das Beispiel zeigt zwei Patterns: dynamisches Hinzufügen / Entfernen von Radio-Buttons sowie das Übernehmen der Auswahl in ein Eingabefeld.

abap
METHOD on_pai.

  DATA(lv_event_key) = me->get_event( )->get_event_key( ).

  CASE lv_event_key.
    WHEN 'Add' OR 'Remove'.
      me->on_example_add_remove_dynamic( ).
    WHEN OTHERS.
      me->on_example_event( ).
  ENDCASE.

ENDMETHOD.

Auswahl in Eingabefeld übernehmen

abap
METHOD on_example_event.

  DATA(lo_input_out_control_id) = me->get_event( )->get_event_key( ).
  DATA(lo_input_out)            = me->get_input( lo_input_out_control_id ).

  DATA(lo_radio_group_control_id) = me->get_event( )->get_sender( ).
  DATA(lo_radio_group)            = me->get_radio_group( lo_radio_group_control_id ).

  lo_input_out->set_value( lo_radio_group->get_selected_text( ) ).

ENDMETHOD.

Dynamisch Buttons hinzufügen / entfernen

abap
METHOD on_example_add_remove_dynamic.

  DATA(lv_event_sender) = me->get_event( )->get_sender( ).

  DATA(lo_control) = me->get_radio_group( 'groupDynamic' ).
  DATA(lt_items)   = lo_control->get_items( ).
  DATA(lv_count)   = lo_control->items_count( ).

  IF lv_event_sender EQ 'btnAdd'.

    DATA(lv_temp) = |item_{ lv_count + 1 }|.

    DATA(lo_radio_button) = /mobbuild/cl_radio_button=>create( ).
    lo_radio_button->set_control_id( lv_temp ).
    lo_radio_button->set_text( lv_temp ).
    lo_control->add_button( lo_radio_button ).

  ELSEIF lv_event_sender EQ 'btnRemove'.

    IF lv_count > 0.
      READ TABLE lt_items INTO DATA(lo_last) INDEX lv_count.
      lo_control->remove_item( lo_last->get_control_id( ) ).
    ENDIF.

  ENDIF.

ENDMETHOD.

Events im Designer

EventAuslöser
onSelectAuswahl gewechselt

Nächste Schritte

  • SegmentedButton – kompakte Alternative für wenige Optionen
  • ComboBox – platzsparende Alternative für viele Optionen