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

这篇博客介绍了如何在ABAP中使用CHECKBOX和LISTBOX进行屏幕字段控制。通过示例代码展示了如何根据CHECKBOX的状态设置LISTBOX的值,以及如何通过函数`VRM_SET_VALUES`显示和更新LISTBOX内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*&---------------------------------------------------------------------*
*& Report  ZTESTSQL
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ztestsql.


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 .   " GET_BWART
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值