Gesucht: Elegantes Coding

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Re: Gesucht: Elegantes Coding

Beitrag von black_adept (Top Expert / 4156 / 136 / 958 ) »
Nachgelagerte Aufgabe an die Tüftler hier im Forum, die ein halbwegs aktuelles SAP-Release unter den Fingern haben:
Man kann die Ausgabe auch mit einem einzigen Befehl erzeugen.
Ob das dann noch elegant oder übersichtlich oder wartbar ist sei mal dahingestellt. Ich fand es jedenfalls ziemlich schwer, da ich mit den ganzen neuen Befehlen leider noch nicht so vertraut bin.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

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


Re: Gesucht: Elegantes Coding

Beitrag von black_adept (Top Expert / 4156 / 136 / 958 ) »
Hier mal die erste 1-Befehl-Lösung die mir eingefallen ist. Im Nachhinein kann ich nur sagen: In diesem Fall sind die neuen Befehle wie reguläre Ausdrücke. Wenn man sich gut damit auskennt kann man schicke Sachen damit machen. Aber wenn dann irgend etwas doch nicht so gut läuft wie geplant: Viel Spaß beim Debuggen und Analysieren.

Code: Alles auswählen.

rt_data_from_to =  VALUE #( LET lt_sort = VALUE integer_tab( FOR GROUPS OF num IN it_zahlen GROUP BY num ASCENDING ( num ) )  " Duplikate entfernen, aufsteigende Reihenfolge
                                lt_temp = VALUE ltt_from_to( FOR num1 IN lt_sort INDEX INTO idx1                              " Für jeden Wert nach oben und unten schauen, wie viele Werte aufeinanderfolgend sind
                                                             ( from = REDUCE i( INIT r_from = num1 FOR num2 IN lt_sort TO   idx1 INDEX INTO idx2 NEXT r_from = COND i( WHEN num2 - idx2 + idx1 = num1 AND r_from = num1 THEN num2 ELSE r_from ) )
                                                               to   = REDUCE i( INIT r_to   = num1 FOR num2 IN lt_sort FROM idx1 INDEX INTO idx2 NEXT r_to   = COND i( WHEN num1 + idx2 - idx1 = num2                   THEN num2 ELSE r_to   ) )
                                                              )
                                                            ) IN
                            FOR GROUPS OF line IN lt_temp GROUP BY line ( line ) ). " Nochmal Duplikate rauswerfen die eben erzeugt wurden

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Gesucht: Elegantes Coding

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Ganz ehrlich, wer solches Coding beim Kunden hinterlässt
gehört gefeuert. Das kann doch keiner mehr warten.

Re: Gesucht: Elegantes Coding

Beitrag von ralf.wenzel (Top Expert / 4003 / 208 / 282 ) »
Natürlich, aber darum ging es ja gar nicht. Das ist ein Wettbewerb, wie ein Autorennen. Wer im Straßenverkehr so fährt wie in der F1, verliert den Führerschein.

Dass man alles, was sinnvoll ist zu etwas zusammenbasteln kann, das dann nicht mehr sinnvoll ist, liegt auf der Hand.

Aber gerade VALUE nutze ich in neuen Releases ständig statt eine WA zu deklarieren, die zu füllen und zu übergeben. Oder CONV um einen konvertierten Wert zu übergeben, statt ihn durch eine Konvertierungsvariable zu schicken. Man spart sich eine Menge Umwege und Krücken mit der neuen Syntax.


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

Re: Gesucht: Elegantes Coding

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Solange man es so verwendet daß das Coding auch für Andere lesbar bleibt
ist das eine feine Sache. Ich habe leider auch schon schrecklichen und
völlig unlesbaren Code mit diesen Anweisungen gesehen.
Klar, das geht mit anderen auch - hier scheint es dazu zu verleiten.

Re: Gesucht: Elegantes Coding

Beitrag von ralf.wenzel (Top Expert / 4003 / 208 / 282 ) »
Was lesbar ist und was nicht, liegt immer im Auge des Betrachters. Ich kenne Leute, die mit Regulären Ausdrücken Hammersachen machen und das auch superlesbar finden - ich allerdings nicht, so beeindruckend ich das auch finde. Ich quäle mich durch jeden Ausdruck durch ;)

Und nein, es verleitet nicht mehr als bisheriges ABAP. Wenn ich überlege, was für Codingwüsten mit logischen Datenbanken, EXTRACT und HIDE ich schon warten musste. Das hab ich schon damals nicht verstanden, als das noch up to date war. War auch ne Quälerei. Die alte Zahlungsregulierungsliste (die ja inzwischen neu entwickelt wurde) war ein Grund zum Aufhängen. Sag ich mal als jemand, der das Teil von unterst zu oberst gekehrt hat, als er noch jung und knackig war. ;)


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

Re: Gesucht: Elegantes Coding

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Lesbar ist das was ein anderer durchschnittlicher Programmierer ohne
lange Einweisung versteht. Super-Spezial-Routinen mal ausgenommen.
Aber die sind je eher selten.
Logische Datenbanken stammen aus einer Zeit als man noch mit VSAM
gearbeitet hat und es kein SQL im SAP gab. Hat mich immer gewundert
daß diese Technik ins R/3 übernommen worden ist.
Für Extract gilt ähnliches. Mit 16MB Hauptspeicher ist es ein wenig
schwierig große Datenmengen zu bearbeiten. Dafür war das gedacht.
Beides ist heute nicht mehr sinnvoll.
Mit Hide kann man aber auch heute noch schöne Dinge bauen. Und
zwar mit sehr wenig Aufwand. Den Befehl würde ich vermissen.

Re: Gesucht: Elegantes Coding

Beitrag von ralf.wenzel (Top Expert / 4003 / 208 / 282 ) »
Daniel hat geschrieben:Mit Hide kann man aber auch heute noch schöne Dinge bauen. Und
zwar mit sehr wenig Aufwand. Den Befehl würde ich vermissen.
Diesen Satz könnte ich dir auch für VALUE oder CONV oder andere neue Anweisungen unterschreiben.



Ralf

Nachtrag: Was durchschnittlich ist und was nicht, hängt immer von der betrachteten Grundgesamtheit ab. Je mehr Leute aus anderen Bereichen in SAP entwickeln und je mehr sich SAP öffnet, umso mehr verschiebt sich dieser Begriff. Weil dort Techniken verwendet werden, die im SAP-Bereich bisher unbekannt waren, aber längst Stand der Technik sind.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Gesucht: Elegantes Coding

Beitrag von black_adept (Top Expert / 4156 / 136 / 958 ) »
Daniel hat geschrieben:Solange man es so verwendet daß das Coding auch für Andere lesbar bleibt
ist das eine feine Sache. Ich habe leider auch schon schrecklichen und
völlig unlesbaren Code mit diesen Anweisungen gesehen.
Klar, das geht mit anderen auch - hier scheint es dazu zu verleiten.
Daniel hat geschrieben:Lesbar ist das was ein anderer durchschnittlicher Programmierer ohne
lange Einweisung versteht.
ralf.wenzel hat geschrieben:Was durchschnittlich ist und was nicht, hängt immer von der betrachteten Grundgesamtheit ab. Je mehr Leute aus anderen Bereichen in SAP entwickeln und je mehr sich SAP öffnet, umso mehr verschiebt sich dieser Begriff.
Wenn ich fremden (SAP) Code lesen und verstehen muss wird mir wohl nichts anderes übrig bleiben als mich über kurz oder lang mit den neuen Konstrukten vertraut zu machen - und ob eine spezielle ausgelieferte Codestrecke von Durschschnittsentwicklern kommt oder nicht ist nachher egal - ICH muss damit zurechtkommen. Und selbst die Beschäftigung mit dem sinnlosen Ein-Befehl da oben hat mir schon eine Menge Verständnis gebracht.
Was mich aber trotzdem ziemlich ärgert ist folgendes: SAP bietet mit den Expressions tolle Möglichkeiten mit anderen Keywords das zu machen, was ABAP vorher auch schon konnte. Teilweise sogar 1:1 ( FOR zeile IN tabelle statt LOOP AT tabelle INTO zeile. ENDLOOP. Oder COND statt IF.. ELSEIF.. ) Die Erweiterung liegt jetzt darin, dass ich das an Stellen einsetzen darf wo das vorher nicht möglich war bzw. wo ich dann mit Hilfsvariablen arbeiten musste.
Was aber vergessen ( oder nur noch nicht implementiert - ich hoffe tatsächlich, dass es das ist ) wurde ist, dass das auch debugbar sein sollte. Und da bisher die kleinste Schrittweite beim Debugger das Statement ist, wird die 1-Befehl-Sequenz genau wie Makros auch nicht durch irgendwelche Debugpunkte unterbrochen und damit dann auch die Möglichkeit verwehrt zu schauen, was falsch laufen könnte.
Beispiel wieder das Ein-Befehl-Monster. Das ist eigentlich gar nicht so kompliziert wenn man es selbst geschrieben hat und weiß was man macht. Außerdem ist es deutlich besser formatiert wenn man es via Copy&Paste in ein eigenes Programm übernimmt. Aber warum es am Ende funktioniert wäre mir nicht sofort klar. Wenn ich das debuggen könnte wie ein normales Coding würde ich dann irgendwann mitbekommen wie es funktioniert und es dann dem Ersteller des Codes um die Ohren hauen ob der Performance. Aber so müsste ich das erst mal "klassisch" nachbauen.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 2):
ralf.wenzelDeathAndPain

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Gesucht: Elegantes Coding

Beitrag von ralf.wenzel (Top Expert / 4003 / 208 / 282 ) »
Alles richtig. Bei mir ist es dann der technische Spieltrieb, der mich das analysieren lässt. Aber den hat nicht jeder und die Lust auf entsprechende Mehrarbeit auch nicht. Zum Debuggen ist es besser, das Coding nach alter Syntax in eine Methode zu packen, da kann man es dann debuggen.


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

Re: Gesucht: Elegantes Coding

Beitrag von DeathAndPain (Top Expert / 2010 / 271 / 425 ) »
Daniel hat geschrieben:Logische Datenbanken stammen aus einer Zeit als man noch mit VSAM
gearbeitet hat und es kein SQL im SAP gab. Hat mich immer gewundert
daß diese Technik ins R/3 übernommen worden ist.
Ich denke, der wesentliche Grund dafür liegt zum einen in alten Reports, die man nicht alle auf einmal über Bord schmeißen und neu machen wollte, vor allem aber darin, dass logische Datenbanken (die ich auch nicht leiden kann) großen Wert für Queries haben. Ohne logische Datenbanken würden Queries 95% ihrer Einsatzfähigkeit verlieren (da man dann aufwendig eigene Datenquellen coden müsste). Und Queries sind nun mal ein exzellentes Hilfsmittel, um praktisch ohne Programmierkenntnisse und mit minimalem Aufwand die verschiedensten Auswertungen auf die Schnelle auf die Beine zu stellen. Das gilt besonders für das HCM, aber ich denke man, in anderen Bereichen auch.

Re: Gesucht: Elegantes Coding

Beitrag von ewx (Top Expert / 4908 / 331 / 649 ) »
black_adept hat geschrieben:Und da bisher die kleinste Schrittweite beim Debugger das Statement ist, [...]
Das ist unwahr. Du kannst mit der Drucktaste "Schrittweite" umstellen von "Zeile/ Anweisung" auf "Teilbedingung/ Anweisung".
Sinnvoll ist das aber auch nur bedingt, da man m.W. nach keinen Zugriff auf die intern verwendeten Tabellen/ Strukturen hat.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag (Insgesamt 2):
black_adeptDeathAndPain


Re: Gesucht: Elegantes Coding

Beitrag von black_adept (Top Expert / 4156 / 136 / 958 ) »
Danke Enno,
über die Schaltfläche habe ich immer hinweggeschaut weil sie für mich früher nie einen Sinn gemacht hat.
Allerdings kann man sich im Debugger durchaus die temporären Variablen anschauen - aber wirklich sinnvoll debugbar ist das Beispiel trotzdem nicht. Wer es ausprobieren will: Schauen was genau da intern passiert bzw. wie sich die temporären Tabellen lt_sort und lt_temp der Reihe nach füllen, um vor dem letzten Schritt zu wissen, wie die Tabelle lt_temp gefüllt ist bevor sie auf die endgültige Form reduziert wird. Bei dem Beispielinput sollte das zwar mühselig sein aber durchaus noch machbar - aber sobald da größere Daten kämen fehlen eben einige Hilfsmittel des "normalen" Debuggings
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Gesucht: Elegantes Coding

Beitrag von ralf.wenzel (Top Expert / 4003 / 208 / 282 ) »
Das Leben ist eine Baustelle - und SAP (hier: der Debugger) eben auch ;)


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

Vergleichbare Themen

5
Antw.
3494
Views
Frage zu Coding
von Mark33 » 15.03.2012 10:40 • Verfasst in ABAP® für Anfänger
13
Antw.
9491
Views
Coding Fehler
von commolus » 15.05.2012 16:53 • Verfasst in ABAP Objects®
6
Antw.
4167
Views
Verständnisfrage zu Coding
von Mark33 » 23.02.2012 15:22 • Verfasst in ABAP® für Anfänger
2
Antw.
1649
Views
Coding im Query
von chris61 » 12.09.2017 13:35 • Verfasst in ABAP® für Anfänger
12
Antw.
9122
Views
Coding verstecken
von migrationshansel » 11.03.2007 14:34 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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

Benutzerdefinierte Felder PSP
vor 4 Wochen von Rabea1103 1 / 45695
Spool vereinen OTF und PDF
letzen Monat von anna2205 1 / 61880
XSLT und Loipro05 Transformation
December 2025 von Torsten1965 1 / 69479
VOLL Artikel in einem Display Typ 12
November 2025 von ThomasM84 1 / 86318