ALV程式checkbox全選及取消全選

mmccking發表於2009-06-15
ALV第一列為checkbox,實現其全選和全選取消![@more@]

*&---------------------------------------------------------------------*

*& Report ZCTEST15

*&

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

REPORT ZCTEST15 NO STANDARD PAGE HEADING.

TYPE-POOLS SLIS.

DEFINE MAC_FIELD.

CLEAR IW_FIELDCAT.

IW_FIELDCAT-COL_POS = &1.

IW_FIELDCAT-FIELDNAME = &2.

IW_FIELDCAT-SELTEXT_L = &3.

IW_FIELDCAT-INTLEN = &4.

IW_FIELDCAT-CHECKBOX = &5.

IW_FIELDCAT-EDIT = &6.

APPEND IW_FIELDCAT TO IT_FIELDCAT.

END-OF-DEFINITION.

TYPES:
BEGIN OF TY_DATA,
CHK TYPE C,
PARA1 TYPE CHAR10,
PARA2 TYPE CHAR10,
END OF TY_DATA.

DATA:
IT_DATA TYPE TABLE OF TY_DATA,
IW_DATA TYPE TY_DATA,
IT_EXCLUDE TYPE UI_FUNCTIONS,
IW_EXCLUDE TYPE UI_FUNC,
IW_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
IW_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA:
W_REPID TYPE SY-REPID VALUE SY-REPID,
it_ucomm TYPE TABLE OF sy-ucomm,
LIT_EXTAB TYPE SLIS_T_EXTAB.


PARAMETERS P TYPE C.


INITIALIZATION.

MAC_FIELD : '1' 'CHK' 'sel' '1' 'X' 'X',

'2' 'PARA1' 'para1' '10' SPACE SPACE,

'3' 'PARA2' 'para2' '10' SPACE SPACE.

IW_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

AT SELECTION-SCREEN OUTPUT.

* IW_LAYOUT-EDIT = 'X'.

*CUSTOMISING THE TOOLBARS OF THE SELECTION SCREEN
*WITH F8 BUTTON DISABLED
APPEND : 'PRIN' TO it_ucomm,
'SPOS' TO it_ucomm,
'ONLI' TO it_ucomm.

CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = sy-pfkey
TABLES
p_exclude = it_ucomm.

START-OF-SELECTION.

DO 10 TIMES.

CLEAR IW_DATA.

IW_DATA-PARA1 = SY-INDEX.

IW_DATA-PARA2 = SY-INDEX * SY-INDEX.

APPEND IW_DATA TO IT_DATA.

ENDDO.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IS_LAYOUT = IW_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
I_CALLBACK_PROGRAM = W_REPID
I_CALLBACK_PF_STATUS_SET = 'F_STATUS'
I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND'
TABLES
T_OUTTAB = IT_DATA
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*&---------------------------------------------------------------------*
*& Form F_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM F_STATUS USING LIT_EXTAB TYPE SLIS_T_EXTAB.

SET PF-STATUS 'STU_100' EXCLUDING '&AVE'.

ENDFORM. " F_STATUS

*&---------------------------------------------------------------------*
*& Form FRM_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --&gtUCOMM text
* --&gtSELFIELD text
*----------------------------------------------------------------------*
FORM FRM_USER_COMMAND USING UCOMM LIKE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.

DATA:
TH_DATA LIKE LINE OF IT_DATA,
LW_GRID TYPE REF TO CL_GUI_ALV_GRID,
LW_VALID(1) TYPE C.

CASE UCOMM.

WHEN 'SELECT'.
SELFIELD-REFRESH = 'X'.

TH_DATA-CHK = 'X'.

MODIFY IT_DATA FROM TH_DATA

TRANSPORTING CHK

WHERE CHK = SPACE.

WHEN 'DESELECT'.

SELFIELD-REFRESH = 'X'.

TH_DATA-CHK = ' '.

MODIFY IT_DATA FROM TH_DATA

TRANSPORTING CHK

WHERE CHK = 'X'.

ENDCASE.

ENDFORM. " FRM_USER_COMMAND

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8356764/viewspace-1023156/,如需轉載,請註明出處,否則將追究法律責任。

相關文章