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

*&---------------------------------------------------------------------*
*& 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  AS  CHECKBOX  DEFAULT  'X'  USER-COMMAND check,
p_cb2  TYPE  AS  CHECKBOX  DEFAULT  'X'  USER-COMMAND check.
*定义listbox,必须指定visible length
PARAMETERS: p_list1(10)  TYPE  AS LISTBOX
VISIBLE LENGTH  15 ,
p_list2(20)  TYPE  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 =  .
         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 =  .
         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 =  .
         MODIFY  SCREEN .
       ENDIF .
     ENDLOOP .
     LOOP  AT  SCREEN .
       IF screen-name =  'P_LIST2' .
        screen-input =  .
         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

你可能感兴趣的:(SAP)