[选择画面]根据不同的radion button显示不同的选择条件实例
REQUIRED:控制文本框、下拉列表屏幕元素的必输性,使用此属性后会忽略OBLIGATORY选项。取值如下:
0:不必输,框中前面也没有钩
1:必输,框中前面有钩,系统会自动检验是否已输入,相当于OBLIGATORY选项
2:不必输,但框中前面有钩,系统不会检查是否已输入,此时需要手动检验
*&---------------------------------------------------------------------*
*& Report ZTEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztest.
*&---------------------------------------------------------------------*
* Tables/声明数据库表
*----------------------------------------------------------------------*
DATA: g_werks TYPE vbap-werks,
g_vbeln TYPE vbak-vbeln.
DATA: g_field(11) TYPE c.
*------------------------------------------------------------------------------*
* SELECTION-SCREEN *
*------------------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-001 .
PARAMETERS: r_down TYPE c RADIOBUTTON GROUP c1 USER-COMMAND sel DEFAULT 'X'. "download
PARAMETERS: r_upld TYPE c RADIOBUTTON GROUP c1. "upload
SELECTION-SCREEN END OF BLOCK blk1.
* download condition
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE TEXT-002 .
SELECT-OPTIONS: s_werks FOR g_werks MODIF ID m1 NO INTERVALS. "plant
SELECT-OPTIONS: s_vbeln FOR g_vbeln MODIF ID m1. "sales order
SELECTION-SCREEN END OF BLOCK blk2.
* upload condition
SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME TITLE TEXT-002 .
PARAMETERS: p_file TYPE rlgrap-filename MODIF ID m2.
SELECTION-SCREEN END OF BLOCK blk3.
*------------------------------------------------------------------------------*
* INITIALIZATION *
*------------------------------------------------------------------------------*
************************************************************************
* at selection screen output
************************************************************************
AT SELECTION-SCREEN OUTPUT.
* set screen fields attributes
PERFORM frm_screen_output.
************************************************************************
* at selection screen on value request for
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM frm_get_fielpath. "选择路径
*------------------------------------------------------------------------------*
* AT SELECTION-SCREEN *
*------------------------------------------------------------------------------*
AT SELECTION-SCREEN.
* check mandatory input fields
PERFORM frm_check_input.
*------------------------------------------------------------------------------*
* START-OF-SELECTION *
*------------------------------------------------------------------------------*
START-OF-SELECTION.
* PERFORM P_GET_DATA.
* PERFORM P_DISPLAY.
*&---------------------------------------------------------------------*
*& Form FRM_SCREEN_OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_screen_output .
LOOP AT SCREEN .
CASE screen-group1.
WHEN 'M1' .
IF r_down = 'X' .
screen-active = 1 .
IF screen-name = 'S_WERKS-LOW' OR "PLANT
screen-name = 'S_VBELN-LOW' .
screen-required = '2'. "2-显示为必输项,但是系统不做检查,需要自己写检查逻辑
ENDIF.
ELSE .
screen-active = 0 .
ENDIF .
WHEN 'M2' .
IF r_upld = 'X' .
screen-active = 1 .
screen-required = '2'.
ELSE .
screen-active = 0 .
ENDIF .
ENDCASE .
MODIFY SCREEN .
ENDLOOP .
* 设定光标
CASE ''.
WHEN s_werks-low.
SET CURSOR FIELD 'S_WERKS-LOW'.
WHEN s_vbeln-low.
SET CURSOR FIELD 'S_VBELN-LOW'.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_check_input .
IF sy-ucomm <> 'SEL' AND
sy-ucomm <> '%011'.
IF r_down = 'X'. "download
IF s_werks-low IS INITIAL.
MESSAGE ID '00' TYPE 'S' NUMBER '55' DISPLAY LIKE 'E'.
STOP.
ENDIF.
IF s_vbeln-low IS INITIAL.
MESSAGE ID '00' TYPE 'S' NUMBER '55' DISPLAY LIKE 'E'.
STOP.
ENDIF.
ELSE.
IF p_file IS INITIAL. "upload
MESSAGE ID '00' TYPE 'S' NUMBER '55' DISPLAY LIKE 'E'.
STOP.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_FIELPATH
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_get_fielpath .
CALL FUNCTION 'TB_LIMIT_WS_FILENAME_GET'
IMPORTING
filename = p_file
EXCEPTIONS
selection_cancel = 1
selection_error = 2
OTHERS = 3.
ENDFORM.