Extensions bei Select-Options beschränken

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Manchmal hat man z. B. die Aufgabenstellung, dass ein Select-Options zwar mehrere Einzelwerte einschließen soll, aber kein Intervall oder keine Werte, die auszuschließen sind. Dies lässt sich über den Funktionsbaustein SELECT_OPTIONS_RESTRICT realisieren. Dieser Aufruf muss innerhalb des Ereignisses INITIALIZATION erfolgen. Hier werden die zwei Select-Options S_LFRGN und S_VBELN lediglich auf (mehrere) Einzelwerte beschränkt.

Coding

*----------------------------------------------------------------------*
* INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
  PERFORM select_options_restrict.


*&---------------------------------------------------------------------*
*&      Form  SELECT_OPTIONS_RESTRICT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM select_options_restrict.

  TYPE-POOLS: sscr.

* Select-Option wird auf erlaubte Restriktionen eingeschränkt
  DATA: lt_restrict TYPE sscr_restrict,
        lt_opt_list TYPE sscr_opt_list,
        lt_ass      TYPE sscr_ass.

  CLEAR lt_opt_list.
  lt_opt_list-name       = 'EQ'.
  lt_opt_list-options-eq = 'X'.
  APPEND lt_opt_list TO lt_restrict-opt_list_tab.

  lt_ass-kind            = 'S'.
  lt_ass-name            = 'S_LFRGN'.
  lt_ass-sg_main         = 'I'.
  lt_ass-sg_addy         = ' '.
  lt_ass-op_main         = 'EQ'.
  lt_ass-op_addy         = 'EQ'.
  APPEND lt_ass TO lt_restrict-ass_tab.

  lt_ass-kind            = 'S'.
  lt_ass-name            = 'S_VBELN'.
  lt_ass-sg_main         = 'I'.
  lt_ass-sg_addy         = ' '.
  lt_ass-op_main         = 'EQ'.
  lt_ass-op_addy         = 'EQ'.
  APPEND lt_ass TO lt_restrict-ass_tab.

  CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
    EXPORTING
      restriction            = lt_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.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " SELECT_OPTIONS_RESTRICT


Selektionsbildschirm

Selektionsbildschirm1.jpg


Extension Select-Options

Aufgrund des Gebrauchs des Funktionsbausteins SELECT_OPTIONS_RESTRICT wird nun noch lediglich die Möglichkeit angeboten, mehr Einzelwerte zu pflegen.

Selektionsbildschirm2.jpg