[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.

[ABAP] Checkboxen, Selektionsbildschirm Oberflächenelemente An- und Ausschalten

PARAMETERS show_all AS CHECKBOX DEFAULT 'X' USER-COMMAND show. " Checkbox namens 'show_all' welche das USRCMD 'SHOW' sendet

SELECTION-SCREEN BEGIN OF BLOCK select2 WITH FRAME.
PARAMETERS: p1 TYPE c LENGTH 10 MODIF ID grp1, " Eingabefelder zu Gruppe 'grp1' zusammenfassen
            p2 TYPE c LENGTH 10 MODIF ID grp1,
            p3 TYPE c LENGTH 10 MODIF ID grp1.
SELECTION-SCREEN END OF BLOCK select2.

AT SELECTION-SCREEN.
  IF sy-ucomm = 'SHOW'                  " Kommandoflag 'flag' der Checkbox abfangen
    MESSAGE 'Switch.' TYPE 'I'.
  ENDIF.

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN INTO DATA(screen_wa).  " SCREEN-Elemente durchgehen
    IF screen_wa-group1 = 'GRP1'.       " wenn Element in Gruppe 'grp1'
      IF show_all = 'X'.                " wenn Groupbox-Haken gesetzt
        screen_wa-active = '1'.         " Gruppenelement aktivieren (visible == true)
                                        " nicht unbedingt nötig, da screen_wa-active hier immer automatisch auf '1' gesetzt wird
      ELSE.
        screen_wa-active = '0'.         " Gruppenelement aktivieren (visible == false)
      ENDIF.

      MODIFY SCREEN FROM screen_wa.     " Änderung übernehmen
    ENDIF.
  ENDLOOP.

[ABAP] Button mit Icon erstellen

Variante 1

* Button mit Icon erstellen - Variante 3 
SELECTION-SCREEN PUSHBUTTON (10) btn1 USER-COMMAND btn_back.

INITIALIZATION. 
  btn1 = |{ icon_column_left }Zurück|.

Variante 2

TABLES: sscrfields.
SELECTION-SCREEN PUSHBUTTON 2(8) btn1 USER-COMMAND cmd1.

INITIALIZATION.
  CALL FUNCTION 'ICON_CREATE'
    EXPORTING
	  name = icon_information
	  text = 'Text'
	  info = 'Quickinfo'
    IMPORTING
	  result = btn1
	EXCEPTIONS
	  others = 1.

  IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

Variante 3

TABLES: sscrfields.
SELECTION-SCREEN PUSHBUTTON 2(8) btn1 USER-COMMAND cmd1.

INITIALIZATION.
  WRITE icon_execute_object TO btn1.  " Icon über WRITE in Button schreiben
  btn1+4 = 'Btn-Text'.                " Text eintragen

[ABAP] Buttons auf dem Selektionsbildschirm

* Testparameter: Pflichtfeld mit Groß-Kleinschreibung
PARAMETERS: p_text TYPE string LOWER CASE OBLIGATORY DEFAULT 'Test'. " Testtext für Ausgabe

* 1. Button sendet Kommando CMD1
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON 2(20) btn1 USER-COMMAND cmd1.    " Button Pos 2 Länge 20, sendet Kommando 'CMD1'
SELECTION-SCREEN END OF LINE.

* 2. Button sendet Kommando CMD2
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON 2(20) btn2 USER-COMMAND cmd2.    " Button Pos 2 Länge 20, sendet Kommando 'CMD2'
SELECTION-SCREEN END OF LINE.

* 3. Button sendet Kommando ONLI
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON 2(20) btn3 USER-COMMAND onli.    " Button Pos 2 Länge 20, sendet Kommando 'ONLI'
SELECTION-SCREEN END OF LINE.

INITIALIZATION.
* Button-Texte mit Icons festlegen
  btn1 = |{ icon_abap } CMD1 - Weiter|.
  btn2 = |{ icon_activity } CMD2 - Ende|.

* Buttonbeschriftung mit Icon und Quickinfo für btn3 generieren lassen
  CALL FUNCTION 'ICON_CREATE'
    EXPORTING
      name                  = icon_information
      text                  = 'ONLI - Weiter'
      info                  = 'Quickinfo'
    IMPORTING
      result                = btn3
    EXCEPTIONS
      icon_not_found        = 1
      outputfield_too_short = 2
      OTHERS                = 3.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

AT SELECTION-SCREEN.

* Benutzer-Kommandos des Selektionsbildes abfangen und prüfen
  CASE sy-ucomm.
    WHEN 'CMD1'.
* OK-Code 'ONLI' per Funktionsbaustein setzen
      CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE' " FktBaustein zum setzen von Funktionscodes aufrufen
        EXPORTING
          functioncode           = 'ONLI'     " dann bei START-OF-SELECTION weiter
        EXCEPTIONS
          function_not_supported = 1.
    WHEN 'CMD2'.
* bei Kommando CMD2 das Programm beenden
      LEAVE PROGRAM.
    WHEN 'ONLI'.
* wenn Kommando ONLI (Ausführen (F8)) kommt, dann ohne Aktion gleich zu START-OF-SELECTION weiter
  ENDCASE.

START-OF-SELECTION.
  WRITE: p_text.