11.8 Codebeispiel zum Selektionsbild (einfache Form) 

Zur Definition eines Selektionsbildes zeigen wir Ihnen in diesem Kapitel zwei Beispiele: ein einfaches Codebeispiel mit den wesentlichen Definitionen und ein erweitertes Codebeispiel mit weiteren Gestaltungsmöglichkeiten und Ereignissen.
1 *&---------------------------------------------*
2 *& Report Z_TEILNEHMERLISTE11 *
3 *& *
4 *&---------------------------------------------*
5 *& *
6 *& *
7 *&---------------------------------------------*
8
9 REPORT z_teilnehmerliste11.
10
11 * Workarea deklarieren
12 DATA: wa_zteilnehmer02 TYPE zteilnehmer02.
13
14 * Felder deklarieren
15 DATA: jahr004 TYPE i,
16 jahr100 TYPE i,
17 jahr400 TYPE i.
18
19 * Selektionsbild gestalten
20 PARAMETERS: sek TYPE i DEFAULT 10 OBLIGATORY,
21 geschlec TYPE
zteilnehmer02-tgeschlecht
OBLIGATORY VALUE CHECK,
22 kursti TYPE
zteilnehmer02-zzkurstitel
DEFAULT 'SAP-Grundlagen'
LOWER CASE,
23 vollstli AS CHECKBOX,
24
25 initialw RADIOBUTTON GROUP rad1,
26 non_sap RADIOBUTTON GROUP rad1,
27 schaltja RADIOBUTTON GROUP rad1.
28
29 SELECT-OPTIONS gebdat FOR
wa_zteilnehmer02-tgeburtsdatum NO-EXTENSION.
30
31 * Rückwärtslaufender Sekundenzähler
32 WHILE sek > 0.
33 WRITE: sek.
34 sek = sek - 1.
35 ENDWHILE.
36 WRITE: / sek.
37 SKIP.
38
39 * Ankreuzfeld prüfen
40 IF NOT vollstli IS INITIAL.
41 * Vollständigen Tabelleninhalt ausgeben
42 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
43 ORDER BY PRIMARY KEY.
44 WRITE: / wa_zteilnehmer02-tnummer,
45 wa_zteilnehmer02-tname,
46 wa_zteilnehmer02-tgeburtsdatum,
47 wa_zteilnehmer02-tgeschlecht,
48 wa_zteilnehmer02-tkurspreis,
49 wa_zteilnehmer02-twaehrung,
50 wa_zteilnehmer02-zzkfztyp,
51 wa_zteilnehmer02-zzkurstitel.
52 ENDSELECT.
53 SKIP.
54 ENDIF.
55
56 * Radiobutton initialw prüfen
57 IF NOT initialw IS INITIAL.
58 * Schleife über alle Sätze der Tabelle,
Feld auf Intitialwert hin prüfen
59 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
60 ORDER BY PRIMARY KEY.
61 IF wa_zteilnehmer02-tgeburtsdatum IS INITIAL.
62 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-tname,
63 'fehlt Geburtsdatum, bitte
nachtragen'.
64 ENDIF.
65 ENDSELECT.
66 SKIP.
67 ENDIF.
68
69 * Schleife über alle Sätze der Tabelle,
Selektionstabelle prüfen
70 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
71 ORDER BY PRIMARY KEY.
72 IF wa_zteilnehmer02-tgeburtsdatum IN gebdat.
73 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-tname,
74 wa_zteilnehmer02-tgeburtsdatum.
75 ENDIF.
76 ENDSELECT.
77 SKIP.
78
79 * Schleife über alle Sätze der Tabelle,
logisches Und prüfen
80 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
81 ORDER BY PRIMARY KEY.
82 IF wa_zteilnehmer02-tgeschlecht = geschlec AND
83 wa_zteilnehmer02-zzkurstitel = kursti.
84 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-tname,
85 wa_zteilnehmer02-tgeschlecht,
wa_zteilnehmer02-zzkurstitel.
86 ENDIF.
87 ENDSELECT.
88 SKIP.
89
90 * Radiobutton non_sap prüfen
91 IF NOT non_sap IS INITIAL.
92 * Schleife über alle Sätze der Tabelle,
logisches NOT prüfen
93 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
94 ORDER BY PRIMARY KEY.
95 IF NOT wa_zteilnehmer02-zzkurstitel(3) = 'SAP'.
96 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-zzkurstitel.
97 ENDIF.
98 ENDSELECT.
99 SKIP.
100 ENDIF.
101
102 * Radiobutton schaltja prüfen
103 IF NOT schaltja IS INITIAL.
104 * Schleife über alle Sätze der Tabelle,
Schaltjahr prüfen
105 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
106 ORDER BY PRIMARY KEY.
107 jahr004 = wa_zteilnehmer02-tgeburtsdatum(4) MOD 4.
108 jahr100 = wa_zteilnehmer02-
tgeburtsdatum(4) MOD 100.
109 jahr400 = wa_zteilnehmer02-
tgeburtsdatum(4) MOD 400.
110 IF NOT wa_zteilnehmer02-tgeburtsdatum IS
INITIAL.
111 IF jahr400 = 0 OR
jahr004 = 0 AND NOT jahr100 = 0.
112 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-zzkurstitel,
113 wa_zteilnehmer02-tgeburtsdatum(4).
114 ENDIF.
115 ENDIF.
116 ENDSELECT.
117 SKIP.
118 ENDIF.
Listing 11.1 Report Z_TEILNEHMERLISTE11
Anmerkungen zum Quellcode
Nach der Deklaration des Reports, der Workarea und der Felder, die auf dem Selektionsbildschirm angezeigt werden sollen nehmen Sie weitere Einstellungen zu den Eingabefeldern vor.
Zeile 21
Durch die Zusätze OBLIGATORY und VALUE CHECK wird das Eingabefeld zum Pflichtfeld, und das System prüft die Eingaben nach den Vorgaben des ABAP Dictionarys. Sind wie im Beispiel Festwerte in der Domäne hinterlegt, akzeptiert das System nur diese hinterlegten Werte als gültige Eingaben. Der Anwender kann das Selektionsbild erst nach der Eingabe eines gültigen Wertes verlassen, es sei denn, er bricht die Transaktion vollständig ab. Hierdurch ist gewährleistet, dass nur als gültig akzeptierte Eingaben für dieses Feld in die Verarbeitung gelangen.
Zeile 25 bis 27
Drei Felder werden als Radiobuttons deklariert und zur Gruppe RAD1 zusammengefasst. Der Gruppenname ist willkürlich gewählt.
Zeile 29
Die SELECT-OPTIONS-Anweisung für die Selektionstabelle GEBDAT verhindert durch den Zusatz NO-EXTENSION die Mehrfachselektion. Fehlt der Zusatz, ist die Mehrfachselektion automatisch aktiviert.
Zeile 32
Der Parameter SEK hat im Selektionsbild einen Startwert erhalten. Ist die Eingabe größer als 0, reagiert das Programm gemäß unseren Erwartungen.
Zeile 40
Das Parameterfeld VOLLSTLI wurde im Selektionsbild als Ankreuzfeld deklariert. Ist es durch Anklicken mit einem Haken markiert worden, ist der Feldinhalt nicht mehr initial. Der nachfolgende Anweisungsblock wird ausgeführt.
Zeile 57
Der Radiobutton INITIALW wird auf einen Eintrag hin geprüft. Wurde er im Selektionsbild markiert, führt das System den entsprechenden Anweisungsblock aus.
Zeile 72
Umgangssprachlich ausgedrückt, bedeutet diese Zeile, dass die Bedingung erfüllt ist, wenn das gelesene Geburtsdatum des aktuellen Datensatzes in der Selektionstabelle GEBDAT vorkommt. Beispielsweise ist die Bedingung erfüllt, wenn das Geburtsdatum, genauso wie gelesen, als Einzelwert in der Selektionstabelle enthalten ist, oder wenn in der Selektionstabelle ein Intervall angegeben ist, das das gelesene Geburtsdatum enthält.
Zeile 82 und 83
Die beiden Parameterfelder GESCHLEC und KURSTI werden in einer logischen Und-Verknüpfung verwendet. Die Bedingung ist erfüllt, wenn das Feld für das Geschlecht des gelesenen Satzes mit dem Inhalt des Parameters GESCHLEC und gleichzeitig das Feld für den Kurstitel mit dem Inhalt von KURSTI identisch ist.
Zeile 91 und 103
Der zweite und dritte Radiobutton werden geprüft. Inhaltlich ist der Vorgang analog zu Zeile 57; aus Demonstrationsgründen liegt die Prüfung der Radiobuttons verteilt im Quellcode. Es gibt keinen technischen Zwang, eine Gruppe von Radiobuttons in einer Struktur zu prüfen. Für die Lesbarkeit eines Quellcodes, die Transparenz und die Änderbarkeit wäre es allerdings in der Praxis besser, wenn Sie diese demonstrierte Arbeitsweise nicht übernehmen. Sofern es möglich ist, prüfen Sie eine Gruppe von Radiobuttons als zusammenhängenden Anweisungsblock. Dritte, die sich mit Ihrem Quellcode beschäftigen, werden es Ihnen danken.
Ausgabe des Quellcodes
In Abbildung 11.32 sind noch keine Selektionstexte gepflegt. Allerdings ist durch den Zusatz NO-EXTENSION die Mehrfachselektion unterbunden. Außerdem hat das Eingabefeld für das Geschlecht bereits einen Eintrag erhalten. In Abbildung 11.33 sehen Sie das Selektionsbild analog zu Abbildung 11.32, aber mit gepflegten Selektionstexten.
Abbildung 11.32 Selektionsbild mit technischen Namen ohne Mehrfachselektion
Abbildung 11.33 Selektionsbild mit Selektionstexten