Von der Wichtigkeit des Default Komponentennamen....

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
10 Beiträge • Seite 1 von 1
10 Beiträge Seite 1 von 1

Von der Wichtigkeit des Default Komponentennamen....

Beitrag von ralf.wenzel (Top Expert / 3927 / 200 / 280 ) »
Keine Frage, sondern ein dringender Tipp an alle - gerade an die weniger Erfahrenen:

Leider hat auch die SAP nicht sonderlich viele davon vergeben, aber ich habe hier gerade (mal wieder) einen Fall, wo ich mir die Haare raufe, dass mein Hinweis "zu jedem Datenelement bitte einen Default Component Name vergeben, sonst gibt das bei so vielen Entwicklern ein Heidenchaos!" -- leider kam ich erst dazu, als das Projekt schon eine Weile lief und schon eine Menge Chaos da war.

Da wird dann aus einem SPENDER_TYP in der einen Struktur ein SPETYP in der nächsten, mal heißt es DONATION_NUM, ein anderer schreibt DONATIONNUMM oder DONATION_NO und dann passen haufenweise Zuweisungen nicht mehr - egal ob dynamisch oder per MOVE_CORRESPONDING. Ergebnis sind dann nicht funktionierende Anwendungen, ich habe gerade eine volle Stunde solche Abweichungen behoben und schon rennt die Anwendung.

Eine Namenrichtlinie ist von brennender Wichtigkeit in der Form, dass man sich über Begrifflichkeiten projektweit einigen muss. Am einfachsten geht das über Default Component Names und darüber, dass man Strukturen wiederverwendet. Das ist gerade dann besonders wichtig, wenn man viele Entwickler hat, die viele in sich abgeschlossene Module entwickeln, die miteinander kommunizieren müssen.

DAS ist dann auch der Grund für mein Engagement gegen die HN (die hier ja mehrfach Thema war), weil die wahren Namens-Vergabe-Probleme, die wirklich Fehler erzeugen, ganz woanders liegen. Das heutige Beispiel zeigt das. Das sind in meinen Augen einfach Regeln an der falschen Stelle, während eine solche Regel, mit der ich dieses Posting einleitete, oftmals nicht existiert.

Sprich: Eine Tabelle besteht nicht aus Feldern, sondern aus Includes, die zusammen die Tabellenstruktur darstellen. So hat man dann (neben dem MANDT-Feld) zum Beispiel eine Unterstruktur mit Gruppenname KEY (mit den Schlüsselfeldern) und eine weitere mit Gruppenname DATA (für die anderen Felder), was Fieldmappings deutlich vereinfacht. Diese Unterstrukturen kann man wiederverwenden, dann passiert so ein Mist auch nicht, wie ich ihn oben beschrieben habe. Da, wo man sie nicht wiederverwenden kann, muss man sich eben auf einheitliche Namen einigen.

Je enger ein Namenskorsett ist, umso weniger Abstimmungsprobleme gibt es - ich erinnere hierbei daran, was ewx über das Schreiben eines Buches schrieb und welche Regeln es da einzuhalten gibt. Das war eine sehr gut passende Parallele.


Ralf

Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
Icke0801

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


Re: Von der Wichtigkeit des Default Komponentennamen....

Beitrag von DeathAndPain (Top Expert / 1947 / 257 / 413 ) »
Vielen Dank für den Hinweis. Dass es ein Feld "Default-Komponentenname" überhaupt gibt, hatte meine Großhirnrinde bislang noch gar nicht erreicht, aber ich habe es mir gerade angeschaut. Ich bin auch ein Fan sorgsam gepflegter DDIC-Objekte. Meckert das System dann wenigstens an, wenn man das Datenelement in einer Tabelle verwendet und die Komponente dort dann anders nennt, oder wird erwartet, dass man selber im Datenelement nachsieht? Das macht dann nämlich wieder kein Schwein.
Da wird dann aus einem SPENDER_TYP in der einen Struktur ein SPETYP in der nächsten, mal heißt es DONATION_NUM, ein anderer schreibt DONATIONNUMM oder DONATION_NO und dann passen haufenweise Zuweisungen nicht mehr - egal ob dynamisch oder per MOVE_CORRESPONDING.
Ach, das macht man einfach so: :-D

Code: Alles auswählen.

TYPES: t1 TYPE struktur_mit_kram,
       t2 TYPE struktur_mit_kram2, " inhaltlich dasselbe, aber Komponenten anders benamt

DATA: d1 type t1,
      d2 type t2.

MOVE d1 TO d2. " Ist egal, dass die Komponenten anders heißen; der MOVE überklatscht einfach von vorne nach hinten :-D

Re: Von der Wichtigkeit des Default Komponentennamen....

Beitrag von ralf.wenzel (Top Expert / 3927 / 200 / 280 ) »
DeathAndPain hat geschrieben:Vielen Dank für den Hinweis. Dass es ein Feld "Default-Komponentenname" überhaupt gibt, hatte meine Großhirnrinde bislang noch gar nicht erreicht, aber ich habe es mir gerade angeschaut. Ich bin auch ein Fan sorgsam gepflegter DDIC-Objekte. Meckert das System dann wenigstens an, wenn man das Datenelement in einer Tabelle verwendet und die Komponente dort dann anders nennt, oder wird erwartet, dass man selber im Datenelement nachsieht? Das macht dann nämlich wieder kein Schwein.
Nein, leider nicht - kleiner Kontrollreport, der täglich als Job durchläuft oder als Prüfung im Code Inspector hinterlegen. Am Besten so, dass es bei der Freigabe eines Transportauftrages prozessiert wird.


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

Re: Von der Wichtigkeit des Default Komponentennamen....

Beitrag von black_adept (Top Expert / 4093 / 128 / 940 ) »
Ich fürchte ich muss mal wieder den Advocatus Diaboli mimen.
Vereinheitlichung ist eine tolle Sache - in diesem Punkte möchte ich nicht widersprechen. Dafür den "Default Component Name" zu verwenden, wenn man gleichzeitig den Codeinspector pimpt ist ja auch noch ok. Aber das ist nicht die übliche Vorgehensweise und SAP verwendet das auch völlig anders
F1-Hilfe zu dem Feld hat geschrieben:Default name for components using the dataelement
You can assign an English default name to the data element in this
field.

Components in BAPI structures that use the data element should have this
default name. Using default names unifies the assignment of component
names.
Man schaue sich einfach mal die Namensgebung von Feldern von SAP irgendwo an:
Beispiele:
Vertrieb: DTEL: VKORG, Default Name (for BAPIs ) SALESORG, Name in den Haupttabellen und -strukturen: VKORG
Einkauf: DTEL: EBELN, Default Name (for BAPIs ) PO_NUMBER, Name in den Haupttabellen und -strukturen: EBELN
und das kann man beliebig fortsetzen.
Der erwartete Name eines Feldes ist für mich immer noch gleichlautend mit dem referenzierten Datenelement - so wie SAP das halt selber auch (fast) überall macht. Wenn man das dann bei BAPIs oder Schnittstellen sprechender machen will kann man das ja machen. Von mir aus kann man ja auch wie Ralf vorschlägt immer einen Defaultnamen hinterlegen. Aber in SAP-Programmen sollte man m.E. lieber den DTEL-Namen verwenden statt des Defaultnamens, einfach weil das von den Meisten (schätze ich) so erwartet wird!

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
DeathAndPain

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Von der Wichtigkeit des Default Komponentennamen....

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
ralf.wenzel hat geschrieben:Eine Namenrichtlinie ist von brennender Wichtigkeit in der Form, dass man sich über Begrifflichkeiten projektweit einigen muss.
Sehe ich auch so. Das ist das Wichtigste.
Der Komponentenname ist dabei hilfreich. Man kann sich aber auch ohne Verwendung des Komponentennames auf einheitliche Schreibweisen einigen.
Eine Einigung, die über den Komponentennamen bestärkt wird, finde ich jedoch auch sehr hilfreich. Da gibt es dann keine Missverständnisse mehr...
black_adept hat geschrieben: Aber in SAP-Programmen sollte man m.E. lieber den DTEL-Namen verwenden statt des Defaultnamens, einfach weil das von den Meisten (schätze ich) so erwartet wird!
Das gilt aber nur für die alten fünf-stelligen Datenelemente. Gerade in den Branchenlösungen oder oder Kundennamensräumen ist es wenig hilfreich ein Feld /CUSTOMER/MODUL_RICHTIGER_NAME zu nennen, sondern stattdessen "RICHTIGER_NAME".

Ich habe den Komponentennamen in einem Projekt verwendet, in dem wir viel mit dynamisch erstellten Tabellen gearbeitet haben. Wir haben dann nur das Datenelement definiert, das in einer Tabelle verwendet werden soll und der Name des Feldes wurde aus dem Komponentennamen ermittelt. Da ist es dann wichtig, dass auch der Feldname in den entsprechenden DB-Tabellen den gleichen Namen hat, damit ein Move-Corresponding funktioniert.

Ja, Move-Corresponding ist nicht ideal. aber wenn man mit dynamisch erstellten Tabellen arbeitet und man 20 dynamische Felder hat und drei bis vier Millionen Datensätze, dann ist ein Move-Corresponding einfacher und schneller als eine direkte Zuweisung mittels ASSIGN.

Re: Von der Wichtigkeit des Default Komponentennamen....

Beitrag von ralf.wenzel (Top Expert / 3927 / 200 / 280 ) »
black_adept hat geschrieben:Man schaue sich einfach mal die Namensgebung von Feldern von SAP irgendwo an
Das sollte man auf gar keinen Fall tun! Und dafür gibt es einen Grund: Die meisten kurzen SAP-Feldnamen sind sehr, sehr alt (erkennbar an den deutschen Abkürzungen) und nicht sehr sprechend. Inzwischen nimmt man (und darf man überhaupt erst) längere Feldnamen verwenden, wovon auch die SAP Gebrauch macht. Auch bei Tabellen ist das so, leider kann man die nicht viel länger machen. In unserem aktuellen Projekt nummerieren wird die ernsthaft durch, weil es viele Tabellen sind und man die mit so wenig Zeichen ohnehin nicht sprechend hinbekommt.

Nehmen wir etwas, was nicht so alt ist, wie FI- oder MM-Tabellen: EWM! Dort arbeitet die SAP, wie sie gern vor 20 Jahren schon gearbeitet hätte ;) Und da findet man nur englischsprachige und überaus lange Feldnamen, die dafür deutlich sprechender sind.


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

Re: Von der Wichtigkeit des Default Komponentennamen....

Beitrag von black_adept (Top Expert / 4093 / 128 / 940 ) »
Ok - lasse ich mich erst mal von überzeugen. Gerade bei den /... Datenelementen sollte man die Felder natürlich nicht so nennen - und genau genommen gilt das für die meisten Z-Datenelemente genau so.
Also Namensgleichheit von DTEL und Feldnamen lasse ich mal weg
Aber: @Ralf: Wenn du in einem "neuen" Modul unterwegs bist - Wie viele von SAPs ausgelieferten Datenelementen haben denn dort eine von dir angesprochene, nicht triviale ( = Defaultname ist kein Bestandteil des Datenelementnamens ) Defaultbelegung. Ich schätze, dass SAP auch in den neuen Modulen nicht mehr als 5%-10% ihrer DTELs so ausliefert. Und da bei SAP ja auch diverse Entwickler zusammen arbeiten hätte ich erwartet, dass das da noch viel stärker forciert werden sollte als bei Kunden, so dass ich die Aussage "zu jedem DTEL auch ein Default Component Name zu vergeben" weiterhin nicht unterstütze.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Von der Wichtigkeit des Default Komponentennamen....

Beitrag von ralf.wenzel (Top Expert / 3927 / 200 / 280 ) »
Darüber hatte ich ein intensives Streitgespräch mit Horst Keller - der (nachdem er eine Weile "rumgezickt" hat ;) ) schließlich sagte "Du hast ja recht, aber für die fehlende Disziplin in den Modulen kann ich nix, ich bin nur für die Sprache zuständig" (sinngemäß übersetztes Zitat).

Auch bei der SAP geht Vieles eben auf "mach mal schnell" und nicht auf Nachhaltigkeit. Das sieht man schon an den vielen Funktionsbausteinen, die nicht selten dasselbe oder etwas sehr Ähnliches machen.


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

Re: Von der Wichtigkeit des Default Komponentennamen....

Beitrag von black_adept (Top Expert / 4093 / 128 / 940 ) »
Warum diskutierst du mit H.K. auf englisch? Und falls das in einem offenen (englischen) Thread/Forum war - dann poste doch bitte mal den Link dahin.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Von der Wichtigkeit des Default Komponentennamen....

Beitrag von ralf.wenzel (Top Expert / 3927 / 200 / 280 ) »
black_adept hat geschrieben:Warum diskutierst du mit H.K. auf englisch? Und falls das in einem offenen (englischen) Thread/Forum war - dann poste doch bitte mal den Link dahin.
Weil Englisch die Sprache des SCN ist. Irgendwo im SCN in einem Monsterthread, ich habe derzeit leider nicht die Muße, das jetzt rauszusuchen....


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

Seite 1 von 1

Vergleichbare Themen

4
Antw.
3017
Views
Möglichkeit Komponentennamen aus Struktur zu lesen
von MarkusW » 12.02.2007 11:00 • Verfasst in ABAP® Core
6
Antw.
6529
Views
Felder bzw. Komponentennamen einer Tabelle auslesen
von pohlmann-schwarza » 27.05.2008 09:30 • Verfasst in ABAP® für Anfänger
2
Antw.
2052
Views
OO ALV Layout /DEFAULT
von Icke0801 » 07.11.2019 14:50 • Verfasst in Dialogprogrammierung
4
Antw.
3990
Views
SELECT-OPTIONS .. FOR ... DEFAULT
von cuncon » 23.02.2018 13:38 • Verfasst in ABAP® für Anfänger
1
Antw.
7446
Views
PARAMETERS: DEFAULT (Kommazahl)
von chrislo » 05.04.2011 11:03 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Trennen Strasse und Hausnummer
vor 10 Stunden von msfox 18 / 10978
Dialog-Container mit Toolbar/Status
vor 13 Stunden von black_adept gelöst 27 / 4096
IT0024 Qualifikationen CP-ID
vor 14 Stunden von ArjenR 1 / 102

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

Trennen Strasse und Hausnummer
vor 10 Stunden von msfox 18 / 10978
Dialog-Container mit Toolbar/Status
vor 13 Stunden von black_adept gelöst 27 / 4096
IT0024 Qualifikationen CP-ID
vor 14 Stunden von ArjenR 1 / 102

Unbeantwortete Forenbeiträge

IT0024 Qualifikationen CP-ID
vor 14 Stunden von ArjenR 1 / 102
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 3036
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9627