您的位置:首页 > 其它

参考选择屏幕(控制选择屏幕两个屏幕,单值输入……通过函数实现单值输入)

2014-04-03 15:02 369 查看
TABLES:likp,vbap,vbak,vttp.
DATA:gl_restrict TYPE sscr_restrict.

SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_vstel FOR likp-vstel NO INTERVALS,               "装运点
s_lfdat FOR likp-lfdat NO INTERVALS    NO-EXTENSION ,                            "交货日期
s_lfart FOR likp-lfart DEFAULT 'LF' NO INTERVALS MODIF ID lf,              "交货类型
s_prodh FOR vbap-prodh NO INTERVALS,                          "产品层次
s_vbeln1 FOR likp-vbeln,                                       "交货单号
s_vtweg FOR vbak-vtweg NO INTERVALS.                          "销售渠道

SELECTION-SCREEN BEGIN OF BLOCK bk2 WITH FRAME TITLE text-002.
* 配送方式
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(8) text-003.
SELECTION-SCREEN POSITION 33.
PARAMETERS r_rd1 RADIOBUTTON GROUP sg1 DEFAULT 'X' USER-COMMAND rd_click.
SELECTION-SCREEN COMMENT 34(4) text-004 FOR FIELD r_rd1.
SELECTION-SCREEN POSITION 45.
PARAMETERS r_rd2 RADIOBUTTON GROUP sg1.
SELECTION-SCREEN COMMENT 46(4) text-005 FOR FIELD r_rd2.
SELECTION-SCREEN END OF LINE.
* 拣配状态
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(8) text-006.
SELECTION-SCREEN POSITION 33.
PARAMETERS p_ck1 AS CHECKBOX.
SELECTION-SCREEN COMMENT 34(4) text-007 FOR FIELD p_ck1.
SELECTION-SCREEN POSITION 45.
PARAMETERS p_ck2 AS CHECKBOX.
SELECTION-SCREEN COMMENT 46(4) text-008 FOR FIELD p_ck2.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK bk2.
SELECTION-SCREEN END OF BLOCK bk1.
SELECTION-SCREEN END OF SCREEN 100.

* subscreen 200
SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK bk3 WITH FRAME TITLE text-015.
PARAMETERS: p_vbeln TYPE likp-vbeln   MODIF ID mop.
SELECTION-SCREEN: PUSHBUTTON 63(5) pubu USER-COMMAND mailbutt.
SELECT-OPTIONS: s_vbeln FOR likp-vbeln NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK bk3.
SELECTION-SCREEN END OF SCREEN 200.

* tab screen
SELECTION-SCREEN: BEGIN OF TABBED BLOCK mytab FOR 25 LINES,
TAB (20) button1 USER-COMMAND push1,
TAB (20) button2 USER-COMMAND push2,
END OF BLOCK mytab.

INITIALIZATION.
PERFORM frm_set_tab.
PERFORM frm_select_option.

AT SELECTION-SCREEN OUTPUT.
PERFORM frm_output_set.

*&---------------------------------------------------------------------*
*& 参数输入检查
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
PERFORM frm_set_screen.
*&---------------------------------------------------------------------*
*&      Form  frm_set_tab
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_set_tab.
DATA: lv_tab TYPE char1.

button1 = '查询1'.
button2 = '查询2'.
mytab-prog = sy-repid.
IMPORT p1 = lv_tab FROM MEMORY ID 'ZDQWM_099_TAB'.
IF lv_tab IS INITIAL.
mytab-dynnr = 100.
mytab-activetab = 'PUSH1'.
ELSE.
IF lv_tab = 'A'.
mytab-dynnr = 100.
mytab-activetab = 'PUSH1'.
ENDIF.
IF lv_tab = 'B'.
mytab-dynnr = 200.
mytab-activetab = 'PUSH2'.
ENDIF.
ENDIF.
*  mytab-dynnr = 100.
*  mytab-activetab = 'PUSH1'.
ENDFORM.                    "frm_set_tab
*&---------------------------------------------------------------------*
*&      Form  frm_set_screen
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_set_screen.

CASE sy-ucomm.
WHEN 'PUSH1'.
mytab-dynnr = 100.
EXPORT p1 = 'A' TO MEMORY ID 'ZDQWM_099_TAB'.
WHEN 'PUSH2'.
mytab-dynnr = 200.
EXPORT p1 = 'B' TO MEMORY ID 'ZDQWM_099_TAB'.
WHEN 'MAILBUTT'.
PERFORM show_box.

WHEN OTHERS.
...
ENDCASE.

ENDFORM.                    "frm_set_screen
*&---------------------------------------------------------------------*
*&      Form  FRM_OUTPUT_SET
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_output_set .
IF p_vbeln IS INITIAL.
WRITE icon_enter_more  AS ICON TO pubu.
ELSE.
WRITE icon_display_more AS ICON TO pubu.
ENDIF.
ENDFORM.                    " FRM_OUTPUT_SET

*&---------------------------------------------------------------------*
*&      Form  frm_select_option
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_select_option.

REFRESH gl_restrict-ass_tab.
PERFORM frm_set_key USING 'KEY1' 'S_VSTEL'.
PERFORM frm_set_key USING 'KEY2' 'S_PRODH'.
PERFORM frm_set_key USING 'KEY3' 'S_VTWEG'.
PERFORM frm_set_key USING 'KEY4' 'S_LFART'.
PERFORM frm_set_key USING 'KEY10' 'S_VBELN2'.
*    PERFORM frm_set_key USING 'KEY11' 'S_POS'.
CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'                 "只执行一次
EXPORTING
restriction            = gl_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.                    "frm_select_option
*&---------------------------------------------------------------------*
*&      Form  frm_set_key
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->L_KEY      text
*      -->L_NAME     text
*----------------------------------------------------------------------*
FORM frm_set_key USING l_key l_name.
DATA: wl_restrict TYPE sscr_restrict,
wl_optlist TYPE sscr_opt_list,
wl_ass TYPE sscr_ass.

CONSTANTS:  cl_s TYPE char1 VALUE 'S',
cl_x TYPE c VALUE 'X',
cl_i TYPE char1 VALUE 'I'.

wl_optlist-name = l_key.      "选项框id,不同select-option不能重复
wl_optlist-options-eq = cl_x.
APPEND wl_optlist TO gl_restrict-opt_list_tab.
CLEAR: wl_optlist.

wl_ass-kind = cl_s.
wl_ass-name = l_name.   "select-option id
wl_ass-sg_main = cl_i.
wl_ass-sg_addy = space.
wl_ass-op_main = l_key.
APPEND wl_ass TO gl_restrict-ass_tab.
CLEAR: wl_ass.
ENDFORM.                    "frm_set_key
*&---------------------------------------------------------------------*
*&      Form  SHOW_BOX
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM show_box .
DATA: wh_excluded_options TYPE rsoptions.
DATA: w_message TYPE char100.
*输入单值,排除其他
wh_excluded_options-ne = 'X'.
wh_excluded_options-bt = 'X'.
wh_excluded_options-nb = 'X'.
wh_excluded_options-ge = 'X'.
wh_excluded_options-gt = 'X'.
wh_excluded_options-le = 'X'.
wh_excluded_options-lt = 'X'.
wh_excluded_options-cp = 'X'.
wh_excluded_options-np = 'X'.

CALL FUNCTION 'COMPLEX_SELECTIONS_DIALOG'
EXPORTING
title             = '批量处理'
just_incl         = 'X'         "只有包含输入
excluded_options  = wh_excluded_options
TABLES
range             = s_vbeln
EXCEPTIONS
no_range_tab      = 1
cancelled         = 2
internal_error    = 3
invalid_fieldname = 4
OTHERS            = 5.
IF sy-subrc <> 0.
IF sy-subrc = 2.
MESSAGE '取消批量处理' TYPE 'S'.
EXIT.
ENDIF.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid               = sy-msgid
msgnr               = sy-msgno
msgv1               = sy-msgv1
msgv2               = sy-msgv2
msgv3               = sy-msgv3
msgv4               = sy-msgv4
IMPORTING
message_text_output = w_message.
MESSAGE w_message TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDFORM.                    " SHOW_BOX


View Code



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐