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 10 Programmablaufsteuerung und logische Ausdrücke
Pfeil 10.1 Kontrollstrukturen
Pfeil 10.2 Arbeiten mit Mustern
Pfeil 10.3 Verzweigungen
Pfeil 10.3.1 IF-Struktur
Pfeil 10.3.2 CASE-Struktur
Pfeil 10.4 Schleifen
Pfeil 10.4.1 SELECT-Schleife
Pfeil 10.4.2 DO-Schleife
Pfeil 10.4.3 WHILE-Schleife
Pfeil 10.4.4 Abbruchanweisungen für Schleifen
Pfeil 10.5 Logische Ausdrücke
Pfeil 10.5.1 Einfache logische Ausdrücke
Pfeil 10.5.2 Verknüpfte logische Ausdrücke
Pfeil 10.6 Codebeispiel zu IF
Pfeil 10.7 Codebeispiel zu CASE
Pfeil 10.8 Codebeispiel zu DO und Abbruchbedingungen
Pfeil 10.9 Codebeispiel zu WHILE und logischen Ausdrücken
 
Zum Seitenanfang

10.7    Codebeispiel zu CASE Zur vorigen ÜberschriftZur nächsten Überschrift

Als Nächstes sehen wir uns ein Codebeispiel zur CASE-Anweisung genauer an.

 1  *&---------------------------------------------*
2 *& Report Z_TEILNEHMERLISTE10_CASE *
3 *& *
4 *&---------------------------------------------*
5 *& *
6 *& *
7 *&---------------------------------------------*
8
9 REPORT z_teilnehmerliste10_case.
10
11 * Workarea deklarieren
12 DATA: wa_zteilnehmer02 TYPE zteilnehmer02.
13
14 * Zeichenketten deklarieren
15 DATA: tz_pc_grundlagen TYPE i,
16 tz_netzwerktechnik TYPE i,
17 tz_sonst TYPE i.
18
19 * Vollständigen Tabelleninhalt ausgeben
20 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
21 ORDER BY PRIMARY KEY.
22 WRITE: / wa_zteilnehmer02-tnummer,
23 wa_zteilnehmer02-tname,
24 wa_zteilnehmer02-tgeburtsdatum,
25 wa_zteilnehmer02-tgeschlecht,
26 wa_zteilnehmer02-tkurspreis,
27 wa_zteilnehmer02-twaehrung,
28 wa_zteilnehmer02-zzkfztyp,
29 wa_zteilnehmer02-zzkurstitel.
30 ENDSELECT.
31
32 * Alle Sätze der Tabelle lesen, Anzahl der
Kursteilnehmer aufteilen mit CASE
33 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02.
34 CASE wa_zteilnehmer02-zzkurstitel.
35 WHEN 'Netzwerktechnik'.
36 tz_netzwerktechnik = tz_netzwerktechnik + 1.
37 WHEN 'PC-Grundlagen'.
38 tz_pc_grundlagen = tz_pc_grundlagen + 1.
39 WHEN OTHERS.
40 tz_sonst = tz_sonst + 1.
41 ENDCASE.
42 ENDSELECT.
43 SKIP.
44 WRITE: / 'Verteilung der Personen auf die Kurse:',
45 / tz_netzwerktechnik, 'Netzwerktechnik',
46 / tz_pc_grundlagen, 'PC-Grundlagen',
47 / tz_sonst, 'sonstige Kurse'.
48
49 * Wieder benötigte Zähler initialisieren
50 CLEAR: tz_netzwerktechnik.
51
52 * sy-subrc der SELECT-Anweisung mit
CASE auswerten
53 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
54 WHERE zzkurstitel = 'Netzwerktechnik'.
55 tz_netzwerktechnik = tz_netzwerktechnik + 1.
56 ENDSELECT.
57 SKIP.
58 CASE sy-subrc.
59 WHEN 0.
60 * Okay-Fall
61 WRITE: / tz_netzwerktechnik, 'Teilnehmer für
den Kurs Netzwerktechnik gefunden'.
62 WHEN 4.
63 * Fehlerfall
64 WRITE: / 'keine Teilnehmer für den Kurs
Netzwerktechnik gefunden'.
65 WHEN OTHERS.
66 * Kann nicht sein, anderer sy-subrc von der
Anweisung nicht geliefert
67 ENDCASE.

Listing 10.4    Report Z_TEILNEHMERLISTE10_CASE

Anmerkungen zum Quellcode

Die ersten Codezeilen entsprechen weitgehend dem Beispiel aus Listing 10.3.

Zeile 33 bis 42

Alle Sätze der Teilnehmertabelle werden gelesen. Je nach Feldinhalt des Kurstitels werden die Zähler für die verschiedenen Kurse »Netzwerktechnik«, »PC-Grundlagen« und für sonstige Kurse hochgezählt.

Zeile 44 bis 47

Nach der SELECT-Schleife werden die Gruppensummen ausgegeben. Dabei gilt wieder das Prinzip, in der Schleife die Summen hochzuzählen und nach der Schleife die Summen auszugeben.

Zeile 50

Das Feld für die Gruppensumme der Teilnehmer am Kurs »Netzwerktechnik« wird im nächsten Abschnitt noch einmal gefüllt und muss deshalb initialisiert werden.

Zeile 53 bis 56

In der Tabelle werden alle Sätze gelesen, die die Bedingung erfüllen, dass im Feld für den Kurstitel »Netzwerktechnik« enthalten ist. Der Inhalt der Tabelle wird so manipuliert, dass einmal Treffer erzielt werden und in einem anderen Programmlauf keine Treffer erzielt werden können.

Zeile 58 bis 67

Unmittelbar nach der SELECT-Anweisung wird der Returncode dieser Anweisung über die CASE-Struktur ausgewertet. Die Auswertung des Returncodes muss immer unmittelbar nach dem Kommando erfolgen, dessen Returncode überprüft werden soll. Steht zwischen der CASE-Struktur ab Zeile 58 und dem Kommando ENDSELECT in Zeile 56, für das der Returncode ausgewertet werden soll, ein anderes Kommando, das seinerseits auch einen Returncode liefert, entsteht ein Problem – Sie sollten dann mit der CASE-Struktur den »falschen« Returncode abfragen. Am sichersten ist es, wenn dazwischen überhaupt keine andere Anweisung mehr steht oder – wie in unserem Beispiel – eine Anweisung, die SY-SUBRC nicht füllt. Das Kommando SKIP gehört in diesem Fall glücklicherweise zu dieser Gruppe.

Die CASE-Struktur im Beispiel unterscheidet den Okay-Fall und einen Fehlerfall. Hat der SY-SUBRC den Inhalt 0, hat das Lesen in der Tabelle Treffersätze erzielt. Für diese Treffersätze werden die Anweisungen im ersten Anweisungsblock verarbeitet. Der Anweisungsblock besteht im Beispiel nur aus einer Anweisung, könnte aber später auch ein Unterprogrammaufruf oder Ähnliches sein und die »normale« Verarbeitung abbilden.

In der CASE-Struktur wird als Fehlerfall berücksichtigt, dass SY-SUBRC den Inhalt 4 hat. Die SELECT-Anweisung liefert diesen Returncode zurück, wenn beim Lesen der Tabelleneinträge kein Treffer erzielt werden konnte. In unserem Beispiel gibt es keinen Satz, bei dem im Feld für die Kursbezeichnung »Netzwerktechnik« steht; entsprechende Tabelleneinträge wurden vor dem Programmstart gelöscht.

Folglich wird der Anweisungsblock für SY-SUBRC mit dem Inhalt 4 durchlaufen. In diesem Beispiel besteht die Fehlerbehandlung nur in einer anderen Listausgabe; in der Praxis kann die Fehlerbehandlung ähnlich umfangreich wie die »normale« Verarbeitung sein.

Ausgabe des Quellcodes

Im oberen Teil beider Listbilder sehen Sie den Tabelleninhalt wieder vollständig aufgelistet. In Abbildung 10.7 sind zwei Teilnehmer für den Kurs »Netzwerktechnik« vorhanden; deshalb endet die dritte SELECT-Anweisung mit dem Returncode 0, und die »normale« Verarbeitung wird durchlaufen, die die letzte Zeile in der Liste erstellt.

Listbild zum CASE-Beispiel – mit Returncode 0 der dritten SELECT-Anweisung

Abbildung 10.7    Listbild zum CASE-Beispiel – mit Returncode 0 der dritten SELECT-Anweisung

Beim zweiten Listbild in Abbildung 10.8 sehen Sie, dass keine Teilnehmer mehr für den Kurs »Netzwerktechnik« in der Tabelle vorhanden sind. Die dritte SELECT-Anweisung endet deshalb mit dem Returncode 4, und der Anweisungsblock für diesen Fehlerfall wird prozessiert. In der letzten Zeile erfolgt die Ausgabe, dass keine passenden Teilnehmer gefunden wurden.

Listbild zum CASE-Beispiel – mit Returncode 4 der dritten SELECT-Anweisung

Abbildung 10.8    Listbild zum CASE-Beispiel – mit Returncode 4 der dritten SELECT-Anweisung

 


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