程序包含了checkbox,listbox,带有筛选字段功能的f4帮助,等等。
*&---------------------------------------------------------------------*
*& Report ZDIALOG_DEMO1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zdialog_demo1.
TABLES:
mara,
sscrfields,
syst.
TYPE-POOLS:
icon.
*=================屏幕输入域显示参数控制================================
DATA:
s_date TYPE d,
s_date1 TYPE d.
DATA:
ltab_fields TYPE help_value OCCURS 0 WITH HEADER LINE.
DATA:
BEGIN OF ltab_values OCCURS 0,
field(40) TYPE c,
END OF ltab_values.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
s_matnr FOR mara-matnr OBLIGATORY MODIF ID g1, "必输项
s_matnr3 FOR mara-matnr NO-EXTENSION MODIF ID g1, "无扩展项
s_matnr4 FOR mara-matnr NO INTERVALS MODIF ID g1, "非区间
s_matnr5 FOR mara-matnr MATCHCODE OBJECT mat1,
date1 FOR syst-datum MEMORY ID m1 NO INTERVALS,
date FOR syst-datum DEFAULT s_date TO sy-datum OPTION BT SIGN I.
PARAMETERS:
s_matnr1 LIKE mara-matnr DEFAULT '111' OBLIGATORY MODIF ID g2,
s_matnr2 TYPE matnr LOWER CASE. "no-display 在屏幕上不输出s_matnr2
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (12) mytext FOR FIELD p_matnr.
PARAMETERS: p_matnr LIKE mara-matnr. "'物料'
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS:
p_box AS CHECKBOX USER-COMMAND comm1,
p_rad1 RADIOBUTTON GROUP g1 USER-COMMAND comm2,
p_rad2 RADIOBUTTON GROUP g1,
p_lang TYPE char20 AS LISTBOX VISIBLE LENGTH 22 USER-COMMAND comm3.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN:
PUSHBUTTON 2(10) but1 USER-COMMAND cli1,
PUSHBUTTON 20(30) but2 USER-COMMAND cli2 VISIBLE LENGTH 10.
SELECTION-SCREEN END OF BLOCK b2.
selection-screen function key 1.
selection-screen function key 2.
*=======================F4===============================================
* 选择屏幕参数定义
INITIALIZATION.
PERFORM f_init_proc.
AT SELECTION-SCREEN OUTPUT.
PERFORM f_output_screen.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr.
PERFORM getf4help USING p_matnr.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_matnr-low.
PERFORM getf4help USING s_matnr-low.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_matnr-high.
PERFORM getf4help USING s_matnr-high.
AT SELECTION-SCREEN.
* IF sy-ucomm = 'COMM1'.
* MESSAGE '单击复选框' TYPE 'I'.
* ELSEIF sy-ucomm = 'COMM2'.
* MESSAGE '单击p_rad1' TYPE 'I'.
* ENDIF.
CASE sscrfields.
WHEN 'COMM1'.
MESSAGE '单击复选框' TYPE 'I'.
WHEN 'COMM2'.
MESSAGE '单击p_rad1' TYPE 'I'.
WHEN 'CLI1'.
MESSAGE '单击BUTTON1' TYPE 'I'.
WHEN 'CLI2'.
MESSAGE '单击BUTTON2' TYPE 'I'.
WHEN OTHERS.
ENDCASE.
IF sscrfields-ucomm = 'FC01'.
LEAVE PROGRAM.
elseif sscrfields-ucomm = 'FC02'.
exit.
ENDIF.
START-OF-SELECTION.
GET PARAMETER ID 'M1' FIELD s_date1.
WRITE: /'s_date1: ', s_date1.
WRITE: /'s_date: ', s_date.
WRITE: /'P_LANG: ', p_lang.
WRITE: /'p_box: ', p_box, 'p_rad1: ',p_rad1, 'p_rad2:', p_rad2, 'p_lang: ', p_lang.
*&---------------------------------------------------------------------*
*& Form getf4help
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_MATNR text
*----------------------------------------------------------------------*
FORM getf4help USING i_matnr.
CALL FUNCTION 'HELP_VALUES_GET_WITH_TABLE'
EXPORTING
fieldname = 'MATNR'
tabname = 'MARA'
titel = '含有111的物料号:'
IMPORTING
select_value = i_matnr
TABLES
fields = ltab_fields
valuetab = ltab_values
EXCEPTIONS
field_not_in_ddic = 01
more_then_one_selectfield = 02
no_selectfield = 03.
ENDFORM. " getF4help
*&---------------------------------------------------------------------*
*& Form setlist
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM setlist .
TYPE-POOLS:vrm.
DATA values TYPE vrm_values WITH HEADER LINE.
values-key = 'CHINESE'.
values-text = '中国人'.
APPEND values.
values-key = 'AMERICAN'.
values-text = '美国人'.
APPEND values.
values-key = 'ENGLISH'.
values-text = '英国人'.
APPEND values.
values-key = 'FRENCH'.
values-text = '法国人'.
APPEND values.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'P_LANG'
values = values[]
* EXCEPTIONS
* ID_ILLEGAL_NAME = 1
* OTHERS = 2
.
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. " setlist
*&---------------------------------------------------------------------*
*& Form f_init_proc
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_init_proc .
DATA:
l_matnr(40),
l_maktx(100).
CONCATENATE icon_system_mark '物料号' INTO mytext.
CONCATENATE icon_message_information 'BUTTON1' INTO but1.
CONCATENATE icon_message_information 'BUTTON2' INTO but2.
MOVE 'BACK' TO SSCRFIELDS-FUNCTXT_01.
MOVE 'CANCEL' TO SSCRFIELDS-FUNCTXT_02.
s_date = sy-datum - 1.
date-low = s_date.
MODIFY date INDEX 1.
* 确定F4功能中显示的字段(一般标记 = ‘X’的为目标字段,
*其他为辅助显示字段,如果都写为‘X’,会以最后一次写入的字段作为目标字段。
ltab_fields-tabname = 'MARA'. "表明
ltab_fields-fieldname = 'MATNR'. "字段名
ltab_fields-selectflag = 'X'. "一般标记(传入画面字段)
APPEND ltab_fields.
ltab_fields-tabname = 'MAKT'.
ltab_fields-fieldname = 'MAKTX'.
ltab_fields-selectflag = ''. "一般标记(仅显示,不会传入画面字段)
APPEND ltab_fields.
* 筛选F4搜索中显示的字段值
SELECT mara~matnr makt~maktx
INTO (l_matnr,l_maktx)
FROM mara INNER JOIN makt
ON mara~matnr = makt~matnr
WHERE mara~matnr LIKE '%111%'. "'模糊查询(含有111的字符串)
ltab_values-field = l_matnr.
APPEND ltab_values.
ltab_values-field = l_maktx.
APPEND ltab_values.
ENDSELECT.
ENDFORM. " f_init_proc
*&---------------------------------------------------------------------*
*& Form f_output_screen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_output_screen .
LOOP AT SCREEN.
IF NOT screen-group1 IS INITIAL.
IF screen-group1 = 'G2'. "G2必须是大写的,不然是不会识别的
IF p_lang = 'CHINESE'.
screen-input = 0.
screen-invisible = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
PERFORM setlist.
ENDFORM. " f_output_screen