Top-Includes im Class-Builder

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
11 Beiträge • Seite 1 von 1
11 Beiträge Seite 1 von 1

Top-Includes im Class-Builder

Beitrag von mwcem (ForumUser / 1 / 0 / 0 ) »
Hallo,

Wo bringt man Top-Includes (statische Definitionen von Konstanten, die auch in allen anderen Report-Programmen eines Projektes verwendet werden,) im Class-Builder am besten unter? Gibt es dafür eine SAP-Empfehlung? Ich möchte möglichst vermeiden, daß ich die in den Includes enthaltenen Konstanten als einzelne Attribute der Klasse neu definieren muss. Habt Ihr eine Lösung?
Bin für jede Hilfe dankbar.

LG
Michael

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


Re: Top-Includes im Class-Builder

Beitrag von tar (Specialist / 108 / 22 / 31 ) »
In einer Klasse, die abstract und final definiert ist und im obersten Projektpaket liegt. Die Konstanten selbst würde ich dabei inhaltlich sortiert zusammenhalten, insofern möglich.

Das sieht bspw. so als local class aus:

Code: Alles auswählen.

class lcl_top definition abstract final.
  public section.
    constants:
      begin of c_belegtyp,
        auftrag      type vbtyp value 'C',
        auslieferung type vbtyp value 'J',
        rechnung     type vbtyp value 'M',
        " ...
      end of c_belegtyp,

      c_rechnungsformular type tdform value 'RVINVOICETH'.

  " ...
endclass.

Re: Top-Includes im Class-Builder

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
Oder als Attribute eines Interface (ohne Methoden) , welches du bei Bedarf in die Klassen einbinden kannst.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Top-Includes im Class-Builder

Beitrag von rob_abc (Specialist / 109 / 27 / 44 ) »
Clean ABAP schreibt dazu das gleiche wie ihr: https://github.com/SAP/styleguides/blob ... #constants

Aber was sind die Vor- und Nachteile von Interfaces und abstrakten Klassen? Ist es nur eine Frage des Geschmacks?

Ich habe z.B. ein Interface mit ein paar Konstanten angelegt und dann in mehreren Klassen verwendet. Wenn ich nun das Interface ändere werden beim Transport alle Verwender neu generiert. Das kann bei hoher Abhängigkeit ungewollte Effekte im PRD haben. Ob das auch bei einer abstrakten Klasse so wäre?

Re: Top-Includes im Class-Builder

Beitrag von tar (Specialist / 108 / 22 / 31 ) »
Da hast du doch schon einen guten Grund gefunden, keine Interfaces zu verwenden. Ergibt für mich hier auch keinen Sinn, weil der Zweck von Interfaces ganz woanders liegt: in der Festlegung, welche Methoden und Parameter in jenen Klassen vorhanden sein müssen, die dieses Interface implementieren.

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


Re: Top-Includes im Class-Builder

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
tar hat geschrieben:
22.10.2024 11:23
Da hast du doch schon einen guten Grund gefunden, keine Interfaces zu verwenden. Ergibt für mich hier auch keinen Sinn, weil der Zweck von Interfaces ganz woanders liegt: in der Festlegung, welche Methoden und Parameter in jenen Klassen vorhanden sein müssen, die dieses Interface implementieren.
Oder eben welche Konstanten in jenen Klassen vorhanden sein sollen
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Top-Includes im Class-Builder

Beitrag von tar (Specialist / 108 / 22 / 31 ) »
Die Implementierung einer konstanten Schnittstelle stellt jedoch eine Verpflichtung dar: Wenn die Klasse in einer zukünftigen Version so geändert wird, dass sie die Konstanten nicht mehr verwenden muss, muss sie dennoch die Schnittstelle implementieren, um die Binärkompatibilität sicherzustellen.

Re: Top-Includes im Class-Builder

Beitrag von ewx (Top Expert / 4854 / 313 / 644 ) »
Warum sollte ich ein Konstanten-Interface in eine Klasse einbinden?
Es reicht, wenn die Konstanten an der Schnittstelle oder von mir aus (abstrakten) Klasse definiert sind. Dann kann ich aus jedem Programm oder Klasse darauf zugreifen.

Was ist "Binärkompatibilität"? Bzw. inwiefern ist das in SAP relevant?

Re: Top-Includes im Class-Builder

Beitrag von tar (Specialist / 108 / 22 / 31 ) »
ewx hat geschrieben:
23.10.2024 09:40
Warum sollte ich ein Konstanten-Interface in eine Klasse einbinden?
Es reicht, wenn die Konstanten an der Schnittstelle oder von mir aus (abstrakten) Klasse definiert sind. Dann kann ich aus jedem Programm oder Klasse darauf zugreifen.
Ich ging davon aus, dass es, wie bei Interfaces eben so üblich, in die Klasse eingebunden werden muss. Dass sich Interfaces in ABAP wie statische Klassen verhalten, widerspricht den sonst üblichen OO-Konventionen. Ist mir jedenfalls aus keiner anderen Programmiersprache bekannt.
ewx hat geschrieben:
23.10.2024 09:40
Was ist "Binärkompatibilität"? Bzw. inwiefern ist das in SAP relevant?
Hier offenbar nicht relevant, da sie seltsamerweise nicht eingebunden werden muss.

Re: Top-Includes im Class-Builder

Beitrag von DeathAndPain (Top Expert / 1961 / 261 / 415 ) »
Ganz andere Frage: Wie trägt es sich eigentlich zu, dass in diesem Thread auf einmal heute eine Frage beantwortet wird, die im Jahre 2006 gestellt worden ist? 😄 Ich bin ziemlich sicher, dass der Fragesteller diese Antwort nicht mehr lesen wird.

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


Re: Top-Includes im Class-Builder

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
tar hat geschrieben:
23.10.2024 11:58
Ist mir jedenfalls aus keiner anderen Programmiersprache bekannt.
Ich glaube dass ist der Hauptpunkt. ABAP hat halt seine Eigenheiten, die es einem an manchen Stellen einfacher machen, aber einem halt an anderen Stellen Steine in den Weg legen. Ich denke da z.B. an die CASE-Anweisung welche nach CASE eine Konstante erlaubt und die WHEN-Bedingungen können variabel und müssen nicht mal disjunkt sein. Völlig anders als z.B. Java. Wichtig ist eigentlich nur, dass man nicht versucht in ABAP BASIC, JAVA oder Delphi Programme zu schreiben.

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

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

103
Antw.
10981
Views
Umherspringende Methoden im quelltextbasierten Class Builder
von tar » 06.09.2024 22:08 • Verfasst in ABAP® für Anfänger
3
Antw.
5207
Views
Interne Tabelle in Class Builder definieren
von mamaierhofer » 20.03.2007 16:14 • Verfasst in ABAP Objects®
5
Antw.
6855
Views
Abstrakte Methode im Class Builder anlegen
von jay-tee » 18.12.2006 14:22 • Verfasst in ABAP Objects®
5
Antw.
3327
Views
Class Builder: Default für Meth.param. gepackt mit Dezimalen
von Gast » 06.02.2006 13:57 • Verfasst in ABAP Objects®
0
Antw.
2690
Views
Solution Builder (Build Block Builder)
von SAP_ENTWICKLER » 19.12.2018 09:59 • Verfasst in Sonstige Module

Aktuelle Forenbeiträge

ABAP - Mail so10 Text
vor 2 Stunden von PeterPaletti 2 / 48
selection-screen comment mit icon
vor 5 Stunden von DeathAndPain 9 / 1125
Chat GPT - Erfahrungen?
vor 3 Tagen von DeathAndPain 33 / 6809

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

ABAP - Mail so10 Text
vor 2 Stunden von PeterPaletti 2 / 48
selection-screen comment mit icon
vor 5 Stunden von DeathAndPain 9 / 1125
Chat GPT - Erfahrungen?
vor 3 Tagen von DeathAndPain 33 / 6809

Unbeantwortete Forenbeiträge

SD_PRINT_TERMS_OF_PAYMENT
vor 4 Tagen von Manfred K. 1 / 915
BUSOBJEKT zu CMIS PHIO ermitteln
vor 3 Wochen von snooga87 1 / 2724