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 4 Felder und Berechnungen
Pfeil 4.1 Report vorbereiten
Pfeil 4.2 Felder deklarieren
Pfeil 4.2.1 Variablen deklarieren
Pfeil 4.2.2 Konstanten deklarieren
Pfeil 4.3 Grundrechenarten
Pfeil 4.3.1 Kompatible und konvertible Datenobjekte
Pfeil 4.3.2 Konvertierungsregeln
Pfeil 4.3.3 Besonderheiten bei der Division
Pfeil 4.4 Codebeispiel zu Feldern und Berechnungen
 
Zum Seitenanfang

4.4    Codebeispiel zu Feldern und Berechnungen Zur vorigen ÜberschriftZur nächsten Überschrift

Schauen wir uns die verschiedenen Berechnungsmöglichkeiten nun anhand unseres vorbereiteten Reports an:

 1  *&---------------------------------------------*
2 *& Report Z_TEILNEHMERLISTE02 *
3 *& *
4 *&---------------------------------------------*
5 *& *
6 *& *
7 *&---------------------------------------------*
8
9 REPORT z_teilnehmerliste02 .
10
11 * Variable deklarieren
12 DATA zahl01 TYPE p DECIMALS 2 VALUE '4.56'.
13 DATA zahl02 LIKE zahl01 VALUE '5.67'.
14 DATA ergebnis_addition LIKE zahl01.
15 DATA ergebnis_subtraktion LIKE zahl01.
16 DATA ergebnis_multiplikation LIKE zahl01.
17 DATA ergebnis_division_genau LIKE zahl01.
18 DATA ergebnis_division_ganzzahl LIKE zahl01.
19 DATA ergebnis_division_rest LIKE zahl01.
20
21 * Verarbeitungsteil
22 zahl01 = zahl01 + 1.
23 zahl02 = zahl01 + 2.
24 ergebnis_addition = zahl01 + zahl02.
25 ergebnis_subtraktion = zahl01 - zahl02.
26 ergebnis_multiplikation = zahl01 * zahl02.
27 ergebnis_division_genau = zahl02 / zahl01.
28 ergebnis_division_ganzzahl = zahl02 DIV zahl01.
29 ergebnis_division_rest = zahl02 MOD zahl01.
30
31 * Ausgabeteil
32 WRITE: / 'zahl01', zahl01,
33 / 'zahl02', zahl02,
34 / 'ergebnis_addition:',
ergebnis_addition,
35 / 'ergebnis_subtraktion:',
ergebnis_subtraktion,
36 / 'ergebnis_multiplikation:',
ergebnis_multiplikation,
37 / 'ergebnis_division_genau:',
ergebnis_division_genau,
38 / 'ergebnis_division_ganzzahl:',
ergebnis_division_ganzzahl,
39 / 'ergebnis_division_rest:',
ergebnis_division_rest.

Listing 4.1    Report Z_TEILNEHMERLISTE02

Anmerkungen zum Quellcode

Nach den Kommentarzeilen gliedert sich unser Report in drei Teile, die im Folgenden kurz beschrieben sind.

Zeile 1 bis 8

Diese Zeilen werden vom System wieder automatisch als Kommentarzeilen generiert.

Zeile 11

Der Quellcode wird in übersichtliche Abschnitte eingeteilt, die der Lesbarkeit dienen. In Listing 4.1 werden diese Abschnitte mit drei Kommentarzeilen gebildet: Variable deklarieren (Zeile 11 bis 19), Verarbeitungsteil (Zeile 21 bis 29) und Ausgabeteil (Zeile 31 bis 39).

Zeile 12

Die Variable ZAHL01 wird als gepackte Zahl mit zwei Nachkommastellen deklariert, und sie erhält als Startwert die Zahl 4,56.

Zeile 13

Die Variable ZAHL02 erhält als Startwert die Zahl 5,67 und die gleichen Eigenschaften wie ZAHL01.

Zeile 14 bis 19

Die Ergebnisfelder werden deklariert; für jedes Ergebnis wird ein eigenes Feld angelegt. Natürlich hätte man nur das Feld ERGEBNIS anlegen und immer wieder überschreiben können, aber es hängt von der Art der Weiterverarbeitung ab, ob man einen Feldinhalt später vielleicht wieder benötigt oder nicht – und Sie möchten gleich die verschiedenen Berechnungsergebnisse ausgeben.

[+]  Nicht mit Variablen geizen

Arbeitsspeicher und Hardware sind kein Argument mehr, um mit Variablen zu knausern, sondern Lesbarkeit und Transparenz sind heute die wesentlicheren Qualitätsfaktoren. Wenn es der Qualität dient, sollten Sie deshalb nicht mit Variablen geizen.

Zeile 21

Der Verarbeitungsteil beginnt.

Zeile 22

Der Wert des Feldes ZAHL01 wird um 1 erhöht. Vor der Anweisung war der Inhalt 4.56, danach ist er 5.56.

Zeile 23

Das Feld ZAHL02 erhält den Inhalt aus der Addition von ZAHL01 und der Zahl 2. Der alte Inhalt von ZAHL02 war 5.67, der neue Inhalt ist 7.56.

Zeile 24

Das Feld ERGEBNIS_ADDITION erhält das Ergebnis der Operation ZAHL01 plus ZAHL02, das ist 5.56 plus 7.56 und ergibt 13.12.

Zeile 25

Das Ergebnis der Subtraktion von ZAHL01 und ZAHL02 ist die negative Zahl 2. Sie wird im Ergebnisfeld ERGEBNIS_SUBTRAKTION als 2.00- dargestellt.

Zeile 26

Da ZAHL01 inzwischen den Wert 5.56 und ZAHL02 den Wert 7.56 hat, lautet das Ergebnis der Multiplikation auf zwei Nachkommastellen gerundet 42.03.

Zeile 27

Das Ergebnis der Division: 7.56 geteilt durch 5.56 ist gerundet 1.36 – und gleichzeitig der neue Inhalt von ERGEBNIS_DIVISION_GENAU.

Zeile 28

Die ganzzahlige Division ergibt 1.00. Durch die Formatierung werden die eigentlich überflüssigen Dezimalstellen mitgezogen.

Zeile 29

Der Rest der Ganzzahldivision beträgt 2.00. Dieser Wert wird in das Feld ERGEBNIS_DIVISION_REST übertragen.

Zeile 31

Der Abschnitt für die Listerstellung beginnt.

Zeile 32 bis 39

Die WRITE-Anweisung gibt in einer neuen Zeile in Spalte 1 ein Literal als Text aus und anschließend mit einer Leerstelle den Inhalt der Variablen. Die WRITE-Anweisung ist als Kettensatz geschrieben, hinter dem sich eigentlich 16 WRITE-Anweisungen verbergen. Hinter der Anweisung WRITE steht ein Doppelpunkt; die einzelnen Anweisungen sind durch Kommata getrennt, und nur die letzte Anweisung des Kettensatzes wird mit einem Punkt abgeschlossen.

Ausgabe des Quellcodes

Wenn Sie den Report wie eben editiert, gesichert, geprüft und aktiviert haben, können Sie ihn ausführen, und das Listbild sollte wie in Abbildung 4.6 aussehen.

Listbild zum Beispiel der Grundrechenarten

Abbildung 4.6    Listbild zum Beispiel der Grundrechenarten

Formal und logisch ist hier alles richtig – aber auch das Auge programmiert mit! Da hier die Literale am Zeilenanfang unterschiedlich lang sind, stehen die ausgegebenen Variablen an unterschiedlichen Spaltenpositionen und damit nicht spaltengerecht. Deshalb kümmern wir uns im letzten Schritt noch um die optische Spaltenaufteilung.

Verbesserte Listaufbereitung

Dieses kleine Problem lösen Sie, indem Sie dem WRITE-Kommando bei der Ausgabe mitteilen, an welcher Position einer Zeile die Variable abgebildet werden soll. Möchten Sie die Variable ab Spalte 30 ausgeben, müssen Sie Zeile 32 von Listing 4.1 folgendermaßen ändern:

WRITE: / 'zahl01', 30 zahl01,

Vor die betreffende Variable schreiben Sie einfach die Spaltenposition der Druckzeile. Beachten Sie, dass zwischen Spaltenposition und Variable mindestens eine Leerstelle bestehen bleiben muss.

[+]  Komplexe Listen

Die restlichen relevanten Zeilen könnten Sie entsprechend editieren, indem Sie vor jede betroffene Variable die Ausgabeposition schreiben. Bei kurzen und überschaubaren Ausgaben ist dieses Vorgehen auch vertretbar. Sollte eine Liste allerdings aufwendiger und komplexer zusammengesetzt sein, könnten Sie es auch mit der nachfolgend beschriebenen Möglichkeit versuchen – ähnlich des Verweises bei den Datendeklarationen mit LIKE.

Einen Verweis auf ein anderes Objekt können Sie auch bei der Druckposition verwenden, indem Sie einfach auf die Position einer anderen Variablen verweisen. Sollte sich die Position der führenden Variablen ändern, ziehen alle anderen referenzierenden Variablen automatisch nach. Hierzu wird beim WRITE-Kommando die Aufbereitungsoption UNDER verwendet. Editieren Sie die Zeilen 33 bis 39 wie folgt:

33         / 'zahl02', zahl02 UNDER zahl01,
34 / 'ergebnis_addition:',
ergebnis_addition UNDER zahl01,
35 / 'ergebnis_subtraktion:',
ergebnis_subtraktion UNDER zahl01,
36 / 'ergebnis_multiplikation:',
ergebnis_multiplikation UNDER zahl01,
37 / 'ergebnis_division_genau:',
ergebnis_division_genau UNDER zahl01,
38 / 'ergebnis_division_ganzzahl:',
ergebnis_division_ganzzahl UNDER zahl01,
39 / 'ergebnis_division_rest:',
ergebnis_division_rest UNDER zahl01.

Nach dem Sichern, Prüfen, Aktivieren und Ausführen des Reports sollte das Listbild wie in Abbildung 4.7 aussehen.

Listbild mit spaltengerechter Ausgabe

Abbildung 4.7    Listbild mit spaltengerechter Ausgabe

 


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