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 @ 2024-02-29 21:59  YangMeiko  阅读(146)  评论(0)    收藏  举报