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