gelöst Customizingtabelle ->Schlüsselfeld darf nicht leer sein


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

gelöst Customizingtabelle ->Schlüsselfeld darf nicht leer sein

Beitragvon c oco » 19.02.2018, 09:45

Hallo zusammen,

wie kann ich verhindern, dass eine Customizingtabelle leere Einträge enthält?

Vielen Dank.

Beste Grüße
coco
c oco
Specialist
 
Beiträge: 314
Registriert: 09.12.2005, 12:42
Wohnort: Leonberg
Dank erhalten: 15 mal

Sponsor

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

Re: Customizingtabelle ->Schlüsselfeld darf nicht leer sein

Beitragvon DeathAndPain » 19.02.2018, 10:40

Ich unterstelle, dass Du mit "leer" nicht datenbanktechnische NULL-Werte meinst (die kannst Du durch Setzen des entsprechenden Hakens in der SE11 bei der Definition der Tabellenfelder vermeiden), sondern initiale Werte (Leerzeichen, Nullen usw.). Im Prinzip kannst Du das gar nicht verhindern. Allerdings ist halt die Frage, auf welchem Wege Deine Customizingtabelle gepflegt wird. Wenn Du z.B. den Tabellenpflegegenerator drüberlaufen lässt, um Dir einen Pflegedialog für die SM30 zu erstellen, dann kannst Du hinterher den generierten Report editieren und eine Fehlermeldung im Falle leerer Felder reinbasteln.

Allerdings hätte der (bei Customizingtabellen typischerweise im Entwicklungssystem pflegende) Benutzer dann immer noch die Möglichkeit, die Zeilenwerte nicht über die SM30, sondern einfach mit der SE16 zu pflegen. Wenn Du das ganz wasserdicht haben möchtest, dann musst Du ihm entweder die SE16- und SE16N-Berechtigung wegnehmen oder in der SE11 die Einstellung "Anzeige/Pflege eingeschränkt erlaubt" setzen. Dann geht die Pflege über die SE16 nicht mehr, aber dann musst Du Dir auch die Mühe machen, einen Viewcluster für Deinen per Tabellenpflegegenerator generierten Pflegedialog anzulegen, da bei dieser Tabelleneinstellung die Pflege nur über Viewcluster zulässig ist, nicht direkt per SM30.

Natürlich könntest Du auch hingehen und ohne Tabellenpflegegenerator ein Pflegeprogramm komplett von Hand schreiben und darin die notwendigen Abprüfungen einbauen. Der Aufwand dürfte in den seltensten Fällen im Verhältnis zum Nutzen stehen, aber die Möglichkeit ist da (und hätte den Vorteil, dass später nicht irgendein Depp den Tabellenpflegegenerator neu startet und Deine manuellen Programmanpassungen damit vernichtet).
DeathAndPain
Expert
 
Beiträge: 709
Registriert: 05.05.2006, 10:14
Dank erhalten: 168 mal
Ich bin: Entwickler/in

Re: Customizingtabelle ->Schlüsselfeld darf nicht leer sein

Beitragvon ewx » 19.02.2018, 11:13

Das kannst du mit Zeitpunkten im Tabellenpflegedialog lösen:
https://help.sap.com/saphelp_erp60_sp/h ... ameset.htm
Zum Beispiel Zeitpunkt AB "An Stelle d. Standardroutine für die Datenbankänderungen" (Bin mir nicht sicher, ob man hier noch abbrechen kann, wenn Daten fehlerhaft sind)
Oder ZP 05 "Beim Hinzufügen eines neuen Eintrages".

Hier ein paar Beispiele:
http://www.tricktresor.de/blog/zeitpunkte/

Wenn ein Tabellenpflegedialog existiert, dann ist die Pflege per SE16n nicht mehr möglich.

Für diese Nachricht hat ewx einen Dank bekommen :
c oco
ewx
Top Expert
 
Beiträge: 3707
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 282 mal

Re: Customizingtabelle ->Schlüsselfeld darf nicht leer sein

Beitragvon black_adept » 19.02.2018, 11:17

Enno war schneller
black_adept
Top Expert
 
Beiträge: 3014
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 506 mal
Ich bin: Freiberufler/in

Re: Customizingtabelle ->Schlüsselfeld darf nicht leer sein

Beitragvon ralf.wenzel » 19.02.2018, 11:38

Abgesehen davon gehören Leute gesteinigt, die Customizing über die SE16N pflegen.


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

Re: Customizingtabelle ->Schlüsselfeld darf nicht leer sein

Beitragvon ewx » 19.02.2018, 11:41

ralf.wenzel hat geschrieben:Abgesehen davon gehören Leute gesteinigt, die Customizing über die SE16N pflegen.

Gesteinigt gehört schon mal gar niemand mehr!
Vielleicht an den unternehmenseigenen Pranger gestellt... ;)

Und dann bitte diejenigen, die keinen Tabellenpflegedialog hierfür zur Verfügung gestellt haben.
ewx
Top Expert
 
Beiträge: 3707
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 282 mal

Re: Customizingtabelle ->Schlüsselfeld darf nicht leer sein

Beitragvon DeathAndPain » 19.02.2018, 14:37

Gesteinigt gehört schon mal gar niemand mehr!

Warum nicht? Der Islam ist doch massiv im Kommen! (sogar im wahrsten Sinne des Wortes)

Und dann bitte diejenigen, die keinen Tabellenpflegedialog hierfür zur Verfügung gestellt haben.

Nein, ralf hat sich sicherlich auf meine Anmerkung bezogen, dass es nichts nützt, passende Abfragen in den Tabellenpflegedialog einzubauen, wenn die Leute diesen umgehen und per SE16N pflegen. Um das zu unterbinden, muss man die Tabellenpflege auf "eingeschränkt" setzen - aber dann geht der Pflegedialog auch nicht mehr direkt, sondern nur noch mit vorgeschaltetem Wasserkopf-Viewcluster.

Für diese Nachricht hat DeathAndPain einen Dank bekommen :
ralf.wenzel
DeathAndPain
Expert
 
Beiträge: 709
Registriert: 05.05.2006, 10:14
Dank erhalten: 168 mal
Ich bin: Entwickler/in

Re: Customizingtabelle ->Schlüsselfeld darf nicht leer sein

Beitragvon c oco » 20.02.2018, 10:33

Danke, mit den Zeitpunkten funktioniert es wunderbar!

Viele Grüße
coco
c oco
Specialist
 
Beiträge: 314
Registriert: 09.12.2005, 12:42
Wohnort: Leonberg
Dank erhalten: 15 mal

Re: Customizingtabelle ->Schlüsselfeld darf nicht leer sein

Beitragvon gtoXX » 23.02.2018, 18:42

Da es in der Aufstellung noch fehlt m.E. : Wenn ein Wert im Schlüsselfeld stehen muss und dies , wie eigentlich fast die Regel ist, nicht leer sein soll, warum ist dann an der Domäne des Schlüsselfeldes kein Festwert oder eine Prüftabelle hinterlegt ? Dann lässt SAP automatisch keine leeren Einträge zu ( ausser man pflegt blank in den Festwerten/ der Prüftabelle und man muss sich nicht umständliche Wege ausdenken. ^^

M.E. ist der Rückgriff auf Zeitpunkte nur nötig, wenn es sehr komplizierte Abhängigkeiten gibt, die über einfache Designfragen nicht lösbar sind.
gtoXX
Specialist
 
Beiträge: 111
Registriert: 27.03.2017, 12:14
Dank erhalten: 14 mal
Ich bin: Entwickler/in

Re: Customizingtabelle ->Schlüsselfeld darf nicht leer sein

Beitragvon ralf.wenzel » 23.02.2018, 18:58

Hm, bei einer GUID oder Belegnr. wüsste ich nicht, was man da hinterlegen sollte.


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

Re: Customizingtabelle ->Schlüsselfeld darf nicht leer sein

Beitragvon ewx » 23.02.2018, 22:37

gtoXX hat geschrieben:Da es in der Aufstellung noch fehlt m.E. : Wenn ein Wert im Schlüsselfeld stehen muss und dies , wie eigentlich fast die Regel ist, nicht leer sein soll, warum ist dann an der Domäne des Schlüsselfeldes kein Festwert oder eine Prüftabelle hinterlegt ? Dann lässt SAP automatisch keine leeren Einträge zu ( ausser man pflegt blank in den Festwerten/ der Prüftabelle und man muss sich nicht umständliche Wege ausdenken. ^^

das stimmt auch nicht.
In einem Tabellenpflegedialog kannst du auch als Schlüsselfeld SPACE eingeben, egal ober Festwerte definiert sind oder nicht.
Anders als im Eingabebereiten ALV-Grid. Hier MUSS ein Wert eingetragen werden, sobald FEstwerte definiert wurden.
Im Tabellenpflegedialog kann man noch das Kennzeichen "Mussfeld" setzen (was allerdings bei Neugenerierung wieder überschrieben wird).
Bei einen Grid hat man keine Möglichkeit mehr das Verhalten auszuschalten. Es sei denn, man fügt SPACE zu den Festwerten hinzu.
Diese "Lösung" finde ich total dämlich, denn es kann je nach Prozess oder Anwendung unterschiedlich sein, ob in ein Feld ein Wert eingegeben werden muss oder nicht.
SPACE hat nichts in den Festwerten zu suchen, sofern es nicht eine andere Aussage hat als "dieses Feld ist leer".
Im Kundenauftrag muss ich keine Charge eintragen, weil die evtl. noch gar nicht produziert wurde oder der AuftragsbearbeiterIn gar nicht weiß, welche Charge welche Qualitätskriterien aufweist.
Bei der Auslieferung MUSS die Charge angegeben werden.
gtoXX hat geschrieben:M.E. ist der Rückgriff auf Zeitpunkte nur nötig, wenn es sehr komplizierte Abhängigkeiten gibt, die über einfache Designfragen nicht lösbar sind.

Dies ist leider so ein Fall...
ewx
Top Expert
 
Beiträge: 3707
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 282 mal


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
gelöst Nachricht nach Beendigung der Verbuchung
vor 4 Stunden von ewx 2 Antw.
BCS sendet Mails immer als express?
vor 5 Stunden von Legxis 2 Antw.
Zuordnung in Grid (Screen)
vor 9 Stunden von HH_ABAP 0 Antw.
FBL3N ---> FB60
vor 10 Stunden von HH_ABAP 2 Antw.
Klasse zum lesen der Adressdaten
vor 9 Stunden von AdrianSchm 2 Antw.

  Ähnliche Beiträge beta
Funktionsbaustein nur aufführen wenn Data_TAB nicht leer
09.03.2007, 16:28 von sgevolker 3 Antw.
Matnr darf nur aus Zahlen bestehen?!
19.07.2005, 13:58 von dimes 2 Antw.
Komponententyp SPRAS und sein Datentyp
08.09.2007, 13:36 von mari 0 Antw.
gelöst Ausgabe ist Leer ?1
29.06.2015, 09:43 von erzoo24 2 Antw.
select-options wenn sel leer ist
23.04.2004, 13:20 von meinrad 3 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder