cheng029 发表于 2015-9-18 12:02:30

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

     既然是屏幕设计器,自然要有下拉列表框。这里我们来做一下。
      首先,SE38建立一个程序,SE51拖出一个文本框控件,下拉框的属性设置为Listbox,名称为VALUE:
     
      再拖出一个文本框,设置为只读属性,如下:
     
      屏幕设计页面如下:
     
      屏幕设计属性的代码如下:
     
    PROCESS ON VALUE-REQUEST.代表定义调用F4帮助或者单击该栏位所触发的事件。   
      FIELD VALUE MODULE SETVALUE.代表为下拉列表框赋值。
      在SE38中,程序的开头记得Key入如下代码:
      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.               " SETVALUEINPUT
  
"根据下拉框内容的值进行读取相应的说明
FORM GETDESC .
SELECT CMMT INTO DESC FROM ZCODE_MSTR WHERE FIDNAME = 'LIST' AND VALUE = VALUE.
ENDSELECT.
ENDFORM.                  " GETDESC
  
"用户操作代码
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_0100INPUT
  ZCODE_MSTR内容如下:
  
最后,本程序运行结果如下:  
  
  程序做到了很好的互动,下拉列表框内容改变了之后,旁边的说明自动会抓去相应的内容显示。
页: [1]
查看完整版本: SAP屏幕设计器专题:下拉列表框(四)