ABAP

ABAP
ABAP
Paradigmen: 4GL (Fourth Generation Language)
Entwickler: SAP AG
Aktuelle Version: 7.1[1]  (2007)
Einflüsse: COBOL
Betriebssystem: Windows, Unix/Linux, uvm.
Lizenz: proprietär
www.sap.com

ABAP ist eine proprietäre Programmiersprache der Softwarefirma SAP, die für die Programmierung kommerzieller Anwendungen im SAP-Umfeld entwickelt wurde und in ihrer Grundstruktur der Programmiersprache COBOL ähnelt.

Ursprünglich stand die Abkürzung für „Allgemeiner Berichtsaufbereitungsprozessor“, da mit dieser Sprache nur kundenspezifische Auswertungen programmiert wurden, aber keine Datenbankveränderungen vorgenommen werden konnten. Im Zuge der Weiterentwicklungen der Sprache steht die Abkürzung nun für „Advanced Business Application Programming“. Der Sprachumfang ist nicht fest definiert und wurde in der Vergangenheit immer wieder erweitert, z. B. um die objektorientierten Sprachbefehle von ABAP Objects. Maßgeblich beteiligt an der Entwicklung der Programmiersprache war Dr. Gerhard Rodé.[2]

Seit 1990 basieren alle SAP R/3-Module auf ABAP, das aus dem Vorgänger SAP R/2 übernommen wurde. Seit der Einführung von SAP NetWeaver bietet die SAP neben ABAP auch eine Ablauf- und Programmierumgebung für Java, und dementsprechend einen ABAP-basierten und einen Java-basierten Applikationsserver an (siehe SAP NetWeaver Application Server).

Inhaltsverzeichnis

Eigenschaften

ABAP ist eine 4GL-Sprache, die speziell für die Massendatenverarbeitung in kommerziellen Anwendungen entwickelt wurde, und bietet u. a. folgende Vorteile gegenüber elementareren Sprachen, in denen solche Funktionen in Bibliotheken liegen:

  • als Open SQL in die Sprache integrierter Datenbankzugriff
  • in die ABAP-Laufzeitumgebung integrierte Performance-Optimierung von Datenbankzugriffen über die SAP-Pufferung
  • interne Tabellen für die dynamische Speicherung und Bearbeitung von tabellarischen Massendaten im Arbeitsspeicher
  • in die ABAP-Laufzeitumgebung integriertes Konzept des Online Transaction Processing (OLTP), bei dem viele Benutzer gleichzeitig auf die zentrale Datenbank zugreifen
  • in die Sprache integrierte Schnittstelle zu anderen Programmierumgebungen über Remote Function Call
  • in die Sprache integrierte Schnittstelle zu XML.

Die Integration solcher Funktionen in die Sprache ist im Wesentlichen vorteilhaft für die statische Überprüfbarkeit und die Ausführungsgeschwindigkeit von Programmen. Im Gegenzug enthält ABAP dadurch auch wesentlich mehr Sprachelemente als andere Programmiersprachen.

ABAP unterstützt ein auf Unterprogrammen und Funktionsbausteinen basierendes, prozedurales und ab Release 6.10 ein auf Klassen und Interfaces basierendes, objektorientiertes Programmiermodell. Beide Modelle sind interoperabel.

Abwärtskompatibilität

SAP betreibt bei der Entwicklung von ABAP das Prinzip der Abwärtskompatibilität. Wird eine ABAP-Anweisung durch eine neuere (z. B. performantere) Anweisung ersetzt, so verliert die alte Anweisung nicht ihre Gültigkeit oder Funktion. Da die alten Anweisungen neben den neuen Anweisungen weiter existieren, ergibt sich dadurch ein sehr umfangreicher Sprachumfang. Alte Sprachelemente sollen zwar nicht mehr eingesetzt werden, jedoch ist der Einsatz durchaus möglich. Lediglich bei der Verwendung von ABAP OO (ABAP Objects) können einige alte Bestandteile nicht mehr eingesetzt werden.

Der Vorteil ist, dass die bisherigen Entwicklungen und Kundenanpassungen funktionsfähig bleiben und deren Verhalten sich nicht ändert. Entwicklungen müssen nicht überarbeitet werden. Der Nachteil ist jedoch, dass Entwickler oft noch zu alten Komponenten greifen, obwohl neuere und effektivere (performantere) Sprachbestandteile vorhanden sind. Für Sprachneulinge bedeutet dies, dass sowohl die alten Bestandteile und die neuen Bestandteile erlernt werden müssen. Außerdem erhöht sich damit die Komplexität und der Sprachumfang.

Alte und neue Bestandteile können auch kombiniert werden, so können in objektorientiertem Coding (Programmcode) auch prozedurale Elemente verwendet werden, gleichzeitig ist auch die Verwendung objektorientierter Elemente in prozeduralem Coding möglich. Durch die gezielte Kombination neuer und alter Bestandteile kann die Mächtigkeit der Sprache erhöht werden.

ABAP Workbench

Die Programmierung in ABAP wird durch eine Entwicklungsumgebung unterstützt, die darauf ausgerichtet ist, große Projekte mit mehreren (hunderten) Entwicklern zu ermöglichen. Hierbei muss zu jeder Zeit ein lauffähiges System gewährleistet bleiben. Dazu werden die geänderten Objekte auf sog. Transportaufträgen erfasst, welche bei Freigabe auf das Dateisystem exportiert werden und in Folgesysteme importiert werden können. Durch diesen Mechanismus kann die Entwicklung der Programme von ihrem produktiven Einsatz getrennt erfolgen.

Die Entwicklungsumgebung zur Programmiersprache ABAP ist die ebenfalls in ABAP entwickelte ABAP Workbench. In der ABAP Workbench (Einstieg über den sogenannten Object Navigator, Transaktion SE80) können jedoch auch andere Objekte wie z. B. BSP (Business Server Pages, mit HTML-Anteilen) bearbeitet werden.

Das Besondere ist die sogenannte „Vorwärtsnavigation“. So führt ein Doppelklick auf einen Tabellennamen direkt zur Definition der Datenbanktabelle im ABAP-Dictionary, wohingegen Doppelklick auf einen Methodennamen direkt in diese Methode führt.

Die ABAP-Workbench wird mit der Zeit an die Anforderungen moderner Software-Entwicklung angepasst. Seit dem letzten Release wird beispielsweise auch Syntax-Highlighting unterstützt.

Codebeispiel für R/3 Versionen >= 4.7 SR 1

Das nachfolgende Programm gibt den Inhalt der Tabelle TSTC (enthält SAP-Transaktionscodes) aus.

  REPORT ztest.
 
  CLASS demo DEFINITION.
    PUBLIC SECTION.
      CLASS-METHODS main.
  ENDCLASS.
 
  CLASS demo IMPLEMENTATION.
    METHOD main.
      DATA tstc_tab TYPE TABLE OF tstc.
      DATA alv      TYPE REF TO cl_salv_table.
      DATA exc      TYPE REF TO cx_salv_msg.
      SELECT *
        FROM tstc
        INTO TABLE tstc_tab.
      TRY.
        cl_salv_table=>factory(
          IMPORTING r_salv_table = alv
          CHANGING t_table = tstc_tab ).
        alv->display( ).
      CATCH cx_salv_msg into exc.
          MESSAGE exc TYPE 'I'
              DISPLAY LIKE 'E'.
      ENDTRY.
    ENDMETHOD.
  ENDCLASS.
 
  START-OF-SELECTION.
    demo=>main( ).
  • REPORT ztest. Beschreibt den Typ (REPORT) und den Namen (ztest) des Programms. Der Name richtet sich nach den Namensraumkonventionen, die besagen, dass kundeneigene (also nicht von SAP stammende) Programme im Kundennamensraum (Z* und Y*) oder in einem reservierten Namensraum (haben als erstes und letztes Zeichen einen Schrägstrich) liegen müssen.[3]
  • CLASS demo DEFINITION … ENDCLASS. Deklarationsteil einer Klasse demo.
  • CLASS-METHODS main. Deklaration einer statischen Methode main.
  • CLASS demo IMPLEMENTATION … ENDCLASS. Implementierungsteil einer Klasse demo mit Methodenimplementierung METHOD … ENDMETHOD
  • DATA tstc_tab TYPE TABLE OF tstc. Diese Anweisung definiert eine interne Tabelle tstc_tab, deren Zeilentyp die Struktur einer Zeile der Datenbanktabelle TSTC hat.
  • DATA alv TYPE REF TO cl_salv_table. Diese Anweisung definiert eine Referenzvariable für ein List-Viewer-Objekt.
  • DATA exc TYPE REF TO cx_salv_msg. Diese Anweisung definiert eine Referenzvariable für ein Ausnahmeobjekt.
  • SELECT * FROM tstc INTO TABLE tstc_tab. Diese Anweisung liest alle Daten der Datenbanktabelle tstc in die interne Tabelle tstc_tab. Der Stern indiziert, dass alle Spalten der Datenbanktabelle in die interne Tabelle geschrieben werden sollen.
  • TRY … CATCH … ENDTRY. Ausnahmebehandlung (Verfügbar seit Version 4.7 SR1).
  • cl_salv_table=>factory( … ). Erzeugung eines List-Viewers für die interne Tabelle.
  • alv->display( ). Aufruf der Methode display des List-Viewers.
  • START-OF-SELECTION. Einleitung eines Ereignisblockes (dient hier als Einstiegspunkt)
  • demo=>main( )Aufruf der Methode main der Klasse demo.

ABAP Objects

Unter ABAP Objects versteht man die objektorientierten Erweiterungen der Programmiersprache ABAP. Sie implementiert sämtliche Elemente der objektorientierten Programmierung (OOP) mit Ausnahme von Mehrfachvererbung und dem Überladen von Methoden. Interfaces sowie optionale Parameter werden unterstützt. Mit speziellen RTTI-Klassen ist auch reflexive Programmierung möglich, ab der Version 6.40 sogar (eingeschränkt) die dynamische Erzeugung neuer Typen.

ABAP Objects ist ab SAP Release 4.6 verfügbar und wird seitdem beständig weiterentwickelt und z. B. durch Object-Services ergänzt. Die objektorientierten Sprachelemente sind Voraussetzung für die Entwicklung von modernen Benutzeroberflächen mit Controls sowie für die Realisierung von Webanwendungen und XML-Services in ABAP. Große Teile der ABAP Workbench selbst sind objektorientiert in ABAP Objects implementiert.

ABAP Objects schränkt den Sprachumfang von „klassischem“ ABAP in einigen Punkten ein. So sind zum Beispiel interne Tabellen mit Kopfzeilen im Kontext von ABAP Objects nicht mehr erlaubt.

Web Dynpro

Seit SAP NetWeaver 7.0 gibt es mit WebDynpro für ABAP auch die Möglichkeit Web-Applikationen in ABAP zu entwickeln. WebDynpro ABAP basiert auf der Web Dynpro-Technologie. Ursprünglich wollte SAP diese Technologie nur für die Programmiersprache Java (ab NetWeaver 6.40) zur Verfügung stellen. Aufgrund von Kundenanfragen (fehlendes Java-Know-how bei ABAP-Entwicklern bzw. fehlendes SAP-Know-how bei Java-Entwicklern) entschied sich SAP diese Technologie in ABAP zu integrieren.

Kritik

Allgemein

Die Vielzahl der möglichen ABAP-Anweisungen und ihrer Varianten führt allgemein zu einem schwerer verständlichen Quellcode als in anderen gängigen Programmiersprachen. Die vorhandene Vielfalt der ABAP-Anweisungen resultiert aus der Abwärtskompatibilität.

  • Zuweisungen: So existiert zum Beispiel neben einer mathematischen Form der Zuweisung „variable = 18 / 3.“ auch die cobol-ähnliche Notation „MOVE 18 / 3 TO variable“. Auch für andere Aufgaben gibt es mehrere mögliche Notationen.
  • Signifikanz von Leerzeichen: Unterschied zwischen '+' und ' +' (Plus und Blank-Plus)
Beispiel: DATA myvar(3) TYPE N VALUE '123'..
'myvar+1' (ohne Leerzeichen) ergibt '1' (Offset einer Zeichenkette), 'myvar + 1' (mit Leerzeichen) ergibt '124' (Addition).
Diese ähnliche Schreibweise für sehr unterschiedlich wirkende Operationen ist eine potenzielle Fehlerquelle.

Vor Release 7.1 / 7.02

Insbesondere vor Release 7.1 sind Details erkennbar, die den Umgang mit der Sprache erschweren.

  • Ausdrücke wurden nur bei Zuweisung zu einer Variablen ausgewertet, aber weder in einer IF-Bedingung noch in einer WRITE-Anweisung noch bei der Parameterübergabe an eine Funktion.
Beispiel: IF A * B < 15. muss ersetzt werden durch DATA C TYPE xxx. C = A * B. IF C < 15..
  • Das Ergebnis eines Funktionsaufrufes ist nicht unmittelbar in einem Ausdruck verwendbar.

Seit Release 7.1 / 7.02

Mit Netweaver 7.1 sind eine Reihe von Vereinfachungen der Sprache, insbesondere verkettete Ausdrücke, verfügbar. Diese Änderungen wurden später in das Enhancement Package 2 (7.02) für Release 7.0 herunterportiert.

Beispiel: IF A * B < 15.
Beispiel: IF X->NEXT( )->NEXT( )->GET_RESULT( Y->GET_TYPE( ) ) > 20.

Einzelnachweise

  1. [http://help.sap.com/abapdocu/de/ABENNEWS-71.htm] (Link nicht abrufbar)
  2. Kurzbiographie von Dr. Gerhard Rodé, Gründer der Synactive GmbH (Firmenporträt)
  3. ABAP Namensräume und Namenskonventionen

Literatur

  • Horst Keller: ABAP-Referenz. Galileo Press, 2010, ISBN 978-3-8362-1524-4
  • Horst Keller: ABAP-Schnellreferenz. Galileo Press, 2005, ISBN 3-89842-680-7
  • Sascha Krüger, Jörg Seelmann-Eggbert: ABAP Best Practices. Galileo Press, 2005, ISBN 3-89842-354-9
  • Horst Keller, Sascha Krüger: ABAP Objects – ABAP-Programmierung mit SAP NetWeaver. Galileo Press, 2006, ISBN 3-89842-358-1
  • Horst Keller, Wolf Hagen Thümmel: ABAP-Programmierichtlinien, Galileo Press, 2009, ISBN 978-3-8362-1286-1
  • Andreas Wiegenstein, Markus Schumacher, Sebastian Schinzel, Frederik Weidemann: Sichere ABAP-Programmierung. Galileo Press, 2009, ISBN 978-3-8362-1357-8
  • Bernd Matzke: ABAP / 4, Addison – Wesley, ISBN 3-8273-1372-4
  • Stephan Kaleske: Query-Reporting mit SAP ERP. Galileo-Press, Bonn 2009, ISBN 978-3-8362-1433-9 (SAP PRESS).

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • ABAP OO — ABAP Paradigmen: 4GL Sprache Entwickler: SAP AG Aktuelle Version: 7.1[1]  (2007) …   Deutsch Wikipedia

  • Abap — Paradigmen: 4GL Sprache Entwickler: SAP AG Aktuelle Version: 7.1[1]  (2007) …   Deutsch Wikipedia

  • ABAP — est un langage de programmation propriétaire, faisant partie de l ensemble logiciel SAP. Il s agit actuellement du langage utilisé dans la programmation des Web Application Server faisant partie de la plateforme Netweaver pour la réalisation de… …   Wikipédia en Français

  • ABAP — (Advanced Business Application Programming) es un lenguaje de cuarta generación, propiedad de SAP, que se utiliza para programar la mayoría de sus productos (R/3, mySAP Business suite...). Utiliza sentencias de Open SQL para conectarse con… …   Wikipedia Español

  • ABAP/4 — Класс языка: объектно ориентированный, императивный, структурный Появился в: 1983 Автор(ы): SAP AG Типизация данных: строгая, статическая, безопасная, именованная ( …   Википедия

  • ABAP —   [Abk. für Advanced Business Application Programming], die Programmiersprache von SAP zur Programmierung der betriebswirtschaftlichen Software R/3 von SAP. Die Sprache …   Universal-Lexikon

  • ABAP — (Advanced Business Application Programming) es un lenguaje de cuarta generación, propietario de SAP, que se utiliza para programar dentro de R/3. Utiliza sentencias de Open SQL para conectarse con prácticamente cualquier base de datos. Cuenta con …   Enciclopedia Universal

  • ABAP — UK US noun [U] IT ► ABBREVIATION for Advanced Business Application Programming: a computer language used for writing programs used in business …   Financial and business terms

  • ABAP — Infobox programming language name = ABAP/4 logo = paradigm = Object oriented, structured, imperative year = 1980s designer = SAP AG typing = Static, strong, safe, nominative implementations = SAP R/2,SAP R/3 dialects = influenced by = Objective C …   Wikipedia

  • ABAP — Associacao Brasileira das Agencias de Propaganda brasilianische Dachgesellschaft nationaler Marketinggesellschaften, Rio de Janeiro http://www.abap rio.com.br/ …   Acronyms

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”