Additional Functionality on SELECT-OPTIONS 功能限制
Posted on 2010-08-16 11:10 Hahappyppy 阅读(269) 评论(0) 收藏 举报REPORT YTEST_HU004.
TYPE-POOLS: SSCR.
TABLES: T001,MARA.
SELECT-OPTIONS: S_BUKRS FOR T001-BUKRS,
S_MATNR FOR MARA-MATNR.
INITIALIZATION.
* 控制用结构ls_restrict的做成
DATA: LIW_RESTRICT TYPE SSCR_RESTRICT.
DATA: LIW_OPTLIST TYPE SSCR_OPT_LIST,
LIW_ASS TYPE SSCR_ASS.
* 自定义名称V1
LIW_OPTLIST-NAME = ‘V1′.
* 允许’=’
LIW_OPTLIST-OPTIONS-EQ = ‘X’.
* 允许范围
LIW_OPTLIST-OPTIONS-BT = ‘X’.
APPEND LIW_OPTLIST TO LIW_RESTRICT-OPT_LIST_TAB.
CLEAR LIW_OPTLIST.
* 自定义名称V2
LIW_OPTLIST-NAME = ‘V2′.
* 允许’=’
LIW_OPTLIST-OPTIONS-EQ = ‘X’.
APPEND LIW_OPTLIST TO LIW_RESTRICT-OPT_LIST_TAB.
LIW_ASS-KIND = ‘S’.
LIW_ASS-NAME = ‘S_BUKRS’.
LIW_ASS-SG_MAIN = ‘I’.
LIW_ASS-OP_MAIN = ‘V1′.
APPEND LIW_ASS TO LIW_RESTRICT-ASS_TAB.
CLEAR LIW_ASS.
LIW_ASS-KIND = ‘S’.
LIW_ASS-NAME = ‘S_MATNR’.
LIW_ASS-SG_MAIN = ‘I’.
LIW_ASS-OP_MAIN = ‘V2′.
APPEND LIW_ASS TO LIW_RESTRICT-ASS_TAB.
CALL FUNCTION ‘SELECT_OPTIONS_RESTRICT’
EXPORTING
RESTRICTION = LIW_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.
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
REPORT ZTEST222 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.
浙公网安备 33010602011771号