Rheinwerk < openbook > SAP-Wissen aus erster Hand
SAP-Wissen aus erster Hand.
 
Inhaltsverzeichnis
Vorwort zur vierten Auflage
1 ABAP und die ersten Schritte im SAP-System
2 ABAP Dictionary
3 Programmieren im ABAP Editor
4 Felder und Berechnungen
5 Modifikation von Zeichenketten
6 Debugging von Programmen
7 Modifikation von transparenten Datenbanktabellen
8 Rechnen mit Datum und Zeit, Mengen und Währungen
9 Mit Daten in einer Datenbanktabelle arbeiten
10 Programmablaufsteuerung und logische Ausdrücke
11 Selektionsbildschirme
12 Interne Tabellen
13 Modularisierung von Programmen
14 Weiterführende Themen
A Icons auf einen Blick
B Abkürzungsverzeichnis
C Die Autoren
Stichwortverzeichnis

Download:
- Beispielprogramme, ca. 23 KB

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Einstieg in ABAP von Karl-Heinz Kühnhauser, Thorsten Franz
Buch: Einstieg in ABAP

Einstieg in ABAP
Pfeil 11 Selektionsbildschirme
Pfeil 11.1 Ereignisse
Pfeil 11.1.1 Reihenfolge von Ereignissen
Pfeil 11.1.2 Beispiele für Ereignisse
Pfeil 11.2 Einfache Selektionen
Pfeil 11.2.1 PARAMETERS-Anweisung
Pfeil 11.2.2 Zusätze zur PARAMETERS-Anweisung
Pfeil 11.3 Komplexe Selektionen
Pfeil 11.3.1 SELECT-OPTIONS-Anweisung
Pfeil 11.3.2 Mehrfachselektionen
Pfeil 11.3.3 Zusätze zur SELECT-OPTIONS-Anweisung
Pfeil 11.4 Selektionstexte verwenden
Pfeil 11.4.1 Textelemente im Überblick
Pfeil 11.4.2 Selektionstexte anlegen
Pfeil 11.5 Selektionsbild speichern
Pfeil 11.5.1 Selektionsvariante anlegen
Pfeil 11.5.2 Report mit Variante starten
Pfeil 11.6 Ergänzende Textobjekte
Pfeil 11.6.1 Textsymbole anlegen
Pfeil 11.6.2 Nachrichten anlegen
Pfeil 11.7 Selektionsbilder frei gestalten
Pfeil 11.7.1 Einzelne Zeile gestalten
Pfeil 11.7.2 Zeilenblock gestalten
Pfeil 11.8 Codebeispiel zum Selektionsbild (einfache Form)
Pfeil 11.9 Codebeispiel zum Selektionsbild (erweiterte Form)
 
Zum Seitenanfang

11.2    Einfache Selektionen Zur vorigen ÜberschriftZur nächsten Überschrift

Die Entscheidung, mit oder ohne Selektionsbild zu arbeiten, fällt im Deklarationsteil des Reports. Anstatt Felder dort mit der DATA-Anweisung zu deklarieren, können hier Anweisungen wie PARAMETERS oder SELECT-OPTIONS verwendet werden.

 
Zum Seitenanfang

11.2.1    PARAMETERS-Anweisung Zur vorigen ÜberschriftZur nächsten Überschrift

Um einem Feld einen Wert über das Selektionsbild zuzuweisen, genügt die Anweisung PARAMETERS. Hinsichtlich der Deklaration von Feldname, Datentyp und Feldlänge entspricht die PARAMETERS-Anweisung der DATA-Anweisung, nur dass die Länge des Variablennamens auf acht Stellen beschränkt ist.

Bis auf den Datentyp f, eine Gleitpunktzahl (Float) oder Exponentialzahl, können alle elementaren Datentypen mit der PARAMETERS-Anweisung deklariert werden. Auch der Verweis auf die Felddeklarationen einer Tabelle im ABAP Dictionary ist möglich. Jede mit PARAMETERS deklarierte Variable wird mit ihrem Namen bzw. mit einem Selektionstext und einem Eingabefeld auf dem Selektionsbild ausgegeben; die Felder erscheinen dabei in der Reihenfolge, in der sie deklariert werden. Ein möglicher Stolperstein ist wieder die Groß- und Kleinschreibung: Ohne einen speziellen Zusatz werden alle Eingaben in Großbuchstaben umgewandelt.

Nehmen wir das Beispiel aus Kapitel 10, »Programmablaufsteuerung und logische Ausdrücke«, den rückwärtslaufenden Sekundenzähler. Dort wurde der Vorgabewert noch hart codiert, und der Startwert war im Quellcode auf 10 gesetzt. Um stattdessen im Selektionsbild ein Eingabefeld zu erhalten, deklarieren Sie nun einen Parameter; der Datentyp soll weiterhin Typ i sein. Die Anweisung im Deklarationsteil des Reports lautet:

PARAMETERS sek TYPE i.

Das angezeigte Feld ist noch leer, d. h. ohne Vorschlagswert und ohne Pflichtfeld (siehe Abbildung 11.1). Für das sinnvolle Ausfüllen des Selektionsbildes sind Sie selbst verantwortlich. Sie können beispielsweise wieder 10 eingeben.

Selektionsbild mit Parameter und leerem Eingabefeld

Abbildung 11.1    Selektionsbild mit Parameter und leerem Eingabefeld

Angenommen, Sie möchten für den rückwärtslaufenden Sekundenzähler nur ein bestimmtes Intervall für den Vorgabewert zulassen, dann könnten Sie dies ebenfalls über eine selbst geschriebene Eingabeprüfung tun: Falls der Vorgabewert außerhalb des Intervalls liegt, soll eine Meldung in der Statuszeile erfolgen. Das Selektionsbild wird so lange immer wieder angezeigt, bis eine »richtige« Eingabe erfolgt:

AT SELECTION-SCREEN ON sek.
* Eingabeprüfung für Startwert Sekunden
IF sek < 5 OR sek > 20.
* Anweisungsblock für Fehlerbehandlung
ENDIF.

Im Beispiel bezieht sich das Ereignis AT SELECTION-SCREEN nur auf das Eingabefeld SEK. Ist der Eingabewert kleiner als 5 oder größer als 20, wird der Anweisungsblock für die Fehlerbehandlung ausgeführt. Die Fehlerbehandlung soll ebenfalls eine »richtige« Neueingabe erzwingen und das Selektionsbild so lange wieder anzeigen, bis die Eingabe akzeptiert wird.

 
Zum Seitenanfang

11.2.2    Zusätze zur PARAMETERS-Anweisung Zur vorigen ÜberschriftZur nächsten Überschrift

Möchten Sie dem Benutzer das Feld vorausgefüllt mit einem Vorschlagswert zur Verfügung stellen, verwenden Sie den Zusatz DEFAULT, und die Anweisung lautet:

PARAMETERS sek TYPE i DEFAULT 10.
[»]  PARAMETERS und DATA

Beachten Sie, dass es hier einen Unterschied zur DATA-Anweisung gibt: Möchten Sie bei der DATA-Anweisung einen Startwert mitgeben, lautet der Zusatz VALUE; bei der PARAMETERS-Anweisung lautet er hingegen DEFAULT. Beim Startwert handelt es sich lediglich um einen Vorschlagswert, den der Benutzer überschreiben oder löschen kann (siehe Abbildung 11.2).

Selektionsparameter mit Vorschlagswert

Abbildung 11.2    Selektionsparameter mit Vorschlagswert

Die Eingabe in einem Feld können Sie erzwingen, indem Sie das Feld zu einem Pflichtfeld machen, und zwar mit dem Zusatz OBLIGATORY:

PARAMETERS sek TYPE i DEFAULT 10 OBLIGATORY.

Ein solches Mussfeld wird im Selektionsbild durch ein Symbol gekennzeichnet (siehe Abbildung 11.3). Lassen Sie sich dabei nicht durch das Symbol täuschen: Es verschwindet, sobald Sie einen Wert in das Feld eingeben.

Mussfeld mit Kennzeichnungssymbol

Abbildung 11.3    Mussfeld mit Kennzeichnungssymbol

[»]  Alle Mussfelder ausfüllen

Wird versucht, den Report mit einem leeren Mussfeld zu starten, erzeugt das System die Meldung in der Statuszeile »Bitte alle Mussfelder ausfüllen«. Die Laufzeitumgebung arbeitet den Report ohne Eingabe nicht weiter ab; das Selektionsbild erscheint wieder.

Die Verknüpfung zum ABAP Dictionary funktioniert unproblematisch. Verweist eine PARAMETERS-Deklaration mit dem Zusatz TYPE auf ein Dictionary-Feld, gelten automatisch alle hinterlegten Hilfen, Wertehilfen, Fremdschlüsselbeziehungen und Prüftabellen auch für dieses Feld. Bei dem Dictionary-Feld kann es sich um ein Feld einer transparenten Tabelle, einer Struktur oder um ein Datenelement handeln. Diese Hilfen werden wie bisher auch über die (F1)-Taste bzw. über (F4) aufgerufen. Im folgenden Beispiel deklarieren Sie das Feld GESCHLEC und verweisen auf die Deklaration im ABAP Dictionary mit dem Zusatz TYPE:

PARAMETERS geschlec TYPE zteilnehmer02-tgeschlecht.
[+]  TYPE und LIKE

In älteren Programmen werden Sie häufig dem Zusatz LIKE anstelle von TYPE begegnen. Der Unterschied zwischen diesen beiden Typisierungsmethoden ist, dass sich TYPE auf einen Datentyp und LIKE auf ein Datenobjekt bezieht. Diese Aspekte verschwimmen in klassischem ABAP häufig, sollten aber in modernem ABAP sorgfältig getrennt werden. Verwenden Sie daher den Zusatz LIKE zur Typisierung nur dann, wenn Sie tatsächlich auf ein konkretes Datenobjekt und nicht etwa auf einen Datentyp Bezug nehmen möchten.

Da wir die Tabelle ZTEILNEHMER02 und ihre Spalten hier als Datentypen betrachten, ist die Verwendung von TYPE richtig, obwohl der Code auch mit LIKE funktionieren würde.

In der Teilnehmertabelle sind in der Domäne für das Geschlecht Festwerte hinterlegt. Klicken Sie im Selektionsbild in das Feld, erscheint rechts am Rand der Hilfe-Button (inline image), den Sie anklicken oder mit der (F4)-Taste aufrufen können (siehe Abbildung 11.4). Im Hilfefenster werden die gepflegten Festwerte zur Auswahl angeboten. Das System prüft allerdings noch nicht nach, ob Sie sich auch an die Auswahlliste halten oder völlig neue Werte erfinden, sondern akzeptiert alle Eingaben.

Selektionsparameter mit Wertehilfetaste

Abbildung 11.4    Selektionsparameter mit Wertehilfetaste

Möchten Sie erzwingen, dass nur die hinterlegten, d. h. gültigen Werte akzeptiert werden, benötigen Sie den Zusatz VALUE CHECK.

PARAMETERS geschlec TYPE zteilnehmer02-tgeschlecht
OBLIGATORY VALUE CHECK.

Versucht der Anwender bei dieser Deklaration einen Wert im Selektionsbild einzugeben, der nicht den gültigen Werten entspricht, meldet das System in der Statuszeile »Bitte gültigen Wert eingeben« und zeigt das Selektionsbild wieder an.

[»]  VALUE CHECK und OBLIGATORY

Es liegt nahe, dass die beiden Zusätze VALUE CHECK und OBLIGATORY meistens gemeinsam Verwendung finden. Wenn einerseits Wert darauf gelegt wird, dass nur gültige Eingaben erfolgen, muss andererseits auch dafür gesorgt werden, dass überhaupt Eingaben erfolgen.

Groß- und Kleinschreibung zu differenzieren kann je nach Datenbeschaffenheit problematisch sein. Grundsätzlich werden alle Eingaben im Selektionsbild in Großbuchstaben umgewandelt. Natürlich werden dann auch nur die Datensätze selektiert, die nur Großbuchstaben in den entsprechenden Feldern enthalten. Wenn Sie für den Titel des Kurses das Eingabefeld KURSTI deklarieren und mit dem Startwert »SAP-Grundlagen« versehen, werden trotzdem alle Kleinbuchstaben in Großbuchstaben umgewandelt und in der Tabelle selektiert.

PARAMETERS kursti TYPE zteilnehmer02-zzkurstitel
DEFAULT 'SAP-Grundlagen'.

Soll das Eingabefeld Groß- und Kleinbuchstaben differenzieren können, benötigen Sie den Zusatz LOWER CASE.

PARAMETERS kursti TYPE zteilnehmer02-zzkurstitel
DEFAULT 'SAP-Grundlagen' LOWER CASE.

Jetzt unterscheidet das System zwischen Groß- und Kleinschreibung und wandelt die Eingaben nicht automatisch in Großbuchstaben um, sondern selektiert genau, wie im Selektionsbild eingegeben.

[ ! ]  Schaukeleffekt

Je nach Datenkonstellation wirkt das Ganze aber wie eine Schaukel: In einem Fall sucht und erhält man nur selektierte Sätze mit Feldern in Großbuchstaben, und im anderen Fall erhält man nur selektierte Sätze mit Feldern, die der genauen Schreibweise im Selektionsbild entsprechen. Deshalb sollten Sie bereits beim Aufbau von Datenbeständen an einheitliche Regelungen für Schreibweisen denken.

Häufig findet man in der Praxis die Regelung, dass alle Felder, die zur Selektion verwendet werden, ausschließlich in Großbuchstaben geschrieben werden dürfen. Dies kann man bereits bei der Definition des Datenelementes festlegen, das der Tabellenspalte zugrunde liegt. Anderenfalls hat man ein kleines Problem; möglicherweise kann man sich mit Zeichenketten-Operationen oder der TRANSLATE-Anweisung weiterhelfen, aber darauf soll hier nicht weiter eingegangen werden.

Sehr bequem ist es für den Anwender, wenn das Selektionsbild mit Ankreuzfeldern versehen ist und er darüber den Programmablauf oder die Datenselektion steuern kann. Technisch betrachtet, sind diese Felder vom Typ c mit der Länge 1. Sie haben als Inhalt entweder ein »X« oder ein Leerzeichen (» «). Im Selektionsbild können Sie diese Felder anklicken und damit einen Haken setzen.

Im folgenden Beispiel wird das Feld VOLLSTLI mit dem Zusatz AS CHECKBOX deklariert, um darüber zu steuern, ob die vollständige Listausgabe der Tabelle angezeigt werden soll oder nicht (siehe Abbildung 11.5).

PARAMETERS vollstli AS CHECKBOX.
Selektionsparameter als Ankreuzfeld

Abbildung 11.5    Selektionsparameter als Ankreuzfeld

Wird das Feld ausgewählt, sehen Sie die Liste auf dem Bildschirm, bleibt es leer, fehlt dieser Ausgabeblock. Im Quellcode packen Sie den entsprechenden Abschnitt in eine IF-Struktur, mit der Bedingung zu prüfen, ob das Feld initial ist oder nicht. Ist es initial, geschieht nichts, ist es gefüllt, wird es ausgegeben.

IF NOT vollstli IS INITIAL.
* Anweisungsblock zur Listausgabe
ENDIF.

Eine weitere Möglichkeit, den Programmablauf zu steuern, sind Radio-buttons, auch Auswahlknöpfe genannt (siehe Abbildung 11.6). Während Ankreuzfelder eine Mehrfachauswahl ermöglichen sollen, dienen Radiobuttons zur Einschränkung von Möglichkeiten.

Selektionsparameter mit Radiobuttons

Abbildung 11.6    Selektionsparameter mit Radiobuttons

[»]  Alte Rundfunkgeräte

Die Bezeichnung »Radiobutton« geht auf alte Rundfunkgeräte zurück: Drückte man einen Knopf, sprang der andere heraus. Man hörte entweder Mittelwelle oder UKW oder Kurzwelle, aber immer nur eine der möglichen Frequenzen.

Technisch gesehen, sind Radiobuttons mit einer Gruppe verbunden, in der lediglich ein Knopf markiert ist und die anderen nicht. Hinter jedem Button der Gruppe steckt wieder ein Feld vom Typ c mit der Länge 1, das wiederum die Inhalte »X« oder » « haben kann. Bei einer Gruppe von drei Radiobuttons verfügen Sie über drei Felder, die Sie für die Programmablaufsteuerung nutzen können: entweder das erste, das zweite oder das dritte Feld. Im folgenden Codebeispiel heißen die Buttons INITIALW, NON_SAP und SCHALTJA und werden der Gruppe RAD1 mit dem Zusatz RADIOBUTTON GROUP zugeordnet. Lassen Sie sich bitte in dieser Stelle nicht von den (noch) kryptischen Parameterkürzeln irritieren – zur Funktion dieser Radiobuttons im Programm und verständlichen Langtexten werden wir in Kürze kommen.

PARAMETERS: initialw  RADIOBUTTON GROUP rad1,
non_sap RADIOBUTTON GROUP rad1,
schaltja RADIOBUTTON GROUP rad1.

Standardmäßig ist immer der erste Button der Gruppe markiert. Wählen Sie einen anderen Button der Gruppe aus, wird der zuvor markierte deaktiviert.

Im Quellcode werden die Radiobuttons mit einer IF-Struktur auf Initialwerte abgefragt. Dabei kann nur ein Button der Gruppe etwas anderes als den Initialwert haben; nur der entsprechende Anweisungsblock wird ausgeführt. In einfacher Form könnte diese Struktur folgendermaßen aussehen:

IF NOT initialw IS INITIAL.
* Anweisungsblock_1
ENDIF.
IF NOT non_sap IS INITIAL.
* Anweisungsblock_2
ENDIF.
IF NOT schaltja IS INITIAL.
* Anweisungsblock_3
ENDIF.
[»]  Noch nicht produktionsreif

Lassen Sie sich nicht durch die Optik des Selektionsbildes verwirren: Die Bezeichnung der Felder sowie ihre Anordnung sind noch nicht »produktionsreif«; der optischen Gestaltung werden noch separate Abschnitte dieses Kapitels gewidmet.

 


Ihre Meinung?

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Einstieg in ABAP Einstieg in ABAP
Jetzt Buch bestellen

 Buchempfehlungen
Zum Rheinwerk-Shop: SAP – Der technische Einstieg
SAP – Der technische Einstieg


Zum Rheinwerk-Shop: ABAP Objects – Das umfassende Handbuch
ABAP Objects – Das umfassende Handbuch


Zum Rheinwerk-Shop: ABAP-Entwicklung für SAP S/4HANA
ABAP-Entwicklung für SAP S/4HANA


Zum Rheinwerk-Shop: Kundeneigene Erweiterungen mit ABAP
Kundeneigene Erweiterungen mit ABAP


Zum Rheinwerk-Shop: Schrödinger programmiert ABAP
Schrödinger programmiert ABAP


Zum Rheinwerk-Shop: Migration nach SAP S/4HANA
Migration nach SAP S/4HANA


Zum Rheinwerk-Shop: Design Thinking mit SAP
Design Thinking mit SAP


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und in die Schweiz
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2020
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 
[Rheinwerk]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern