Mussfeld abhängig von anderen Eingaben / Feldern definieren Thema ist als GELÖST markiert

Getting started ... Alles für einen gelungenen Start.
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

Mussfeld abhängig von anderen Eingaben / Feldern definieren

Beitrag von Rebecca (ForumUser / 2 / 1 / 0 ) »
Hallo zusammen,
ich benötige eure Hilfe mit meinem Selektionsscreen :)
Abhängig von einer Checkbox (p_holida) soll eine Selectoption (S_C_ID) ein Mussfeld werden.
Ist die Checkbox aktiviert, muss auch die Selectoption gefüllt werden.

Die einfachste Lösung wäre, die Selectioption als Obligatory zu deklarieren und einen Defaultwert mit anzugeben.

Ist auch eine Lösung ohne einen Defaultwert möglich?

Im Moment versuche ich folgendes:

Code: Alles auswählen.

AT SELECTION-SCREEN OUTPUT.                                 
  LOOP AT SCREEN.
    IF SCREEN-name = 'S_C_ID-LOW'.
      IF p_holida = 'X'.
        SCREEN-input = '1'.
        screen-required  = '2'.
      ELSE.
        SCREEN-input = '0'.
        screen-required  = '0'.
      ENDIF.
    ENDIF.
    MODIFY SCREEN.
  ENDLOOP. 
Durch den Zusatz screen-required erscheint bereits ein roter Stern in dem Feld. Allerdings erfolgt keine Prüfung der Eingabe. Das heißt, das Programm wird ohne Warnung ausgeführt, auch wenn das Feld leer ist.

Was muss ich anpassen, damit hier die Warnung "Füllen Sie alle Mussfelder aus" erscheint und das Programm noch nicht ausgeführt wird?

Vielen Dank und Gruß
Rebecca


Re: Mussfeld abhängig von anderen Eingaben / Feldern definieren

Beitrag von Lukas Sanders (ForumUser / 29 / 6 / 18 ) »
Hallo,

versuche mal screen-required = '1' statt screen-required = '2'.

Mit dem Wert 2 wird aus dem Feld nur ein Soll-Feld, d.h. das rote Sternchen wird angezeigt, es wird aber kein Fehler ausgegeben, wenn das Feld leer bleibt. Erst mit dem Wert 1 ist das Feld ein "echtes" Muss-Feld.

Viele Grüße,
Lukas

Re: Mussfeld abhängig von anderen Eingaben / Feldern definieren

Beitrag von ewx (Top Expert / 4383 / 214 / 486 ) »

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Rebecca


Re: Mussfeld abhängig von anderen Eingaben / Feldern definieren

Beitrag von a-dead-trousers (Top Expert / 3659 / 131 / 953 ) »
Ich würde empfehlen beim screen-required = '2' zu bleiben.
Beim START-OF-SELECTION (oder wo auch immer die Verarbeitung am Ende stattfindet) würde ich dann einfach eine entsprechende Prüfung ob das Feld gefüllt ist einbauen und im Fehlerfall abbrechen:

Code: Alles auswählen.

IF ... IS INITIAL.
  SET CURSOR FIELD '...'. "Optional wenn man den Cursor setzen möchte
  MESSAGE ID '00' TYPE 'E' NUMBER '055'. "<-- Standard-Fehlermeldung
ENDIF.
Der Vorteil hier ist, dass man nicht ständig in die Standard-Feldprüfung reinläuft wenn man z.B. die Bedingung warum das Feld ein "Muss"-Feld sein sollte wieder entfernen möchte.
Der Nachteil ist, dass damit die farbliche Hervorhebung (rot) nicht so toll abgestuft funktioniert, wie wenn man den Selektion-Screen in Blöcke aufgeteilt hat und so zusammenhängende Felder darstellen bzw. prüfen möchte.
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

Re: Mussfeld abhängig von anderen Eingaben / Feldern definieren

Beitrag von a-dead-trousers (Top Expert / 3659 / 131 / 953 ) »
Alternativ könnte man die Prüfung auch in AT SELECTION-SCREEN (ON block) einbauen und dort vorher auf den Funktionscode (sy-ucomm oder sscrfields-ucomm) abfragen um die Prüfung nur im Falle der Ausführung (ONLI, CRET) oder des Speicherns als Variante (SPOS) zu durchlaufen.
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

Re: Mussfeld abhängig von anderen Eingaben / Feldern definieren

Beitrag von ewx (Top Expert / 4383 / 214 / 486 ) »
a-dead-trousers hat geschrieben:
03.05.2021 11:48
Alternativ könnte man die Prüfung auch in AT SELECTION-SCREEN (ON block) einbauen und dort vorher auf den Funktionscode (sy-ucomm oder sscrfields-ucomm) abfragen um die Prüfung nur im Falle der Ausführung (ONLI, CRET) oder des Speicherns als Variante (SPOS) zu durchlaufen.
Das wäre sicherlich die beste Methode. Alles andere ist eher "Spielkram".

Re: Mussfeld abhängig von anderen Eingaben / Feldern definieren

Beitrag von DeathAndPain (Top Expert / 1533 / 177 / 340 ) »
Ich persönlich finde Lukas Sanders' Lösung die beste und alles andere Overkill. Der Threadersteller will ja einfach nur die Standardfunktionalität, feldabhängig gesteuert wie in seinem Beispielcode dargestellt. Da muss einfach nur die Mussfeldfunktionalität stimmen. Falls er die Logik später doch wieder ändern möchte, na dann wird er halt wieder an genau diese Zeilen im AT SELECTION OUTPUT ranmüssen. Das ist normal und liegt in der Natur der Sache.

Re: Mussfeld abhängig von anderen Eingaben / Feldern definieren

Beitrag von a-dead-trousers (Top Expert / 3659 / 131 / 953 ) »
DeathAndPain hat geschrieben:
04.05.2021 14:48
Ich persönlich finde Lukas Sanders' Lösung die beste und alles andere Overkill. Der Threadersteller will ja einfach nur die Standardfunktionalität, feldabhängig gesteuert wie in seinem Beispielcode dargestellt. Da muss einfach nur die Mussfeldfunktionalität stimmen. Falls er die Logik später doch wieder ändern möchte, na dann wird er halt wieder an genau diese Zeilen im AT SELECTION OUTPUT ranmüssen. Das ist normal und liegt in der Natur der Sache.
Schon, aber bevor er das dann wieder in einen LOOP AT SCREEN ändern kann, müssen zuerst alle Mussfelder ausgefüllt werden. Ansonsten wird immer die Standardfehlermeldung ausgegeben und PAI/PBO nicht durchlaufen.
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

Re: Mussfeld abhängig von anderen Eingaben / Feldern definieren

Beitrag von Rebecca (ForumUser / 2 / 1 / 0 ) »
Danke euch allen!
Ich habe nun als Lösung gewählt, im Report folgendes zu ergänzen:
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN 'ONLI'.
IF p_holida IS NOT INITIAL AND S_C_ID-LOW IS INITIAL.
SET CURSOR FIELD '...'. "Optional wenn man den Cursor setzen möchte
MESSAGE ID '00' TYPE 'E' NUMBER '055'. "<-- Standard-Fehlermeldung
ENDIF.
ENDCASE.

Seite 1 von 1

Aktuelle Forenbeiträge

SmartForms show table...
vor 4 Tagen von Lucyalison 2 / 2260
Wie groß ist mein DynPro?
vor 4 Tagen von JanR gelöst 3 / 1135

Vergleichbare Themen

SAP EWM LVM Eingaben speichern
von harry1991 » 21.01.2014 16:40
ALV Eingaben updaten auf Datenbank
von Dörk » 09.11.2005 12:33
Nur Nummerische Eingaben zulassen
von pohlmann-schwarza » 20.05.2008 09:56
ALV lässt Eingaben verschwinden
von Neuling_20 » 26.03.2013 13:44
mehrmals Eingaben auf BSP Seite möglich?
von sap_abc » 21.03.2006 11:48