选择屏幕



程序包含了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 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值