Mehrfachselektion

Die Mehrfachselektion, die in einem Report durch die Anweisung “SELECT-OPTIONS” einfach programmiert werden kann, bedarf auf einem Dynpro etwas mehr Aufwand.

Das folgende Beispielprogramm zeigt, wie’s gemacht wird.

Anmerkungen

Legen Sie das Dynpro “200” durch einen Doppelklick auf “200” an (CALL SCREEN 200).

Entfernen Sie in der Ablauflogik jeweils das Sternchen vor “MODULE“.

In der Elementliste müssen Sie in dem leeren Feld mit dem Typ “OK” OKCODE eintragen.

Um eine Mehrfachselektion zu realisieren, müssen Sie dem Anwender eine Drucktaste anbieten, bei der er die Auswahl für ein Feld verändern kann.

Dynpro

Legen Sie ein Eingabefeld mit dem Namen H_TEST auf dem Dynpro an.

Dahinter legen Sie eine Drucktaste an, die Sie bitte PB_SEL nennen. Das Icon “ICON_ENTER_MORE wird im Programm gesetzt. Tragen Sie in den Attributen zum Feld

  • in FktCode den Wert “SEL” ein
  • in Attribute – Programm bitte die Option Ausgabefeld aktivieren

Status 200

Den PF-Status “200” legen Sie bitte mit einem Doppelklick auf “200” an. Vergeben Sie für den grünen Pfeil nach links, den gelben Pfeil nach oben und das rote Kreuz einfach den OK-Code “BACK“.

Beispiel

REPORT zz_sel_more.

*– Datendeklaration
TYPE-POOLS icon.

DATA:
  h_test(16),            “Auswahlfeld auf Dynpro
  pb_sel LIKE icon,      “Beschriftung Drucktaste
  okcode TYPE syucomm.   “Funktionscode

*– Ranges-Tabelle um die Selektionen zu speichern
RANGES r_test FOR h_test.


START-OF-SELECTION.

*– Aufruf des Dynpros
  CALL SCREEN 200.

*– Ausgabe der eingetragenen Werte
  LOOP AT r_test.
    WRITE: / r_test-sign,
             r_test-option,
             r_test-low,
             r_test-high.
  ENDLOOP.

*&———————————————————————*
*&      Module  STATUS_0200  OUTPUT
*&———————————————————————*

MODULE status_0200 OUTPUT.

*– Oberflächenstatus: Einfacher Liststatus
  SET PF-STATUS ‘200’.
*– Titel
  SET TITLEBAR ‘200’.

*– Drucktaste beschriften
  IF r_test[] IS INITIAL.
*– Wenn die Ranges-Tabelle noch leer ist, dann leeres Icon
    pb_sel-id = icon_enter_more.
  ELSE.
*– Wenn Einträge vorhanden sind, dann das Icon “Werte vorhanden”
    pb_sel-id = icon_display_more.
  ENDIF.

ENDMODULE.                 ” STATUS_0200  OUTPUT

*&———————————————————————*
*&      Module  USER_COMMAND_0200  INPUT
*&———————————————————————*
MODULE user_command_0200 INPUT.

  CASE okcode.
    WHEN ‘SEL’.
*– Aufruf des Funktionsbausteins, um die Selektions-Optionen einzugeben

      CALL FUNCTION ‘COMPLEX_SELECTIONS_DIALOG’
           EXPORTING
                title             = ‘Auswahl’
                text              = ‘Bitte wählen Sie’
           TABLES
                range             = r_test
           EXCEPTIONS
                no_range_tab      = 1
                cancelled         = 2
                internal_error    = 3
                invalid_fieldname = 4
                OTHERS            = 5.

*– Wenn Einträge gemacht wurden, den ersten Eintrag anzeigen
      READ TABLE r_test INDEX 1.
      h_test = r_test-low.

    WHEN OTHERS.
      SET SCREEN 0. LEAVE SCREEN.
  ENDCASE.

ENDMODULE.                 ” USER_COMMAND_0200  INPUT

 

Und so sieht’s aus


Die Auswahl kann über die Drucktaste erfolgen

 


Der Auswahldialog


Werte wurden ausgewählt


Die Werte werden ausgegegeben

 

Enno Wulff