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 3 Programmieren im ABAP Editor
Pfeil 3.1 ABAP-Report anlegen
Pfeil 3.2 ABAP Editor im Überblick
Pfeil 3.2.1 Modi des ABAP Editors
Pfeil 3.2.2 Steuerung des ABAP Editors
Pfeil 3.3 ABAP-Programme verstehen und bearbeiten
Pfeil 3.4 ABAP-Report ausführen
Pfeil 3.5 Datenbanktabelle lesen und ausgeben
Pfeil 3.6 Aufbereitung von Listen
Pfeil 3.6.1 Kettensatz
Pfeil 3.6.2 Linien
Pfeil 3.6.3 Leerzeilen
Pfeil 3.7 Quellcode schreiben und editieren
 
Zum Seitenanfang

3.7    Quellcode schreiben und editieren Zur vorigen ÜberschriftZur nächsten Überschrift

Ihren ersten Quellcode (siehe Listing 3.1) sollten Sie ruhig von Hand eintippen, um sich mit dem ABAP Editor vertraut zu machen. Leerzeilen im Quelltext erzeugen Sie einfach mit der (¢)-Taste. Außerdem stehen Ihnen die üblichen Funktionen zum Kopieren und Einfügen wie (Strg) + (C), (Strg) + (V) etc. zur Verfügung, und Sie können den Umgang mit den zusätzlichen Funktionen des ABAP Editors für ganze Zeilen oder Zeilenblöcke üben, die im Abschnitt 3.2.2, »Steuerung des ABAP Editors«, beschrieben wurden.

 1  *&---------------------------------------------*
2 *& Report Z_TEILNEHMERLISTE01 *
3 *& *
4 *&---------------------------------------------*
5 *& *
6 *&---------------------------------------------*
7
8 REPORT z_teilnehmerliste01.
9 DATA wa_zteilnehmer
TYPE zteilnehmer. " Workarea deklarieren
10 WRITE 'Dies ist meine erste Liste'.
11 ULINE. " Waagerechter Strich
12
13 * Alle Sätze der Tabelle mit allen Feldern
14 * satzweise in Workarea übertragen,
15 * Struktur in neuer Zeile ausgeben
16 SELECT * FROM zteilnehmer INTO wa_zteilnehmer
17 ORDER BY PRIMARY KEY.
18 WRITE / wa_zteilnehmer.
19 ENDSELECT.
20 SKIP. " Eine Leerzeile
21
22 * SELECT-Anweisung wie oben,
23 * einzelne Felder eines Satzes in neuer Zeile ausgeben
24 SELECT * FROM zteilnehmer INTO wa_zteilnehmer
25 ORDER BY PRIMARY KEY.
26 WRITE / wa_zteilnehmer-tgeburtsdatum.
27 WRITE wa_zteilnehmer-tname.
28 ENDSELECT.
29 SKIP. " Eine Leerzeile
30
31 * SELECT-Anweisung wie oben
32 * Felder ausgeben wie oben, jedoch
33 * WRITE-Anweisung als Kettensatz
34 SELECT * FROM zteilnehmer INTO wa_zteilnehmer
35 ORDER BY PRIMARY KEY.
36 WRITE: / wa_zteilnehmer-tgeburtsdatum,
37 wa_zteilnehmer-tname.
38 ENDSELECT.

Listing 3.1    Report Z_TEILNEHMERLISTE01

[»]  Download-Angebot

Alle Quellcodes, auch Listing 3.1, stehen Ihnen im Download-Angebot zu diesem Buch unter http://www.sap-press.de/3878 zum Download zur Verfügung. Scrollen Sie auf dieser Seite nach unten zum Bereich Materialien zum Buch.

Anmerkungen zum Quellcode

Sie starten mit dem Editieren in Zeile 9, unmittelbar nach der automatisch eingefügten REPORT-Anweisung. Die ersten acht Zeilen fügt das System automatisch ein; sie dienen zur Kurzdokumentation für das Programm, den Autor, das Erstellungsdatum sowie die Änderungshistorie.

Zeile 9
DATA wa_zteilnehmer TYPE zteilnehmer. " Workarea deklarieren

In dem Report wird damit die Datenstruktur WA_ZTEILNEHMER angelegt, die auf die Datenbanktabelle ZTEILNEHMER typisiert ist, d. h. den gleichen Aufbau besitzt wie diese.

Der Report hat damit eine Workarea WA_ZTEILNEHMER, die als Arbeitsbereich für das Arbeiten mit Daten der Tabelle ZTEILNEHMER dienen kann. Die Anweisung wird mit einem Punkt abgeschlossen.

Nach den Leerzeichen beginnt in derselben Zeile (der Umbruch Listing 3.1 ist darstellungsbedingt) nach den Gänsefüßchen der Kommentar »Workarea deklarieren«; alle Zeichen der Zeile rechts von den Gänsefüßchen werden vom System als Kommentarzeichen verstanden. Auch wenn Sie eine Anweisung über mehrere Zeilen schreiben, können Sie so Kommentare in den einzelnen Zeilen einfügen; der Kommentar würde dann sozusagen mitten in der Anweisung stehen.

Zeile 10
WRITE 'Dies ist meine erste Liste'.

Der Text in Hochkommata wird in der Liste an der aktuellen Position ausgegeben. Da es sich um die erste WRITE-Anweisung handelt, ist die aktuelle Position hierfür Zeile 1, Spalte 1.

Zeile 11
ULINE. " Waagerechter Strich

ULINE produziert eine waagerechte Linie über die ganze Breite der Liste. Damit ist die Listenüberschrift vom Rest der Liste abgegrenzt.

Zeile 12

Die Leerzeile soll die Lesbarkeit des Quellcodes erhöhen.

Zeile 13, 14 und 15
* Alle Sätze der Tabelle mit allen Feldern
* satzweise in Workarea übertragen,
* Struktur in neuer Zeile ausgeben

Diese drei Zeilen sind reine Kommentarzeilen, die die nachfolgenden Anweisungen erklären sollen.

Zeile 16 und 17
SELECT * FROM zteilnehmer INTO wa_zteilnehmer
ORDER BY PRIMARY KEY.

Die SELECT-Anweisung liest eine Datenbanktabelle aus. In einer Schleife werden alle Datensätze der Tabelle gelesen und Satz für Satz in die Workarea des Programms übertragen. Dabei werden die Datensätze, explizit nach dem Primärschlüssel sortiert, angefordert. In der Workarea steht jeweils ein ganzer Satz der Tabelle, der von dort aus weiterverarbeitet wird. Ist die Verarbeitung des Satzes abgeschlossen, wird der nächste Satz gelesen. Das Sternchen beschreibt, dass alle Felder eines Satzes selektiert werden.

Zeile 18
WRITE / wa_zteilnehmer.

Durch den Schrägstrich nach der WRITE-Anweisung erfolgt die Ausgabe in der Liste nicht an der aktuellen Druckposition, sondern in einer neuen Zeile in Spalte 1. Beachten Sie hierbei unbedingt, dass sowohl vor als auch nach dem Schrägstrich ein Leerzeichen stehen muss.

Durch die Schreibweise der Option WA_ZTEILNEHMER wird die Workarea als Ganzes, d. h. als eine Zeichenkette ausgegeben. Die Länge der Zeichenkette ergibt sich durch die Summe der Länge der Felder. In der Zeichenkette sind die Felder ihrem Typ entsprechend in der internen Schreibweise dargestellt; eine Druckaufbereitung erfolgt nicht.

Zeile 19
ENDSELECT.

Die ENDSELECT-Anweisung schließt die offene SELECT-Struktur. Wie bei anderen Schleifen auch zu jedem öffnenden Kommando ein schließendes Kommando gehört, gehört zu jeder SELECT-Anweisung, sofern es sich um eine Schleife handelt, eine ENDSELECT-Anweisung.

[»]  Wie in der Mathematik

Vergleichen können Sie das am besten mit der Klammerregelung in der Mathematik: Zu einer öffnenden Klammer gehört immer eine schließende Klammer; es handelt sich immer um Klammerpaare.

Beim Schachteln von Klammern müssen Sie darauf achten, die richtige Zuordnung zu treffen. Dies gilt auch bei Schleifen in der Programmierung; beim Schachteln von Schleifenstrukturen müssen Sie ebenfalls beachten, dass die Schleife an der richtigen Stelle geöffnet wird, die Schleifenverarbeitung richtig läuft und die Schleife wieder geschlossen wird. Zwar schachteln wir noch keine Schleifen und sonstige Strukturen, das Prinzip gilt aber schon jetzt.

Zeile 20
SKIP. " Eine Leerzeile

Die SKIP-Anweisung erzeugt lediglich eine Leerzeile in der Liste. Dies ist immer dann sinnvoll, wenn die Lesbarkeit der Liste erhöht werden soll.

Zeile 21, 22 und 23

Hier stehen eine Leerzeile und zwei Kommentarzeilen im Quelltext, analog zu den Zeilen 12 bis 15.

Zeile 24 und 25
SELECT * FROM zteilnehmer INTO wa_zteilnehmer
ORDER BY PRIMARY KEY.

Noch einmal werden alle Sätze der Tabelle in einer Schleife wie in Zeile 16 gelesen. Der Unterschied besteht jedoch in der nachfolgenden Satzverarbeitung.

Zeile 26
WRITE / wa_zteilnehmer-tgeburtsdatum.
[»]  Auf die Schreibweise achten

Mit dieser WRITE-Anweisung wird ein Feld ausgegeben, und zwar das Feld TGEBURTSDATUM der Workarea WA_ZTEILNEHMER. Beachten Sie dabei die allgemein gültige Schreibweise Strukturname-Feldname. Sollte das Feld oder die Struktur ebenfalls einen Bindestrich als Teil des Namens enthalten, könnte das System die Anweisung nicht eindeutig identifizieren und interpretieren. Aus diesem Grund sollten Sie bei allen Namensbezeichnungen – wenn überhaupt – immer nur mit dem Unterstrich ( _ ) arbeiten, beispielsweise STRUKTUR_A-FELD_B. Der Schrägstrich nach der WRITE-Anweisung bewirkt wieder die Ausgabe in eine neue Zeile in Spalte 1.

Zeile 27
WRITE   wa_zteilnehmer-tname.

Auch mit dieser WRITE-Anweisung wird ein Feld der Struktur ausgegeben, und zwar das Feld TNAME. Die Ausgabe erfolgt in der Liste an der aktuellen Position, in unserem Fall in derselben Zeile nach dem Feld TGEBURTSDATUM.

Werden Felder nacheinander in dieselbe Zeile geschrieben, setzt das System standardmäßig ein Leerzeichen dazwischen. Ist die Zeile voll, fügt das System automatisch einen Zeilenumbruch ein.

Sie müssen bei dieser Ausgabeart selbst darauf achten, dass die Felder, die Sie in einer Zeile in der Liste haben möchten, in der Zeile auch Platz finden. Alternativ könnten Sie über den Zusatz LINE-SIZE der REPORT-Anweisung auch die Breite der Liste manipulieren.

Zeile 28
ENDSELECT.

Die ENDSELECT-Anweisung schließt die zuletzt geöffnete SELECT-Schleife aus Zeile 24.

Zeile 29
SKIP. " Eine Leerzeile

Wie in Zeile 20 des Quellcodes soll auch an dieser Stelle eine Leerzeile in der Liste die Lesbarkeit erhöhen.

Zeile 30 bis 33

Hier wurden erneut Leerzeilen und Kommentarzeilen im Quellcode eingefügt.

Zeile 34 und 35
SELECT * FROM zteilnehmer INTO wa_zteilnehmer
ORDER BY PRIMARY KEY.

Die Tabelle wird zum dritten Mal gelesen.

Zeile 36 und 37
WRITE: / wa_zteilnehmer-tgeburtsdatum,
wa_zteilnehmer-tname.

Um es vorwegzunehmen: Das Ergebnis in der Liste sieht genauso aus wie bei der zweiten Leseschleife. Der Unterschied liegt jedoch in der Schreibweise des Quellcodes: Wenn mehrere aufeinanderfolgende Anweisungen gleich lauten und sich nur durch Operanden unterscheiden, können Sie hierfür einen Kettensatz verwenden. In Zeile 36 steht nach der WRITE-Anweisung ohne Leerzeichen ein Doppelpunkt, das Zeichen für das System, dass jetzt mehrere WRITE-Anweisungen nacheinander folgen. Die einzelnen Anweisungen werden nicht durch einen Punkt abgeschlossen, sondern durch ein Komma getrennt. Nur die letzte Anweisung in Zeile 37 wird wie gewohnt mit einem Punkt abgeschlossen.

Die erste Anweisung in unserem Beispiel gibt das Feld TGEBURTSTAG der Struktur WA_ZTEILNEHMER in einer neuen Zeile in Spalte 1 aus. Sie wird mit einem Komma abgeschlossen. Die zweite Anweisung schreibt das Feld TNAME derselben Tabellenstruktur in der Liste mit einem Leerzeichen hinter das Feld TGEBURTSDATUM. Da diese Anweisung auch die letzte Anweisung des Kettensatzes ist, wird sie mit einem Punkt abgeschlossen. Beachten Sie, dass es sich bei einem Kettensatz um mehrere hintereinander folgende Anweisungen handelt – auch für den Kettensatz gilt das Prinzip, dass ein neues Kommando in eine neue Zeile gehört.

Zeile 38
ENDSELECT.

Schließlich dürfen Sie das Schließen der Schleife nicht vergessen; diese ENDSELECT-Anweisung gehört zur SELECT-Anweisung aus Zeile 34.

Listbild unseres Beispiel-Quellcodes

Wenn Sie das Listbild betrachten (siehe Abbildung 3.8), sehen Sie Ausgaben, die das System selbst generiert hat, wie z. B. den beschreibenden Text aus den Programmeigenschaften. Viel wichtiger sind für uns momentan aber die Ausgaben, die wir selbst erzeugt haben:

  • Die erste Zeile ist der Text »Dies ist meine erste Liste«.

  • Die zweite Zeile ist die waagerechte Linie unter dem Text.

  • Die nächsten drei Zeilen stellen die unformatierte Ausgabe der Tabellenstruktur dar. Eine Zeile der Liste entspricht dabei dem vollständigen Inhalt der Struktur. Da in der Tabelle drei Datensätze stehen, wurde die Verarbeitungsschleife dreimal durchlaufen, und es wurden drei Zeilen in die Liste geschrieben.

  • Anschließend sehen Sie nach der Leerzeile drei Zeilen mit Geburtsdatum und Namen in je einer Zeile. Beachten Sie, dass das Datum in einem anderen Format ausgegeben wurde als im ersten Block: Bei der Deklaration des Feldes in der Tabelle haben wir bereits den Feldtyp Datum festgelegt. Hierzu gehört implizit eine länderspezifische Darstellung des Datumsformats; in Deutschland ist es das Format DD.MM.YYYY für Tag (D), Monat (M) und Jahr (Y). Der interne Aufbau des Feldes ist aus der Ausgabe der Tabellenstruktur ersichtlich und lautet YYYYMMDD. Da nur zwei Felder der Tabellenstruktur ausgegeben werden sollten, erscheinen die restlichen Felder demnach auch nicht in der Liste.

  • Der dritte Block der Liste unterscheidet sich inhaltlich nicht vom zweiten Block; der Unterschied liegt lediglich im Quellcode: Dort wurde das WRITE-Kommando als Kettensatz angegeben.

Listbild für den Report Z_TEILNEHMERLISTE01

Abbildung 3.8    Listbild für den Report Z_TEILNEHMERLISTE01

Hat alles wie geplant funktioniert? Dann navigieren Sie mit dem Button Zurück (inline image, (F3)-Taste) wieder in den ABAP Editor – und wir widmen uns im nächsten Schritt den Feldern und Berechnungen.

 


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