Button in der Symbolleiste einfügen – ABAP

Du möchtest in Deinem ABAP-Programm einen Button in der Symbolleiste im Auswahlbildschirm (Selection-Screen) einfach einfügen? Du möchtest bestehende ABAP-Programme einfach erweitern, sodass weitere Buttons in der Symbolleiste genutzt werden können? Du möchtest Buttons mit Icons in der Symbolleiste einfügen?

In diesem Artikel gebe ich Dir Antworten auf alle oben genannten Fragen. Ich erkläre Dir Schritt-für-Schritt wie Du in SAP ERP bzw. SAP S/4HANA mit der Programmiersprache ABAP einfach und schnell Buttons in der Symbolleiste einfügen kannst.

Button in der Symbolleiste einfügen

Über einen sogenannte “FUNCTION KEY” kannst Du im Selektionsbildschirm neue Funktionstasten und damit Buttons hinzufügen. Die Struktur SSCRFIELDS enthält fünf Attribute, die Du nutzen kannst. Im ABAP Dictionary (Transaktion SE11) kannst Du Dir diese Struktur im Detail ansehen. Dabei handelt es sich um die Attribute von FUNCTXT_01 bis FUNCTXT_05.

Durch SSCRFIELDS kannst Du einen Button in der Symbolleiste hinzufügen

Diese Felder werden intern verwenden, wenn Du die Struktur und die Anweisung “FUNCTION KEY” im ABAP-Programm verwendest.

Zuerst müssen wir die Struktur SSCRFIELDS mit einer TABLES-Anweisung im ABAP-Programm als Schnittstellen-Arbeitsbereich definieren.

TABLES sscrfields.

Als Nächstes definieren wir die Buttons in der Symbolleiste mithilfe der Anweisung “FUNCTION KEY”. Dabei gibt man eine Zahl zwischen 1 und 5 an. Wichtig hierbei ist, dass Du einen eigenen Screen definierst.

SELECTION-SCREEN BEGIN OF SCREEN 100.
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN END OF SCREEN 100.

Im INITIALIZATION oder START-OF-SELECTION Event kann man den Text des Buttons in der Symbolleiste definieren. Hier kann man nur einen Text angeben oder zusätzlich auch ein Icon. Im Artikel “ABAP – Übersicht über ICON” findest Du eine Übersicht über alle Icons in ABAP.

INITIALIZATION.
  sscrfields-functxt_01 = '@S_OKAY@ ERP UP'.

Im Event “AT SELECTION-SCREEN” kann man daraufhin auf den Funktionscode reagieren. Die hinzugefügten Buttons in der Struktur SSCRFIELDS haben dabei einen festen Funktionscode. Außerdem kannst Du diese Buttons auch mit Tastenkombinationen aufrufen.

Function KeyFunktionstasteShortcut
FUNCTXT_01FC01Strg + F1
FUNCTXT_02FC02Strg + F2
FUNCTXT_03FC03Strg + F3
FUNCTXT_04FC04Strg + F4
FUNCTXT_05FC05Strg + F5

Mit folgendem ABAP-Code kannst Du z.B. auf den Funktionscode des ersten Function Key FUNCTXT_01 reagieren:

AT SELECTION-SCREEN.
  IF  sscrfields-ucomm = 'FC01'.
    " Logik, wenn auf den Button gedrückt wird
  ENDIF.

Insgesamt kann das Beispielprogramm also folgendermaßen aussehen:

REPORT zdemo_sel_screen_function_key.

TABLES sscrfields.

SELECTION-SCREEN BEGIN OF SCREEN 100.
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN END OF SCREEN 100.

INITIALIZATION.
  sscrfields-functxt_01 = '@S_OKAY@ ERP UP'.
  CALL SELECTION-SCREEN 100.

AT SELECTION-SCREEN.
  IF  sscrfields-ucomm = 'FC01'.
    " Logik, wenn auf den Button gedrückt wird
  ENDIF.

Führt man dieses Beispielprogramm aus, wird der Button in der Symbolleiste angezeigt.

Button in der Symbolleiste - ERP UP

Hinweise SELECTION-SCREEN FUNCTION KEY

Button mit Tooltip

Im oberen Beispiel wurde lediglich das Attribut FUNCTXT_01 mit einem Icon und einem Text gefüllt. Wenn man mit der Maus über den Button fährt, wird im Tooltip der hinzugefügte String angezeigt. Um das zu verbessern, kann man die Struktur SMP_DYNTXT verwenden. Dabei stehen folgende Attribute zur Verfügung.

AttributBeschreibung
TEXTFunktions- oder Menütext
ICON_IDIkone in Textfeldern (Ersatzdarstellung, Alias)
ICON_TEXTIkonentext
QUICKINFOInfotext
PATHFastpath-Kennzeichen

Nachdem man die entsprechenden Attribute gefüllt hat, kann man der entsprechenden Komponente FUNCTXT_0* des Arbeitsbereiches SSCRFIELDS SMP_DYNTXT zuweisen. Ein Beispiel kann folgendermaßen aussehen:

INITIALIZATION.
  DATA: ls_dyntxt TYPE smp_dyntxt.

  ls_dyntxt-icon_id = icon_checked.
  ls_dyntxt-icon_text = 'ERP UP'.
  ls_dyntxt-quickinfo = 'ERP UP Button'.

  sscrfields-functxt_01 = ls_dyntxt.

Verwendung von sscrfields-ucomm

Während der Selektionsbildverarbeitung besitzt die Systemvariable sy-ucomm nicht immer den richtigen Wert. Deshalb solltest Du bei der Verarbeitung des Funktionscodes stattdessen sscrfields-ucomm auswerten.

Wenn auf andere Buttons in der Symbolleiste gedrückt werden, werden die Funktionscodes natürlich entsprechend der Systemvariable sy-ucomm verarbeitet.

Dynamische Veränderung des Selektionsbildes

Die Verarbeitung des Funktionscodes wird im Event AT SELECTION-SCREEN durchgeführt. Es ist generell wichtig zu verstehen, dass wenn man den Funktionscode des Buttons und den Ereignisblock AT SELECTION-SCREEN abgeschlossen hat, das Programm zur Anzeige des Selektionsbildes zurückkehrt. Danach kann man das Programm ausführen oder abbrechen. Zur Programmsteuerung sind deshalb die Buttons in der Symbolleiste nicht geeignet.

ABAP-Programm DEMO_SEL_SCREEN_FUNCTION_KEY

Das ABAP-Programm DEMO_SEL_SCREEN_FUNCTION_KEY stellt die erläuterten Konzepte ebenfalls in einem Beispielprogramm dar. Du kannst das Programm im ABAP Editor (Transaktion SE38) im Detail analysieren und ausführen.

Über den Autor

Andreas Geiger

Schön, dass Du Dich für SAP ERP bzw. SAP S/4HANA interessierst.

Mein Name ist Andreas Geiger und ich bin der Gründer von ERP-UP.de. Mein Ziel ist es, so viel nützliches Wissen wie möglich über das SAP ERP-System zu vermitteln. Ich möchte Dir damit einen Mehrwert bieten. Es freut mich, wenn ich Dir damit helfen kann.

Mehr zu ERP UP

ERP UP unterstützen

Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.

Über den Autor

Andreas Geiger

Schön, dass Du Dich für SAP ERP bzw. SAP S/4HANA interessierst.

Mein Name ist Andreas Geiger und ich bin der Gründer von ERP-UP.de. Mein Ziel ist es, so viel nützliches Wissen wie möglich über das SAP ERP-System zu vermitteln. Ich möchte Dir damit einen Mehrwert bieten. Es freut mich, wenn ich Dir damit helfen kann.

Mehr zu ERP UP

ERP UP unterstützen

Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.

Schreibe einen Kommentar