首页 > 解决方案 > 在列表报告中单击时,图标“未选中的框”未更改为“选中”

问题描述

我可以在列表报告中显示复选框,单击也可以。

我还可以使用 AT LINE-SELECTION 事件读取列表的当前行。

任何人都可以帮忙吗?

问题是单击复选框时复选框图标未更新。我试图找到解决方案,并尝试自己修复它但无法做到。

示例代码如下。

TYPE-POOLS:icon.

CONSTANTS:
          c_unchecked TYPE icon_d VALUE icon_wd_iframe,
          c_checked TYPE icon_d VALUE icon_checkbox.


TYPES: BEGIN OF ty_data,
          carrid TYPE  s_carr_id,
          carrname TYPE  s_carrname,
          currcode TYPE  s_currcode,
          url TYPE  s_carrurl ,
          checkbox TYPE icon_d,
       END OF ty_data.
DATA t_data TYPE STANDARD TABLE OF ty_data.

START-OF-SELECTION.

SELECT CARRID,CARRNAME,CURRCODE,URL  FROM SCARR INTO TABLE @t_data.

LOOP AT t_data ASSIGNING FIELD-SYMBOL(<fs_data>).
     <fs_data>-checkbox = c_unchecked .
     WRITE:/10 <fs_data>-checkbox AS ICON HOTSPOT,
            20 <fs_data>-carrid,
            35 <fs_data>-carrname,
            60 <fs_data>-currcode,
            70 <fs_data>-url.
   ENDLOOP.

 AT LINE-SELECTION.

   READ TABLE t_data ASSIGNING <fs_data>
      INDEX sy-curow.
   IF sy-subrc EQ 0.
     IF <fs_data>-checkbox EQ c_unchecked.
       <fs_data>-checkbox = c_checked.
       REPLACE ALL OCCURRENCES OF  c_unchecked IN sy-lisel WITH c_checked.
     ELSEIF <fs_data>-checkbox EQ c_checked.
       REPLACE ALL OCCURRENCES OF  c_checked IN sy-lisel WITH c_unchecked.
     ENDIF.
     MODIFY LINE sy-curow.
   ENDIF.

输出:

带复选框的列表输出

标签: abap

解决方案


更改AS ICON HOTSPOTAS CHECKBOX应该可以解决您的问题。


推荐阅读