‎2009 Oct 13 10:53 AM
Hi Folks,
I am displaying some data in ALV Grid along wiht a check box and also having a z pf-status with select and deselect all buttons.
When the user selects the select all button then the check box in the alv grid should be marked X and viceversa for deselect.
CASE r_ucomm.
WHEN '&ALL'.
loop at it_final.
it_final-chk = 'X'.
modify it_final index sy-tabix transporting chk.
endloop.
WHEN '&SAL'.
loop at it_final where chk = 'X'.
it_final-chk = ' '.
modify it_final index sy-tabix transporting chk.
endloop.
WHEN '&PROC'.
loop at it_final where chk = 'X'.
peform payments.
endloop.
ENDCASE.
I had checked the select/deselect functionality available for standard table in SE11.Do we have any other way to achieve this.
Thanks,
K.Kiran.
‎2009 Oct 13 11:01 AM
Hi Kiran,
Try this program. It works
Thanks
Venkat.O
REPORT ztest_notepad.
DATA: BEGIN OF it_t100 OCCURS 0,
checkbox LIKE abgr-kzart,
arbgb LIKE t100-arbgb,
msgnr LIKE t100-msgnr,
text LIKE t100-text,
END OF it_t100.
DATA:program TYPE sy-repid VALUE sy-repid.
TYPE-POOLS slis.
DATA:it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat LIKE LINE OF it_fieldcat.
DEFINE fieldcatalog.
wa_fieldcat-fieldname = &1.
wa_fieldcat-tabname = 'IT_T100'.
wa_fieldcat-checkbox = &2.
wa_fieldcat-edit = &3.
wa_fieldcat-seltext_m = &4.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
END-OF-DEFINITION.
START-OF-SELECTION.
SELECT * FROM t100 INTO TABLE it_t100 UP TO 100 ROWS.
fieldcatalog: 'CHECKBOX' 'X' 'X' 'CHECKBOX',
'ARBGB' '' '' 'ARBGB' ,
'MSGNR' '' '' 'MSGNR' ,
'TEXT' '' '' 'TEXT' .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = program
i_callback_pf_status_set = 'PF_STATUS_SET'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = it_fieldcat
TABLES
t_outtab = it_t100.
*&---------------------------------------------------------------------*
*& Form PF_STATUS_SET
*&---------------------------------------------------------------------*
FORM pf_status_set USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STATUS' EXCLUDING rt_extab.
ENDFORM. "PF_STATUS_SET
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
FORM user_command USING ucomm TYPE sy-ucomm selfield TYPE slis_selfield.
IF ucomm = 'SEL_ALL'.
LOOP AT it_t100.
it_t100-checkbox = 'X'.
MODIFY it_t100 INDEX sy-tabix.
ENDLOOP.
selfield-refresh = 'X'.
ELSEIF ucomm = 'DESEL_ALL'.
LOOP AT it_t100.
it_t100-checkbox = space.
MODIFY it_t100 INDEX sy-tabix.
ENDLOOP.
selfield-refresh = 'X'.
ENDIF.
ENDFORM. "user_command
‎2009 Oct 13 11:01 AM
Hi Kiran,
Try this program. It works
Thanks
Venkat.O
REPORT ztest_notepad.
DATA: BEGIN OF it_t100 OCCURS 0,
checkbox LIKE abgr-kzart,
arbgb LIKE t100-arbgb,
msgnr LIKE t100-msgnr,
text LIKE t100-text,
END OF it_t100.
DATA:program TYPE sy-repid VALUE sy-repid.
TYPE-POOLS slis.
DATA:it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat LIKE LINE OF it_fieldcat.
DEFINE fieldcatalog.
wa_fieldcat-fieldname = &1.
wa_fieldcat-tabname = 'IT_T100'.
wa_fieldcat-checkbox = &2.
wa_fieldcat-edit = &3.
wa_fieldcat-seltext_m = &4.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
END-OF-DEFINITION.
START-OF-SELECTION.
SELECT * FROM t100 INTO TABLE it_t100 UP TO 100 ROWS.
fieldcatalog: 'CHECKBOX' 'X' 'X' 'CHECKBOX',
'ARBGB' '' '' 'ARBGB' ,
'MSGNR' '' '' 'MSGNR' ,
'TEXT' '' '' 'TEXT' .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = program
i_callback_pf_status_set = 'PF_STATUS_SET'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = it_fieldcat
TABLES
t_outtab = it_t100.
*&---------------------------------------------------------------------*
*& Form PF_STATUS_SET
*&---------------------------------------------------------------------*
FORM pf_status_set USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STATUS' EXCLUDING rt_extab.
ENDFORM. "PF_STATUS_SET
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
FORM user_command USING ucomm TYPE sy-ucomm selfield TYPE slis_selfield.
IF ucomm = 'SEL_ALL'.
LOOP AT it_t100.
it_t100-checkbox = 'X'.
MODIFY it_t100 INDEX sy-tabix.
ENDLOOP.
selfield-refresh = 'X'.
ELSEIF ucomm = 'DESEL_ALL'.
LOOP AT it_t100.
it_t100-checkbox = space.
MODIFY it_t100 INDEX sy-tabix.
ENDLOOP.
selfield-refresh = 'X'.
ENDIF.
ENDFORM. "user_command
‎2009 Oct 13 11:09 AM
Venkat,
This is what even I followed but in vain.How does that works ?
sy-ucomm of select and deselect is &ALL and &SAL.Can you please let how does this code works in your case.
K.Kiran.
‎2009 Oct 13 11:45 AM
‎2009 Oct 13 11:59 AM
Keshu,
Yeah.When I click on select/deselect buttons it is going to standard code and not to the processing logic which I had written.
K.Kiran.
‎2009 Oct 13 12:19 PM
getting into std code !!!
Just try changing the function codes to ALL,SAL,PROC.
is it a module pool?
‎2009 Oct 13 11:05 AM
check this link
link:[http://wiki.sdn.sap.com/wiki/display/Snippets/ALV%2bGrid%2bDisplay%2bwith%2bcheckbox%2bto%2bprocess%2bselected%2brecords%2bat%2bruntime]
check this sample program.
You can also use the check option provided in fieldcatalouge or this way
TYPE-POOLS:slis.
TYPE-POOLS:icon.
DATA:BEGIN OF it_mara OCCURS 0,
icon TYPE char4,
matnr TYPE mara-matnr,
END OF it_mara.
DATA:wa_fieldcat TYPE slis_fieldcat_alv.
DATA:it_fieldcat TYPE TABLE OF slis_fieldcat_alv.
SELECT matnr FROM mara
INTO CORRESPONDING FIELDS OF TABLE
it_mara UP TO 10 ROWS.
LOOP AT it_mara.
it_mara-icon = '@T9@'.
MODIFY it_mara INDEX sy-tabix TRANSPORTING icon.
ENDLOOP.
PERFORM display_grid.
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN 'SALL'.
LOOP AT it_mara.
it_mara-icon = '@SP@'.
MODIFY it_mara INDEX sy-tabix TRANSPORTING icon.
ENDLOOP.
CLEAR wa_fieldcat.
REFRESH it_fieldcat.
PERFORM display_grid.
WHEN 'DALL'.
LOOP AT it_mara.
it_mara-icon = '@T9@'.
MODIFY it_mara INDEX sy-tabix TRANSPORTING icon.
ENDLOOP.
CLEAR wa_fieldcat.
REFRESH it_fieldcat.
PERFORM display_grid.
WHEN OTHERS. "clicked in particular line
READ TABLE it_mara INDEX rs_selfield-tabindex.
IF it_mara-icon = '@T9@'.
it_mara-icon = '@SP@'.
ELSE.
it_mara-icon = '@T9@'.
ENDIF.
MODIFY it_mara INDEX rs_selfield-tabindex TRANSPORTING icon.
CLEAR wa_fieldcat.
REFRESH it_fieldcat.
PERFORM display_grid.
ENDCASE.
ENDFORM.
FORM set_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'SET_STATUS'.
ENDFORM.
FORM display_grid .
wa_fieldcat-fieldname = 'ICON'.
wa_fieldcat-hotspot = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_m = 'Material'.
APPEND wa_fieldcat TO it_fieldcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'SET_STATUS'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = it_fieldcat[]
TABLES
t_outtab = it_mara[].
ENDFORM.
‎2009 Oct 13 11:05 AM
Hi Kiran,
Ru just looking for an alternate solution or is your solution not working cause the code seems fine for the solution
Regards
Sajimon Chandran`
‎2009 Oct 13 12:06 PM
Hi,
Check the below piece of code
* When all entries are selected
WHEN '&SALL'.
READ TABLE git_final INTO gwa_final INDEX sy-index.
IF gwa_final-check = ' '.
gwa_final-check = gc_x.
MODIFY git_final FROM gwa_final TRANSPORTING check WHERE check = ' '.
CLEAR gwa_final -check.
rs_selfield-refresh = gc_x.
ENDIF.
* When all entries are deselected
WHEN '&DALL'.
gwa_final -check = ' '.
MODIFY git_final FROM gwa_final TRANSPORTING check WHERE check = gc_x.
CLEAR gwa_final -check.
rs_selfield-refresh = gc_x.
Regards,
Nagaraj