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.8    Codebeispiel zu DO und Abbruchbedingungen Zur vorigen ÜberschriftZur nächsten Überschrift

In diesem Abschnitt sehen wir uns die Verwendung der DO-Schleife und den Einsatz der verschiedenen Abbruchbedingungen am Beispiel des Reports Z_TEILNEHMERLISTE10_DO an.

  1  *&---------------------------------------------*
2 *& Report Z_TEILNEHMERLISTE10_DO *
3 *& *
4 *&---------------------------------------------*
5 *& *
6 *& *
7 *&---------------------------------------------*
8
9 REPORT z_teilnehmerliste10_do.
10
11 * Workarea deklarieren
12 DATA: wa_zteilnehmer02 TYPE zteilnehmer02.
13
14 * Felder deklarieren
15 DATA: min TYPE i,
16 sek TYPE i,
17 std 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 SKIP.
32
33 * Schleife über alle Sätze der Tabelle,
mit Bedingung
34 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
35 ORDER BY PRIMARY KEY.
36 IF wa_zteilnehmer02-tgeburtsdatum LT '19700101'.
37 CONTINUE.
38 ENDIF.
39 WRITE: / wa_zteilnehmer02-tnummer,
40 wa_zteilnehmer02-tname,
41 wa_zteilnehmer02-tgeburtsdatum,
42 wa_zteilnehmer02-tgeschlecht,
43 wa_zteilnehmer02-tkurspreis,
44 wa_zteilnehmer02-twaehrung,
45 wa_zteilnehmer02-zzkfztyp,
46 wa_zteilnehmer02-zzkurstitel.
47 ENDSELECT.
48 SKIP.
49
50 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
51 ORDER BY PRIMARY KEY.
52 CHECK wa_zteilnehmer02-tgeschlecht = 'W'.
53 WRITE: / wa_zteilnehmer02-tnummer,
54 wa_zteilnehmer02-tname,
55 wa_zteilnehmer02-tgeburtsdatum,
56 wa_zteilnehmer02-tgeschlecht,
57 wa_zteilnehmer02-tkurspreis,
58 wa_zteilnehmer02-twaehrung,
59 wa_zteilnehmer02-zzkfztyp,
60 wa_zteilnehmer02-zzkurstitel.
61 ENDSELECT.
62 SKIP.
63
64 * Ablauflogik für Zeitmesser mit Abbruch
durch EXIT
65 WRITE: / std, min, sek. "sy-index.
66 SKIP.
67
68 DO 24 TIMES.
69 IF sy-index = 3.
70 EXIT.
71 ENDIF.
72 min = 0.
73 DO 60 TIMES.
74 IF sy-index = 3.
75 EXIT.
76 ENDIF.
77 sek = 0.
78 DO 60 TIMES.
79 WRITE: / std, min, sek.
80 sek = sek + 1.
81 IF sy-index = 3.
82 EXIT.
83 ENDIF.
84 ENDDO.
85 min = min + 1.
86 ENDDO.
87 std = std + 1.
88 ENDDO.
89 SKIP.
90 WRITE: / std, min, sek.
91
92 * Programmabbruch
93 EXIT.
94
95 WRITE: / std, min, sek.
96 SKIP.
97
98 * Ablauflogik für Zeitmesser mit 24 Stunden,
Minuten und Sekunden
99 DO 24 TIMES.
100 min = 0.
101 DO 60 TIMES.
102 sek = 0.
103 DO 60 TIMES.
104 WRITE: / std, min, sek.
105 sek = sek + 1.
106 ENDDO.
107 min = min + 1.
108 ENDDO.
109 std = std + 1.
110 ENDDO.
111 SKIP.
112
113 WRITE: / std, min, sek.

Listing 10.5    Report Z_TEILNEHMERLISTE10_DO

Anmerkungen zum Quellcode

Man kann es nicht oft genug wiederholen: Bei Literalen ist die Unterscheidung zwischen Groß- und Kleinschreibung und die Einhaltung der Form enorm wichtig. Beispielsweise prüfen Sie den Geschlechtsschlüssel für einen männlichen Teilnehmer formal mit M. Steht im Feld versehentlich m, wird dieser Satz in der Bedingung anders behandelt. Entsprechende Pingeligkeit ist deshalb bei allen Literalen notwendig, die gegen Datumsfelder geprüft werden, oder auch bei Zeichenketten.

[»]  Für alle Schleifen

Die beschriebenen Abbruchbedingungen laufen grundsätzlich in allen ABAP-Schleifen. Wird die Wirkung einer Abbruchbedingung in einer Schleife beschrieben, gilt dies sinngemäß auch für die anderen ABAP-Schleifen.

Zeile 34 bis 47

Alle Sätze der Tabelle werden gelesen. Für jeden der gelesenen Sätze werden die folgenden Schritte durchgeführt: In Zeile 36 wird die Bedingung geprüft, ob ein Geburtsdatum kleiner als das genannte Datum ist, d. h. früher als der 01.01.1970 liegt. Ist diese Bedingung erfüllt, wird die Verarbeitung dieses Satzes abgebrochen und der nächste Satz gelesen. In den Verarbeitungsblock zwischen Zeile 39 und Zeile 46 gelangt ein Satz nur dann, wenn das Geburtsdatum größer als das genannte Datum ist, d. h. später als der 01.01.1970 liegt. Ist das Geburtsdatum genau der 01.01.1970, läuft der Satz ebenfalls in den Verarbeitungsblock zwischen Zeile 39 und Zeile 46.

Zeile 50 bis 61

Wieder werden in einer Schleife alle Sätze der Tabelle gelesen. In Zeile 52 wird beim aktuell gelesenen Satz geprüft, ob im Feld GESCHLECHT der Geschlechtsschlüssel W steht. Ist dies der Fall, werden die nachstehenden Anweisungen in den Zeilen 53 bis 60 durchlaufen; anderenfalls wird die Verarbeitung des Satzes abgebrochen und der nächste Satz gelesen. Mit anderen Worten: Die Anweisungen in den Zeilen 53 bis 60 werden nur von den Sätzen für die weiblichen Teilnehmer durchlaufen; Sätze männlicher Teilnehmer werden nicht verarbeitet.

Zeile 68 bis 88

Die Abbruchsteuerung über SY-INDEX verhindert, dass die Schleifen für die Stunden, Minuten und Sekunden wirklich 24-mal bzw. 60-mal durchlaufen werden. Zur Demonstration wird in jeder Schleife der Durchlauf beendet und die Schleife verlassen, sobald der SY-INDEX den Wert 3 hat. Die Steuerung wirkt von »innen nach außen«: Sobald der SY-INDEX für die Sekundenschleife auf 3 steht, wird die Sekundenschleife beendet und mit der Minutenschleife weitergemacht. Steht bei der Minutenschleife der SY-INDEX auf 3, wird die Minutenschleife beendet und die Stundenschleife ausgeführt. Steht bei der Stundenschleife der SY-INDEX auf 3, wird auch diese Schleife beendet und das Programm mit der Anweisung in Zeile 89 fortgesetzt.

Zeile 93

Das EXIT-Kommando steht außerhalb einer Schleife. Das Programm wird sofort beendet und die Listausgabe prozessiert. Möchten Sie, dass die nachfolgenden Programmzeilen ausgeführt werden, müssen Sie Zeile 93 unwirksam machen, z. B. als Kommentarzeile.

Zeile 99 bis 110

So könnte beispielsweise die einfache Ablauflogik für die Schachtelung von Stunden, Minuten und Sekunden aussehen. Wenn Sie diesen Programmteil laufen lassen, wundern Sie sich nicht über die Laufzeit. Es dauert bekanntlich eine Idee länger, bis 86.400 Sekunden durchlaufen sind.

Ausgabe des Quellcodes

Zur besseren Nachvollziehbarkeit werden zunächst wieder alle Sätze der Tabelle aufgelistet (siehe Abbildung 10.9). Im zweiten Block der Liste sehen Sie die Sätze der Kursteilnehmer, die am 1. Januar 1970 oder danach geboren sind. Der dritte Abschnitt der Liste enthält die gelisteten Sätze für die weiblichen Teilnehmer.

Die Zahlenkolonnen im letzten Abschnitt der Liste sind die Listausgaben für Stunden, Minuten und Sekunden. Durch die Begrenzung von SY-INDEX und den Schleifenabbruch hat der Tag 2 Stunden, 1 Stunde 2 Minuten und 1 Minute 3 Sekunden.

Listbild zum DO-Beispiel und Abbruchbedingungen

Abbildung 10.9    Listbild zum DO-Beispiel und Abbruchbedingungen

Der Ort der Abbruchbedingung in der Schleife ist entscheidend dafür, ob die Verarbeitung in der Schleife stattfindet und wie weit; der Ort des WRITE-Kommandos in der Schleife ist maßgebend dafür, ob die zuletzt berechneten Werte noch auf die Liste geschrieben werden oder nicht. Probieren Sie es aus, die Listausgabe und die Abbruchbedingungen anders zu platzieren, und beobachten Sie die Konsequenzen. Spielen Sie ruhig ein wenig damit – Hauptsache, Sie produzieren keine Endlosschleife.

Durch das EXIT-Kommando in Zeile 93 fehlt die Listausgabe für die geschachtelten Schleifen der Stunden, Minuten und Sekunden. Die Liste wäre sonst auch ein wenig länger.

 


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