SELECT-OPTIONS: RESTRICT TO SINGLE VALUE INPUT

Will man eine Mehrfacheingabe von Einzelwerten erzwingen, so muss man folgendermaßen vorgehen:

NO INTERVALS, um den Bereich Von Bis zu verhindern.

Über den Mehrfachselektionsbutton will man die Eingabe nur von Einzelwerten erlauben, also EQ, also

Im Event INITIALIZATION muss für die SO eine eigene RESTRICT FUNCTION eingehängt werden, die nur Einzelwerte oder nur Intervalle etc. ermöglicht. Dies kann man SAP mitteilen.

Wichtig ist, wenn die Einschränkung für mehrere SO gilt, dann muss immer diesselbe Routine aufgerufen werden.

Hier ‚OL_TEST‘

REPORT test.

TABLES: tj02t.
  SELECT-OPTIONS pa_stat  FOR tj02t-txt04 NO INTERVALS.


INITIALIZATION.


  PERFORM restrict using 'PA_STAT'.


FORM restrict using lv_param.
  "USING p1.
  "CHANGING p2.

  tables sscr.
  DATA t_restrict TYPE sscr_restrict.
  DATA l_ass      TYPE sscr_ass.
  DATA l_opt      TYPE sscr_opt_list.
*-- OptionsTable bauen
  CLEAR l_opt.
  l_opt-name       = 'OL_TEST'. "lv_param. "'OL_' && lv_param.
  l_opt-options-eq = 'X'.  "Nur Einzelwerte zulassen
  APPEND l_opt TO t_restrict-opt_list_tab.

*-- Zuordnung zu den Selektionsfeldern
  CLEAR l_ass.
  MOVE: 'S'         TO l_ass-kind,
        lv_param TO l_ass-name,
        'I'         TO l_ass-sg_main,
        l_opt-name TO l_ass-op_main.
  APPEND l_ass TO t_restrict-ass_tab.

*-- Restriktionen aktivieren
  CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
    EXPORTING
      restriction            = t_restrict
    EXCEPTIONS
      too_late               = 1
      repeated               = 2
      selopt_without_options = 3
      selopt_without_signs   = 4
      invalid_sign           = 5
      empty_option_list      = 6
      invalid_kind           = 7
      repeated_kind_a        = 8
      OTHERS                 = 9.
  IF sy-subrc <> 0.
    "Fehler
  ENDIF.


ENDFORM.                    " restrict