[ABAP] Domänenwerte in einer ComboBox im Selektionsbild darstellen

DATA: it_val TYPE vrm_values.

PARAMETERS: p_type TYPE char1 OBLIGATORY AS LISTBOX VISIBLE LENGTH 20.

INITIALIZATION.

  CLEAR: it_val.

* Domänenwerte holen
  cl_reca_ddic_doma=>get_values( EXPORTING id_name   = 'CCCATEGORY'
                                 IMPORTING et_values = DATA(it_dval) ).

  IF lines( it_dval ) > 0.
* wenn Werte vorhanden, dann Auswahlliste erstellen
    it_val = VALUE vrm_values( FOR v IN it_dval ( key  = v-domvalue_l
                                                  text = v-ddtext ) ).

* Auswahlliste setzen
    CALL FUNCTION 'VRM_SET_VALUES'
      EXPORTING
        id              = 'P_TYPE'
        values          = it_val
      EXCEPTIONS
        id_illegal_name = 1
        OTHERS          = 2.

    IF sy-subrc = 0.
* Vorselektion 'Punkt eins'
      p_type = it_val[ 1 ]-key.
    ENDIF.
  ENDIF.

START-OF-SELECTION.
* akt. Selektion der ComboBox heraussuchen
  TRY.
      DATA(s) = it_val[ key = p_type ].

      WRITE: / s-key, s-text.
    CATCH cx_root.
  ENDTRY.

[ABAP] ALV-Grid: Standard F4-Suchhilfe für Spalten aktivieren

* im LVC-Feldkatalog müssen für die Felder der F4-Spalten folgende Parameter gesetzt werden:
* tabname = 'MARA'.
* ref_table = 'MARA'.
* domname = 'MATNR'.
* f4availabl = abap_true.

DATA: o_alv TYPE REF TO cl_gui_alv_grid.

...

* F4-Hilfe festlegen
DATA(it_f4help) = VALUE lvc_t_f4( ( fieldname = 'MATNR'
                                    register = abap_true
                                    chngeafter = abap_true ) ).

o_alv->register_f4_for_fields( it_f4help ).

[ABAP] Selektionsbildschirm: Auf Änderung der Auswahl in einer Listbox reagieren (OnChange-Ereignis)

* Type für Listbox-Inhalt
TYPES: ty_it_listbox TYPE STANDARD TABLE OF vrm_value WITH DEFAULT KEY.

* Merker für Kommando für ListBox-Change
DATA: lv_ucomm TYPE sy-ucomm.
      
* Listbox auf dem Selektionsbild mit Kommando LB_CHG
* TYPE / Länge des Typs hat Einfluss auf key
PARAMETERS: p_lst TYPE char1 AS LISTBOX VISIBLE LENGTH 20 USER-COMMAND lb_chg.

INITIALIZATION.
* Listbox vorbelegen
  DATA(it_lb) = VALUE ty_it_listbox( ( key = 'A' text = 'Punkt 1' )
                                     ( key = 'B' text = 'Punkt 2' )
                                     ( key = 'C' text = 'Punkt 3' ) ).

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id              = 'P_LST'
      values          = it_lb
    EXCEPTIONS
      id_illegal_name = 1
      OTHERS          = 2.

* Vorselektion
  IF lines( it_lb ) > 0.
    p_lst = p_lst[ 1 ]-key.
  ENDIF.

AT SELECTION-SCREEN.
* hier das User-Kommando merken
  lv_ucomm = sy-ucomm.

  IF sy-ucomm EQ 'LB_CHG'.
    ...
  ENDIF.
  
AT SELECTION-SCREEN OUTPUT.
* bei Ausgabe auf das gemerkte User-Kommando reagieren
  CASE lv_ucomm.
    WHEN 'LB_CHG'.
      LOOP AT SCREEN INTO DATA(wa).
        ...
        MODIFY SCREEN FROM wa.
      ENDLOOP.
  ENDCASE.

[ABAP] ComboBoxen / Listboxen auf dem Selektionsbild anzeigen

DATA: it_cbval TYPE STANDARD TABLE OF vrm_value WITH DEFAULT KEY.

* TYPE / Länge des Typs hat Einfluss auf key
PARAMETERS: p_l_lang TYPE char3 AS LISTBOX VISIBLE LENGTH 20 USER-COMMAND lb_cmd.

INITIALIZATION.

  it_cbval = VALUE #( ( key = 'A_1' text = 'Punkt eins' )
                      ( key = 'A_2' text = 'Punkt zwei' ) ).

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id              = 'P_L_LANG'
      values          = it_cbval
    EXCEPTIONS
      id_illegal_name = 1
      OTHERS          = 2.

  IF sy-subrc = 0.
    IF lines( it_cbval ) > 0.
* Vorselektion 'Punkt eins'
      p_l_lang = 'A_1'.
    ENDIF.
  ENDIF.

START-OF-SELECTION.
* akt. Selektion der ComboBox heraussuchen
  TRY.
      DATA(s) = it_cbval[ key = p_l_lang ].

      WRITE: / s-text.
    CATCH cx_root.
  ENDTRY.