ALV复选框根据全选勾选取消 以及选择一个单据后 勾选上这个单据全部行项目

首先在输出内表结构里定义CBOX 复选框

        cbox       TYPE char1,

然后设置一下四个FILEDCAY参数

  gs_fieldcat-edit      = &1.
  gs_fieldcat-hotspot   = &4.
  gs_fieldcat-checkbox  = &5.
GS_FIELDCAT-HOTSPOT  = &6.

注意LAYOUT中取消BOX_FNAME 的设置

复制代码
    WHEN  '&IC1'.
      CASE SELFIELD-SEL_TAB_FIELD.
          READ TABLE GT_EXCEL INTO DATA(LS_EXCEL) INDEX SELFIELD-TABINDEX .

          IF SELFIELD-FIELDNAME = 'CBOX' AND LS_EXCEL-CBOX  = 'X'.
            LOOP AT GT_EXCEL ASSIGNING FIELD-SYMBOL(<FS_ANLN1>) WHERE ANLN1 = LS_EXCEL-ANLN1.
              <FS_ANLN1>-CBOX = ''.
            ENDLOOP.

          ELSEIF SELFIELD-FIELDNAME = 'CBOX' AND GS_EXCEL-CBOX = ''.
            LOOP AT GT_EXCEL ASSIGNING <FS_ANLN1> WHERE ANLN1 = LS_EXCEL-ANLN1.
              <FS_ANLN1>-CBOX = 'X'.
            ENDLOOP.
          ENDIF.

  PERFORM GRID_CHANGE_DATA."刷新"
复制代码

全选

  GS_EXCEL-CBOX = 'X'.
  MODIFY GT_EXCEL FROM GS_EXCEL TRANSPORTING CBOX WHERE CBOX = ''.

取消全选

  GS_EXCEL-CBOX = ''.
  MODIFY GT_EXCEL FROM GS_EXCEL TRANSPORTING CBOX WHERE CBOX = 'X'.

刷新ALV事件

  DATA: L_GRID TYPE REF TO CL_GUI_ALV_GRID.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID = L_GRID.

  CALL METHOD L_GRID->CHECK_CHANGED_DATA.
  CALL METHOD L_GRID->REFRESH_TABLE_DISPLAY.

刷新行列


  SELFIELD-REFRESH 'X'.
  SELFIELD-COL_STABLE 'X'.
  SELFIELD-ROW_STABLE 'X'.

 

posted @   YangMeiko  阅读(82)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示