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 8 Rechnen mit Datum und Zeit, Mengen und Währungen
Pfeil 8.1 Felddeklarationen
Pfeil 8.2 Rechnen mit Datumsfeldern
Pfeil 8.3 Rechnen mit Zeitfeldern
Pfeil 8.4 Rechnen mit Mengen- und Währungsfeldern
Pfeil 8.5 Codebeispiel zu Datums-, Zeit- und Währungsfeldern
 
Zum Seitenanfang

8.4    Rechnen mit Mengen- und Währungsfeldern Zur vorigen ÜberschriftZur nächsten Überschrift

Im Gegensatz zum Rechnen mit Datums- und Zeitfeldern ist das Rechnen mit Mengen- und Währungsfeldern relativ einfach, wenn Sie einige Grundregeln beachten. Solange Sie sich ausschließlich in der ABAP-Welt bewegen, betrachten Sie diese Felder genau wie alle anderen Felder vom Typ p; je nach betriebswirtschaftlicher Anforderung arbeitet man mit unterschiedlich vielen Dezimalstellen. In der Praxis ist die Anzahl der Nachkommastellen sehr bedeutsam für die Rechengenauigkeit und kann wesentlich höher liegen als die Anzahl der in einer Liste ausgewiesenen Dezimalstellen. Exemplarisch sei hier nur auf die Bedeutung der Rechengenauigkeit bei Wechselkursumrechnungen von Währungen hingewiesen.

Werden Mengen- und Währungsfelder aus dem ABAP Dictionary mit Berechnungen in ABAP-Programmen verbunden, kann man nicht mehr so frei operieren. In solchen Fällen müssen Sie die Felddeklarationen der ABAP-Seite auf die Deklarationen im ABAP Dictionary abstimmen, um zu verhindern, dass Informationen verloren gehen.

Diese Abstimmung bezieht sich insbesondere auf zwei Aspekte: auf die Anzahl der Nachkommastellen und auf die zugehörigen Mengen- und Währungsschlüssel. Im ABAP Dictionary entspricht ein Währungsfeld zwar einem Betragsfeld vom Typ DEC, hat aber einen eigenen Datentyp CURR und bezieht sich immer auf ein zugehöriges Währungsschlüsselfeld vom Typ CUKY. Außerdem dürfen Währungsfelder bis zu 17 Stellen lang sein. Die Währungsschlüsselfelder vom Typ CUKY auf der Dictionary-Seite entsprechen Zeichenkettenfeldern vom Typ c auf der ABAP-Seite und haben die feste Länge von fünf Zeichen. Es empfiehlt sich deshalb dringend, bei der Deklaration der jeweiligen Felder auf der ABAP-Seite keine selbst erfundenen Deklarationen zu verwenden, sondern immer auf die Deklarationen im ABAP Dictionary zu verweisen. Sollte sich auf der Dictionary-Seite eine Deklaration ändern, gibt es außerdem kein Problem mit der Aktualisierung der relevanten ABAP-Reports.

Diese Grundregeln gelten für Mengen- und Währungsfelder gleichermaßen, nur dass für Mengenfelder der spezielle Datentyp auf der Dictionary-Seite QUAN heißt und die Mengeneinheiten in zugehörigen Feldern vom Typ UNIT stehen. Die Felder für die Mengeneinheiten können auf der Dictionary-Seite zwei oder drei Stellen haben und entsprechen auf der ABAP-Seite wiederum Zeichenketten vom Typ c der gleichen Länge. Mengenfelder können auf der Dictionary-Seite ebenfalls bis zu 17 Stellen haben und sind auf der ABAP-Seite als Felder vom Typ p zu deklarieren.

Wie bei den Währungsfeldern wird auch bei den Mengenfeldern dringend empfohlen, keine eigenen Deklarationen auf der ABAP-Seite zu erfinden, sondern ebenfalls auf bestehende Deklarationen des ABAP Dictionarys zu verweisen.

Aufgrund der strukturellen Ähnlichkeiten von Mengen- und Währungsfeldern wird diese Thematik nur an einem Beispiel erläutert. Aus der Teilnehmertabelle sollen der Name des Teilnehmers, der Kurspreis und die Kurswährung gelesen werden. Alle Teilnehmer sind in einer Liste auszugeben; dabei sollen in einer Zeile der Teilnehmername, der Kurspreis, der Mehrwertsteuerbetrag und der Rechnungsbetrag stehen.

  1. Im ersten Schritt setzen Sie den Satz für die Mehrwertsteuer und weisen diesen dem Feld MWST_SATZ zu. Das Feld soll den Faktor für die Steuer enthalten und ist deshalb mit dem Datentyp p und zwei Nachkommastellen deklariert. In der Praxis sind Werte wie der Mehrwertsteuersatz natürlich in Tabellen hinterlegt und werden nicht hart in den Quellcode hineincodiert. Für den Einstieg wird jedoch in diesem Beispiel darüber hinweggesehen.

    mwst_satz = '0.19'.
  2. Die Daten aus der Tabelle müssen Sie satzweise verarbeiten und ausgeben. Hierzu müssen Sie die Sätze nacheinander in eine Workarea lesen und eine Schleife starten, um alle Felder aller Sätze der Tabelle zu lesen:

    SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02.
  3. Sofern die Tabelle überhaupt Daten enthält, steht nun ein Datensatz in der Workarea. Alle Felder sind bekannt und können angesprochen werden. Durch die Multiplikation des Kurspreises mit dem Steuerfaktor wird der Mehrwertsteuerbetrag ermittelt und in das Zielfeld geschrieben. Wie bereits geschildert, sollte auch das Feld MWST_BETRAG hinsichtlich seiner Deklaration auf das Dictionary-Feld ZTEILNEHMER02-TKURSPREIS verweisen.

    mwst_betrag =
    mwst_satz * wa_zteilnehmer02-tkurspreis.
  4. Durch die Addition von Mehrwertsteuerbetrag und Kurspreis ergibt sich der zu bezahlende Rechnungsbetrag. Auch das Feld RECHNUNGSBETRAG sollte bezüglich seiner Deklaration auf das Feld ZTEILNEHMER02-TKURSPREIS verweisen:

    rechnungsbetrag =
    mwst_betrag + wa_zteilnehmer02-tkurspreis.
  5. Alle nötigen Felder sind damit berechnet, und die Ausgabe der Listzeile kann erfolgen:

    WRITE: / wa_zteilnehmer02-tname,
    wa_zteilnehmer02-tkurspreis,
    wa_zteilnehmer02-twaehrung,
    mwst_betrag,
    wa_zteilnehmer02-twaehrung,
    rechnungsbetrag,
    wa_zteilnehmer02-twaehrung.
  6. Nachdem alle Sätze der Tabelle gelesen, verarbeitet und ausgegeben wurden, kann die Leseschleife wieder geschlossen werden:

    ENDSELECT.

 


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