Code: Alles auswählen.
SELECT * FROM mara INTO TABLE lt_mara WHERE matnr IN s_matnr.
Folgende Benutzer bedankten sich beim Autor Thanatos82 für den Beitrag:
Dyrdek
Code: Alles auswählen.
DATA range_status TYPE RANGE OF dbtable-status.
FIELD-SYMBOLS <range_status> LIKE LINE OF range_status.
CLEAR range_status.
IF checkbox01 EQ abap_true.
APPEND initial line TO range_status ASSIGNING <range_status>.
<range_status>-low = 'APPROVED'.
<range_status>-sign = 'I'.
<range_status>-option = 'EQ'.
ENDIF.
IF checkbox02 EQ abap_true.
APPEND initial line TO range_status ASSIGNING <range_status>.
<range_status>-low = 'STARTED'.
<range_status>-sign = 'I'.
<range_status>-option = 'EQ'.
ENDIF.
* usw.
SELECT ...
FROM dbtable
INTO ...
WHERE status IN range_status.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Dyrdek
So kann man die Eingabe von Intervallen nicht zuverlässig verhindern, weil man das Popup zur Mehrfacheingabe/Intervalleingabe nicht unterbinden kann. Vor kurzer Zeit habe ich noch einen Programmfehler korrigiert, bei dem der Entwickler davon ausging, dass dort nur ein Wert stehen kann -- der Anwender lehrte ihn, dass er trotzdem Intervalle eingeben konnteThanatos82 hat geschrieben:Die Intervalle, also von bis, lässt sich über den Zusatz NO-INTERVALLS hinter deiner Select-Option erreichen. Wenn du auch die Mehrfachauswahl unterbinden möchtest musst du auch noch den Zusatz NO EXTENSIONS hinzufügen.
Dann sieht dein Feld wieder aus wie ein Parameterfeld, hat aber die Vorteile einer Select-Option.
Damit dann jeder zufrieden ist:Thanatos82 hat geschrieben:Die Intervalle, also von bis, lässt sich über den Zusatz NO-INTERVALLS hinter deiner Select-Option erreichen. Wenn du auch die Mehrfachauswahl unterbinden möchtest musst du auch noch den Zusatz NO EXTENSIONS hinzufügen.
Dann sieht dein Feld wieder aus wie ein Parameterfeld, hat aber die Vorteile einer Select-Option.
Code: Alles auswählen.
CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
EXPORTING
restriction = restrict.
Code: Alles auswählen.
REPORT Z_SELECT_OPTION_RESTRICT.
SELECT-OPTIONS: s_uname FOR sy-uname NO INTERVALS.
SELECT-OPTIONS: s_msgty FOR sy-msgty.
INITIALIZATION.
PERFORM single_values.
*---------------------------------------------------------------------*
* Form single_values
*---------------------------------------------------------------------*
FORM single_values .
DATA: restrict TYPE sscr_restrict,
opt_list TYPE sscr_opt_list,
ass TYPE sscr_ass.
opt_list-name = 'EQ_ONLY'. " Nur EQ zulassen
opt_list-options-eq = 'X'.
APPEND opt_list TO restrict-opt_list_tab.
ass-kind = 'S'.
ass-name = 'S_UNAME'.
ass-sg_main = 'I'.
ass-sg_addy = ' '.
ass-op_main = 'EQ_ONLY'.
ass-op_addy = 'EQ_ONLY'.
APPEND ass TO restrict-ass_tab.
ass-name = 'S_MSGTY'.
APPEND ass TO restrict-ass_tab.
CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
EXPORTING
restriction = restrict.
ENDFORM. " single_values
Wie man mit NO-INTERVALS in Verbindung mit NO EXTENSIONS noch Intervalle eingeben kann musst du mir mal zeigen. Das glaube ich sonst nicht.ralf.wenzel hat geschrieben:So kann man die Eingabe von Intervallen nicht zuverlässig verhindern, weil man das Popup zur Mehrfacheingabe/Intervalleingabe nicht unterbinden kann. Vor kurzer Zeit habe ich noch einen Programmfehler korrigiert, bei dem der Entwickler davon ausging, dass dort nur ein Wert stehen kann -- der Anwender lehrte ihn, dass er trotzdem Intervalle eingeben konnteThanatos82 hat geschrieben:Die Intervalle, also von bis, lässt sich über den Zusatz NO-INTERVALLS hinter deiner Select-Option erreichen. Wenn du auch die Mehrfachauswahl unterbinden möchtest musst du auch noch den Zusatz NO EXTENSIONS hinzufügen.
Dann sieht dein Feld wieder aus wie ein Parameterfeld, hat aber die Vorteile einer Select-Option.
Ralf
Ist "von Null bis 500" kein Intervall? Dann brauche ich nur "kleiner gleich" anzugeben. Richtig ist, dass man das Popup zur Detaileingabe nicht mehr öffnen kann, aber "NO INTERVALS" verhindert halt nicht die Eingabe von IntervallenThanatos82 hat geschrieben:Wie man mit NO-INTERVALS in Verbindung mit NO EXTENSIONS noch Intervalle eingeben kann musst du mir mal zeigen. Das glaube ich sonst nicht.
... deswegen der Nachsatz mit dem Hinweis auf NO EXTENSIONS ...ralf.wenzel hat geschrieben:Ist "von Null bis 500" kein Intervall? Dann brauche ich nur "kleiner gleich" anzugeben. Richtig ist, dass man das Popup zur Detaileingabe nicht mehr öffnen kann, aber "NO INTERVALS" verhindert halt nicht die Eingabe von IntervallenThanatos82 hat geschrieben:Wie man mit NO-INTERVALS in Verbindung mit NO EXTENSIONS noch Intervalle eingeben kann musst du mir mal zeigen. Das glaube ich sonst nicht.
Ralf