您的位置:首页 > 其它

ABAP中CHECKBOX 和LISTBOX的使用(屏幕字段的控制)1

2012-09-04 11:15 501 查看
*&---------------------------------------------------------------------*

*& Report ZDIALOGTEST

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT zdialogtest.

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_cb1 TYPE c AS CHECKBOX DEFAULT 'X' USER-COMMAND check,

p_cb2 TYPE c AS CHECKBOX DEFAULT 'X' USER-COMMAND check.

*定义listbox,必须指定visible length

PARAMETERS: p_list1(10) TYPE c AS LISTBOX

VISIBLE LENGTH 15 ,

p_list2(20) TYPE c AS LISTBOX

VISIBLE LENGTH 25 .

*开始执行

AT SELECTION-SCREEN OUTPUT .

*选择1而没有选择2

IF p_cb1 = 'X' AND p_cb2 = ''.

*向listbox里面添加值

REFRESH list .

value-key = '1111111111' . "这个就是变量P_LIST的值

value-text = '1111111111' . "这个是text

APPEND value TO list .

value-key = '2222222222' .

value-text = '2222222222' .

APPEND value TO list .

value-key = '3333333333' .

value-text = '3333333333' .

APPEND value TO list .

*调用函数显示listbox里面的值

CALL FUNCTION 'VRM_SET_VALUES'

EXPORTING

id = 'P_LIST1'

values = list.

*把第二个listbox的值清空,并且不能输入

CLEAR p_list2 .

LOOP AT SCREEN .

IF screen-name = 'P_LIST2' .

screen-input = 0 .

MODIFY SCREEN .

ENDIF .

ENDLOOP .

*选择2,没有选择1,同上

ELSEIF p_cb2 = 'X' AND p_cb1 = ''.

REFRESH list .

value-key = 'AAAAAAAAAAAAAAAAAAAA' .

value-text = 'AAAAAAAAAAAAAAAAAAAA' .

APPEND value TO list .

value-key = 'BBBBBBBBBBBBBBBBBBBB' .

value-text = 'BBBBBBBBBBBBBBBBBBBB' .

APPEND value TO list .

value-key = 'CCCCCCCCCCCCCCCCCCCC' .

value-text = 'CCCCCCCCCCCCCCCCCCCC' .

APPEND value TO list .

APPEND value TO list .

CALL FUNCTION 'VRM_SET_VALUES'

EXPORTING

id = 'P_LIST2'

values = list.

*清空listbox 1的值

CLEAR p_list1 .

LOOP AT SCREEN .

IF screen-name = 'P_LIST1' .

screen-input = 0 .

MODIFY SCREEN .

ENDIF .

ENDLOOP .

*都没有选择,都清空且不能输入

ELSEIF p_cb1 = '' AND p_cb2 = '' .

CLEAR: p_list1,p_list2 .

LOOP AT SCREEN .

IF screen-name = 'P_LIST1' .

screen-input = 0 .

MODIFY SCREEN .

ENDIF .

ENDLOOP .

LOOP AT SCREEN .

IF screen-name = 'P_LIST2' .

screen-input = 0 .

MODIFY SCREEN .

ENDIF .

ENDLOOP .

*都选,执行

ELSEIF p_cb1 = 'X' AND p_cb2 = 'X' .

REFRESH list .

value-key = '1111111111' .

value-text = '1111111111' .

APPEND value TO list .

value-key = '2222222222' .

value-text = '2222222222' .

APPEND value TO list .

value-key = '3333333333' .

value-text = '3333333333' .

APPEND value TO list .

CALL FUNCTION 'VRM_SET_VALUES'

EXPORTING

id = 'P_LIST1'

values = list.

REFRESH list .

value-key = 'AAAAAAAAAAAAAAAAAAAA' .

value-text = 'AAAAAAAAAAAAAAAAAAAA' .

APPEND value TO list .

value-key = 'BBBBBBBBBBBBBBBBBBBB' .

value-text = 'BBBBBBBBBBBBBBBBBBBB' .

APPEND value TO list .

value-key = 'CCCCCCCCCCCCCCCCCCCC' .

value-text = 'CCCCCCCCCCCCCCCCCCCC' .

APPEND value TO list .

CALL FUNCTION 'VRM_SET_VALUES'

EXPORTING

id = 'P_LIST2'

values = list.

ENDIF .

START-OF-SELECTION .

*输出到第二屏幕看看

WRITE: p_list1 ,/ p_list2 .

http://tech.chinaunix.net/a2009/0716/607/000000607414.shtml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: