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.6    Codebeispiel zu IF Zur vorigen ÜberschriftZur nächsten Überschrift

In den folgenden Abschnitten gibt es Codebeispiele zu den verschiedenen, in diesem Kapitel vorgestellten Verzweigungen, Schleifen und logischen Ausdrücken. Den Anfang macht Listing 10.3 mit einem Beispiel für eine IF-Struktur.

 1  *&---------------------------------------------*
2 *& Report Z_TEILNEHMERLISTE10_IF *
3 *& *
4 *&---------------------------------------------*
5 *& *
6 *& *
7 *&---------------------------------------------*
8
9 REPORT z_teilnehmerliste10_if.
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_sap_grundlagen TYPE i,
18 tz_sonst TYPE i,
19 tz_total TYPE i.
20
21 * Vollständigen Tabelleninhalt ausgeben
22 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02.
23 ORDER BY PRIMARY KEY
24 WRITE: / wa_zteilnehmer02-tnummer,
25 wa_zteilnehmer02-tname,
26 wa_zteilnehmer02-tgeburtsdatum,
27 wa_zteilnehmer02-tgeschlecht,
28 wa_zteilnehmer02-tkurspreis,
29 wa_zteilnehmer02-twaehrung,
30 wa_zteilnehmer02-zzkfztyp,
31 wa_zteilnehmer02-zzkurstitel.
32 ENDSELECT.
33 SKIP.
34
35 * Tabelleninhalt selektieren mit Bedingung
36 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
37 WHERE zzkurstitel = 'Netzwerktechnik'.
38 ORDER BY PRIMARY KEY
39 WRITE: / wa_zteilnehmer02-tnummer,
40 wa_zteilnehmer02-tname,
41 wa_zteilnehmer02-tgeburtsdatum,
42 wa_zteilnehmer02-tgeschlecht,
43 wa_zteilnehmer02-zzkurstitel.
44 ENDSELECT.
45
46 * Alle Sätze aus der Tabelle lesen,
aber nur bestimmte Sätze verarbeiten
47 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02.
48 IF wa_zteilnehmer02-zzkurstitel =
'PC-Grundlagen'.
49 tz_pc_grundlagen = tz_pc_grundlagen + 1.
50 ENDIF.
51 ENDSELECT.
52 SKIP.
53 WRITE: / tz_pc_grundlagen, 'Personen besuchen
den Kurs PC-Grundlagen'.
54
55 * Alle Sätze der Tabelle lesen,
Anzahl der Kursteilnehmer grob aufteilen
56 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02.
57 IF wa_zteilnehmer02-zzkurstitel = 'SAP-Grundlagen'.
58 tz_sap_grundlagen = tz_sap_grundlagen + 1.
59 ELSE.
60 tz_sonst = tz_sonst + 1.
61 ENDIF.
62 ENDSELECT.
63 tz_total = tz_sap_grundlagen + tz_sonst.
64 SKIP.
65 WRITE: / 'von den',
66 / tz_total, 'Teilnehmern besuchten',
67 / tz_sap_grundlagen, 'den Kurs
SAP-Grundlagen, und',
68 / tz_sonst, 'sonstige Kurse'.
69
70 * Wieder benötigte Zähler initialisieren
71 CLEAR: tz_netzwerktechnik,
72 tz_pc_grundlagen,
73 tz_sap_grundlagen,
74 tz_sonst.
75
76 * Alle Sätze der Tabelle lesen,
Anzahl der Kursteilnehmer fein aufteilen
77 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02.
78 IF wa_zteilnehmer02-zzkurstitel = 'Netzwerktechnik'.
79 tz_netzwerktechnik = tz_netzwerktechnik + 1.
80 ELSEIF wa_zteilnehmer02-zzkurstitel = 'PC-Grundlagen'.
81 tz_pc_grundlagen = tz_pc_grundlagen + 1.
82 ELSEIF wa_zteilnehmer02-zzkurstitel = 'SAP-
Grundlagen'
.
83 tz_sap_grundlagen = tz_sap_grundlagen + 1.
84 ELSE.
85 tz_sonst = tz_sonst + 1.
86 ENDIF.
87 ENDSELECT.
88
89 SKIP.
90 WRITE: / 'Verteilung der Personen auf die Kurse:',
91 / tz_netzwerktechnik, 'Netzwerktechnik',
92 / tz_pc_grundlagen, 'PC-Grundlagen',
93 / tz_sap_grundlagen, 'SAP-Grundlagen',
94 / tz_sonst, 'sonstige Kurse'.

Listing 10.3    Report Z_TEILNEHMERLISTE10_IF

Anmerkungen zum Quellcode

Schauen Sie sich den Quellcode ab Zeile 36 genauer an.

Zeile 36 bis 44

Nur die Sätze, die die Bedingung erfüllen, dass im Feld für die Kursbezeichnung »Netzwerktechnik« steht, gelangen in die Verarbeitung. Die Verarbeitung wird durch Ausgabe in einer Liste simuliert.

[+]  Vorteil Vorselektion

Diese Vorselektion ist zugleich der große Vorteil dieser Arbeitsweise; sie ist für bestimmte Fälle effizienter. Man kann sich gut vorstellen, dass es umso sinnvoller ist, sich gezielt die »richtigen« Sätze aus einer Tabelle herauszusuchen, je größer die Tabelle ist. Der Nachteil dieser Selektion mit Bedingung könnte sein, dass die anderen Sätze, die vielleicht auch verarbeitet werden sollen, aber eben anders, in diesem Beispiel überhaupt nicht gelesen werden und für eine Verarbeitung nicht zur Verfügung stehen. Es kommt wie immer auf die Aufgabenstellung an.

Zeile 47 bis 51

Alle Sätze der Tabelle werden gelesen. Zwischen Zeile 45 und 46 könnte man sich einen Verarbeitungsblock vorstellen, der für alle Sätze gleich ist. Zusätzlich werden die Sätze, die die Bedingung »PC-Grundlagen« erfüllen, gesondert verarbeitet: Sie durchlaufen einen eigenen Anweisungsblock und werden gezählt.

Zeile 53

Hier sehen Sie ein wichtiges Prinzip, vielleicht auch erst auf den zweiten Blick. In den Zeilen 47 bis 51 läuft eine Schleife. In der Schleife wird in den Zeilen 48 bis 49 die Anzahl der Teilnehmer für den Kurs »PC-Grundlagen« berechnet. Die Ausgabe des Ergebnisses, d. h. die Summe der Anzahl der Teilnehmer, darf erst nach der Schleife erfolgen; die Ausgabe in der Schleife wäre nur ein Zwischenergebnis. Das könnte zwar bei anderen Aufgabenstellungen sinnvoll sein, hier aber nicht. Denken Sie daher immer daran:

  • Summen ermitteln: immer in der Schleife

  • Summen ausgeben: immer nach der Schleife

Zeile 56 bis 62

Wieder werden alle Sätze der Tabelle gelesen; hierbei werden zwei Summen ermittelt. Wenn das Feld WA_ZTEILNEHMER02-ZZKURSTITEL den Wert »SAP-Grundlagen« enthält, wird die Summe für diese Kursteilnehmer erhöht. Anderenfalls steigt die Summe für die Teilnehmer an den restlichen Kursen.

Zeile 63 bis 67

Aus beiden Gruppensummen wird die Gesamtsumme gebildet. In der Liste erscheinen die Gesamtanzahl der Kursteilnehmer, die Anzahl der Teilnehmer am Kurs »SAP-Grundlagen« und die Anzahl der Teilnehmer, die sonstige Kurse besuchen.

Zeile 71 bis 74

Die Summenfelder werden für die nachfolgenden Beispiele wieder benötigt und deshalb initialisiert.

Zeile 77 bis 87

Alle Sätze aus der Datenbanktabelle werden selektiert. Für jeden Satz werden nacheinander die Bedingungen geprüft. Erfüllt ein Satz die erste Bedingung, wird der erste Anweisungsblock ausgeführt und zu ENDIF verzweigt. Erfüllt der Satz die erste Bedingung nicht, wird geprüft, ob er die zweite Bedingung erfüllt etc. Es werden mehrere Fälle unterschieden und Gruppensummen für die Kurse »Netzwerktechnik«, »PC-Grundlagen« und »SAP-Grundlagen« gebildet. Die restlichen Kursteilnehmer fallen wieder unter eine Summe für die sonstigen Kurse.

Zeile 90 bis 94

Nach der SELECT-Schleife werden die Gruppensummen mit entsprechenden Texten in die Liste geschrieben.

Ausgabe des Quellcodes

Zur Kontrolle werden zunächst alle Sätze der Tabelle ausgelesen, hier insgesamt acht Sätze (siehe Abbildung 10.6). Dann erfolgt die Ausgabe der Treffersätze über die SELECT-Anweisung mit Bedingung; daran schließen sich die Ausgaben der Gruppensummen aus den einzelnen Beispielen an. Zur besseren Lesbarkeit wurde mit dem SKIP-Kommando jeweils eine Leerzeile eingeschoben; auf weitere optische Aufbereitungsoptionen wurde bewusst verzichtet.

Listbild zum IF-Beispiel

Abbildung 10.6    Listbild zum IF-Beispiel

 


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