Frage

Monate nachdem mein Unternehmen von 4.6c auf ECC6.0 aktualisiert hat, programmiert unser Programmiererteam immer noch auf die traditionelle 4.7c-Methode.Ich bin gespannt darauf, den neuen OO-Ansatz von ABAP auszuprobieren, aber zu meiner großen Bestürzung legen die meisten Leute hier nur Wert darauf, Dinge in kürzester Zeit zu erledigen.

Meine Frage wäre:
1) Wann haben die Mitarbeiter Ihrer Organisation tatsächlich mit der Codierung in OO ABAP begonnen?
2) Gibt es einen wichtigen Grund dafür, dass die Leute es auf OO-Art codieren möchten?z.B.Call-Methode ist schneller als eine PERFORM-Anweisung?

War es hilfreich?

Lösung

1) Wann haben die Mitarbeiter Ihrer Organisation tatsächlich mit der Codierung in OO ABAP begonnen?

Die meisten Entwickler in meiner Organisation haben das klassische ABAP vor der Einführung von ABAP OO erlernt.Es handelt sich meist um erfahrene Entwickler, die sich davor zurückhalten, die richtigen OOP- und OOD-Prinzipien zu erlernen.Sie verwenden immer noch hauptsächlich prozedurale ABAP-Funktionen.Darüber hinaus arbeiten wir in einer Legacy-Umgebung.Die Grundlagen unseres Backends wurden zu Zeiten von 4.6C erstellt.Es ist schwierig, das richtige OO-Design in Legacy-Systeme zu integrieren.

Andererseits funktionieren die Verfahrensfunktionen weiterhin.Einige Funktionen wie transaktionale Datenbankaktualisierungen werden hauptsächlich aus dem prozeduralen Teil von ABAP verwendet.Möglicherweise kennen Sie Update-Funktionsmodule oder Subroutinen ausschließlich für Datenbanktransaktionen (die Sie aufrufen können). IN UPDATE TASK).Sie sind integraler Bestandteil der ABAP-Basiskomponenten.Man kann nicht leugnen, dass der prozedurale ABAP-Teil noch benötigt wird.

2) Gibt es einen wichtigen Grund dafür, dass die Leute es auf OO-Art codieren möchten?z.B.Call-Methode ist schneller als eine PERFORM-Anweisung?

Wie haben Sie die Laufzeit von CALL METHOD vs. verglichen?LEISTUNG?Haben Sie das Programm RSHOWTIM ausprobiert / Oder haben Sie einige Leistungstests aus der ABAP-Workbench durchgeführt?Ein einzelner Unterprogrammaufruf unterscheidet sich nicht wesentlich von einem Methodenaufruf.Wenn Methodenaufrufe jedoch in Massentests aufgerufen werden, weisen sie eine etwas bessere Leistung auf (in der Größenordnung von Mikrosekunden).

Im Großen und Ganzen empfehle ich OOD und OOP mit den gleichen Argumenten wie die Benutzer, die zuvor gepostet haben.Sie müssen jedoch bedenken, dass erfahrene Entwickler, die mit der alten ABAP-Welt vertraut sind, die OO-Prinzipien verstehen müssen, bevor sie mit dem Schreiben von ABAP OO beginnen.Andernfalls würde Ihre Organisation nicht von ABAP OO profitieren, im Gegenteil.Es gibt viele erfahrene ABAP-Entwickler ohne OO-Kenntnisse, die dazu gedrängt wurden, Klassen zu schreiben.Was sie tatsächlich tun, ist die Nachahmung von Verfahrensprinzipien mit Klassen (z. B.eine Klasse mit ausschließlich statischen Methoden - als Ersatz für Funktionsbausteine/Unterprogramme).

Viel Glück für Ihre Organisation bei Ihrer Herausforderung mit ABAP OO!Es geht nicht um die Sprache, sondern vielmehr darum, Ihren Mitarbeitern die OO-Prinzipien in den Sinn zu bringen.

Andere Tipps

Ich weiß nicht, über ABAP, aber ich habe das gleiche mit VB-Entwickler zu bewegen, um die .NET-Plattform erlebt.

Programmierer sind komfortabel in ihrer alten Art und Weise der Programmierung, und die alte Art und Weise funktioniert immer noch. Die neue Art der Programmierung erfordert viel Investition, nicht nur von der Firma, sondern auch von Menschen, die aus ihrer Komfortzone in unsicheres Gebiet bewegen müssen. Wenn Ihr Unternehmen nicht bereit ist, in der Ausbildung und die Zeit für die Forschung zu investieren dieses Problem immer größer wird, weil die Menschen ihre eigene Zeit zu investieren, nicht jeder ist bereit, das zu tun.

Wie bereits Taurean zeigte gibt es überzeugende Gründe, die OO Weise zu bewegen, Dinge zu tun. Sie sind meist nicht über die Leistung, sondern um eine bessere Entkopplung von Komponenten in Ihrem System so dass es viel besser verwaltbar.

Aber in meiner Erfahrung ist es schwer, Menschen zu überzeugen aus ihrer Komfortzone mit vernünftigen Argumenten, so zu bewegen. Es funktioniert in der Regel besser, ihnen den Weg zu zeigen. Verwendung von OO in Ihrem eigenen Code langsam beginnen konstruiert, die Menschen zeigen, wie sauber es aussieht. Das ist nicht etwas, das man in Monaten erreichen werden, kann es Jahre dauern, die Menschen zu denken und arbeiten anders.

Ein Team von erfahrenen Verfahrensentwickler ist unwahrscheinlich, bald in einer OO-Stil zu jeder Zeit zu entwickeln beginnen, es sei denn, eine signifikante (und teuer) Anstrengungen unternommen werden, um sie zu trainieren und coachen.

Es gibt zahlreiche Gründe:

  • Es dauert etwa ein Jahr des Eintauchens in einer echten OO-Umgebung (smalltalk, nicht Java oder C ++) alle gut OO Entwicklung zu erhalten.
  • Sie können nicht von Grund auf neu starten, gibt es eine Menge von Legacy-Code und Zeitdruck.
  • Alle ihre Legacy-Code ist nicht OO. Es dauert eine erhebliche Anstrengungen zu restrukturieren.
  • Der Legacy-Code ist nicht gut strukturiert und hat viele Überschneidungen und keine Unit-Tests. Ändern es dauert zu lange, so dass sie keine Zeit, Sachen zu regeln haben. (Es ist erstaunlich, was man von einem Projekt, ohne zu wissen nichts davon ableiten kann. :)).

Als Folge ihr neuer Code wird höchstwahrscheinlich prozedurale, sondern in Klassen und Methoden. Sie werden nicht von den Vorteilen des OO beeindruckt sein.

Einige gute Gründe für die ABAP-OO zu wechseln ist:

  • ABAP OO deutlicher und einfacher zu bedienen
  • ABAP OO hat eine strengere Syntaxprüfung, die eine Menge der Mehrdeutigkeit in der Sprache ABAP entfernt
  • Ein großer Teil der neuen Netweaver-Funktionalität ist nur mit OO

Fügen Sie diese auf die Vorteile aufgeführt von Taurean :

  • Bessere Daten Kapselung
  • Mehrere Instansiation
  • Bessere Garbage Collection
  • Code-Wiederverwendung durch Vererbung
  • Manipulieren Busines-Objekte über Standard-Schnittstellen
  • Event Driven Programmierung

Starten ABAP OO verwenden:

  • Starten Sie durch einige SAP-Standard-OO-Funktionalität in Ihrem Code aufrufen: Verwenden Sie ALV Klassen, anstatt die Funktionsmodule - die Klassen viel mehr Funktionalität bereitstellt. Probieren Sie einige der Standardmethoden in den CL_ABAP* oder CL_GUI_FRONTEND* Klassen aufrufen
  • Schreiben Sie einen Bericht als Singleton mit lokalen Klassen
  • Versuchen Sie, eine einfache Klasse in SE24 für etwas entwerfen, die Ihnen vertraut ist (eine Datei-Handler zum Beispiel)

Ressourcen:

  1. Design Patterns in der objektorientierten ABAP von Igor Barbaric
  2. mit noch nicht ABAP Objects? Acht Gründe, warum jeder ABAP-Entwickler sollte es einen zweiten Blick geben. von Horst Keller und Gerd Kluger

OO oder nicht OO ist keine Frage !!

Die Frage ist, wo OO und wo nicht OO.

Alle Vorteile der OO-Ansatz (OOD und OOP) vollständig, so lange genutzt werden, wie Sie in Kundennamensraum sind. Allerdings schafft jeder Zugriff auf SAP-Standardfunktionalität große Kopfschmerzen. Transaktionsintegrität, Objekt Konsistenz und Synchronisation, verpflichtet DB, Bildschirm (Modulpools und Selektionsbilder), Berechtigungsprüfungen, Batch-Input. Dies sind nur einige der Objekte, die nur schwer (oder sogar unmöglich) in OO-Ansatz zu integrieren. Integration von SAP Standardmodule verschiebt diese auf ein noch höheres Maß an Komplexität.

User-Exits, Veranstaltungen: Die meisten Daten sind bietet in-Schnittstelle. Der Zugang zu kundenspezifischen Daten oder Anpassungen können in Objekten platziert werden.

Berichte: Die meisten Daten werden von Standard-FM gelesen werden. Spezifische Datenverarbeitung kann in Objekten platziert werden. Kann leicht in anderen Berichten wiederverwendet werden. SAP genießen Kontrollen können für eine einfache Verwendung und Wiederverwendung mit dem Objekt zu umhüllen. Bildschirm können NICHT palces in Objekten sein. : - (((

Kernverarbeitung: Ersetzen von SAP-Business-Objektpflege oder SAP-Prozesse wird von SAP nicht gefördert. Aber wenn dies ein Fall von Patienten und bereit für die großen Aufwand. Schauen wir uns näher. Es gibt eine Menge von TECHNISCHEM challanges: Singletonmuster, Optimierung der DB-Zugriff, Verriegelung, Synchronisation usw. Der Trennung von technischen und betriebswirtschaftlicher Funktionalität angesprochen werden soll. Objets sind nicht wirklich geeignet für die Massen procesing (hohe DB Last) daher die Massenverarbeitung angesprochen werden soll.

Im Folgenden sind einige der Vorteile der OOP, wie Sie müssen wissen:

  • Datenkapselung
  • Instanziierung
  • Wiederverwendung von Code
  • Schnittstellen

Vorteil davon machen, gibt es viele wichtige Gründe für die Verwendung von OO ABAP „wann immer möglich“. Selbst wenn Sie ABAP Objects nicht nutzen OO-Programmierung wollen, verwenden ist immer noch eine gute Idee, da es einige Funktionen, die prozeduralen Programmierung nicht.

Also hier ist was ABAP Objects bietet Ihnen über Procedural ABAP:

  • Bessere Kapselung
  • Unterstützung für Mehrfachinstanzierung
  • Bessere Techniken zur Wiederverwendung von Code
  • Bessere Schnittstellen
  • Ein explizites Veranstaltungskonzept

Es gibt nur zwei Zwecke, für das Verfahren ABAP wesentliche gefunden wird:

  • Die Einkapselung von klassischen Bildschirmen in Funktionsmodule.
  • Wenn Sie Funktionen machen wollen zur Verfügung zu anderen Systemen, sind aber nicht in der Lage Klassenmethoden zu machen verfügbar extern über XI-Server Proxies. In diesem Fall müssen Sie verwenden Funktionsbausteine.

Studie über sie im Detail hier und Sie werden sehen, dass Sie benötigen keine wesentliche betriebliche / demonstrative Grund, sich davon zu überzeugen, OO ABAP zu bewegen, coz all diese Gründe sind schon sehr wichtig.

Um es einfach, es verwenden, wenn Sie eine relativ junge Mannschaft haben, die eifrig und bereit sind, ein neues Programmierparadigma zu lernen. In einem älteren dominierten Team könnte Annahme OO schwierig sein. Um so mehr, weil die Wartbarkeit des Programms untergeht. Die org können neue Mitarbeiter müssen den OO-Code zu erhalten.

Was das Design angeht, gibt es keine Frage (wie viele Menschen auch in diesem Forum gesagt haben), dass seine besten und hat seit Jahren im Einsatz. SAP ist weit hinter in Bezug auf Technologie. Ihr ECC DB-Design ist nach wie vor in 2-NF. der Standard-3-NF ist das, was sie haben ‚3D‘ Datenbank genannt. Kein Abweichendes zu viel von dem Hauptthema, ich glaube, Sie jetzt zu viele gute Antworten haben eine Entscheidung zu erreichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top