Konstanten als F4 Auswahl


Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).

Moderatoren: Jan, Steff

Konstanten als F4 Auswahl

Beitragvon nickname8 » 07.02.2019, 06:33

Hallo,

ich stoße immer wieder an die Anforderung, dass ich gerne in einer globalen/lokalen Klasse definierte CONSTANTS auch gerne mit einer entsprechenden Wertehilfe im Slectionscreen auswählen wollen würde, am Besten mit Übersetzung.

Natürlich könnte ich das einfach zu Fuß machen: Konstante in Klasse anlegen, Wert zuweisen und entsprechendes Datenelement mit Festwert/Pflegetabelle anlegen und Übersetzung erstellen.

Das Problem ist halt, dass es schnell passieren kann, dass der Wert der Konstanten nicht mit dem Wert des Datenelementes übereinstimmt. Das würde ich gerne vermeiden.

Mal ein sehr simples Beispiel:

In der Klassse ist folgendes deklariert:
CONSTANTS:
c_color_yellow TYPE zcol VALUE 1,
c_color_blue TYPE zcol VALUE 2,
c_color_green TYPE zcol VALUE 3.

Die Domäne hinter dem Datentyp zcol hat jedoch als Festwerte nur die Farben yellow und blue definiert. Heißt, ich müsste da immer zu Fuß hinterher und die Werte syncronisieren.
Oder es könnte auch einfach passieren, dass als Festwert yellow den Wert 5 hat, und in der Klasse ist das falsch definiert (warum auch immer).

Hat da jemand schon eine bessere/generischere Lösung zu gefunden?

Bin gespannt auf eure Ideen. :)
nickname8
ForumUser
 
Beiträge: 93
Registriert: 18.07.2015, 08:22
Dank erhalten: 12 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Konstanten als F4 Auswahl

Beitragvon a-dead-trousers » 07.02.2019, 07:25

Man kann z.B. in einem F4-Userexit aus der View VSEOATTRIB alle PUBLIC CONSTANTS zu einem Interface oder einer Klasse Methode auslesen.
Wenn man zusätzlich auch noch die Vererbungen miteinbeziehen möchte, kann man auch CL_ABAP_OBJECTDESCR verwenden. Dann kann man aber die "eingebauten" Fähigkeit zur Daten-Selektion der Suchhilfen kaum nutzen.
Im Sinne der leichteren Verwaltung solcher Konstanten verwende ich immer ein Interface als Klammer. Um in deinen Beispiel zu bleiben, würde ich ein Interface ZIF_COLOR erstellen und darin alle "Farben" definieren die ich brauche, sonst nichts. Werden weitere Konstanten benötigt kommen die in ein anderes Interface. Der Vorteil von Interfaces ist, dass du die Wahl hast ob du das Interface an deine Klasse "andockst" oder nicht. Manchmal macht das Sinn z.B. um schnell alle Konstanten sehen zu können die deine Klasse verwendet, ein anderes Mal eher nicht weil z.B. nicht wirklich alle Konstanten benötigt werden und es sonst zu unübersichtlich wird.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
nickname8
a-dead-trousers
Top Expert
 
Beiträge: 3156
Registriert: 07.02.2011, 13:40
Dank erhalten: 779 mal
Ich bin: Entwickler/in

Re: Konstanten als F4 Auswahl

Beitragvon msfox » 07.02.2019, 08:26

nickname8 hat geschrieben:n der Klassse ist folgendes deklariert:
CONSTANTS:
c_color_yellow TYPE zcol VALUE 1,
c_color_blue TYPE zcol VALUE 2,
c_color_green TYPE zcol VALUE 3.

Die Domäne hinter dem Datentyp zcol hat jedoch als Festwerte nur die Farben yellow und blue definiert. Heißt, ich müsste da immer zu Fuß hinterher und die Werte syncronisieren.
Oder es könnte auch einfach passieren, dass als Festwert yellow den Wert 5 hat, und in der Klasse ist das falsch definiert (warum auch immer).

Aus meiner Sicht ist das so wie es ist.
Führend sind die Domänfestwerte, die auch in der Suchhilfe verwendet werden.
Sich dafür Konstanten definieren, kann man sich doch an 'zig Stellen. Für die Pflege ist der Entwickler dann selbst verantwortlich. Und andere Konstanten als in der Domäne festgelegt, machene keinen Sinn.
Warum soll aus yellow = 1 plötzlich yellow = 5 werden?

Es wird erst ein Schuh draus, wenn man nicht mit Domänenfestwerten arbeitet.
Man baut sich eine Klasse mit den Konstanten incl. Text und ggf. GETTER-Methoden. Im Suchhilfeexit kann man diese dann abfragen. Somit hat man die Pflege der Werte incl. Text nur in der Klasse. Die Suchhilfe müsste man dann aber an das Datenelement hängen oder sonst wie mit dem Feld verbinden, wo es gebraucht wird. An der Domäne klappt das dann nicht mehr.
msfox
ForumUser
 
Beiträge: 20
Registriert: 12.12.2018, 12:09
Dank erhalten: 2 mal
Ich bin: Entwickler/in

Re: Konstanten als F4 Auswahl

Beitragvon ewx » 07.02.2019, 09:19

Da gibt es leider keine zufriedenstellende Lösung.
Das Thema hatten wir gerade:
viewtopic.php?f=2&t=23280

Für diese Nachricht hat ewx einen Dank bekommen :
nickname8
ewx
Top Expert
 
Beiträge: 3870
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 334 mal

Re: Konstanten als F4 Auswahl

Beitragvon nickname8 » 07.02.2019, 09:20

ah, mir war doch so, als ob das Thema hier schonmal anklang...
Danke dir.
nickname8
ForumUser
 
Beiträge: 93
Registriert: 18.07.2015, 08:22
Dank erhalten: 12 mal
Ich bin: Entwickler/in

Re: Konstanten als F4 Auswahl

Beitragvon ralf.wenzel » 07.02.2019, 11:39

Ich habe das so gelöst: Ich habe einen Generator für solche Klassen geschrieben. Legt jemand in einer Domain Festwerte an oder ändert er sie, wird per Mausklick ein Domain Manager (so nennen wir diese Klassen) erzeugt bzw. aktualisiert.

So ist der Arbeitsaufwand für den Entwickler minimiert.


Ralf
ralf.wenzel
Top Expert
 
Beiträge: 3339
Registriert: 18.09.2004, 13:03
Wohnort: Hamburg
Dank erhalten: 207 mal
Ich bin: Freiberufler/in


Zurück zu ABAP Objects®

  Aktuelle Beiträge   
Adobe Forms - Download - Keine Seiten
vor 11 Stunden von shimsham 2 Antw.
UTF-8 mit Funktionsbaustein
vor 13 Stunden von a-dead-trousers 4 Antw.
gelöst Fehler SAVE NOT ALLOWED bei F4IF_START_VALUE_REQUEST
vor 10 Stunden von AdrianSchm 1 Antw.
SAP Logon bei Aufruf WebGUI
Gestern von msfox 0 Antw.
Formatierung Textdatei aus Query und ABAP
vor 13 Stunden von wreichelt 5 Antw.

  Ähnliche Beiträge beta
Übersetzung von Konstanten
05.05.2006, 11:11 von babap 2 Antw.
Konstanten definieren zur Laufzeit
11.01.2007, 13:58 von ewx 1 Antw.
Konstanten Interface - LOAD_PROGRAM_CLASS_MISMATCH
22.11.2013, 13:11 von Hannes Rempel 8 Antw.
Erkennen Event -> Auswahl aus Drop Down Liste
30.07.2007, 09:41 von ralle 1 Antw.
Auswahl einer lokalen Datei --> Anzeige im ALV Grid
08.11.2004, 15:20 von Gast 3 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder