Mobile: 135 8576 5961 / WeChat: IM_WILLIAM_C / Mail: william.chen.cn@outlook.com /
分类: 其他平台
2013-01-28 18:55:03
ListBox -- 下拉列表框 //
实现方法:自己写了个小例子,方便以后直接拿来用了。
REPORT ZJOI_TEST.
TYPE-POOLS: VRM . "存放combobox内容的type pool
DATA: NAME TYPE VRM_ID , " list box的名称
LIST TYPE VRM_VALUES , " list box的值
VALUE LIKE LINE OF LIST . " list box的结构
*定义checkbox,指定command,为了能够响应选择屏幕中值的改变
PARAMETERS: P_CB TYPE C AS CHECKBOX DEFAULT 'X' USER-COMMAND CHECK.
*定义listbox,必须指定visible length
PARAMETERS: P_LIST(4) TYPE C AS LISTBOX VISIBLE LENGTH 10.
*开始执行
AT SELECTION-SCREEN OUTPUT .
CLEAR P_LIST.
REFRESH LIST.
* 选中checkbox
IF P_CB = 'X'.
* 向listbox里面添加值
VALUE-KEY = 'key1' . "这个就是变量P_LIST的值
VALUE-TEXT = 'text1' . "这个是text
APPEND VALUE TO LIST .
VALUE-KEY = 'key2' .
VALUE-TEXT = 'text2' .
APPEND VALUE TO LIST .
VALUE-KEY = 'key3' .
VALUE-TEXT = 'text3' .
APPEND VALUE TO LIST .
* 调用函数显示listbox里面的值
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'P_LIST'
VALUES = LIST.
LOOP AT SCREEN .
IF SCREEN-NAME = 'P_LIST'.
SCREEN-REQUIRED = 1.
MODIFY SCREEN .
ENDIF .
ENDLOOP .
ELSE.
* CLEAR LIST.
LOOP AT SCREEN .
IF SCREEN-NAME = 'P_LIST'.
SCREEN-INPUT = 0.
MODIFY SCREEN .
ENDIF .
ENDLOOP .
ENDIF .
START-OF-SELECTION .
*--〉输出到第二屏幕看看
WRITE / P_LIST.
WRITE: / , '附加screen结构中各个参数的含义:' ,/.
WRITE:/
'name:控件或者字段的名称;', / ,
'group:组别,用于对控件的管理;', / ,
'active:是否可见,并可输入', / ,
'required:必须输入字段', / ,
'input:输入字段(能够输入)', / ,
'output:输出字段(能够输出)', / ,
'intensified:高亮显示(就是颜色变深)', / ,
'invisible:禁用字段(是否可见)', / ,
'length :长度display_3d:3d显示(就是有立体感)', / ,
'value_help:有查询帮助。'.
注:此程序有个小现象,即在Listbox为空时候就不能去掉checkBox的对勾了,因为此时系统首先Check的ListBox的必输项规则,此处着重ListBox,有兴趣的可以研究Selection-screen的互动控制,之前也作过一些,但具体情况太多了,只能具体情况具体对待了。
附加:好了,下拉列表可以显示,也能回执到程序Key值了,但显示的情况却有两种,一种是key + 空格+ text 的形式,另一种就是只显示text 描述信息,如果你遇到这种情况不要怀疑是代码哪里写错,其实是有配置得来,具体配置如下:首先进入SAP GUI Option的配置窗体下(从SAP Logon窗口Alt + 空格键 + O进入,或者从登陆后的业务编辑界面Alt + F12 --> p 进入都可以),打开第二个根节点Interaction Design 下面的第二个配置文本,在右面的配置详细Controls区域内将“Show keys within dropdown lists”打上对勾,有必要也可以吧下面的List排序也选上。