ABAP- ABAP
Paradigma | Objektorientiert , strukturiert , zwingend |
---|---|
Entworfen von | SAP SE |
Erstmals erschienen | 1983 |
Stabile Version | 7.55 / 2. September 2020
|
Schreibdisziplin | Statisch , stark , sicher , nominativ |
Betriebssystem | Plattformübergreifend |
Webseite | scn |
Wichtige Implementierungen | |
SAP R/2 , SAP R/3 , SAP S/4HANA | |
Beeinflusst von | |
Ziel-C , COBOL , SQL |
ABAP (Advanced Business Application Programming, ursprünglich Allgemeiner Bericht-Aufbereitungs-Prozessor , Deutsch für "Gesamtbericht Vorbereitung Prozessor") ist eine High-Level - Programmiersprache von dem deutschen erstellten Software - Unternehmen SAP . Es ist derzeit neben Java als Programmiersprache für den SAP NetWeaver Application Server positioniert, der Teil der SAP NetWeaver- Plattform zum Erstellen von Geschäftsanwendungen ist.
Einführung
ABAP ist eine der vielen anwendungsspezifischen Sprachen der vierten Generation ( 4GLs ), die erstmals in den 1980er Jahren entwickelt wurden. Es war ursprünglich die Berichtssprache für SAP R/2 , eine Plattform, die es großen Unternehmen ermöglichte, Mainframe-Geschäftsanwendungen für die Materialwirtschaft und die Finanz- und Betriebsbuchhaltung zu erstellen. ABAP stellt die Integration zwischen unabhängiger Software her.
ABAP verwendet eine Abkürzung für sein A llgemeiner B erichts- A ufbereitungs- P rozessor , Deutsch für "generic Bericht Vorbereitung Prozessor", wurde aber später auf den englischen umbenannt A dvanced B usiness A pplikation P rogramming . ABAP war eine der ersten Sprachen, die das Konzept der Logischen Datenbanken (LDBs) beinhaltete, das einen hohen Abstraktionsgrad von der/den grundlegenden Datenbankebene(n) bietet, die alle Plattformen, Sprachen und Einheiten unterstützt.
Die Sprache ABAP wurde ursprünglich von Entwicklern verwendet, um die SAP R/3- Plattform zu entwickeln. Es sollte auch von SAP-Kunden zur Erweiterung von SAP-Anwendungen verwendet werden – Kunden können benutzerdefinierte Berichte und Schnittstellen zur ABAP-Programmierung entwickeln. Die Sprache war auf eher technische Kunden mit Programmiererfahrung ausgerichtet.
ABAP bleibt die Sprache für die Erstellung von Programmen für das Client-Server- R/3- System, das 1992 erstmals von SAP veröffentlicht wurde. Mit der Entwicklung der Computerhardware in den 1990er Jahren wurden immer mehr Anwendungen und Systeme von SAP in ABAP geschrieben. Bis 2001 wurden alle bis auf die grundlegendsten Funktionen in ABAP geschrieben. 1999 veröffentlichte SAP zusammen mit R/3-Release 4.6 eine objektorientierte Erweiterung von ABAP namens ABAP Objects.
Die aktuelle Entwicklungsplattform NetWeaver von SAP unterstützt sowohl ABAP als auch Java .
ABAP hat eine Abstraktion zwischen den Geschäftsanwendungen, dem Betriebssystem und der Datenbank. Dadurch wird sichergestellt, dass Anwendungen nicht direkt von einem bestimmten Server oder einer bestimmten Datenbankplattform abhängen und problemlos von einer Plattform auf eine andere portiert werden können.
SAP Netweaver läuft derzeit auf UNIX ( AIX , HP-UX , Solaris , Linux ), Microsoft Windows , i5/OS auf IBM System i (ehemals iSeries, AS/400) und z/OS auf IBM System z (ehemals zSeries, S .). /390). Unterstützte Datenbanken sind HANA , SAP ASE (ehemals Sybase), IBM DB2 , Informix , MaxDB , Oracle und Microsoft SQL Server (die Unterstützung für Informix wurde in SAP Basis Release 7.00 eingestellt).
ABAP-Laufzeitumgebung
Alle ABAP-Programme befinden sich in der SAP-Datenbank. Sie werden nicht in separaten externen Dateien wie Java- oder C++-Programmen gespeichert. In der Datenbank existiert der gesamte ABAP-Code in zwei Formen: Quellcode, der mit den Werkzeugen der ABAP Workbench angezeigt und bearbeitet werden kann; und generierter Code, eine binäre Darstellung, die mit Java- Bytecode vergleichbar ist . ABAP-Programme werden unter der Kontrolle des Laufzeitsystems ausgeführt, das Teil des SAP-Kernels ist. Das Laufzeitsystem ist verantwortlich für die Verarbeitung von ABAP-Anweisungen, die Steuerung der Ablauflogik von Dynpros und die Reaktion auf Ereignisse (z. B. ein Benutzer, der auf eine Bildschirmschaltfläche klickt); insofern ist sie als Virtual Machine vergleichbar mit der Java VM zu sehen. Ein wesentlicher Bestandteil des ABAP-Laufzeitsystems ist das Database Interface, das datenbankunabhängige ABAP-Anweisungen ("Open SQL") in Anweisungen umwandelt, die vom zugrunde liegenden DBMS ("Native SQL") verstanden werden. Die Datenbankschnittstelle wickelt im Auftrag von ABAP-Programmen die gesamte Kommunikation mit der relationalen Datenbank ab; Es enthält auch zusätzliche Funktionen wie das Puffern von Tabellen und Daten, auf die häufig zugegriffen wird, im lokalen Speicher des Anwendungsservers.
SAP-Systeme und -Landschaften
Alle SAP-Daten sind vorhanden und alle SAP-Software läuft im Kontext eines SAP-Systems . Ein System besteht aus einer zentralen relationalen Datenbank und einer oder mehreren Anwendungen ("Instanzen"), die auf die Daten und Programme in dieser Datenbank zugreifen. Ein SAP-System enthält mindestens eine Instanz, kann aber auch mehr enthalten, meist aus Gründen der Dimensionierung und Performance. In einem System mit mehreren Instanzen sorgen Load-Balancing-Mechanismen dafür, dass die Last gleichmäßig auf die verfügbaren Anwendungsserver verteilt wird.
Installationen des Web Application Servers ( Landschaften ) bestehen typischerweise aus drei Systemen: einem für die Entwicklung; eine für Tests und Qualitätssicherung; und einer für die Produktion. Die Landschaft kann mehr Systeme enthalten (zB separate Systeme für Unit-Tests und Pre-Production-Tests) oder weniger (zB nur Entwicklung und Produktion, ohne separate QA); dennoch ist drei die gebräuchlichste Konfiguration. ABAP-Programme werden erstellt und im Entwicklungssystem einem ersten Test unterzogen. Anschließend werden sie an die anderen Systeme in der Landschaft verteilt. Diese Aktionen finden unter der Kontrolle des Change and Transport System (CTS) statt, das für die Kontrolle der Parallelität (z Produktionssysteme.
Der Web Application Server besteht aus drei Schichten: der Datenbankschicht; die Anwendungsschicht; und die Präsentationsschicht. Diese Schichten können auf derselben oder auf verschiedenen physischen Maschinen ausgeführt werden. Die Datenbankschicht enthält die relationale Datenbank und die Datenbanksoftware. Das Wissen der Anwendungsschicht enthält die Instanz oder Instanzen des Systems. Alle Anwendungsprozesse, einschließlich der Geschäftsvorgänge und der ABAP-Entwicklung, laufen auf der Anwendungsschicht. Die Präsentationsschicht handhabt die Interaktion mit Benutzern des Systems. Der Online-Zugriff auf ABAP-Anwendungsserver kann über eine proprietäre grafische Oberfläche, die als "SAP GUI" bezeichnet wird, oder über einen Webbrowser erfolgen.
Softwareschichten
ABAP-Software wird in Softwarekomponenten eingesetzt. Beispiele hierfür sind:
- SAP_BASIS ist die erforderliche technische Basisschicht, die in jedem ABAP-System benötigt wird.
- SAP_ABA enthält Funktionalitäten, die für alle Arten von Geschäftsanwendungen wie Geschäftspartner- und Adressverwaltung benötigt werden.
- SAP_UI bietet die Funktionalität zum Anlegen von SAP-UI5-Anwendungen.
- BBPCRM ist ein Beispiel für eine Geschäftsanwendung, in diesem Fall die CRM-Anwendung
- SAP ABAP ist eine ERP-Programmiersprache.
Transaktionen
Eine Transaktion in der SAP-Terminologie ist die Ausführung eines Programms. Die normale Ausführung von ABAP-Code im SAP-System ist die Eingabe eines Transaktionscodes (zB VA01 ist der Transaktionscode für "Kundenauftrag anlegen"). Transaktionen können über systemdefinierte oder benutzerspezifische, rollenbasierte Menüs aufgerufen werden. Sie können auch gestartet werden, indem der Transaktionscode direkt in ein Befehlsfeld eingegeben wird, das in jedem SAP-Bild vorhanden ist. Transaktionen können auch programmatisch über die ABAP-Anweisungen CALL TRANSACTION und LEAVE TO TRANSACTION aufgerufen werden. Der allgemeine Begriff einer Transaktion wird in der SAP-Terminologie als Logical Unit of Work (LUW) bezeichnet; die Kurzform des Transaktionscodes ist T-Code .
Arten von ABAP-Programmen
Wie in anderen Programmiersprachen ist ein ABAP-Programm entweder eine ausführbare Einheit oder eine Bibliothek, die anderen Programmen wiederverwendbaren Code zur Verfügung stellt und nicht eigenständig ausführbar ist.
ABAP unterscheidet zwei Arten von ausführbaren Programmen:
- Berichte
- Modulpools
Berichte folgen einem relativ einfachen Programmiermodell, bei dem ein Benutzer optional einen Satz von Parametern eingibt (zB eine Auswahl über einen Teilsatz von Daten) und das Programm dann die Eingabeparameter verwendet, um einen Bericht in Form einer interaktiven Liste zu erstellen. Der Begriff "Bericht" kann insofern etwas irreführend sein, als Berichte auch so gestaltet werden können, dass sie Daten ändern ; Der Grund, warum diese Programme als Berichte bezeichnet werden, ist die "listenorientierte" Natur der von ihnen erzeugten Ausgabe.
Modulpools definieren komplexere Muster der Benutzerinteraktion unter Verwendung einer Sammlung von Bildschirmen. Der Begriff „Bildschirm“ bezieht sich auf das tatsächliche, physische Bild, das der Benutzer sieht. Jedes Dynpro besitzt außerdem eine "Ablauflogik", die sich auf den von den Dynpros implizit aufgerufenen ABAP-Code bezieht, der in einen "PBO" (Process Before Output) und "PAI" (Process After Input) Abschnitt unterteilt ist. In der SAP-Dokumentation bezeichnet der Begriff „Dynpro“ (dynamisches Programm) die Kombination des Dynpros und seiner Ablauflogik.
Die nicht ausführbaren Programmtypen sind:
- Module einschließen
- Subroutinen-Pools
- Funktionsgruppen
- Objektklassen
- Schnittstellen
- Typpools
Ein INCLUDE-Modul wird zum Zeitpunkt der Generierung in die aufrufende Einheit aufgenommen; es wird oft verwendet, um große Programme zu unterteilen.
Subroutinen-Pools enthalten ABAP-Subroutinen (Codeblöcke, die von FORM/ENDFORM-Anweisungen eingeschlossen und mit PERFORM aufgerufen werden).
Funktionsgruppen sind Bibliotheken in sich abgeschlossener Funktionsbausteine (umschlossen von FUNCTION/ENDFUNCTION und aufgerufen mit CALL FUNCTION).
Objektklassen und -schnittstellen ähneln Java-Klassen und -Schnittstellen; die ersten definieren einen Satz von Methoden und Attributen, die zweiten enthalten "leere" Methodendefinitionen, für die jede Klasse, die die Schnittstelle implementiert, expliziten Code bereitstellen muss.
Typpools definieren Sammlungen von Datentypen und Konstanten.
ABAP-Programme bestehen aus einzelnen Sätzen (Anweisungen). Das erste Wort in einer Anweisung wird als ABAP-Schlüsselwort bezeichnet. Jede Anweisung endet mit einem Punkt. Wörter müssen immer durch mindestens ein Leerzeichen getrennt sein. Aussagen können beliebig eingerückt werden. Bei Schlüsselwörtern, Zusätzen und Operanden unterscheidet das ABAP-Laufzeitsystem nicht zwischen Groß- und Kleinschreibung.
Anweisungen können über eine Zeile hinausgehen. Sie können mehrere Anweisungen in einer einzigen Zeile haben (dies wird jedoch nicht empfohlen). Zeilen, die in der ersten Spalte mit einem * beginnen, werden vom ABAP-Laufzeitsystem als Kommentarzeilen erkannt und ignoriert. Doppelte Anführungszeichen (") zeigen an, dass der Rest einer Zeile ein Kommentar ist.
Entwicklungsumgebung
Es gibt zwei Möglichkeiten, in ABAP zu entwickeln. Die Verfügbarkeit ist abhängig vom Release des ABAP-Systems.
ABAP-Workbench
Die ABAP Workbench ist Teil des ABAP-Systems und wird über das SAP GUI aufgerufen . Es enthält verschiedene Werkzeuge zum Bearbeiten von Programmen. Die wichtigsten davon sind (Transaktionscodes sind in Klammern angegeben):
- ABAP Editor zum Schreiben und Bearbeiten von Reports, Modulpools, Includes und Subroutinenpools (SE38)
- ABAP Dictionary zur Verarbeitung von Datenbanktabellendefinitionen und Abruf globaler Typen (SE11)
- Menu Painter zur Gestaltung der Benutzeroberfläche (Menüleiste, Standardsymbolleiste, Anwendungssymbolleiste, Funktionstastenbelegung) (SE41)
- Screen Painter zur Gestaltung von Bildern und Ablauflogik (SE51)
- Function Builder für Funktionsbausteine (SE37)
- Class Builder für ABAP Objects Klassen und Interfaces (SE24)
Der Object Navigator (Transaktion SE80) bietet eine einzige integrierte Schnittstelle zu diesen verschiedenen Werkzeugen.
ABAP-Entwicklungstools
Die ABAP Development Tools ( ADT ), früher bekannt als "ABAP in Eclipse", sind eine Reihe von Plugins für die Eclipse-Plattform zur Entwicklung von ABAP.
In diesem Szenario installiert der ABAP-Entwickler die benötigten Tools auf seinem Rechner und arbeitet lokal, wobei eine kontinuierliche Synchronisation mit dem Backend erfolgt.
ABAP Dictionary
Das ABAP Dictionary enthält alle Metadaten zu den Daten im SAP-System. Es ist eng mit der ABAP Workbench verknüpft, indem jegliche Referenz auf Daten (zB eine Tabelle, ein View oder ein Datentyp) aus dem Dictionary bezogen wird. Entwickler verwenden die ABAP Dictionary-Transaktionen (direkt oder über den SE80 Object Navigator innerhalb der ABAP Workbench), um diese Metadaten anzuzeigen und zu pflegen.
Wenn ein Wörterbuchobjekt geändert wird, verweist ein Programm, das auf das geänderte Objekt verweist, beim nächsten Ausführen des Programms automatisch auf die neue Version. Da ABAP interpretiert wird, ist eine Neukompilierung von Programmen, die auf geänderte Dictionary-Objekte verweisen, nicht erforderlich.
Es folgt eine kurze Beschreibung der wichtigsten Arten von Dictionary-Objekten:
- Tabellen sind Datencontainer, die in der zugrunde liegenden relationalen Datenbank vorhanden sind. In den meisten Fällen besteht eine 1-zu-1-Beziehung zwischen der Definition einer Tabelle im ABAP Dictionary und der Definition derselben Tabelle in der Datenbank (gleicher Name, gleiche Spalten). Diese Tabellen werden als "transparent" bezeichnet. Es gibt zwei Arten von intransparenten Tabellen: "Pooled"-Tabellen existieren als eigenständige Entitäten im ABAP Dictionary, werden aber auf Datenbankebene zu großen physischen Tabellen ("Pools") zusammengefasst. Gepoolte Tabellen sind oft kleine Tabellen, die beispielsweise Konfigurationsdaten enthalten. "Clustered"-Tabellen werden physisch in "Cluster" basierend auf ihren Primärschlüsseln gruppiert; Nehmen wir beispielsweise an, dass eine gruppierte Tabelle H "Kopf"-Daten über Verkaufsrechnungen enthält, während eine andere gruppierte Tabelle D die Rechnungsposten enthält. Jede Zeile von H würde dann physisch mit den zugehörigen Zeilen von D innerhalb einer "Cluster-Tabelle" in der Datenbank gruppiert. Diese Art des Clusterings, die die Leistung verbessern soll, ist auch in einigen, wenn auch nicht allen, relationalen Datenbanksystemen als native Funktionalität vorhanden.
- Indizes bieten einen beschleunigten Zugriff auf Tabellendaten für häufig verwendete Auswahlbedingungen. Jede SAP-Tabelle verfügt über einen „Primärindex“, der implizit mit der Tabelle erstellt wird und dazu dient, die Eindeutigkeit des Primärschlüssels zu erzwingen. Zusätzliche Indizes (eindeutig oder nicht eindeutig) können definiert werden; diese werden als "Sekundärindizes" bezeichnet.
- Views haben den gleichen Zweck wie in der zugrunde liegenden Datenbank: Sie definieren Teilmengen von Spalten (und/oder Zeilen) aus einer oder - mittels einer Join-Bedingung - mehreren Tabellen. Da Ansichten virtuelle Tabellen sind (sie verweisen auf Daten in anderen Tabellen), nehmen sie nicht viel Platz ein.
- Strukturen sind komplexe Datentypen, die aus mehreren Feldern bestehen (vergleichbar mit struct in C/C++).
- Datenelemente liefern den semantischen Inhalt für ein Tabellen- oder Strukturfeld. Zum Beispiel können Dutzende von Tabellen und Strukturen ein Feld enthalten, das den Preis (für ein Endprodukt, Rohmaterial, Ressource, ...) angibt. Alle diese Felder könnten das gleiche Datenelement "PRICE" haben.
- Domänen definieren die strukturellen Eigenschaften eines Datenelements. Beispielsweise könnte dem Datenelement PRICE eine Domäne zugeordnet sein, die den Preis als numerisches Feld mit zwei Dezimalstellen definiert. Domänen können auch semantischen Inhalt tragen, indem sie eine Liste möglicher Werte bereitstellen. Beispielsweise könnte eine Domäne "BOOLEAN" ein Feld vom Typ "character" mit der Länge 1 und ohne Beachtung der Groß-/Kleinschreibung definieren, würde aber auch die möglichen Werte auf "T" (true) oder "F" (false) beschränken.
- Suchhilfen (Nachfolger der mittlerweile veraltet „Matchcodes“) erweiterte Suchstrategien zur Verfügung stellen , wenn ein Benutzer die möglichen Werte für ein Datenfeld zu sehen. Die ABAP-Laufzeit bietet eine implizite Hilfestellung (durch Auflistung aller Werte für das Feld, z.
- Sperrobjekte implementieren Sperren auf Anwendungsebene, wenn Daten geändert werden.
ABAP-Syntax
Diese kurze Beschreibung der ABAP-Syntax beginnt mit dem allgegenwärtigen Programm " Hello world ".
Hallo Welt
REPORT TEST.
WRITE 'Hello World'.
Dieses Beispiel enthält zwei Anweisungen: REPORT
und WRITE
. Das Programm zeigt eine Liste auf dem Bildschirm an. In diesem Fall besteht die Liste aus der einzelnen Zeile „Hello World“. Die REPORT
Anweisung weist darauf hin, dass dieses Programm ein Bericht ist. Dieses Programm könnte ein Modulpool sein, nachdem die REPORT
Anweisung durch ersetzt wurde PROGRAM
.
Verkettete Aussagen
Aufeinanderfolgende Anweisungen mit identischem ersten Teil (ganz links) können mit dem Kettenoperator zu einer "verketteten" Anweisung zusammengefasst werden :
. Der gemeinsame Teil der Anweisungen wird links vom Doppelpunkt geschrieben, die unterschiedlichen Teile werden rechts vom Doppelpunkt geschrieben und durch Kommas getrennt. Der Doppelpunkt-Operator wird ohne Leerzeichen direkt an das vorangehende Token angehängt (dasselbe gilt für die Kommas in der Token-Liste, wie in den folgenden Beispielen zu sehen ist).
In WRITE
Anweisungen wird häufig Verkettung verwendet . WRITE
akzeptiert nur ein Argument. Wenn Sie also beispielsweise drei Felder aus einer Struktur namens FLIGHTINFO anzeigen möchten, müssen Sie Folgendes codieren:
WRITE FLIGHTINFO-CITYFROM.
WRITE FLIGHTINFO-CITYTO.
WRITE FLIGHTINFO-AIRPTO.
Die Verkettung der Aussagen führt zu einer lesbareren und intuitiveren Form:
WRITE: FLIGHTINFO-CITYFROM, FLIGHTINFO-CITYTO, FLIGHTINFO-AIRPTO.
In einer Kettenanweisung ist der erste Teil (vor dem Doppelpunkt) nicht nur auf den Anweisungsnamen beschränkt. Der gesamte gemeinsame Teil der aufeinanderfolgenden Anweisungen kann vor dem Doppelpunkt stehen. Beispiel:
REPLACE 'A' WITH 'B' INTO LASTNAME.
REPLACE 'A' WITH 'B' INTO FIRSTNAME.
REPLACE 'A' WITH 'B' INTO CITYNAME.
könnte in verketteter Form umgeschrieben werden als:
REPLACE 'A' WITH 'B' INTO: LASTNAME, FIRSTNAME, CITYNAME.
Bemerkungen
ABAP hat 2 Möglichkeiten, Text als Kommentar zu definieren :
- Ein Sternchen (*) in der äußersten linken Spalte einer Zeile macht die gesamte Zeile zu einem Kommentar
- Ein doppeltes Anführungszeichen (") an einer beliebigen Stelle in einer Zeile macht den Rest dieser Zeile zu einem Kommentar
Beispiel:
***************************************
** Program: BOOKINGS **
** Author: Joe Byte, 07-Jul-2007 **
***************************************
REPORT BOOKINGS.
* Read flight bookings from the database
SELECT * FROM FLIGHTINFO
WHERE CLASS = 'Y' "Y = economy
OR CLASS = 'C'. "C = business
(...)
Räume
Code in ABAP ist Whitespace-sensitiv.
x = a+b(c).
weist der Variablen x den Teilstring der Variablen a zu, beginnend bei b mit der durch die Variable c definierten Länge.
x = a + b( c ).
weist der Variablen x die Summe der Variablen a und das Ergebnis des Aufrufs der Methode b mit dem Parameter c zu.
ABAP-Anweisungen
Im Gegensatz zu Sprachen wie C/C++ oder Java, die eine begrenzte Menge sprachspezifischer Anweisungen definieren und die meisten Funktionalitäten über Bibliotheken bereitstellen, enthält ABAP eine umfangreiche Menge an eingebauten Anweisungen. Diese Anweisungen verwendeten traditionell satzartige Strukturen und vermieden Symbole, was ABAP-Programme relativ ausführlich macht. In neueren Versionen der ABAP-Sprache ist jedoch ein knapperer Stil möglich.
Ein Beispiel für anweisungsbasierte Syntax (deren Syntax aus COBOL stammt) im Vergleich zu ausdrucksbasierter Syntax (wie in C/Java):
ADD TAX TO PRICE.
* is equivalent to
PRICE = PRICE + TAX .
Datentypen und Variablen
ABAP bietet eine Reihe von integrierten Datentypen. Darüber hinaus kann jede im ABAP Dictionary definierte Struktur, Tabelle, View oder jedes Datenelement zur Typisierung einer Variablen verwendet werden. Als Typen können auch Objektklassen und Interfaces verwendet werden.
Die integrierten Datentypen sind:
Typ | Beschreibung |
---|---|
ich | Ganze Zahl |
P | Gepackte Dezimalzahl |
F | Gleitkomma |
n | Zeichen numerisch |
C | Charakter |
D | Datum |
T | Zeit |
x | Hexadezimal (Rohbyte) |
STRING | String mit variabler Länge |
XSTRING | Rohbyte-Array mit variabler Länge |
Datumsvariablen oder Konstanten (Typ D) enthalten die Anzahl der Tage seit dem 1. Januar 1 n. Chr.. Zeitvariablen oder Konstanten (Typ T) enthalten die Anzahl der Sekunden seit Mitternacht. Eine Besonderheit beider Typen ist, dass sowohl als Integer als auch als Zeichenkette (mit internem Format "YYYYMMDD" für Datumsangaben und "hhmmss" für Uhrzeiten) zugegriffen werden kann, die für die Datums- und Uhrzeitbehandlung verwendet werden können. Das folgende Code-Snippet berechnet beispielsweise den letzten Tag des Vormonats (Hinweis: SY-DATUM ist eine systemdefinierte Variable, die das aktuelle Datum enthält):
DATA LAST_EOM TYPE D. "last end-of-month date
* Start from today's date
LAST_EOM = SY-DATUM.
* Set characters 6 and 7 (0-relative) of the YYYYMMDD string to "01",
* giving the first day of the current month
LAST_EOM+6(2) = '01'.
* Subtract one day
LAST_EOM = LAST_EOM - 1.
WRITE: 'Last day of previous month was', LAST_EOM.
Alle ABAP-Variablen müssen explizit deklariert werden, um verwendet werden zu können. Sie können entweder mit Einzelanweisungen und expliziter Typisierung oder seit ABAP 7.40 inline mit abgeleiteter Typisierung deklariert werden .
Explizit typisierte Deklaration
Normalerweise werden alle Deklarationen am Anfang des Codemoduls (Programm, Unterprogramm, Funktion) vor der ersten ausführbaren Anweisung platziert; Diese Platzierung ist eine Konvention und keine erzwungene Syntaxregel. Die Deklaration besteht aus Name, Typ, Länge (sofern zutreffend), zusätzlichen Modifikatoren (z. B. Anzahl der implizierten Dezimalstellen für ein gepacktes Dezimalfeld) und optional einem Anfangswert:
* Primitive types:
DATA: COUNTER TYPE I,
VALIDITY TYPE I VALUE 60,
TAXRATE(3) TYPE P DECIMALS 1,
LASTNAME(20) TYPE C,
DESCRIPTION TYPE STRING.
* Dictionary types:
DATA: ORIGIN TYPE COUNTRY.
* Internal table:
DATA: T_FLIGHTS TYPE TABLE OF FLIGHTINFO,
T_LOOKUP TYPE HASHED TABLE OF FLT_LOOKUP.
* Objects:
DATA: BOOKING TYPE REF TO CL_FLT_BOOKING.
Beachten Sie die Verwendung des Doppelpunkts, um aufeinanderfolgende DATA-Anweisungen zu verketten.
Inline-Deklaration
Seit ABAP 7.40 können Variablen inline mit folgender Syntax deklariert werden :
DATA(variable_name) = 'VALUE'.
Für diese Art der Deklaration muss der Typ statisch erschlossen werden können, zB durch Methodensignatur oder Datenbanktabellenstruktur.
Diese Syntax ist auch in OpenSQL-Anweisungen möglich:
SELECT * FROM ekko into @DATA(lt_ekko) WHERE ebeln EQ @lv_ebeln.
ABAP-Objekte
Die Sprache ABAP unterstützt die objektorientierte Programmierung durch eine Funktion, die als "ABAP Objects" bekannt ist. Dies trägt dazu bei, Anwendungen zu vereinfachen und besser kontrollierbar zu machen.
ABAP Objects ist vollständig kompatibel mit der bestehenden Sprache, so dass man bestehende Anweisungen und Modularisierungseinheiten in Programmen verwenden kann, die ABAP Objects verwenden, und ABAP Objects auch in bestehenden ABAP-Programmen verwenden kann. Die Syntaxprüfung ist in ABAP Objects-Programmen stärker, und einige syntaktische Formen (normalerweise ältere) bestimmter Anweisungen sind nicht zulässig.
Objekte bilden eine Kapsel, die den Charakter mit dem jeweiligen Verhalten verbindet. Objekte sollen es Programmierern ermöglichen, ein reales Problem und seine vorgeschlagene Softwarelösung eins zu eins abzubilden. Typische Objekte in einem Geschäftsumfeld sind zB 'Kunde', 'Auftrag' oder 'Rechnung'. Ab Release 3.1 enthält das Business Object Repository (BOR) des SAP Web Application Server ABAP Beispiele für solche Objekte. Das BOR-Objektmodell wird im nächsten Release in ABAP Objects integriert, indem die BOR-Objekttypen in die ABAP-Klassenbibliothek migriert werden. Eine umfassende Einführung in die Objektorientierung insgesamt würde den Rahmen dieser Einführung in ABAP Objects weit sprengen. Diese Dokumentation stellt eine Auswahl von Begriffen vor, die in der Objektorientierung universell verwendet werden und auch in ABAP Objects vorkommen. In den folgenden Abschnitten wird weiter auf die Verwendung dieser Begriffe in ABAP Objects eingegangen. Am Ende dieses Abschnitts finden Sie eine Liste weiterführender Literatur mit einer Auswahl von Titeln zur Objektorientierung.
- Objekte sind Instanzen von Klassen. Sie enthalten Daten und bieten Dienste an. Die Daten bilden die Attribute des Objekts. Die Dienste werden als Methoden (auch als Operationen oder Funktionen bezeichnet) bezeichnet. Normalerweise arbeiten Methoden mit privaten Daten (den Attributen oder dem Zustand des Objekts), die nur für die Methoden des Objekts sichtbar sind. Somit können die Attribute eines Objekts nicht direkt vom Benutzer geändert werden, sondern nur durch die Methoden des Objekts. Dies garantiert die interne Konsistenz des Objekts.
- Klassen beschreiben Objekte. Aus technischer Sicht sind Objekte Laufzeitinstanzen einer Klasse. Theoretisch können beliebig viele Objekte basierend auf einer einzigen Klasse erstellt werden. Jede Instanz (Objekt) einer Klasse hat eine eindeutige Identität und ihre eigenen Werte für ihre Attribute.
- Objektreferenzen sind eindeutige Adressen, die verwendet werden können, um Objekte in einem Programm zu identifizieren und darauf zu zeigen. Objektreferenzen ermöglichen den Zugriff auf die Attribute und Methoden eines Objekts.
In der objektorientierten Programmierung haben Objekte in der Regel folgende Eigenschaften:
- Kapselung – Objekte beschränken die Sichtbarkeit ihrer Ressourcen (Attribute und Methoden) für andere Benutzer. Jedes Objekt hat eine Schnittstelle, die bestimmt, wie andere Objekte mit ihm interagieren können. Die Implementierung des Objekts ist gekapselt, dh außerhalb des Objekts selbst unsichtbar.
- Vererbung - Eine vorhandene Klasse kann verwendet werden, um eine neue Klasse abzuleiten. Abgeleitete Klassen erben die Daten und Methoden der Oberklasse. Sie können jedoch vorhandene Methoden überschreiben und auch neue hinzufügen.
- Polymorphismus – Identische (identisch benannte) Methoden verhalten sich in verschiedenen Klassen unterschiedlich. In ABAP Objects wird Polymorphismus durch Umdefinieren von Methoden bei der Vererbung und durch die Verwendung von Konstrukten namens Interfaces implementiert.
CDS-Ansichten
Die ABAP Core Data Services (ABAP CDS) sind die Implementierung des allgemeinen CDS-Konzepts für den AS ABAP. ABAP CDS ermöglicht die Definition semantischer Datenmodelle auf der zentralen Datenbank des Anwendungsservers. Auf dem AS ABAP können diese Modelle unabhängig vom Datenbanksystem definiert werden. Die Entitäten dieser Modelle bieten gegenüber bestehenden Datenbanktabellen und Views, die im ABAP Dictionary definiert sind, erweiterte Zugriffsfunktionen, die eine Optimierung von Open-SQL-basierten Anwendungen ermöglichen. Dies wird besonders deutlich, wenn ein AS ABAP eine SAP-HANA-Datenbank verwendet, da deren In-Memory-Eigenschaften optimal umgesetzt werden können.
Die Datenmodelle werden mit Hilfe der im ABAP CDS bereitgestellten Data Definition Language (DDL) und Data Control Language (DCL) in der ABAP CDS-Syntax definiert. Die über diese Sprachen definierten Objekte sind in das ABAP Dictionary integriert und werden hier auch verwaltet.
CDS-Quellcode kann nur in den Eclipse-basierten ABAP Development Tools (ADT) programmiert werden. Die Data Definition Language (DDL) und die Data Control Language (DCL) verwenden unterschiedliche Editoren.
Merkmale
SAP NW ABAP | SQL-Joins | SQL-Set-Operationen | SELECT-Klauseln |
---|---|---|---|
7,40 SP05 |
|
|
|
7,40 SP08 | |||
7,50 | |||
7,51 |
|
SAP NW ABAP | Literale | Rechenzeichen | Bedingte Ausdrücke |
---|---|---|---|
7,40 SP05 |
|
|
|
7,40 SP08 |
|
||
7,50 | |||
7,51 |
|
SAP NW ABAP | Aggregatfunktionen | Numerische Funktionen | String-Funktionen |
---|---|---|---|
7,40 SP05 |
|
|
|
7,40 SP08 |
|
|
|
7,50 |
|
||
7,51 |
|
|
|
SAP NW ABAP | Byte-String-Funktionen | Datums- und Uhrzeitfunktionen | Andere Funktionen |
---|---|---|---|
7,40 SP05 |
|
||
7,40 SP08 |
|
||
7,50 |
|
|
|
7,51 |
|
|
SAP NW ABAP | Bedingte (CASE) Ausdrücke | Erweiterbarkeit | (Nicht verwaltete) Assoziationen |
---|---|---|---|
7,40 SP05 |
|
|
|
7,40 SP08 |
|
|
|
7,50 |
|
|
|
7,51 |
|
|
|
SAP NW ABAP | Sitzungsvariablen | Eingabeparameter | Sonstiges |
---|---|---|---|
7,40 SP05 |
|
||
7,40 SP08 |
|
||
7,50 |
|
|
|
7,51 |
|
|
Interne Tabellen in ABAP
Interne Tabellen sind ein wichtiges Merkmal der ABAP-Sprache. Eine interne Tabelle wird ähnlich wie ein Vektor von Strukturen in C++ oder ein Vektor von Objekten in Java definiert. Der Hauptunterschied zu diesen Sprachen besteht darin, dass ABAP eine Sammlung von Anweisungen bereitstellt, um den Inhalt interner Tabellen einfach aufzurufen und zu manipulieren. Beachten Sie, dass ABAP keine Arrays unterstützt; Die einzige Möglichkeit, ein Datenobjekt mit mehreren Elementen zu definieren, besteht darin, eine interne Tabelle zu verwenden.
Interne Tabellen sind eine Möglichkeit, variable Datensätze einer festen Struktur im Arbeitsspeicher von ABAP abzulegen und bieten die Funktionalität dynamischer Arrays. Die Daten werden zeilenweise gespeichert, wobei jede Zeile dieselbe Struktur hat.
Interne Tabellen werden vorzugsweise verwendet, um den Inhalt von Datenbanktabellen aus einem Programm heraus zu speichern und zu formatieren. Darüber hinaus sind interne Tabellen in Verbindung mit Strukturen ein wichtiges Mittel, um komplexe Datenstrukturen in einem ABAP-Programm zu definieren.
Das folgende Beispiel definiert eine interne Tabelle mit zwei Feldern im Format der Datenbanktabelle VBRK.
* First define structured type
TYPES: BEGIN OF t_vbrk,
VBELN TYPE VBRK-VBELN,
ZUONR TYPE VBRK-ZUONR,
END OF t_vbrk.
* Now define internal table of our defined type t_vbrk
DATA : gt_vbrk TYPE STANDARD TABLE OF t_vbrk,
gt_vbrk_2 TYPE STANDARD TABLE OF t_vbrk. "easy to define more tables
* If needed, define structure (line of internal table)
* Definition with type or with reference to internal table:
DATA : gs_vbrk TYPE t_vbrk,
gs_vbrk_2 LIKE LINE OF gt_vbrk_2.
* You can also define table type if needed
TYPES tt_vbrk TYPE STANDARD TABLE OF t_vbrk.
Geschichte
Die folgende Liste gibt nur einen groben Überblick über einige wichtige Meilensteine in der Geschichte der Sprache ABAP. Weitere Informationen finden Sie unter ABAP - Releasespezifische Änderungen .
Ausführung | Veröffentlichungsdatum | Wesentliche Änderungen |
---|---|---|
4.6C | Mai 2000 |
|
6.40 | 2004 | |
7,0 | 2006 |
|
7.02 |
|
|
7,40 | 2012-11-29 |
|
7,40 SP05 | Dezember 2013 |
|
7,40 SP08 | September 2014 |
|
7,50 | November 2015 |
|
7,51 | Oktober 2016 |
|
7,52 | September 2017 |
|
7,54 | September 2019 |
|
7.55 | September 2020 |
|
Siehe auch
Verweise
Externe Links
- ABAP — Schlüsselwortdokumentation
- SAP-Hilfeportal
- Diskussionen, Blogs, Dokumente und Videos zur ABAP-Entwicklung im SAP Community Network (SCN)