Additional Functionality on SELECT-OPTIONS

      对于SELECT-OPTIONS我们常用OBLIGATORY / NO-DISPLAY / VISIBLE LENGTH vlen / NO-EXTENSION / NO INTERVALS / MODIF ID modid 进行screen上的设置,下面的FM可以对Multiple Selection进行进一步的设置,比喻只能输入select value而不能用exclude value。采用FM SELECT_OPTIONS_RESTRICT,加在INITIALIZATION事件里就可以解决这个问题

 

      同样,如何对Multiple Selection进行值的初始化呢?  针对下面的例子同样在INITIALIZATION事件中

          MOVE 'I' TO belnr-sign.
          MOVE '1' TO belnr-low.
          APPEND belnr.
          MOVE '2' TO belnr-low.
          APPEND belnr.

 

       此外如何得到selection_options上没有确认前的界面上的值呢?SAP同样提供了一个很好的FM RS_REFRESH_FROM_SELECTOPTIONS  去获得当前selection screen上的值 

 

 

 

Reference to a system Program: RCATSBEL 

REPORT RCATSBEL MESSAGE-ID LR.
TABLES: CATSDB.
SELECT-OPTIONS: BELNR FOR CATSDB-BELNR NO INTERVALS.
DATA: TAB_BELNR LIKE CATS_BELNR OCCURS 0 WITH HEADER LINE.
TYPE-POOLS SSCR.
DATA: RESTRICT TYPE SSCR_RESTRICT.
DATA: OPT_LIST TYPE SSCR_OPT_LIST.
DATA: ASS      TYPE SSCR_ASS.

INITIALIZATION.
* restrict input possibilities
  MOVE 'BELNR'      TO OPT_LIST-NAME.
  MOVE 'X' TO: OPT_LIST-OPTIONS-EQ.
  APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB.
  MOVE: 'A'          TO ASS-KIND,
        'I'          TO ASS-SG_MAIN,
        ' '          TO ASS-SG_ADDY,
        'BELNR'      TO ASS-OP_MAIN.
  APPEND ASS TO RESTRICT-ASS_TAB.


  CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
       EXPORTING
            RESTRICTION            = 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.

* start to display the document
START-OF-SELECTION.
  PERFORM FILL_BELNR_TAB.
  PERFORM DISPLAY_DOCUMENT.

*---------------------------------------------------------------------*
*       FORM FILL_BELNR_TAB                                           *
*---------------------------------------------------------------------*
*       Fill internal table                                           *
*---------------------------------------------------------------------*
FORM FILL_BELNR_TAB.
  REFRESH TAB_BELNR.
  IF NOT BELNR IS INITIAL.
    LOOP AT BELNR.
      TAB_BELNR-BELNR = BELNR-LOW.
      APPEND TAB_BELNR.
    ENDLOOP.
  ELSE.
    MESSAGE I228.
    STOP.
  ENDIF.
ENDFORM.


*---------------------------------------------------------------------*
*       FORM DISPLAY_DOCUMENT                                         *
*---------------------------------------------------------------------*
*       display document                                              *
*---------------------------------------------------------------------*
FORM DISPLAY_DOCUMENT.
  CALL FUNCTION 'CATS_DISPLAY_DOCUMENT'
       TABLES
            TAB_BELNR         = TAB_BELNR
       EXCEPTIONS
            NO_DOCUMENT_FOUND = 1
            NO_DATA           = 2
            SYSTEM_ERROR      = 3
            OTHERS            = 4.
  IF SY-SUBRC = 1.
    MESSAGE I170.
  ELSEIF SY-SUBRC = 2.
    MESSAGE I072.
  ELSEIF SY-SUBRC = 3.
    MESSAGE E020.
  ELSEIF SY-SUBRC = 4.
    MESSAGE E030.
  ENDIF.
ENDFORM.

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值