Domänenfestwert zur Eingabeprüfung

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

Domänenfestwert zur Eingabeprüfung

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
Moin moin,

ich hoffe, ich schaffe es, mich klar und einfach auszudrücken.

Wir sitzen hier mit drei Programmierern, die jeweils nicht weniger als 10 Jahre Erfahrung in der ABAP-Entwicklung haben. Alle drei sind über folgenden Umstand erstaunt:

Die SAP-Hilfe schreibt zu Domänen-Festwerten:
Der Wertebereich einer Domäne kann durch Angabe von Festwerten eingeschränkt werden. Damit sind für alle Tabellenfelder, die auf diese Domäne verweisen, nur die in den Festwerten eingetragenen Werte möglich. Die Festwerte können aus Einzelwerten und Intervallen bestehen.
Daraus folgt: Wenn ich ein Tabellenfeld habe, das sich auf ein Datenelement bezieht, welches sich auf eine Domäne bezieht, die Festwerte hat, kann ich in dieses Tabellenfeld (zum Beispiel als Dynprofeld dargestellt) nur die Werte eingeben, die als Festwerte in der Domäne festgelegt sind.
Nun habe ich hier folgenden Fall: Ein kundeneigenes Subdynpro zur ME52N (Ändern einer Banf) zeigt ein Feld. Dieses ist Teil einer Struktur, die im dazugehörigen FuBau (zum Exit) mit "data: begin of....fname type..." deklariert ist.

Ich habe also ein Dynpro, das ein Feld enthält. Dies ist im Programm als Teil einer Struktur deklariert (NICHT im DDIC!). Das Feld bezieht sich auf ein Datenelement der Domäne WERKS.

Nun ist die Anforderung: Das sind spezielle Werke, da wollen wir nur zwei mögliche Eingaben erlauben. Alles andere wird als falsch abgewiesen. Also kopieren wir diese Domäne WERKS und diese neue Domäne ZWERKS hängen wir ins Datenelement. Sodann geben wir die zwei Festwerte ein, aktivieren und schon kann man in das Dynprofeld nur noch diese zwei Werte eingeben. Das würde sich mit der oben zitierten F1-Hilfe decken.

Dem ist aber nicht so! Ich kann in das Feld beliebige Werte einpflegen und beim Sichern erhalte ich keine Meldung. Die Werthilfe(!!!) zeigt mir nur die zwei Werte ' ' und '9100' an, aber händisch eingeben kann ich, was immer ich will, es wird anstandslos übernommen und ich kann die Banf auch prüfen oder sichern.

Nun folgende Fragen:

1. Könnt ihr das bestätigen und wenn ja: Wie deckt sich das mit dem Text aus der F1-Hilfe?

2. Was ist die einfachste Methode, den Wert zu prüfen? Ich könnte ins PAI [1] einen select auf DD07L verwenden - aber mich wundert, dass mir und zwei anderen sowas in jeweils zehn Jahren Berufserfahrung noch nicht untergekommen ist. Bis vor einer halben Stunde hätte ich noch drauf gewettet, dass die Eingabe von Festwerten die Eingabemöglichkeiten einschränkt.

3. Angenommen, ich nehme weise dem Dynprofeld die Eigenschaft "Dropdown-Menü" zu (damit ich auf diesem Wege nur noch die Festwerte zulasse). Ist DAS dann noch Batch-Input-fähig? Dieser Umstand ist leider von zentraler Bedeutung. Es gibt Batch-Inputs zu dem Dynpro und die wollen in dem Feld auch was eingeben können.


Ralf *ausgesprochen bestürzt - ohne witz!

[1] Eigentlich: In den User-Exit, der vor dem Sichern aktiv wird
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


Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Hallo Ralf,

meine 10 AJhr sind zwar noch nicht ganz voll, aber hier mal eine dumme Frage:

Nach dem kopieren der Domäne von WERKS nach ZWERKS habt ihr die Wertetabelle auch aus ZWERKS gelöscht?

Zugegeben es gibt eigentlich keine dummen Fragen sondern nur ....


MfG

Thomas

Beitrag von uh (Specialist / 158 / 0 / 1 ) »
Hallo Thomas,

welche Wertetabelle ist denn bei dir hinter der Domäne WERKS hinterlegt? Bei mir ist da nichts...

Re: Domänenfestwert zur Eingabeprüfung

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
ralf.wenzel hat geschrieben:Ich habe also ein Dynpro, das ein Feld enthält. Dies ist im Programm als Teil einer Struktur deklariert (NICHT im DDIC!).
Damit die Prüfung auf dem Dynpro erfolgt, muss auch eine Fremdschlüsselzuordnung erfolgen. Entweder über die Fremdschlüsselbeziehung in der DDIC-Struktur/ -Tabelle oder im Dynpro in den Feldattributen "DICT": Fremdschlüsselprüfung [X]...

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Ich denke ewx hat da irgendwie recht.
Wenn man das ganze als Parameter im Report macht klappt die prüfung auch nur wenn man Value Check mit angibt.
Im Dynpro gibt es das nur über die Fremdprüfung. Wobei ich es meist so halt und die Werte im PAI noch mal prüfe.
Was spricht gegen eine Prüfung der Einagbe im PAI, die Werte der Domäne müssen ja nicht zwanghaft auch als Werk vorhanden sein.


Udo: die Wertetabelle in der Domöne ist T001W.

MfG

Thomas

Beitrag von uh (Specialist / 158 / 0 / 1 ) »
TWP hat geschrieben: Udo: die Wertetabelle in der Domöne ist T001W.
Ah, sehe ich jetzt auch 8) Danke

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
TWP hat geschrieben:Nach dem kopieren der Domäne von WERKS nach ZWERKS habt ihr die Wertetabelle auch aus ZWERKS gelöscht?
*lach* Ja, haben wir. Aber auch in dieser gibt es meinen Testwert "3200" nicht, mit dem ich die Prüfung getestet habe.


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

Re: Domänenfestwert zur Eingabeprüfung

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
ewx hat geschrieben:Damit die Prüfung auf dem Dynpro erfolgt, muss auch eine Fremdschlüsselzuordnung erfolgen. Entweder über die Fremdschlüsselbeziehung in der DDIC-Struktur/ -Tabelle oder im Dynpro in den Feldattributen "DICT": Fremdschlüsselprüfung [X]...
Also sind bei Dynprofeldern die Festwerte in der Domäne völlig funktionslos?

Folgefrage: Warum steht das nicht in der F1-Hilfe?



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

Beitrag von ChrisB (Specialist / 406 / 8 / 20 ) »
Völlig funktionslos würde ich nicht sagen... bei der Auswahlhilfe sollten sie Verwendung finden. Als Eingabeprüfung werden sie aber erst herangezogen, wenn die Fremschlüsselprüfung aktiviert wird (wies oben bereits beschrieben wurde). Das ist meiner Meinung nach auch ganz okay so. So kann man, bei Bedarf, die Fehlermeldung im PAI selber programmieren und je nach Feld detailliert sagen wo das Problem / der Fehler ist. Die Standardmeldung ist ja schon sehr allgemein gehalten.

War das nicht genau so in der Doku steht... naja... SAP ist eben auch nicht unfehlbar :roll: Du kannst gerne ne Anfrage an die SAP stellen... vielleicht ist dann im nächsten Patch ne aktualisierte Doku dabei :wink:

Beitrag von black_adept (Top Expert / 4080 / 125 / 934 ) »
Hallo Ralf,

das Ganze ist so nicht völlig funktionslos, weil bisher der Ablauf nicht korrekt beschreiben wurde.

Wie SAP in der Hilfe ja schon schreibt, gilt die Werteprüfung für "TABELLENFELDER" ( wobei hier allerdings alternativ auch im DDIC abgelegte Strukturen erlaubt sind. Die gelten wohl auch als Tabellen ).
Und genauso verhält sich dann auch ein Dynpro.

Wenn du ein Feld auf dem Dynpro hast, bei dem das Häkchen bei "DDIC-Bezug" steht, bekommst du automatisch die Domänen-Festwertprüfung. Wenn das Häkchen nicht gesetzt ist, erhältst du das von dir vorgefundene Verhalten.
Kann man am Besten ausprobieren, indem du z.B. mal ein DDIC-Feld (z.B. eines der Statusfelder aus der VBUK mit den 4 erlaubten Status blank, A, B, C ) auf den Dynpro legst.
Wenn der Haken sitzt meckert SAP rum, wenn du z.B. "P" einträgst. Wenn du den Haken entfernst, meckert SAP nicht mehr rum aber die F4-Hilfe gibts weiterhin.

Tja - und im Programm definierten Strukturen kannst du nun mal nicht das Häkchen verpassen --> Für diese bekmmst du auch nicht die automatische Domänenfestwertprüfung geschenkt.

Somit kommen wir mal zu der Frage des einfachsten Vorgehens.
Ganz einfach: Dropdownliste wie von dir ja schon vermutet. Und ja - die ist Batch-Inputfähig. Ist allerdings Geschmackssacke und manchmal auch eine Platzfrage

Danach folgende Vorgehensweise:
Da ich kein Freund von Prüfungen im PAI bin, wenn der Dynpro das auch ohne Coding hinbekommt (und vor allem VOR dem normalen PAI-Ablauf - da kann keiner mehr was zwischenklemmen außer dem EXIT-Modul )wäre meine Vorgehensweise.
Ich lege im DDIC eine Struktur an, die ein Feld enthält, welches auf dein neues Datenelement verweist.
Und diese Struktur packe ich dann halt auf den Dynpro und sorge halt zum PBO und PAI dafür, dass die Felder der DDIC-Struktur und der programmintern definierten Struktur gleich gehalten werden.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
black_adept hat geschrieben:Wenn du ein Feld auf dem Dynpro hast, bei dem das Häkchen bei "DDIC-Bezug" steht, bekommst du automatisch die Domänen-Festwertprüfung. Wenn das Häkchen nicht gesetzt ist, erhältst du das von dir vorgefundene Verhalten.
Mist. Wenn ich das Häkchen setze, benenne ich damit das Feld um und darf die Programmlogik komplett anpassen, richtig? Das Feld sitzt als kundeneigenes Feld in der ME5xN (Anlegen/Ändern/Anzeigen einer Banf) - das ist nicht wirklich witzig.
black_adept hat geschrieben:Tja - und im Programm definierten Strukturen kannst du nun mal nicht das Häkchen verpassen --> Für diese bekmmst du auch nicht die automatische Domänenfestwertprüfung geschenkt.
Wer denkt sich denn sowas aus? Das Dynprofeld ist genauso deklariert wie das Tabellenfeld -- Bezug auf dasselbe Datenelement (das seinerseits Bezug hat auf die Domäne mit den Festwerten).
black_adept hat geschrieben:Somit kommen wir mal zu der Frage des einfachsten Vorgehens.
Ganz einfach: Dropdownliste wie von dir ja schon vermutet. Und ja - die ist Batch-Inputfähig.


Du bist dir wirklich sicher dass ich in keinem Falle bei Batch-Inputs Probleme kriege? Damit steht und fällt die ganze Lösung. Mir reißt man hier den Kopf ab wenn ich da was kaputtmache (und das ist ausnahmsweise mal KEINE Übertreibung).

Die Lösung darf nicht dazu führen, dass die Batch-Inputs angepasst werden müssen.

Reicht ein Listfeld oder muss es ein Listfeld mit Schlüssel sein?
black_adept hat geschrieben:Danach folgende Vorgehensweise:
Warum? Sobald ich ein Dropdown-Feld habe, kann ich nur noch gültige Werte eingeben / auswählen. Damit wäre das Problem gelöst. Und das wäre die schnellste und einfachste Lösung.


Ralf

P.S.: Ich habe übrigens inzwischen herausgefunden warum sowas noch keinem von uns untergekommen sind: Wir legen alle Strukturen im DDIC an für Dynprofelder. Und da gibt es, wie du schon schreibst, das Problem nicht.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1865
Views
ALV-OO --> Eingabeprüfung
von Rantanplan » 29.03.2006 13:03 • Verfasst in ABAP Objects®
3
Antw.
1842
Views
Eingabeprüfung im ALV
von CeyserSoze » 12.06.2008 17:58 • Verfasst in ABAP® Core
21
Antw.
6947
Views
Eingabeprüfung
von RIG » 14.09.2012 12:59 • Verfasst in ABAP® für Anfänger
6
Antw.
1553
Views
Eingabeprüfung
von SAPNewbie » 22.09.2015 13:17 • Verfasst in ABAP® für Anfänger
2
Antw.
1843
Views
Eingabeprüfung ausschalten
von chatty » 04.01.2006 16:45 • Verfasst in ABAP® Core

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.