Klassen (ABAP-Objects)

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Die objektorientierte Erweiterung von ABAP - genannt ABAP Objects - wird für SAP-Entwickler zunehmend bedeutender und kein SAP-Programmierer kann sich heutzutage nur auf die prozeduale Programmierung beschränken. Gerade bei komplexen Software-Systemen kann die Objektorientierung ihre Stärken ausspielen. Mehr und mehr wird die Objektorierung im SAP-Kernsystem und von Beratern im Projekt genutzt und schon allein deswegen kommt heute kein SAP-Entwickler am Verständnis der Objektorientierung vorbei.

Siehe Kategorie:ABAP OO.

Globale Klassen (Class Builder/Transaktion SE24)

Lokale Klassen

Konstantenklasse

Elementare Konzepte von ABAP-Objects

Sichtbarkeit (Public/Protected/Private)

Methoden

Konstruktor

Attribute

Interfaces

Events

Vererbung

Garbage-Collector

Casting

Klassenbasierte Ausnahmen

Design Pattern

SAP-Technologien mit ABAP-Objects

  • SAP-Controls
  • Web-Dynpro
  • Office-Integration mit OLE2
  • u. a.

SAP-Klassen

ALV-Controls

Vor- und Nachteile ABAP-Objects

Testprogramme

Tabellen

Entwicklungsobjekte Klasse/Methoden

  • Die Namen der Methoden werden zusammen mit der Klasse als einzelne Entwicklungsobjekte (Implementierung Methoden) gespeichert.
  • Programm-ID = LIMU und Objekttyp = METH. Bei Objektname wird der Eintrag aus dem Klassennamen und dem Methodennamen zusammengesetzt.

Klassenobjekte2.JPG


  • Die Definition der Methoden wird in 3 verschiedene Entwicklungsobjekte gespeichert, dies berücksichtigt die Sichtbarkeit: Private, Protected und Public.
  • Hier gibt es die Objekttypen CPUB, CPRO und CPRI. Programm-ID = LIMU.

Klassenobjekte1.JPG


  • Die gesamte Klasse kann auch in einen Transportauftrag geschrieben werden. Dann sind alle Methoden inklusive deren Schnittstellen/Parameter darin enthalten.
  • Zur Programm-ID "R3TR" gibt es dann den Objekttyp "CLAS" und Objekttyp "CLAS"

Klassentransport3.jpg


Es gibt noch ein Entwicklungsobjekt mit dem Objekttyp CLSD (Klassendefinition (ABAP Objects)). Hier ist mir nicht 100% klar, was damit konkret gemeint ist, bzw. welche Implikationen der Transport dieses Entwicklungsobjektes zur Folge hat.

Gesamte Klasse transportieren über SE80

  • Eine globale Klasse kann viele Methoden enthalten, die dann jeweils auf die Public-/Protected-/Private-Schnittstelle zugreifen. Diese Entwicklungen können in mehreren Transportaufträgen landen, sodass man am Ende dann unsicher ist beim Produktivtransport welche Transportaufträge zusammen zu transportieren sind, damit es nicht beim Transport zu fehlenden Objekten kommt und einem Syntaxfehler in der Klasse. Dann möchte man manchmal die gesamte Klasse transportieren, um diese Gefahr auszuschließen.
  • Transaktion SE80 und die Klasse aufrufen (hier im Beispiel "ZCL_SD_MV45AFZZ")
  • Die Klasse markieren und mit rechter Maustaste "Weitere Funktionen - Transporteintrag schreiben"

Klassentransport1.jpg


  • Es wird dann der folgende Eintrag in den Transportauftrag geschrieben, mit Objekttyp "CLAS" und Objekttyp "CLAS". Dieses Entwicklungsobjekt sollte man nur nach sorgfältiger Überlegung in einen Transportauftrag geschrieben werden und sich dann wirklich bewusst sein, dass die gesamte Klasse transportiert wird. Bei umfangreichen für den Kunden zentralen Klassen sollte man den Transport ins Produktivsystem zwingend in einer Zeit durchführen, wo möglichst wenig Leute am System arbeiten und keine Jobs laufen, und dann möglichst 1-2 Berater/Entwickler zur Verfügung haben, die dann bei Problemen im Produktivsystem schnell das Problem fixen können.

Klassentransport3.jpg

Web-Links

Literatur