[ABAP] Verwendung von Tabstips auf dem Selektionsbildschirm

Variante 1 (Tabstrip (TabControl) verwenden)

* Tabstrip erzeugen, 10 Zeilen hoch
SELECTION-SCREEN BEGIN OF TABBED BLOCK tbl FOR 10 LINES.
SELECTION-SCREEN TAB (15) tbl_tab1 USER-COMMAND tab1 DEFAULT SCREEN 9001.
SELECTION-SCREEN TAB (15) tbl_tab2 USER-COMMAND tab2 DEFAULT SCREEN 9002.
SELECTION-SCREEN END OF BLOCK tbl.

* Subscreen 9001 für Tab1
SELECTION-SCREEN BEGIN OF SCREEN 9001 AS SUBSCREEN.
PARAMETERS: pa_test.
SELECTION-SCREEN END OF SCREEN 9001.

* Subscreen 9002 für Tab2
SELECTION-SCREEN BEGIN OF SCREEN 9002 AS SUBSCREEN.
PARAMETERS: pa_test2.
SELECTION-SCREEN END OF SCREEN 9002.

INITIALIZATION.
* Tabnamen vergeben
  tbl_tab1 = 'Tab1'.
  tbl_tab2 = 'Tab2'.

* aktiven Tab setzen, Großbuchstaben beachten
  tbl-activetab = 'TAB1'.
  tbl-dynnr = 9001.
  tbl-prog  = sy-repid.

AT SELECTION-SCREEN.
* Ereignis bei Klick auf Tabstrip abfangen
  CASE sy-ucomm.
    WHEN 'TAB1'.
      MESSAGE 'TAB1' TYPE 'S'.
    WHEN 'TAB2'.
      MESSAGE 'TAB2' TYPE 'S'.
  ENDCASE.

START-OF-SELECTION.
  WRITE: / 'Aktiver Tab:', tbl-activetab.
  WRITE: / 'Aktiver Tab Subscreen:', tbl-dynnr.
  WRITE: / 'Programmname:', tbl-prog.

Variante 2 (zuletzt gewählen Tabstrip zwischenspeichern)

* nach Listenverarbeitung wieder zurück zum Selektionsbildschirm
* und dort den letzten gewählten Tab anzeigen
CONSTANTS: gv_tbl_memory TYPE c LENGTH 10 VALUE 'TBL_ACTIVE'.

* Tabstrip erzeugen, 20 Zeilen hoch
SELECTION-SCREEN BEGIN OF TABBED BLOCK tbl FOR 10 LINES.
SELECTION-SCREEN TAB (15) tbl_tab1 USER-COMMAND tab1 DEFAULT SCREEN 9001.
SELECTION-SCREEN TAB (15) tbl_tab2 USER-COMMAND tab2 DEFAULT SCREEN 9002.
SELECTION-SCREEN END OF BLOCK tbl.

* Subscreen 9001 für Tab1
SELECTION-SCREEN BEGIN OF SCREEN 9001 AS SUBSCREEN.
PARAMETERS: pa_test.
SELECTION-SCREEN END OF SCREEN 9001.

* Subscreen 9002 für Tab2
SELECTION-SCREEN BEGIN OF SCREEN 9002 AS SUBSCREEN.
PARAMETERS: pa_test2.
SELECTION-SCREEN END OF SCREEN 9002.

INITIALIZATION.
* Tabnamen vergeben
  tbl_tab1 = 'Tab1'.
  tbl_tab2 = 'Tab2'.

* Zustand des Tabstrips aus dem Zwischenspeicher holen
  IMPORT tbl FROM MEMORY ID gv_tbl_memory.

AT SELECTION-SCREEN.
  CASE sy-ucomm.
    WHEN 'TAB1'.
      MESSAGE 'TAB1' TYPE 'I'.
    WHEN 'TAB2'.
      MESSAGE 'TAB2' TYPE 'I'.
  ENDCASE.

START-OF-SELECTION.
* Zustand des Tabstrips in den Zwischenspeicher ablegen
  EXPORT tbl TO MEMORY ID gv_tbl_memory.

  WRITE: / 'Aktiver Tab:', tbl-activetab.
  WRITE: / 'Aktiver Tab Subscreen:', tbl-dynnr.
  WRITE: / 'Programmname:', tbl-prog.