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
|
|
|
|
- 7. December: Excel Racing Simulation – Root Vole Race - 7. Dezember 2024
- 5. December: ABAPConf - 5. Dezember 2024
- 4. December: Only a lazy developer is a good developer - 4. Dezember 2024