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'.