[ABAP] Dynpro: Arbeit mit einer Listbox, welche im Screenpainter erzeugt wurde

Dynpro 0100 im Screenpainter definieren

Textfeld vom Typ Listbox einfügen

Variablendefinition im Top-Include des Reports/Modulpools

* globaler Bezeichner für Listbox definieren, dieser muss namensgleich dem
* Bezeichner des Screenpainter-Elements (Listbox) sein
* Über diesen Bezeichner erfolgt der Zugriff aus dem Code heraus
* --> beim Programmstart wird dieser automatisch dem Screenpainter-Elements
* (Listbox) zugeordnet
DATA: lb_listbox TYPE char255.
* globale Liste für Listboxwerte
DATA: it_lb_values TYPE vrm_values.

Dynpro 0100 PBO -> Initialisierung der Listbox

PROCESS BEFORE OUTPUT.

  MODULE status_0100.

  ...

MODULE status_0100 OUTPUT.

* Werteliste für Listbox initialisieren
  it_lb_values = VALUE vrm_values( ( key = 'A' text = 'Wert1' )
                                   ( key = 'B' text = 'Wert2' )
                                   ( key = 'C' text = 'Wert3' ) ).

* Werteliste der Listbox setzen
  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id              = 'LB_LISTBOX'
      values          = it_lb_values
    EXCEPTIONS
      id_illegal_name = 1
      OTHERS          = 2.

* Vorauswahl für die Listbox treffen, entsprechenden Key setzen
  lb_listbox = 'A'.

ENDMODULE.

Dynpro 0100 PAI -> Auslesen der Listbox-Auswahl

PROCESS AFTER INPUT.

  MODULE user_command_0100.

  ...

MODULE user_command_0100 INPUT.

  DATA(lv_lb_text) = VALUE char255( ).

* Text aus der Listbox anhand des Keys ermitteln
  TRY.
      lv_lb_text = it_lb_values[ key = lb_listbox ]-text.
    CATCH cx_root.
  ENDTRY.
  
  ...

ENDMODULE.