Modularisierung wie handhaben?

Getting started ... Alles für einen gelungenen Start.
30 Beiträge • Vorherige Seite 2 von 2 (current)
30 Beiträge Vorherige Seite 2 von 2 (current)

Re: Modularisierung wie handhaben?

Beitrag von dnuc (ForumUser / 4 / 0 / 0 ) »
Dele hat geschrieben:wovon SAP abrät, ist vollkommen irrelevant. Warum:
Und zum eigentlichen Thema:
Modulaisierung ist sehr zu empfehlen (In vielen SAP-Programmen wäre das sehr zu wünschen).
Aber eine pauschale Empfehlung, wo und wann bzw. ab wann, macht keinen Sinn. Das hängt zu sehr vom Kontext ab. Entscheidungskriterien könnten sein:
- Wiederverwendbarkeit (dann eher Methode oder Funktionsbaustein)
- Wahrscheinlichkeit der mehrfachen Nutzung
- Lesbarkeit eines Programmes
- und nicht zuletzt auch: einfacheres Testen (Debuggen)

gruß dele
Vor allem bei Makros finde ich aber, das ein nicht verwenden für alle, außer dem Entwickler Vorteile hat :) Und jeder, der schon mal fremde Programme mit einem Haufen Makros debuggen musste, kann da ein Lied von singen :)

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


Re: Modularisierung wie handhaben?

Beitrag von black_adept (Top Expert / 4158 / 136 / 959 ) »
Den Vorschlag finde ich gut - aber man sollte das dann nicht auf Makros beschränken.

Jeder der schon mal fremde Programme mit komplexer Logik debuggen musste kann da auch ein Lied singen. --> Verbot nichttrivialer Programme.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Modularisierung wie handhaben?

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
"Eigentlich" benutzte ich persönlich auch keine Makros, aber Ausnahmen bestätigen die Regel:

Folgende Makros benutze ich z.B. unterbewußt(?) immer:

Code: Alles auswählen.

*** MACRO COLORS
DEFINE color_x.
  constants: &1(4) type c value &2.
END-OF-DEFINITION.


*** MACRO TOOLBAR
DEFINE exclude_toolbar.
    ls_toolbar_excluding = cl_gui_alv_grid=>&1.
    append ls_toolbar_excluding to u_lt_toolbar_excluding1.
END-OF-DEFINITION.

und diverse Makros aus der TRMAC, insbesondere BREAK USER.
Modularisierung:
Performs lege ich an, wenn ich das Coding mehr als einmal im Program nutze.
Fubas lege ich oft an, wenn ich absehen kann, dass das Coding auch in anderen Programmen genutzt wird.

Ich persönlich "modulasiere" Situationsabhängig für bessere Lesbarkeit und Wiederverwendung.
Die persönlichen Regel änderen sich dabei von Program zu Program.

Re: Modularisierung wie handhaben?

Beitrag von ralf.wenzel (Top Expert / 4009 / 208 / 282 ) »
Wow. Unterbewusst programmieren. Sollte ich auch mal üben.....
Bild
Ralf Wenzel Heuristika SAP-Development -- 25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Modularisierung wie handhaben?

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Du könntest noch so einiges anderes üben.

Re: Modularisierung wie handhaben?

Beitrag von ewx (Top Expert / 4913 / 332 / 653 ) »
Unit605 hat geschrieben:Folgende Makros benutze ich z.B. unterbewußt(?) immer:
Gibt's einen Kurs "Unterbewußtes Programmieren" bei der SAP?? :D :D :D

Zu deinen beiden Beispielen, Unit605:
1. völlig unnötig
2. das kann man auch leicht durch ein Unterprogramm lösen
Beides Beispiele, wo ich sagen würde, dass die Verwendung von Makros unnötig ist. Wobei die aber auch so übersichtlich sind, dass sie keine große Gefahr darstellen, also z.B. bei der späteren Fehlersuche.

Modularisierung:
Sobald ich Coding in einem Programm ein zweites Mal verwende, wird modularisiert.
Sobald ich Coding aus einem anderen Programm benötige, wird das Coding ebenfalls durch eine entsprechende "externe" Funktion ersetzt.

Problem bei "externer Modularisierung" (Klassen, Funktionsbausteine, Includes) ist in der Regel: Wie weiß ich, dass ich danach suchen sollte? Wie weiß ich, wonach ich suchen könnte? Wie dokumentiere ich für andere, dass es diese Funktion gibt?

Bei einfachen Modulen, wie z.B. das mehrstufige Lesen eine Tabelle, kann ich durch einen Verwendungsnachweis leicht herausfinden, dass die Tabelle woanders genutzt wird und kann dann in der Regel auch gut erkennen, dass ich dieses Modul selbst verwenden kann.
Komplizierter wird es, wenn es keinen "Einstieg" gibt, also wenn ich z.B. gar nicht weiß, welche Tabelle betroffen sein könnte oder dass es bereits eine Tabelle gibt.

Re: Modularisierung wie handhaben?

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
[quote="ewx"
Zu deinen beiden Beispielen, Unit605:
1. völlig unnötig
2. das kann man auch leicht durch ein Unterprogramm lösen
Beides Beispiele, wo ich sagen würde, dass die Verwendung von Makros unnötig ist. Wobei die aber auch so übersichtlich sind, dass sie keine große Gefahr darstellen, also z.B. bei der späteren Fehlersuche.
[/quote]

" völlig unnötig" würde ich so nicht sagen, da ich die Makros ja nutze. Würde ich sie nicht nutzen, dann, ja dann wären sie völlig unnötig.

Enno, es gibt viele unterschiedlichste Lösungen. Gibt 10 Programmierer das gleiche Programm zu programmieren und Du wist 10 unterschiedlich Programme erhalten.

Ich gebe hier nur das wieder, was ich nutze. Ich erwarte nicht, dass das jeder gleich handhabt.

Re: Modularisierung wie handhaben?

Beitrag von ewx (Top Expert / 4913 / 332 / 653 ) »
Unit605 hat geschrieben: " völlig unnötig" würde ich so nicht sagen, da ich die Makros ja nutze. Würde ich sie nicht nutzen, dann, ja dann wären sie völlig unnötig.
So kann man's auch sehen! 8)
Unit605 hat geschrieben:Ich gebe hier nur das wieder, was ich nutze. Ich erwarte nicht, dass das jeder gleich handhabt.
Sacht ja auch keiner. Das war ja keine Anweisung, dass du dass sofort in allen Programmen löschen sollst, sondern ebenfalls nur meine Meinung! :)
Gruß

Re: Modularisierung wie handhaben?

Beitrag von bliss (ForumUser / 66 / 2 / 6 ) »
Und wenn man einfach

Code: Alles auswählen.

" Makro
an die entsprechende Stelle schreibt? Minimaler Aufwand, und der Leser ist vorgewarnt.

Falls es jemanden interessiert, ich benutze keine Makros und mir sind in meiner jungen Karriere auch noch keine begegnet.

Unterbewusst hab ich noch nicht programmiert, aber es ist nur eine Frage der Zeit, wie ich davon träume, dass ich in ABAP programmiere :D

So, jetzt lasse ich wieder die Profis weiterreden :)
Gruß
bliss
.|.. .. ...| . .|.. ||| |. ||. .| |. |.. .||. .|. ||| ... .||. . .|.

Ich bin Anfänger und meine Tipps sind mit Vorsicht zu genießen.

Re: Modularisierung wie handhaben?

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
bliss hat geschrieben: Falls es jemanden interessiert, ich benutze keine Makros und mir sind in meiner jungen Karriere auch noch keine begegnet.
Schon mal

Code: Alles auswählen.

Break Userid 
benutzt oder gesehen?

Re: Modularisierung wie handhaben?

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
ewx hat geschrieben:Problem bei "externer Modularisierung" (Klassen, Funktionsbausteine, Includes) ist in der Regel: Wie weiß ich, dass ich danach suchen sollte? Wie weiß ich, wonach ich suchen könnte? Wie dokumentiere ich für andere, dass es diese Funktion gibt?
genau so geht es mir auch.

Re: Modularisierung wie handhaben?

Beitrag von bliss (ForumUser / 66 / 2 / 6 ) »
Guten Morgen!

Nein, kenne ich gar nicht und konnte jetzt auf die schnelle auch keine Dokumentation dazu finden.
Gruß
bliss
.|.. .. ...| . .|.. ||| |. ||. .| |. |.. .||. .|. ||| ... .||. . .|.

Ich bin Anfänger und meine Tipps sind mit Vorsicht zu genießen.

Re: Modularisierung wie handhaben?

Beitrag von black_adept (Top Expert / 4158 / 136 / 959 ) »
bliss hat geschrieben:Nein, kenne ich gar nicht und konnte jetzt auf die schnelle auch keine Dokumentation dazu finden.
Die etwas versteckte Doku dazu findet sich in der offiziellen SAP-Hilfedoku zu den Makros http://help.sap.com/abapdocu_70/en/ABAPDEFINE.htm

Als Vertreter der Pro-Makro-Fraktion hier ein Makro, den ich gerne verwende um die Lesbarkeit des Programms zu erhöhen.

Code: Alles auswählen.

DEFINE fill_if_initial.
  if targetstruktur-&1 is initial.
    targetstruktur-&1 = sourcestruktur-&1.
  endif.
END-OF-DEFINITION.

fill_if_initial: feld1,
                 feld2,
*                 ...
                 feldn.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Modularisierung wie handhaben?

Beitrag von bliss (ForumUser / 66 / 2 / 6 ) »
Ah! Jetz verstehe ich warum beim Eintippen von br[TAB] BREAK erscheint, ohne Syntaxfehler, wo ich doch nur BREAK-POINT kenne. #define kenne ich schon aus C. Danke für die Erklärung.

Heute ist mir ganz kurz ein Makro begegnet. Hab schnell weitergescrollt :D Ne, ich weiß nicht, ob ich für oder gegen Makros bin. Ich halte mich aus diesem anscheinend aufkeimenden "Glaubenskrieg" raus und nehme es wie es kommt.
Gruß
bliss
.|.. .. ...| . .|.. ||| |. ||. .| |. |.. .||. .|. ||| ... .||. . .|.

Ich bin Anfänger und meine Tipps sind mit Vorsicht zu genießen.

Re: Modularisierung wie handhaben?

Beitrag von erp-bt (Specialist / 163 / 4 / 21 ) »
Hi,

Laut den "offiziellen" ABAP-Programmierrichtlinien (SAP-Press, Horst Keller) sind Makros nicht obsolet, sie sollten nur nicht mehr verwendet werden. Ich zitiere mal:
Makros werden häufig wie aufrufbare Einheiten anstelle von echten Prozeduren benutzt. Dies ist jedoch nur in den wenigsten Fällen sinnvoll. Makros haben zum einen keinen eigenen Kontext, und zum anderen können sie nicht schrittweise im ABAP Debugger ausgeführt werden. Dies macht eine Fehlersuche in Programmen, die umfangreiche oder komplexe Makros verwenden, nahezu unmöglich. Aus diesen Gründen ist ein Makro kein vollwertiger Ersatz für eine echte Prozedur.

Darüber hinaus wurden Makros in der Vergangenheit nicht nur als Prozedurersatz, sondern unter anderem auch dazu verwendet, häufig wiederkehrende Deklarationen strukturierter Daten vorzunehmen. Heutzutage werden hierfür natürlich keine Makros, sondern eigenständige Typen verwendet.

In bestimmten Fällen kann der Einsatz von Makros dennoch gerechtfertigt sein, und zwar dann, wenn einfache, wiederkehrende Anweisungsmuster vorliegen. Ein Makro kann hier als Mittel zur Designzeit-Generierung angesehen werden. Das folgende gute Beispiel zeigt eine solche Verwendung eines Makros. In einem solchen Fall kann der Einsatz eines Makros aus folgenden Gründen die bessere Lösung als die Verwendung einer Prozedur sein:
  • Die im Makro enthaltene Anweisungsfolge ist hinreichend einfach und offensichtlich, sodass die fehlende Möglichkeit des Debuggens nicht ins Gewicht fällt.
  • Die Anweisungen werden statisch von der Syntaxprüfung auf Korrektheit hin überprüft. Beim Einsatz der sonst notwendigen dynamischen Sprachmittel in einer Prozedur würden Fehler (in diesem Beispiel falsch angegebene Bezeichner) erst zur Laufzeit entdeckt werden. Darüber hinaus wäre der dynamische Zugriff zeitaufwendiger.
  • Gegenüber der Ausformulierung aller Einzelanweisungen bleibt der Quelltext beim Einsatz solcher Makros übersichtlicher, insbesondere bei einer hohen Anzahl von Wiederholungen der Anweisungsfolge. Die Gefahr von trivialen Schreibfehlern sinkt, da weniger sich stark ähnelnder Quelltext erstellt und gepflegt werden muss. Änderungen an der Logik sind im Nachhinein mit geringerem Aufwand möglich.
In bestimmten Fällen kann der Einsatz von Makros die Korrektheit und Wartbarkeit von Quelltext also erhöhen. Makros, die nicht triviale Kontrollstrukturen enthalten, stellen aber stets ein Wartungsproblem dar, da sie nicht schrittweise vom ABAP Debugger ausgeführt werden können. Wenn daher Makros verwendet werden, sollte dies äußerst sparsam geschehen, und sie sollten nur wenige Zeilen umfassen, da Fehler in Makros kaum zu analysieren sind.
Ich persönlich nutze außer "break username" gar kein Makros.

Im übrigen gibt es mittlerweile eine Online-Version der Programmierrichtlinien in nahezu identischer Form. Hier der Link dazu, falls Ihr den noch nicht kennt:

http://help.sap.com/abapdocu_731/de/index.htm

Dort unter ABAP - Programierrichtlinien --> Robustes ABAP --> Modularisierungseinheiten --> Makros findet man den o.a. Hinweis. Der Rest der Programmierrichtlinien ist IMHO auch sehr lesenswert.
...entwickelnder Berater...beratender Entwickler

Vergleichbare Themen

1
Antw.
906
Views
Modularisierung
von pohlmann-schwarza » 12.06.2008 12:48 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

LSMW-Problem
vor 12 Stunden von mazu gelöst 5 / 745
ATC Finding in Smartforms
vor 4 Tagen von sap_enthusiast 2 / 716

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.

Aktuelle Forenbeiträge

LSMW-Problem
vor 12 Stunden von mazu gelöst 5 / 745
ATC Finding in Smartforms
vor 4 Tagen von sap_enthusiast 2 / 716

Unbeantwortete Forenbeiträge

SFP/SEGW - Fehler beim Rendering
letzen Monat von Manfred K. 1 / 78143
Benutzerdefinierte Felder PSP
January 2026 von Rabea1103 1 / 131248