SAP屏幕设计器专题:下拉列表框(四)

2022-05-09 13:15:56 浏览数 (3)

     既然是屏幕设计器,自然要有下拉列表框。这里我们来做一下。

    首先,SE38建立一个程序,SE51拖出一个文本框控件,下拉框的属性设置为Listbox,名称为VALUE:

    再拖出一个文本框,设置为只读属性,如下:

    屏幕设计页面如下:

    屏幕设计属性的代码如下:

    PROCESS ON VALUE-REQUEST.  代表定义调用F4帮助或者单击该栏位所触发的事件。    

    FIELD VALUE MODULE SETVALUE.  代表为下拉列表框赋值。

    在SE38中,程序的开头记得Key入如下代码:

代码语言:javascript复制
 TYPE-POOLS: VRM.  这个是下拉列表框引用所要用到的。
    接下来声明变量,与控件名称对应。
 DATA:VALUE(10) TYPE C,   "下拉框
             DESC(10) TYPE C.    "说明
    START-OF-SELECTION.
 CALL SCREEN 100.   "载入画面

    载入下拉列表框的MODULE:

MODULE SETVALUE INPUT.

 DATA: LV_NAME TYPE VRM_ID,

        LT_LIST TYPE VRM_VALUES,

        LW_VALUE LIKE LINE OF LT_LIST.

 CLEAR:LT_LIST,LW_VALUE.

  LV_NAME = 'VALUE'.

  "读取数据表内容至内表
 SELECT VALUE INTO LW_VALUE-KEY FROM ZCODE_MSTR WHERE FIDNAME = 'LIST'.

    LW_VALUE-TEXT = LW_VALUE-KEY.

 APPEND LW_VALUE TO LT_LIST.

 ENDSELECT.

 CALL FUNCTION 'VRM_SET_VALUES'     "调用函数填充内容

 EXPORTING

 ID     = LV_NAME

      VALUES = LT_LIST.

ENDMODULE.                 " SETVALUE  INPUT

  "根据下拉框内容的值进行读取相应的说明
FORM GETDESC .

 SELECT CMMT INTO DESC FROM ZCODE_MSTR WHERE FIDNAME = 'LIST' AND VALUE = VALUE.

 ENDSELECT.

ENDFORM.                    " GETDESC

 SPAN { font-family: "新宋体"; font-size: 12pt; color: rgba(40, 40, 40, 1); background: rgba(204, 232, 207, 1) } .L0S31 { color: rgba(104, 131, 139, 1) } .L0S33 { color: rgba(0, 128, 0, 1) } .L0S52 { color: rgba(0, 0, 255, 1) } .L0S55 { color: rgba(128, 0, 128, 1) } .L0S70 { color: rgba(128, 128, 128, 1) }  "用户操作代码
MODULE USER_COMMAND_0100 INPUT.

 CASE SY-UCOMM.

 WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.

 LEAVE PROGRAM.

 WHEN 'SAVE'.  "显示下拉框的值

 MESSAGE VALUE TYPE 'I'.

 WHEN 'THELIST' OR 'ENTER'.   "下拉列表框内容变更之后的动作

 PERFORM GETDESC.

 ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

ZCODE_MSTR内容如下:

最后,本程序运行结果如下:

程序做到了很好的互动,下拉列表框内容改变了之后,旁边的说明自动会抓去相应的内容显示。

0 人点赞