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.9    Codebeispiel zum Selektionsbild (erweiterte Form) Zur vorigen ÜberschriftZur nächsten Überschrift

Listing 11.2 zeigt den gleichen Report wie Listing 11.1, allerdings in erweiterter Form.

  1  *&---------------------------------------------*
2 *& Report Z_TEILNEHMERLISTE11_B *
3 *& *
4 *&---------------------------------------------*
5 *& *
6 *& *
7 *&---------------------------------------------*
8
9 REPORT z_teilnehmerliste11_b.
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 falschtnr TYPE zteilnehmer02-tnummer,
19 tnr TYPE zteilnehmer02-tnummer.
20
21 * Selektionsbild gestalten
22 PARAMETERS: sek TYPE i DEFAULT 10 OBLIGATORY,
23 initialw RADIOBUTTON GROUP rad1,
24 non_sap RADIOBUTTON GROUP rad1,
25 schaltja RADIOBUTTON GROUP rad1.
26
27 * Block auf Selektionsbild mit Rahmen und
Rahmentext
28 SELECTION-SCREEN BEGIN OF BLOCK teilnehmer WITH
FRAME TITLE text-001. "Teilnehmerdaten
29
30 * Zeile im Block mit freiem Text
31 SELECTION-SCREEN BEGIN OF LINE.
32 SELECTION-SCREEN COMMENT 24(60) text-005.
33 SELECTION-SCREEN END OF LINE.
34 SELECTION-SCREEN SKIP.
35
36 * Zeile im Block mit freiem Text und zwei Parametern
37 SELECTION-SCREEN BEGIN OF LINE.
38 SELECTION-SCREEN COMMENT (20) text-002 FOR FIELD
geschlec.
39 SELECTION-SCREEN POSITION 24.
40 PARAMETERS geschlec TYPE
zteilnehmer02-tgeschlecht OBLIGATORY
VALUE CHECK.
41 SELECTION-SCREEN COMMENT 32(16) text-004.
42 PARAMETERS kursti TYPE zteilnehmer02-zzkurstitel
DEFAULT 'SAP-Grundlagen' LOWER CASE.
43 SELECTION-SCREEN END OF LINE. 44
45 * Zeile im Block mit freiem Text und Selektionstabelle
46 SELECTION-SCREEN BEGIN OF LINE.
47 SELECTION-SCREEN COMMENT (16) text-003.
48 SELECTION-SCREEN POSITION 21.
49 SELECT-OPTIONS gebdat FOR
wa_zteilnehmer02-tgeburtsdatum NO-EXTENSION.
50 SELECTION-SCREEN END OF LINE.
51
52 * Zeile im Block mit freiem Text und Parameter
53 SELECTION-SCREEN BEGIN OF LINE.
54 SELECTION-SCREEN COMMENT (47) text-006.
55 PARAMETERS vollstli AS CHECKBOX.
56 SELECTION-SCREEN END OF LINE.
57 SELECTION-SCREEN END OF BLOCK teilnehmer.
58
59 * Parameter nach dem Block
60 PARAMETERS neutnr TYPE zteilnehmer02-tnummer.
61
62 INITIALIZATION.
63
64 * Vorschlagswert für neue Teilnehmernummer
ermitteln und in Parameter übertragen
65 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
66 ORDER BY PRIMARY KEY.
67 tnr = wa_zteilnehmer02-tnummer.
68 ENDSELECT.
69 tnr = tnr + 1.
70 neutnr = tnr.
71
72 AT SELECTION-SCREEN ON sek.
73 * Eingabeprüfung für Startwert Sekunden
74 IF sek < 5 OR sek > 20.
75 MESSAGE e001(zabap).
76 ENDIF.
77
78 AT SELECTION-SCREEN ON neutnr.
79 * Eingabeprüfung für neue Teilnehmernummer
80 IF neutnr < tnr.
81 falschtnr = neutnr.
82 neutnr = tnr.
83 MESSAGE e002(zabap) with falschtnr.
84 ENDIF.
85
86
87 START-OF-SELECTION.
88
89 * Rückwärtslaufender Sekundenzähler
90 WHILE sek > 0.
91 WRITE: sek.
92 sek = sek - 1.
93 ENDWHILE.
94 WRITE: / sek.
95 SKIP.
96
97 * Ankreuzfeld prüfen
98 IF NOT vollstli IS INITIAL.
99 * Vollständigen Tabelleninhalt ausgeben
100 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
101 ORDER BY PRIMARY KEY.
102 WRITE: / wa_zteilnehmer02-tnummer,
103 wa_zteilnehmer02-tname,
104 wa_zteilnehmer02-tgeburtsdatum,
105 wa_zteilnehmer02-tgeschlecht,
106 wa_zteilnehmer02-tkurspreis,
107 wa_zteilnehmer02-twaehrung,
108 wa_zteilnehmer02-zzkfztyp,
109 wa_zteilnehmer02-zzkurstitel.
110 ENDSELECT.
111 SKIP.
112 ENDIF.
113
114 * Radiobutton initialw prüfen
115 IF NOT initialw IS INITIAL.
116 * Schleife über alle Sätze der Tabelle,
Feld auf Intitialwert hin prüfen
117 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
ORDER BY PRIMARY KEY.
118 IF wa_zteilnehmer02-tgeburtsdatum IS INITIAL.
119 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-tname,
120 'fehlt Geburtsdatum, bitte nachtragen'.
121 ENDIF.
122 ENDSELECT.
123 SKIP.
124 ENDIF.
125
126 * Schleife über alle Sätze der Tabelle,
Selektionstabelle prüfen
127 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
128 ORDER BY PRIMARY KEY.
129 IF wa_zteilnehmer02-tgeburtsdatum IN gebdat.
130 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-tname,
131 wa_zteilnehmer02-tgeburtsdatum.
132 ENDIF.
133 ENDSELECT.
134 SKIP.
135
136 * Schleife über alle Sätze der Tabelle,
logisches Und prüfen
137 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
138 ORDER BY PRIMARY KEY.
139 IF wa_zteilnehmer02-tgeschlecht = geschlec AND
140 wa_zteilnehmer02-zzkurstitel = kursti.
141 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-tname,
142 wa_zteilnehmer02-tgeschlecht,
wa_zteilnehmer02-zzkurstitel.
143 ENDIF.
144 ENDSELECT.
145 SKIP.
146
147 * Radiobutton non_sap prüfen
148 IF NOT non_sap IS INITIAL.
149 * Schleife über alle Sätze der Tabelle,
logisches NOT prüfen
150 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
151 ORDER BY PRIMARY KEY.
152 IF NOT wa_zteilnehmer02-zzkurstitel(3) = 'SAP'.
153 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-zzkurstitel.
154 ENDIF.
155 ENDSELECT.
156 SKIP.
157 ENDIF.
158
159 * Radiobutton schaltja prüfen
160 IF NOT schaltja IS INITIAL.
161 * Schleife über alle Sätze der Tabelle, Schaltjahr prüfen
162 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
163 ORDER BY PRIMARY KEY.
164 jahr004 = wa_zteilnehmer02-
tgeburtsdatum(4) MOD 4.

165 jahr100 = wa_zteilnehmer02-
tgeburtsdatum(4) MOD 100.

166 jahr400 = wa_zteilnehmer02-
tgeburtsdatum(4) MOD 400.
167 IF NOT wa_zteilnehmer02-tgeburtsdatum
IS INITIAL.
168 IF jahr400 = 0
OR jahr004 = 0 AND NOT jahr100 = 0.
169 WRITE: / 'TNr.',
wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-zzkurstitel,
170 wa_zteilnehmer02-tgeburtsdatum(4).
171 ENDIF.
172 ENDIF.
173 ENDSELECT.
174 SKIP.
175 ENDIF.

Listing 11.2    Report Z_TEILNEHMERLISTE11_B

Anmerkungen zum Quellcode

Der Quellcode in der erweiterten Form unterscheidet sich in zwei wesentlichen Punkten vom Quellcode in der einfachen Form: Das Selektionsbild wurde frei gestaltet, und es wurden Ereignisse zur Steuerung eingebaut. Im Deklarationsteil des Reports finden sich nicht nur die Anweisungen PARAMETERS und SELECT-OPTIONS, sondern auch Anweisungen zur Block- und Zeilengestaltung.

Zeile 28

Der Blockanfang wird deklariert; der Name des Blocks ist zur Deklaration erforderlich. Sie benötigen ihn aber nur, um den benannten Block zu öffnen und (in Zeile 57) wieder zu schließen. Zusätzlich zum Blocknamen wird festgelegt, dass der Block einen Rahmen und einen Titel haben soll. Der Titeltext ist im Textsymbol TEXT-001 hinterlegt.

Zeile 31

Die erste Zeile wird deklariert.

Zeile 32

In der ersten Zeile wird ab Position 24 in einer Länge von 60 Zeichen ein Text ausgegeben. Der Text selbst ist im Textsymbol TEXT-005 hinterlegt.

Zeile 33

Die Deklaration der Zeile wird beendet.

Zeile 34

Es wird eine Leerzeile erzeugt. Diese Anweisung ist ein Beispiel dafür, dass es SELECTION-SCREEN-Anweisungen gibt, die innerhalb einer Zeile keinen Sinn ergeben. In einer Zeile kann keine Leerzeile erzeugt werden, nur zwischen zwei Zeilen im Block.

Zeile 37

Die dritte Zeile wird deklariert.

Zeile 38

Ein Text wird linksbündig, sozusagen ab Spalte 0, mit einer Länge von 20 Zeichen ausgegeben und mit dem Eingabefeld GESCHLEC verknüpft. Hierdurch gelten nicht nur für das Eingabefeld, sondern auch für den verknüpften Text die Hilfefunktionen der Tasten (F1) und (F4).

Testen Sie die Wirkungsweise im Selektionsbild: Fokussieren Sie den Text, und rufen Sie die Hilfe auf. Es erscheint dieselbe Hilfe wie beim Eingabefeld.

Zeile 39

In derselben Zeile wird die Positionierung für das nächste Feld in Spalte 24 festgelegt. Hier erfolgt die nächste Ausgabe im Selektionsbild. Doch Vorsicht: Gehen Sie aufmerksam mit der Positionierung um! Durch »geschicktes« Positionieren kann man vorherige Texte oder Felder in der Zeile übersteuern, abhacken oder zudecken.

Zeile 40

Weiter in Zeile 3 wird an der aktuellen Position das Parameterfeld GESCHLEC zur Eingabe im Selektionsbild angezeigt.

Zeile 41

Ab Position 32 wird in der Länge 16 der Text ausgegeben, der im Textsymbol TEXT-004 hinterlegt ist.

Zeile 42

Immer noch in Zeile 3 wird das Eingabefeld KURSTI in das Selektionsbild geschrieben.

Zeile 43

Die Struktur für Zeile 3 wird geschlossen.

Zeile 46 bis 50

Struktur und Inhalt von Zeile 4 werden deklariert.

Zeile 53 bis 57

Struktur und Inhalt von Zeile 5 werden deklariert.

[+]  Stillschweigende Konventionen

Viele Entwickler schreiben aufgrund der besseren Lesbarkeit des Quellcodes den hinterlegten Text als Kommentar zum Kommando hinzu – eine stillschweigende Konvention, die man weiterpflegen sollte. Die Deklaration des Blockendes finden Sie in Zeile 56. Dazwischen stehen die Strukturen für die Zeilengestaltung der Zeilen im Block.

Zeile 62

Das »Zeitalter der Ereignissteuerung« bricht an. Das Ereignisschlüsselwort INITIALIZATION bewirkt, dass vor Erscheinen des Selektionsbildes von der Laufzeitumgebung bereits die ersten Verarbeitungskommandos des Reports ausgeführt werden. Alle Anweisungen, die hinter dem Ereignisschlüsselwort stehen, gehören zum Ereignis und werden ausgeführt. Das Ereignis ist zwar eine Struktur, hat aber keine explizite Anweisung für das Strukturende, d. h. keine Anweisung, die von ihrer strukturschließenden Bedeutung her vergleichbar mit ENDIF, ENDCASE, ENDDO, SELECTION-SCREEN END OF LINE oder Ähnlichem wäre. Mit anderen Worten: Würde das nächste Ereignisschlüsselwort in Zeile 71 fehlen, würden auch diese Anweisungen noch zum Ereignis INITIALIZATION gehören.

Ein Ereignis endet beispielsweise, wenn ein neues Ereignisschlüsselwort ein neues Ereignis definiert, der Report endet oder ein Unterprogramm beginnt. Kommt das erste Ereignisschlüsselwort im Quellcode vor, müssen Sie zwangsläufig mit Ereignisschlüsselwörtern weiterarbeiten. Ab sofort werden auch Sie mit Ereignissen arbeiten und noch einige kennenlernen. Sie erleichtern die Arbeit in der Praxis ungemein und ermöglichen überhaupt erst einige fortgeschrittene Lösungen.

Zeile 65 bis 70

Dieser Anweisungsblock wird beim Ereignis INITIALIZATION ausgeführt. Als Beispiel für die Verarbeitung wird die Teilnehmertabelle gelesen und die letzte, d. h. die höchste Teilnehmernummer ermittelt. Dann wird die Teilnehmernummer hochgezählt und so ein Vorschlagswert für die Nummer des nächsten Teilnehmers gebildet. Dieser Vorschlagswert könnte bei der Erfassung eines neuen Teilnehmersatzes automatisch übernommen und verwendet werden.

Zeile 72

Das neue Ereignis AT SELECTION-SCREEN grenzt das vorhergehende Ereignis INITIALIZATION ab. Das Ereignis AT SELECTION-SCREEN wird noch im Selektionsbild prozessiert und prüft im Beispiel für das Feld SEK, ob die vorgenommenen Eingaben als gültig akzeptiert werden. Falls die Eingaben gültig sind, wird mit der Programmausführung ((F8)-Taste) fortgefahren.

Zeile 74 bis 76

Die Eingabeprüfung selbst wird prozessiert. Liegt der eingegebene Wert unter 5 oder über 20 Sekunden, wird der nachfolgende Verarbeitungsblock – der Fehlerbehandlungsblock – ausgeführt.

Dieser Anweisungsblock besteht im Beispiel nur aus Zeile 75; die MESSAGE-Anweisung sendet eine Nachricht an den Benutzer. Die Nachricht hat die Nummer 001 aus der Nachrichtenklasse ZABAP: Der Nachrichtentext ist in Tabelle T100 in der zugehörigen Nachrichtenklasse hinterlegt. Durch den Nachrichtentyp, in unserem Fall E für Error, wird gesteuert, wie die Nachricht wirkt. Denken Sie wieder daran, dass der Nachrichtentyp kontextsensitiv ist. Es wurde beschrieben, wie dieser Nachrichtentyp im Zusammenhang mit einem Selektionsbild wirkt. Hier würde es aber zu weit führen, alle Möglichkeiten sämtlicher Nachrichtentypen und Wirkungen aufzulisten. Bei Bedarf können Sie der ABAP-Referenz (SAP PRESS 2010) weitere Details entnehmen.

Zeile 80 bis 84

Es folgt die Eingabeprüfung für die neue Teilnehmernummer. Wird versucht, einen Teilnehmer mit einer bereits bestehenden Teilnehmernummer zu erfassen, kommt es zur Fehlerbehandlung: Die weitere Verarbeitung wird abgebrochen, und das Selektionsbild wird erneut gesendet. Als Hinweis auf die Falscheingabe erfolgt in der Meldung die Ausgabe der ungültig eingegebenen Teilnehmernummer. Diese ungültige Nummer wird in der MESSAGE-Anweisung in Zeile 83 mit den Zusatz WITH und dem Feld FALSCHTNR in die Meldung eingetragen. Die gesendete Nachricht 002 hat an der entsprechenden Stelle ein kaufmännisches Und (&) im Text.

Zeile 87

Das neue Ereignisschlüsselwort START-OF-SELECTION grenzt wieder das vorhergehende Ereignis ab. Unter dem Ereignis stehen die Anweisungen, die Sie bereits aus den vorangegangenen Beispielen kennen.

[»]  Ereignissteuerung

Ohne Ereignissteuerung könnten Sie weder eigene Verarbeitungsblöcke vor dem Erscheinen des Selektionsbildes noch eine eigene Eingabeprüfung definieren.

Ausgabe des Quellcodes

In Abbildung 11.34 sehen Sie, dass der Block im Selektionsbild dunkel hinterlegt ist, einen Rahmen besitzt sowie oben links einen Rahmentext Teilnehmer. Die erste Zeile im Block besteht aus einem freien Text ohne Bezug zu einem Eingabefeld. Die zweite Zeile ist eine Leerzeile.

Selektionsbild mit frei gestalteten Texten und freier Parameterpositionierung

Abbildung 11.34    Selektionsbild mit frei gestalteten Texten und freier Parameterpositionierung

In der dritten Zeile sind zwei Eingabefelder enthalten: Geschlecht m/w und Kursbezeichnung. Der Text vor dem Eingabefeld Geschlecht m/w ist mit dem Eingabefeld verknüpft, sodass man die Verknüpfung registriert, wenn man den Text fokussiert und die Hilfetaste (F1) bzw. (F4) drückt. Dann erscheint die Hilfe beim Text für das Eingabefeld auch so, wie sie im ABAP Dictionary hinterlegt ist. Beim zweiten Eingabefeld Kursbezeichnung ist der Text nicht verknüpft. Die Hilfetasten (F1) und (F4) funktionieren nur bei Fokussierung des Eingabefeldes, nicht aber des Textes. Vergleichen Sie hierzu auch noch einmal die relevanten Stellen im Quellcode, und zwar Zeile 38 bzw. Zeile 41.

Die vierte Zeile enthält die Selektionstabelle ohne Mehrfachselektion, interessanter ist aber wieder die fünfte Zeile. Ankreuzfelder stehen üblicherweise linksbündig mit dem unmittelbar folgenden Selektionstext. Durch die freie Positionierung ist es möglich, diese Reihenfolge zu tauschen und Text und Ankreuzfeld frei in der Zeile zu positionieren.

[»]  Mehrere Blöcke im Selektionsbild

Nach dem Ende des Blocks können im Eingabebildschirm – wie in diesem Beispiel – weitere Eingabefelder oder weitere Blöcke definiert werden. Je nach fachlicher Anforderung kann es durchaus sinnvoll sein, mehrere Blöcke in einem Selektionsbild zu deklarieren.

In Abbildung 11.35 wurde versucht, den Report auszuführen, ohne das Pflichtfeld für das Geschlecht auszufüllen. Das System hat die Verarbeitung abgebrochen und das Selektionsbild mit der Meldung »Füllen Sie alle Mußfelder aus« erneut gesendet.

Selektionsbild mit Fehlermeldung (1)

Abbildung 11.35    Selektionsbild mit Fehlermeldung (1)

In Abbildung 11.36 wurde versucht, den Report mit einer ungültigen Angabe für die Sekunden auszuführen. Im Ereignis AT SELECTION-SCREEN wurde speziell für das Feld SEK eine Eingabeprüfung codiert, die erfordert, dass gültige Werte für Sekunden zwischen 5 und 20 liegen müssen – dies war hier nicht der Fall, und deshalb erfolgte die Meldung in der Statuszeile. Diese Meldung sollte so formuliert sein, dass sie dem Benutzer hilft, gültige Eingaben vorzunehmen. Aufgrund der Formulierung des Ereignisses ist nur das Feld SEK wieder eingabebereit; alle anderen Felder sind nur im Anzeigemodus sichtbar.

Selektionsbild mit Fehlermeldung (2)

Abbildung 11.36    Selektionsbild mit Fehlermeldung (2)

 


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