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.9    Codebeispiel zu WHILE und logischen Ausdrücken Zur vorigen ÜberschriftZur nächsten Überschrift

Unser letztes Code-Beispiel für dieses Kapitel in Listing 10.6 zeigt Ihnen die WHILE-Schleife und logische Ausdrücke im praktischen Einsatz.

  1  *&---------------------------------------------*
2 *& Report Z_TEILNEHMERLISTE10_WHILE *
3 *& *
4 *&---------------------------------------------*
5 *& *
6 *& *
7 *&---------------------------------------------*
8
9 REPORT z_teilnehmerliste10_while.
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 sek TYPE i.
19
20 sek = 10.
21 * Rückwärtslaufender Sekundenzähler
22 WHILE sek > 0.
23 WRITE: sek.
24 sek = sek - 1.
25 ENDWHILE.
26 WRITE: / sek.
27 SKIP.
28
29 * Vollständigen Tabelleninhalt ausgeben
30 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
31 ORDER BY PRIMARY KEY.
32 WRITE: / wa_zteilnehmer02-tnummer,
33 wa_zteilnehmer02-tname,
34 wa_zteilnehmer02-tgeburtsdatum,
35 wa_zteilnehmer02-tgeschlecht,
36 wa_zteilnehmer02-tkurspreis,
37 wa_zteilnehmer02-twaehrung,
38 wa_zteilnehmer02-zzkfztyp,
39 wa_zteilnehmer02-zzkurstitel.
40 ENDSELECT.
41 SKIP.
42
43 * Schleife über alle Sätze der Tabelle,
Feld auf Intitialwert hin prüfen
44 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
45 ORDER BY PRIMARY KEY.
46 IF wa_zteilnehmer02-tgeburtsdatum IS INITIAL.
47 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-tname,
48 'fehlt Geburtsdatum, bitte
nachtragen'.
49 ENDIF.
50 ENDSELECT.
51 SKIP.
52
53 * Schleife über alle Sätze der Tabelle,
Feld auf Intervall hin prüfen
54 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
55 ORDER BY PRIMARY KEY.
56 IF wa_zteilnehmer02-tgeburtsdatum BETWEEN
'19690101' AND '19691231'.
57 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-tname,
58 wa_zteilnehmer02-tgeburtsdatum.
59 ENDIF.
60 ENDSELECT.
61 SKIP.
62
63 * Schleife über alle Sätze der Tabelle,
logisches Oder prüfen
64 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
65 ORDER BY PRIMARY KEY.
66 IF wa_zteilnehmer02-zzkurstitel =
'SAP-Finanzwesen' OR
67 wa_zteilnehmer02-zzkurstitel =
'SAP-Grundlagen'.
68 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-tname,
69 wa_zteilnehmer02-zzkurstitel.
70 ENDIF.
71 ENDSELECT.
72 SKIP.
73
74 * Schleife über alle Sätze der Tabelle,
logisches Und prüfen
75 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
76 ORDER BY PRIMARY KEY.
77 IF wa_zteilnehmer02-tgeschlecht = 'M' AND
78 wa_zteilnehmer02-zzkurstitel =
'PC-GRUNDLAGEN'.
79 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-tname,
80 wa_zteilnehmer02-tgeschlecht,
wa_zteilnehmer02-zzkurstitel.
81 ENDIF.
82 ENDSELECT.
83 SKIP.
84
85 * Schleife über alle Sätze der Tabelle,
logisches NOT prüfen
86 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
87 ORDER BY PRIMARY KEY.
88 IF NOT wa_zteilnehmer02-zzkurstitel(3) = 'SAP'.
89 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-zzkurstitel.
90 ENDIF.
91 ENDSELECT.
92 SKIP.
93
94 * Schleife über alle Sätze der Tabelle,
Schaltjahr prüfen
95 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
96 ORDER BY PRIMARY KEY.
97 jahr004 =
wa_zteilnehmer02-tgeburtsdatum(4) MOD 4.
98 jahr100 =
wa_zteilnehmer02-tgeburtsdatum(4) MOD 100.
99 jahr400 =
wa_zteilnehmer02-tgeburtsdatum(4) MOD 400.
100 IF NOT wa_zteilnehmer02-tgeburtsdatum IS INITIAL.
101 IF jahr400 = 0 OR jahr004 = 0 AND
NOT jahr100 = 0.
102 WRITE: / 'TNr.', wa_zteilnehmer02-tnummer,
wa_zteilnehmer02-zzkurstitel,
103 wa_zteilnehmer02-tgeburtsdatum(4).
104 ENDIF.
105 ENDIF.
106 ENDSELECT.
107 SKIP.

Listing 10.6    Report Z_TEILNEHMERLISTE10_WHILE

Anmerkungen zum Quellcode

Als Beispiel für die WHILE-Schleife bauen wir zunächst einen rückwärtslaufenden Countdown in den Report ein.

Zeile 20 bis 26

Bei der Ablauflogik des rückwärtslaufenden Sekundenzählers wird als Startwert 10 Sekunden gesetzt. Solange die Sekunden größer sind als 0, wird der Feldwert für Sekunden ausgegeben und die Anzahl der Sekunden um 1 vermindert. Da bei der WRITE-Anweisung in der Schleife kein Schrägstrich für den Neubeginn einer Zeile steht, erfolgt die Ausgabe der rückwärtslaufenden Sekunden in einer Druckzeile – so lange, bis das System von sich aus einen Zeilenumbruch vornimmt.

Zeile 44 bis 50

Alle Sätze der Tabelle werden gelesen. Bei jedem Satz prüft das System, ob das Geburtsdatum noch initial ist. Ist dies der Fall, taucht der entsprechende Satz in der Liste auf, sodass dort die Sätze für die Teilnehmer stehen, bei denen das Geburtsdatum noch nachzutragen ist. Auf diese Weise könnte man beispielsweise ungepflegte Felder in Sätzen finden und auflisten.

Zeile 54 bis 60

Wieder werden alle Sätze der Tabelle gelesen. Der aktuelle Satz wird daraufhin geprüft, ob er die Bedingung erfüllt, dass das Geburtsdatum, inklusive der Grenzen, zwischen dem 01.01.1969 und dem 31.12.1969 liegt. Ist die Bedingung erfüllt, durchläuft der Satz einen zusätzlichen Anweisungsblock, und alle Teilnehmer des Jahrgangs 1969 werden aufgelistet.

Zeile 64 bis 71

Es wird geprüft, ob ein Satz im Feld für die Kursbezeichnung als Inhalt »SAP-Finanzwesen« oder »SAP-Grundlagen« hat. Falls diese Bedingung erfüllt ist, durchläuft der Satz einen eigenen Anweisungsblock. Das Feld kann nur einen Inhalt haben; zwei dieser möglichen Inhalte sind günstig und erfüllen die Bedingung.

[ ! ]  Groß- und Kleinschreibung

Beachten Sie wieder die Groß- und Kleinschreibung: Der Satz, der die Bedingung erfüllt, gelangt in die Liste. Ist die Schreibweise des Feldinhaltes nicht genau getroffen, erfüllt der Satz die Bedingung nicht und fehlt in der Liste.

Zeile 75 bis 82

Bei der Bedingung werden zwei Felder geprüft: Die Bedingung ist erfüllt, wenn im Feld für das Geschlecht der Geschlechtsschlüssel M eingetragen ist und im Feld für den Kurstitel »PC-Grundlagen«; der Satz läuft demnach durch den Anweisungsblock, wenn er für einen männlichen Teilnehmer des Kurses »PC-Grundlagen« ist. Nur die entsprechenden Sätze stehen anschließend in der Liste.

Zeile 88 bis 90

Die Bedingung lautet, dass an den ersten drei Stellen der Kursbezeichnung etwas anderes stehen muss als »SAP«. Ist diese Bedingung erfüllt, wird der Satz ausgelistet. Die Liste enthält anschließend alle Teilnehmer von »Nicht-SAP-Kursen«, mit anderen Worten alle Teilnehmer, die einen anderen als einen SAP-Kurs besuchen.

Zeile 97 bis 99

Im Feld JAHR004 wird der Rest der ganzzahligen Division des Geburtsjahres durch 4 abgelegt; das Geburtsjahr steht an den ersten vier Stellen des Geburtsdatums. Ist das Geburtsjahr ganzzahlig durch 4 teilbar, ist der Rest 0, d. h. dass der JAHR004-Feldinhalt 0 beträgt.

Analog wird mit den Feldern JAHR100 und JAHR400 verfahren. Die drei Zeilen entsprechen der Formulierung der drei einzelnen Teilbedingungen.

Zeile 100

In der Bedingung wird geprüft, ob das Geburtsdatum gepflegt ist. Wenn es gepflegt ist, hat das Geburtsjahr nicht mehr den Initialwert. Ist das Geburtsdatum gepflegt, geht die Satzverarbeitung in den nachfolgenden Anweisungsblock und prüft die nächste Bedingung.

Zeile 101 bis 104

In dieser Bedingung wird geprüft, ob die jeweiligen Reste der ganzzahligen Division gleich 0 sind. Die Bedingung selbst ist der verknüpfte logische Ausdruck der drei Teilbedingungen. Ist die Bedingung erfüllt, ist das Geburtsjahr ein Schaltjahr, und der Satz läuft in den Anweisungsblock – in unserem Beispiel ist es zur Anschaulichkeit wieder nur eine WRITE-Anweisung. In der Liste stehen anschließend die Sätze der Teilnehmer, die in einem Schaltjahr geboren sind.

Ausgabe des Quellcodes

Zunächst werden die rückwärtslaufenden Sekunden fortlaufend in einer Druckzeile ausgegeben und anschließend die Sätze der Tabelle aufgelistet (siehe Abbildung 10.10).

Listbild zum WHILE-Beispiel und logischen Ausdrücken

Abbildung 10.10    Listbild zum WHILE-Beispiel und logischen Ausdrücken

Der letzte Satz ist unvollständig, denn das Geburtsdatum ist nicht gepflegt. Im zweiten Block der Liste stehen die Sätze mit ungepflegtem Geburtsdatum; aufgrund der Datenkonstellation handelt es sich aber nur um einen Satz. Im dritten Block sind die Teilnehmer verzeichnet, die 1969 geboren sind. Auch hier ergibt sich durch die Daten in der Tabelle nur ein Treffersatz.

Im vierten Block stehen die Sätze der Teilnehmer, die an den Kursen »SAP-Grundlagen« und »SAP-Finanzwesen« teilnehmen. Beachten Sie wieder die genaue Schreibweise der Kursbezeichnungen.

Der fünfte Abschnitt der Liste enthält die männlichen Teilnehmer, die den Kurs »PC-GRUNDLAGEN« besuchen. In unserer Listausgabe ist dieser Abschnitt leer, da der Vergleich die Groß- und Kleinschreibung berücksichtigt und die Schreibweise mit ausschließlich Großbuchstaben in den vorhandenen Datensätzen nicht vorkommt. Wir sehen daher nur zwei Leerzeilen.

Der sechste Abschnitt enthält nur Sätze der Teilnehmer, die einen anderen als einen SAP-Kurs besuchen.

Im siebten und letzten Block finden Sie die Sätze der Teilnehmer, die in einem Schaltjahr geboren sind.

 


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