"Modulpools sind veraltete Technologie"

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
53 Beiträge • Seite 1 von 4 (current) Nächste
53 Beiträge Seite 1 von 4 (current) Nächste

"Modulpools sind veraltete Technologie"

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Moin moin,

die Aussage "Modulpools sind veraltete Technologie" würde ich gern zur Diskussion stellen. Würdet ihr den Satz unterschreiben oder ablehnen und warum würdet ihr das tun?


Gruß und danke


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von ewx (Top Expert / 4846 / 311 / 642 ) »
Da in Klassen keine Dynpros verwendet werden können, sind Modulpools IMHO weit davon entfernt, veraltet zu sein.

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
ewx hat geschrieben:Da in Klassen keine Dynpros verwendet werden können, sind Modulpools IMHO weit davon entfernt, veraltet zu sein.
Jein, man kann Dynpros auch problemlos in Funktionsbausteinen verwenden.

Folgefrage: Die Aussage "Wir wollen einen Modulpool entwickeln für eine Transaktion. Um Konflikte bei Wartung/Reparaturen möglichst klein zu halten, erstellen wir für jede einzelne Form-Routine einen eigenen Include" würde ich auch gern zur Diskussion stellen.

Ziel ist: Wenn n Entwickler am (dann produktiven Programm) n Fehlerbehebungen/Erweiterungen durchführen, sperren sie sich mit höherer Wahrscheinlichkeit nicht gegenseitig die Objekte weg (insbesondere dann, wenn zum Beispiel parallel zu einer sehr umfangreichen Erweiterung eine kleine Fehlerbehebung notwendig wird).

Gegenargument: Dabei entstehen dann ggf. Modulpools mit Hunderten von Includes (weil man für jede kleine Werthilfe eine FORM-Routine und dafür ein Include hat).

Danke für eure kompetenten Meinungen.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von ewx (Top Expert / 4846 / 311 / 642 ) »
ralf.wenzel hat geschrieben:Jein, man kann Dynpros auch problemlos in Funktionsbausteinen verwenden.
Kann man auch in Reports. Aber das war ja nicht deine Frage.
ralf.wenzel hat geschrieben:Folgefrage: Die Aussage "Wir wollen einen Modulpool entwickeln für eine Transaktion. Um Konflikte bei Wartung/Reparaturen möglichst klein zu halten, erstellen wir für jede einzelne Form-Routine einen eigenen Include" würde ich auch gern zur Diskussion stellen.

Ziel ist: Wenn n Entwickler am (dann produktiven Programm) n Fehlerbehebungen/Erweiterungen durchführen, sperren sie sich mit höherer Wahrscheinlichkeit nicht gegenseitig die Objekte weg (insbesondere dann, wenn zum Beispiel parallel zu einer sehr umfangreichen Erweiterung eine kleine Fehlerbehebung notwendig wird).
Das ist ja ok. Wird ja auch von der SE80 so unterstützt.
ralf.wenzel hat geschrieben:Gegenargument: Dabei entstehen dann ggf. Modulpools mit Hunderten von Includes (weil man für jede kleine Werthilfe eine FORM-Routine und dafür ein Include hat).
na und? 8)

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
ewx hat geschrieben:
ralf.wenzel hat geschrieben:Gegenargument: Dabei entstehen dann ggf. Modulpools mit Hunderten von Includes (weil man für jede kleine Werthilfe eine FORM-Routine und dafür ein Include hat).
na und? 8)
Naja, die Frage ist, wer einen solchen Mechanismus mehrfach ineinander verschachtelter Includes nachher noch verstehen soll. DARGESTELLT wird das in der SE80 ganz anders, als es aufgebaut ist - nämlich mit allen Includes auf einer Hierarchieebene. OK, das ist bei FORM-Routinen auch so, aber vorgesehen ist eine solche inflationäre Verwendung von Includes von der SAP nicht (was man auch an den Namensvorschlägen sehen kann bei der Vorwärtsnavigation).

BTW: Sowas geht NUR in Modulpools, in Funktionsgruppen geht das schon allein deshalb nicht, weil die Länge der Includenamen viel beschränkter ist. Auch das lässt schon die Interpretation zu, dass das nicht im Sinne des Erfinders ist.

Die Frage ist also, ob das PRO-Argument (Gefahr gegenseitiger Sperrung) hinreichend ist, um das CONTRA-Argument (Unglaubliche Massen an Includes) aus der Welt zu schaffen.

Erstens macht es die SAP nichtmal in Ansätzen so und zweitens möge man sich ein SAP-System vorstellen, in dem jeder Modulpool (inklusive der der SAP, also wirklich JEDER Modulpool) so aufgebaut ist.

Eine der beiden Ebenen könnte man sich dann doch gleich sparen.... Im Zweifel kann man dann auch die PERFORMS durch INCLUDEs ersetzen. Eine 1:1-Umsetzung macht in meinen Augen jedenfalls keinen wirklichen Sinn, wenn man die Programmstruktur betrachtet.

Ich frage HIER, weil das Sperr-Problem sicherlich alle Kunden der SAP (und die SAP selbst) haben und ich es nirgendwo SO gelöst gesehen habe (eben auch nicht bei der SAP). Also frage ich mich: Gibt es noch mehr Gegenargumente gegen eine solche Programmstruktur als den von mir vorgebrachten? Bekommt man, wenn man das wirklich oft (für relativ viele Modulpools) benutzt, irgendwann Laufzeitprobleme wegen der exzessiven Anlage von Objekten? Warum ist die Sammlung von FORM-Routinen in INCLUDEs überhaupt vorgesehen wenn sie klare Nachteile in der Wartung mit sich bringt?


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Also Modulpools sind meiner Meinung nach noch lange nicht veraltet!

Oder wie soll man sonst eine Funktion erstellen mit ca 30 Dynpros die sowohl RF als auch PbV fähig sind.

Zum Thema Forms&Includes:
Wenn man "passende" FORMS zusammen in "gescheite" Include packt, kann man eine hoche Wartung garantieren.
Ich persönlich hab vor mir grad so ein "Eier legende Woll Milch Sau"-Modulpool, das dank seinen 8 Includes gut Wartbar ist, auch so, das 2 Entwickler total unterschiedliche Sachen parralel implementieren können OHNE sich gegenseitig zu sperren!

Das ausgliedern von Forms in Unterschiedliche Includes kann natürlich auch andere Vorteile bringen wie z.B. mehrere Programme können die selben Includes/Forms daraus nutzen (ok, hat auch Nachteile sowas).

Der Hauptgrund von einigen Includes ist aber meist die Grösse:
Ab einer gewissen Anzahl Codingzeilen kann man ein Includ nicht mehr generieren/aktivieren (meist vorher ist er schon nicht mehr ohne zu stottern scrollbar).

Hab ich eigentlich noch das Richtige Thema, oder bin ich abgekommen?
:roll:

Beitrag von ewx (Top Expert / 4846 / 311 / 642 ) »
ralf.wenzel hat geschrieben:... aber vorgesehen ist eine solche inflationäre Verwendung von Includes von der SAP nicht
Hi Ralf,

also wenn du in der SE80 einen Modulpool bearbeitest und einen Doppelklick auf einen nicht existierenden Unterprogrammnamen machst, dann fragt die SE80, ob es angelegt werden soll. vorgeschlagen wird immer ein neues include!

Das ist in ECC6.0 inzwischen sogar bei Reports so.

Schau dir mal die SAPMV45A an. Da existiert für jede Formroutine ein Include:

Code: Alles auswählen.

***********************************************************************
*  Unterroutinen RV-Auftragsabwicklung alphabetisch sortiert:         *
*  ----------------------------------------------------------         *
*                                                                     *
***********************************************************************


  INCLUDE MV45AF0C_CALL_BILD_SENDEN .
  INCLUDE MV45AF0C_CALL_DIALOG_EXPORT .
  INCLUDE MV45AF0C_CALL_DIALOG_IMPORT .
  INCLUDE MV45AF0C_CALL_FUNCTION_FLAGS.
  INCLUDE MV45AF0C_CCARD_LAST_DIALOG.
  INCLUDE MV45AF0C_CHANGE_DOCUMENT_CREAT .
  INCLUDE MV45AF0C_CHECK_CRM_DOCUMENT .
  INCLUDE MV45AF0C_CONTAINER_IMPORT .
  INCLUDE MV45AF0C_CONTAINER_REFRESH.
  INCLUDE MV45AF0C_CROSS_SELL_ERMITTELN .
  INCLUDE MV45AF0C_CUA_EX_AUTH_CHECK_INI .
  INCLUDE MV45AF0C_CUA_MODIFIZIEREN .
  INCLUDE MV45AF0C_CUA_SETZEN .
  INCLUDE MV45AF0C_CUA_SETZEN_BUTTONS .
  INCLUDE MV45AF0C_CUA_SETZEN_0304 .
  INCLUDE MV45AF0C_CUA_SETZEN_3425 .
  INCLUDE MV45AF0C_CUA_CALL_EXCLUDE .
  INCLUDE MV45AF0C_CUA_SETZEN_SORTIMENT .
  INCLUDE MV45AF0C_CVBKD_LESEN .

*Screen extensions (BAdIs)
  INCLUDE MV45AF0C_CUST_ACTIVATE_TAB.
  INCLUDE MV45AF0C_CUST_SET_CAPTION.

  INCLUDE MV45AF0C_CUST_HEAD_PASS_FCODE.
  INCLUDE MV45AF0C_CUST_HEAD_GET_DATA.
  INCLUDE MV45AF0C_CUST_HEAD_SET_DATA.

  INCLUDE MV45AF0C_CUST_ITEM_PASS_FCODE.
  INCLUDE MV45AF0C_CUST_ITEM_GET_DATA.
  INCLUDE MV45AF0C_CUST_ITEM_SET_DATA.

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Forms & Includes.

Theoretisch halte ich die Idee 1 Include für 1 Unterroutine schon für ganz angebracht. Zumal ich ebenso wie Deathguardian auch so eine Wollmilchsau vor mir habe. Da arbeite ich zwar im Großen und Ganzen alleine dran - aber es kommen aus diversen Ecken Änderungsanforderungen und es wird sehr schwer bis nahezu unmöglich diese gekapselt zu transportieren. Hätte ich vor Urzeiten schon die von 1-1-Version eingesetzt, wäre das jetzt doch einfacher.

Praktisch hingegen setze ich es (noch) nicht so ein.
1.) Wenn von 2 verschiedenen Stellen her neue Unterroutinen angelegt werden, müssen im Rahmenprogramm auch 2 neue Includes eingebaut werden. Damit sperrt dann doch wieder die 1. Entwicklung die 2 oder man muss jeweils sofort nach Anlage einer (dann noch leeren) Form das Rahmenprogramm sofort transportieren. Und ich kenne durchaus die eine oder andere Firma wo ein Transportauftrag scheinbar Unmengen an Gold kostet - so schwer ist es durchzusetzen, dass man mehr als einen TA für seine Aufgabe benötigt.

2.) Ich persönlich verwende durchaus lange Namen für Formroutinen und Programmnamen (auch wenn ich dafür schon mehrere Lynchandrohungen bekommen habe ), die die maximale Länge ausreizen. Da stößt die automatische namensgenerierung an ihre Grenzen.


Nichtsdestotrotz halte ich die SAP-Vorgehensweise mit den kleinen Includes grundsätzlich für den richtigen Weg. Muss mich selber halt dazu zwingen es auch einzuhalten.
Aber wie bei sehr vielen Sachen in der Programmierung sollte sowas nicht iin Stein gemeißelt sein. Ich verwende auch andere Ansätze der Partitionierung des Quellcodes, wenn ich der Meinung bin, dass dies die Lesbarkeit des Codes steigert. ( Zusammenfassung thematisch zusammengehöriger Programmteile in Includes wäre ein möglicher Ansatz )
Und grad bei kleinen bis mittleren Programmgrößen halte ich einen Sourcecode ohne Includes für viel einfacher lesbar.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Thomas R. (Expert / 755 / 78 / 34 ) »
Forms & Includes
Also ich bin ein Vertreter der Minimierung von Includes. Includes, die nur 5 Zeilen Code enthalten führen m.E. nur zu einer schlechteren Lesbarkeit. Auch halte ich (i.A.) nichts von der Mehrfachverwendung von Includes. Dann lieber einen Funktionsbaustein oder eine Klassenmethode mit klar definierter Schnittstelle (und ohne Seiteneffekte).
Hinweis zu meinem Hintergrund:
Kein Berater, Festanstellung, i.A. nur relativ kleine Projekte, meist nur Reports.
Somit habe ich eher selten das Problem der gegenseitigen Sperrung von Objekten. Wobei gerade das ja auch ein Sicherungsseil ist, dass nicht zwei Entwickler, die zwei Fehlermeldungen bearbeiten, sich gegenseitig die Lösung wieder "zerschiessen", indem sie die gerufenen Funktionen abändern.

MfG
Thomas R.

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
black_adept hat geschrieben:Nichtsdestotrotz halte ich die SAP-Vorgehensweise mit den kleinen Includes grundsätzlich für den richtigen Weg.
Die Frage ist, ob man es nicht übertreibt, wenn man für jede einzelne Werthilfe eines jeden einzelnen Dynprofeldes ein Include programmiert (weil man es sinnvollerweise in eine FORM packt, sonst hat man die Werthilfen in den Rahmenprogrammen und die Arbeit an EINER Werthilfe verhindert die gleichzeitige Arbeit an ANDEREN Werthilfen und man ist wieder beim Sperr-Problem).



Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Moin moin,

also, ich habe das Thema gestern abend mit einem Entwickler diskutiert, der erheblich erfahrener ist und mindestens eine Liga über mir spielt (was ich gern und neidlos anerkenne).

Der sagte zu meinen Statements:

Es ist nicht falsch und hat keine Nachteile, pro FORM ein INCLUDE anzulegen. Es produziert so gut wie keinen Overhead, keine Laufzeitprobleme, etc. Und im Grunde genommen macht das SAP im OO-Kontext das gleiche im Hintergrund beim Anlegen einer Methode.

Modulpools sind tatsächlich veraltet, das sei auch kein besonderes Geheimnis - schon allein weil sie aufruftechnisch viel unflexibler sind als zum Beispiel eine Funktionsgruppe, die darüber hinaus eine definierte und dokumentierte Schnittstelle hat. Das sei auch SAP-intern so gehandhabt (was er beurteilen kann, weil er dort programmiert hat, ich jedoch nicht - ich glaube es ihm aber unbesehen).


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
@ralf.wenzel
Modulpools sind tatsächlich veraltet, das sei auch kein besonderes Geheimnis - schon allein weil sie aufruftechnisch viel unflexibler sind als zum Beispiel eine Funktionsgruppe
Das halte ich für eine sehr gewagte Aussage, um es mal vorsichtig zu formulieren.
Technisch ist eine Funktionsgruppe nichts anderes als ein Modulpool.
was er beurteilen kann, weil er dort programmiert hat
Wo und was? Die Zeiterfassung in Bangalore ? Sorry, aber das ist in dieser Form nun wirklich eine Aussage die nicht den geringsten Wert hat.
Es ist nicht falsch und hat keine Nachteile, pro FORM ein INCLUDE anzulegen. Es produziert so gut wie keinen Overhead, keine Laufzeitprobleme
Das ist richtig, wenn man den Generierungsprozess ausser Acht lässt (was ich für ok halte). Es bleibt am Ende eine Frage der Lesbarkeit. Wie so oft liegt die Wahrheit irgendwo in der Mitte. Bei grossen Projekten fassen wir mehrere zusammenpassende Module in einem Include zusammen; in kleinen Projekten gibt es je einen TOP, I,O und F-Include.

Das Problem der Sperren zwischen mehreren Entwicklern ist nur lösbar indem man auf das SAP-Transportsystem verzichtet. Auch (oder gerade dann) wenn ein Modul in einem einzelnen Include liegt, lässt es sich unabhängig von anderen Änderungen transportieren - was im Zielsystem mal eben einen Syntax-Fehler auslösen kann.
Daher ist es geradezu erwünscht, wenn Sperren anzeigen daß man nicht alleine an dem Projekt werkelt... Das Zauberwort heisst dann Abstimmung mit den Kollegen.

Zur Ausgangsfrage: wenn Modulpools veraltet sind, ist es die gesamte Entwicklungsumgebung denn die baut im wesentlichen auf dieser Technik auf, auch da wo man es nicht sieht.

Gruss
Daniel

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Mir ist grad was durch den Kopf gegangen!
Modulpools sind veraltet!!!
Wieso?
Ganz einfach:
Jedes 08/15-Programm kann genau das gleiche!

Seien wir doch mal ehrlich.
Was ist ein Modulpool?
Im Grunde ist es doch nix anderes als ein Normales Programm welches alle INCLUDE-Anweisungen in einem eigenständigen Include (welches sich Rahmenprogramm schimpft) stehen hat.

Naja, im Grunde ist es doch eh alles egal.
Theoretisch könnte man sich auch fragen ob ABAP veraltet ist und man nicht doch JAVA nemmen sollte (NICHT meine Meinung)

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Daniel hat geschrieben:Wo und was? Die Zeiterfassung in Bangalore ? Sorry, aber das ist in dieser Form nun wirklich eine Aussage die nicht den geringsten Wert hat.
Ich kenne die Details, aber ich werde sicherlich nicht ohne Zustimmung von irgendjemandem Details im Internet veröffentlichen.
Daniel hat geschrieben:Daher ist es geradezu erwünscht, wenn Sperren anzeigen daß man nicht alleine an dem Projekt werkelt... Das Zauberwort heisst dann Abstimmung mit den Kollegen.
Ok, du hast ein Projekt, das ein Vierteljahr Programmierzeit in Beschlag nimmt. Nach drei/sechs/12 Wochen taucht ein Fehler im Produktivsystem auf.

Baust du den ganzen Rotz zurück um den Fehler zu beheben? Oder sagst du dem Fachbereich "Ok, bucht mal x Wochen weiter falsche Belege ins System, das Progamm ist leider durch eine Entwicklung gesperrt".
Daniel hat geschrieben:Zur Ausgangsfrage: wenn Modulpools veraltet sind, ist es die gesamte Entwicklungsumgebung denn die baut im wesentlichen auf dieser Technik auf, auch da wo man es nicht sieht.
Na, dass man die SAP Entwicklungsumgebung heute völlig anders aufbauen würde, würde man JETZT damit anfangen, es zu designen, steht außer Frage - das gilt im Übrigen für SAP an sich auch.

Die Wahl hat man aber nicht, das ist eine gewachsene Struktur. Die Frage ist doch, was man bei NEUentwicklungen macht.



Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
DeathGuardian hat geschrieben:Was ist ein Modulpool?
Zum Beispiel etwas vollkommen anderes als eine Funktionsgruppe - allerspätestens wenn du versuchst, es von einem anderen Programm aus aufzurufen.
DeathGuardian hat geschrieben:Theoretisch könnte man sich auch fragen ob ABAP veraltet ist und man nicht doch JAVA nemmen sollte (NICHT meine Meinung)
Schade, ich dachte hier würde eine andere Diskussionskultur herrschen als im Usenet.

Warum stellt denn die SAP um was sie umstellen kann? Die Umstellung von BI auf BAPIs ist doch nichts anderes als der Wechsel von Verbuchungslogik vom Modulpool zur Funktionsgruppe. Das ist sehr stark vereinfacht, aber tendentiell richtig.



Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Vergleichbare Themen

2
Antw.
2914
Views
richtige Technologie
von Gast » 14.11.2005 16:09 • Verfasst in Java & SAP®
0
Antw.
1086
Views
Webservice Technologie
von Pascal_ » 14.03.2007 20:35 • Verfasst in Basis
2
Antw.
812
Views
BAPI_HU_PI_READ liefert veraltete Daten
von RaCDigger » 20.01.2021 10:06 • Verfasst in ABAP® für Anfänger
2
Antw.
3049
Views
kommunikation zwischen java und sap - veraltete Sachen?
von Gast » 10.04.2005 19:18 • Verfasst in Java & SAP®
2
Antw.
3028
Views
SALV - get_selected_rows( ) liefert veraltete Einträge
von zeWa » 20.06.2014 13:17 • Verfasst in ABAP® Core

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 772
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2392
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8978