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.2    Felder deklarieren Zur vorigen ÜberschriftZur nächsten Überschrift

Wie in der Praxis müssen auch bei unserer Teilnehmerverwaltung Inhalte einer oder mehrerer Tabellen im Report durch Berechnungen weiterverarbeitet, ergänzt oder ausgewertet werden. Hierzu benötigen wir im Report eigene Felder.

Auch ABAP verfügt über Regeln, auf welche Weise Felder verarbeitet werden. Das System muss die Zahlen in unserem Beispiel zwischenspeichern, ablegen und sie sich für folgende Verarbeitungsschritte wieder zurückholen. Hierzu werden die Werte an einem Ort bzw. einer Datenadresse im Speicher temporär abgelegt.

In ABAP heißen diese Orte Felder oder Datenobjekte. Sind die Inhalte der Datenobjekte durch ABAP-Anweisungen veränderbar, spricht man von Variablen, sind sie es nicht, spricht man von Konstanten.

 
Zum Seitenanfang

4.2.1    Variablen deklarieren Zur vorigen ÜberschriftZur nächsten Überschrift

Bei der Namensvergabe für Variablen müssen Sie Folgendes beachten:

  • Der Name soll mit einem Buchstaben beginnen; er darf nicht ausschließlich aus Ziffern bestehen.

  • Der Name darf maximal 30 Zeichen lang sein.

  • Der Name soll möglichst keine Sonderzeichen enthalten, bis auf den Unterstrich. Ausdrücklich verbotene Sonderzeichen sind Plus (+), Komma (,), Doppelpunkt (:), Klammer auf (() und Klammer zu ()).

  • Für den Namen dürfen keine reservierten Wörter für ABAP-Anweisungen oder Zusätze verwendet werden.

[+]  Sprechende Variablen

Die Namen der Variablen sollten darüber hinaus sprechend, d. h. selbsterklärend sein. Nennen Sie die Variable für einen Familiennamen z. B. FAMILIENNAME und nicht A1. Legen Sie großen Wert auf Lesbarkeit, und seien Sie dementsprechend gnädig mit Dritten – Sie könnten es in wenigen Wochen selbst sein.

Felder haben einen symbolischen Namen (z. B. ZAHL01), eine definierte Länge und einen Datentyp. Über die symbolischen Namen werden die Speicheradressen angesprochen, und die dort abgelegten Inhalte können gelesen und verarbeitet werden. Für die Verarbeitung gelten je nach Datentyp entsprechende Regeln, die allerdings von Programmiersprache zu Programmiersprache sehr unterschiedlich sind.

Sollen sich die Inhalte unserer Zahlenfelder verändern können, deklarieren wir für den Einstieg unsere Felder mit der DATA-Anweisung. Für unsere Berechnungen bieten sich vorerst zwei Datentypen für die Variablen an, nämlich ganze Zahlen (Integer) und Dezimalzahlen.

Soll das Feld ZAHL01 eine ganze Zahl enthalten, lautet die Anweisung folgendermaßen:

DATA zahl01 TYPE i.

Soll das Feld ZAHL01 hingegen eine Dezimalzahl mit zwei Nachkommastellen sein, lautet die Anweisung:

DATA zahl01 TYPE p DECIMALS 2.

Bei der Entscheidung, welche Deklaration sinnvoller ist, kommt es demnach auf den Verwendungszweck an. Felder vom Typ i werden üblicherweise für Zähler oder Stückzahlen verwendet. Felder vom Typ p sind für arithmetische Berechnungen mit Nachkommastellen üblich. Wichtig ist, vor der weiteren Programmierung zu überlegen, welche Rechen- und Anzeigegenauigkeit bei der gewünschten Berechnung erforderlich ist, weil sich die Zahl der nötigen Nachkommastellen hiernach richtet – denken Sie z. B. an Wechselkurse. Fünf Nachkommastellen sind in solchen Fällen keine Seltenheit, wogegen die 14 erlaubten Nachkommastellen eher selten ausgereizt werden.

Beide Datentypen, i und p, sind für ABAP elementare Datentypen mit fester Länge. Deshalb müssen Sie die Feldlänge hier nicht explizit angeben. Die beiden Datentypen sind zwei von acht dieser in ABAP eingebauten elementaren Datentypen fester Länge.

[»]  Umfassenderes Typkonzept

Einen elementaren Datentyp variabler Länge werden Sie noch kennenlernen. Für ein leichteres Verständnis beschränken wir uns vorerst auf die wichtigsten Datentypen. Auf die Darstellung von Referenzdatentypen und komplexen Datentypen wird verzichtet. Sie sollten jedoch im Hinterkopf behalten, dass das Typkonzept in ABAP für fortgeschrittene Anwendungen viel umfassender ist, als hier dargestellt.

Möchten Sie zwei Variablen gleichlautend deklarieren, müssen Sie zwei Anweisungszeilen schreiben und darauf achten, dass Sie dieselben Attribute verwenden, beispielsweise:

DATA zahl01 TYPE p DECIMALS 2.
DATA zahl02 TYPE p DECIMALS 2.

Dies hat allerdings den entscheidenden Nachteil, dass Sie immer selbst dafür sorgen müssen, die Deklaration von ZAHL02 nachzupflegen, falls sich die Deklaration von ZAHL01 ändert. Bei vielen abhängigen Deklarationen wird dies schnell zu einer sehr mühseligen und langatmigen Arbeit. Einfacher ist es, bei ZAHL02 auf die Deklaration von ZAHL01 zu verweisen. Dies geschieht mit dem Zusatz LIKE:

DATA zahl01 TYPE p DECIMALS 2.
DATA zahl02 LIKE zahl01.

Damit ist gewährleistet, dass die Deklaration von ZAHL02 immer richtig bleibt, da sie so an die Deklaration von ZAHL01 geknüpft ist. Sollte einmal ein Anlass bestehen, die Zahl der Dezimalstellen beispielsweise von zwei auf vier zu erhöhen, muss nur die Deklaration von ZAHL01 geändert werden; die Deklaration von ZAHL02 wird automatisch angepasst. Natürlich gilt dies entsprechend für alle Variablen in einem Report, die auf die Deklaration von ZAHL01 verweisen.

Auf diese Weise können Sie zwar erreichen, dass Inkonsistenzen innerhalb eines Reports vermieden werden, aber falls in verschiedenen Reports gleichlautende Deklarationen von Variablen benötigt werden, müssen Sie sich bei der Deklaration beispielsweise auf ein Tabellenfeld im ABAP Dictionary beziehen. Möchten Sie im Report die Variable LAUFENDE_NUMMER genauso deklarieren wie das Feld TNUMMER der Tabelle ZTEILNEHMER, schreiben Sie:

DATA laufende_nummer TYPE zteilnehmer-tnummer.

Mit dieser Methode müssen Sie in den einzelnen Reports keine Anpassung dieser Variablen mehr vornehmen. Sollte sich je eine Änderung hinsichtlich der Länge ergeben, betrifft sie ausschließlich die Domäne des Tabellenfeldes. Alle betroffenen Reports werden automatisch beim ersten Start nach der Änderung nachgeneriert, und kein einziger Quellcode muss aus diesem Grund mehr geändert werden.

[zB]  Postleitzahlen

Der Praxisbezug dieses Vorgehens wird schnell deutlich, wenn Sie sich daran erinnern, dass in der Bundesrepublik die Postleitzahlen früher vierstellig waren und im Jahr 1993 auf fünf Stellen umgestellt wurden. Teilweise mussten Entwickler in Hunderten kundenspezifischer Programme das Postleitzahlenfeld suchen und umstellen, die Programme wieder binden und kompilieren. Dies war eine absolut lästige Angelegenheit – man glaubt gar nicht, wie viele verschiedene Möglichkeiten es gibt, um das Wort »Postleitzahl« abzukürzen und eine Variable zu deklarieren! Mit unserer Methode wäre das Problem schnell gelöst gewesen.

Ähnliche Probleme treten auf, wenn Unternehmen – beispielsweise bedingt durch eine Fusion – ihre Organisation erheblich umstellen und plötzlich das früher einstellige Regionskennzeichen nicht mehr ausreicht, um knapp fünfhundert Regionen zu unterscheiden, in denen das Unternehmen tätig ist. Oder, um zum Beispiel Postleitzahl zurückzukehren, das Unternehmen wird international tätig und muss neben rein numerischen Postleitzahlen auch englische Postleitzahlen verwalten, die Buchstaben enthalten.

Für jeden Datentyp vergibt das System Initialwerte. Für die Datentypen i und p belegt das SAP-System das Feld zunächst mit dem Wert 0. Manchmal kann es jedoch sehr nützlich sein, eine Variable selbst mit einem Startwert zu versehen – hierzu verwenden Sie bei der DATA-Anweisung den Zusatz VALUE. Soll beispielsweise die Variable ZAHL01 eine ganze Zahl darstellen und mit dem Wert 5 vorbelegt werden, lautet die Anweisung:

DATA zahl01 TYPE i VALUE 5.

Bei einer Vorbelegung mit dem negativen Wert –105 müsste das negative Vorzeichen mitgeschrieben werden, und die Anweisung würde entsprechend lauten:

DATA zahl01 TYPE i VALUE -105.

Auch dies ist relativ einfach. Soll die Variable ZAHL01 hingegen eine Dezimalzahl mit zwei Nachkommastellen sein, wird das Ganze schon etwas aufwendiger. Lautet der Plan, die Variable ZAHL01 beispielsweise mit dem Wert 3,14 vorzubelegen, würde man eigentlich eine Anweisung vermuten wie:

DATA zahl01 TYPE p DECIMALS 2 VALUE 3,14.

Dies funktioniert aber leider nicht: Der Doppelpunkt nach DATA fehlt, und das Komma ist für einen Kettensatz und eine zweite Anweisung reserviert, in diesem Fall:

DATA 14.

Dies ergäbe leider auch keinen Sinn. Es funktioniert auch nicht, für das Dezimaltrennzeichen anstelle des Kommas einen Punkt einzusetzen. Grundsätzlich ist diese Idee ausgezeichnet, weil das System intern als Dezimaltrennzeichen tatsächlich einen Punkt verwendet, aber wie Sie wissen, ist der Punkt für das Ende einer Anweisung reserviert. Für das System würden dann zwei Anweisungen in einer Zeile stehen, wobei die zweite keinen Sinn ergibt.

Deshalb ist es formal korrekt, wenn Sie den Vorbelegungswert in ein Literal schreiben:

DATA zahl01 TYPE p DECIMALS 2 VALUE '3.14'.

Bei der Vorbelegung mit der negativen Zahl –4,56 lautet die richtige Syntax entsprechend:

DATA zahl01 TYPE p DECIMALS 2 VALUE '-4.56'.
 
Zum Seitenanfang

4.2.2    Konstanten deklarieren Zur vorigen ÜberschriftZur nächsten Überschrift

Der Vollständigkeit halber erwähnen wir hier, dass wir für die Deklaration von Konstanten, d. h. Feldern mit gleichbleibendem unveränderten Inhalt, mit einer eigenen Anweisung namens CONSTANTS arbeiten. Damit werden wir denjenigen Fällen gerecht, in denen gewährleistet sein muss, dass ein Feldinhalt während der Laufzeit des Reports unverändert bleiben soll. Stoßen Sie in der Praxis auf ein solches Beispiel, ist die CONSTANTS-Anweisung geeigneter als die DATA-Anweisung. Das System unterstützt dieses Konzept dadurch, dass bei Veränderungsversuchen dieser Felder Syntax- oder Laufzeitfehler generiert werden.

Da diese Anweisungen allerdings bis auf den Verwendungszweck weitgehend identisch sind, verzichten wir für den Einstieg auf die CONSTANTS-Anweisung. Für einfache arithmetische Operationen könnten unsere Deklarationen deshalb vorerst so aussehen:

DATA zahl01 TYPE p DECIMALS 2 VALUE '-4.56'.
DATA zahl02 LIKE zahl01 VALUE '5.67'.
DATA ergebnis LIKE zahl01.

Die Variable ZAHL01 gibt den Datentyp p und die Anzahl von zwei Dezimalstellen vor. Außerdem wird der Variablen die negative Zahl –4,56 als Startwert zugewiesen. Die Variable ZAHL02 verweist hinsichtlich des Typs und der Dezimalstellen auf die Variable ZAHL01 und erhält als Startwert die Zahl 5,67. Die Variable ERGEBNIS verweist hinsichtlich des Typs und der Dezimalstellen ebenfalls auf ZAHL01.

Der Vorteil dieser Schreibweise besteht darin, dass bei einer Änderung der Deklaration nur die Deklaration von ZAHL01 geändert werden muss, die Deklarationen von ZAHL02 und ERGEBNIS werden automatisch angepasst.

 


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