06-29-2006 4:31 PM
Hi,
I have prepared a ALV List report.
I have made use of <b>REUSE_ALV_LIST_DISPLAY</b>.
I have put a <b>check box</b> in the output at the begining of every Record.
Now what i want is to put a <b>SELECT ALL</b> & <b>DESELECT ALL Buttons</b> on Application Tool Bar & If i hit on them i should be able to <b>SELECT & DE-SELECT</b> all the <b>Records/Check Boxes</b> in the output.
Can anybody tell me the logic for both <b><b>SELECT & DE-SELECT</b></b> functionalities.
Thanks in advance.
Thanks & Regards,
Prasad.
<b></b>
06-29-2006 5:21 PM
Hi prasad,
<b>RS_SELFIELD-refresh = 'X'.</b>
place this in the last of user_command form.
Regards
vijay
06-29-2006 4:49 PM
Hi,
report ztest_alv_check message-id zz .
type-pools: slis.
data: x_fieldcat type slis_fieldcat_alv,
it_fieldcat type slis_t_fieldcat_alv,
l_layout type slis_layout_alv,
x_events type slis_alv_event,
it_events type slis_t_event.
data: begin of itab occurs 0,
vbeln like vbak-vbeln,
posnr like vbap-posnr,
chk(1),
end of itab.
select vbeln
posnr
from vbap
up to 20 rows
into table itab.
x_fieldcat-fieldname = 'CHK'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = 1.
x_fieldcat-input = 'X'.
x_fieldcat-edit = 'X'.
x_fieldcat-checkbox = 'X'.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
x_fieldcat-fieldname = 'VBELN'.
x_fieldcat-seltext_l = 'VBELN'.
x_fieldcat-hotspot = 'X'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = 2.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
x_fieldcat-fieldname = 'POSNR'.
x_fieldcat-seltext_l = 'POSNR'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = 3.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
call function 'REUSE_ALV_LIST_DISPLAY'
exporting
i_callback_program = sy-repid
is_layout = l_layout
<b> i_callback_pf_status_set = 'STATUS'
i_callback_user_command = 'USER_COMMAND'</b>
it_fieldcat = it_fieldcat
tables
t_outtab = itab
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 status using p_extab type slis_t_extab.
*- Pf status
<b> set pf-status 'STATUS'.</b>
endform. " STATUS
form user_command using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
case r_ucomm.
when 'BACK' or 'CANC' or 'EXIT'.
leave to screen 0.
<b> when 'SALL'.
loop at itab.
itab-check = 'X'.
modify itab index sy-tabix.
endloop.
when 'DALL'.
loop at itab.
itab-check = ' '.
modify itab index sy-tabix.
endloop.</b>
endcase.
endform. "USER_COMMAND
First of all set the pf-status have two buttons for select all and deselect all. using the pf-status option, handle them using user_command form.
Regards
vijay
06-29-2006 4:54 PM
Hi,
I have done the same but records are not getting selected.
Here is the code & declaration:
DATA: BEGIN OF i_display_data OCCURS 0,
selected TYPE c,
kschl LIKE nast-kschl,
vbeln LIKE vbak-vbeln,
posnr LIKE vbap-posnr,
END OF i_display_data.
LOOP AT i_display_data.
i_display_data-selected = c_x.
MODIFY i_display_data TRANSPORTING selected.
CLEAR i_display_data.
ENDLOOP.
But in output it is still showing nothing selected.
Can anybody tell me the reason!
Thanks,
Prasad.
06-29-2006 5:08 PM
Hi prasad,
i am able to use selectall, deselect all.
and also tell me where you are placing the code. and show me your total coding.did you check my code. don't forget to create your pf-status ,and create two buttons for select all and deslect all.
Regards
vijay
06-29-2006 5:16 PM
Hi,
<b>Call to F.M is as below:</b>
FORM f_display_alv_report .
DATA: l_valid,
l_params LIKE pri_params.
SET PF-STATUS c_alv.
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
mode = 'BATCH'
report = v_repid
no_dialog = c_x
IMPORTING
out_parameters = l_params
valid = l_valid.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = v_repid
i_callback_user_command = c_command
i_callback_pf_status_set = c_alv
is_layout = i_gd_layout
it_fieldcat = i_fieldcatalog[]
it_events = i_events
is_print = i_params
i_save = c_x
TABLES
t_outtab = i_display_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.
ENDFORM. " f_display_alv_report
<b>Then User Command Call is as below:</b>
FORM f_user_command USING p_ucomm LIKE sy-ucomm
p_selfield TYPE slis_selfield.
CLEAR: v_field, v_index, v_line, v_value.
IF p_ucomm EQ c_select.
LOOP AT i_display_data.
i_display_data-selected = c_x.
MODIFY i_display_data TRANSPORTING selected.
CLEAR i_display_data.
ENDLOOP.
ELSEIF p_ucomm EQ c_deselect.
LOOP AT i_display_data.
i_display_data-selected = space.
MODIFY i_display_data TRANSPORTING selected.
CLEAR i_display_data.
ENDLOOP.
ENDIF.
Get cursor field, value and Line
GET CURSOR FIELD v_field
VALUE v_value
LINE v_line.
v_line = v_line - 3.
CLEAR: i_display_data,
i_mem,
v_mem_kschl,
v_mem_printer,
v_ucomm,
v_mem_print.
REFRESH: i_mem.
LOOP AT i_display_data
WHERE selected EQ c_x.
i_mem-v_mem_vbeln = i_display_data-vbeln.
i_mem-v_mem_posnr = i_display_data-posnr.
APPEND i_mem.
CLEAR i_mem.
ENDLOOP.
READ TABLE i_display_data INDEX v_line.
IF sy-subrc EQ 0.
v_mem_kschl = p_kschl.
v_mem_printer = p_print.
v_ucomm = sy-ucomm.
EXPORT i_mem TO MEMORY ID 'MEM'.
EXPORT v_mem_kschl TO MEMORY ID 'KSCHL'.
EXPORT v_mem_printer TO MEMORY ID 'PRINTE'.
EXPORT v_ucomm TO MEMORY ID 'UCOM'.
ENDIF.
CASE p_ucomm.
To Print SAP Script Output
WHEN c_print.
v_mem_print = c_x.
EXPORT v_mem_print TO MEMORY ID 'PRINT'.
v_return_code = c_999.
v_screen = c_x.
IF ( v_field EQ c_mark OR
v_field EQ c_selected OR
v_field EQ c_vbeln OR
v_field EQ c_posnr OR
v_field EQ c_kschl ) AND
NOT v_value IS INITIAL.
PERFORM f_entry IN PROGRAM zasdf0012_sales_order
USING v_return_code v_screen.
ENDIF.
Display SAP Script Output
WHEN c_pripreview.
v_return_code = c_999.
v_screen = c_x.
IF ( v_field EQ c_mark OR
v_field EQ c_selected OR
v_field EQ c_vbeln OR
v_field EQ c_posnr OR
v_field EQ c_kschl ) AND
NOT v_value IS INITIAL.
PERFORM f_entry IN PROGRAM zasdf0012_sales_order
USING v_return_code v_screen.
ENDIF.
WHEN c_back.
BACK.
WHEN c_exit.
CALL METHOD cl_gui_cfw=>flush.
LEAVE TO SCREEN 0.
WHEN c_cancel.
CALL METHOD cl_gui_cfw=>flush.
LEAVE TO SCREEN 0.
WHEN c_others.
ENDCASE.
ENDFORM. " F_USER_COMMAND
<b>The Field Catalog Build up is :</b>
i_fieldcatalog-fieldname = 'KSCHL'.
i_fieldcatalog-tabname = 'I_DISPLAY_DATA'.
i_fieldcatalog-seltext_m = 'Output Type'.
i_fieldcatalog-col_pos = 1.
i_fieldcatalog-outputlen = 11.
APPEND i_fieldcatalog.
CLEAR i_fieldcatalog.
i_fieldcatalog-fieldname = 'VBELN'.
i_fieldcatalog-tabname = 'I_DISPLAY_DATA'.
i_fieldcatalog-seltext_m = 'Sales Document No'.
i_fieldcatalog-col_pos = 2.
i_fieldcatalog-outputlen = 17.
APPEND i_fieldcatalog.
CLEAR i_fieldcatalog.
i_fieldcatalog-fieldname = 'POSNR'.
i_fieldcatalog-tabname = 'I_DISPLAY_DATA'.
i_fieldcatalog-seltext_m = 'Sales Item No'.
i_fieldcatalog-col_pos = 3.
i_fieldcatalog-outputlen = 14.
APPEND i_fieldcatalog.
CLEAR i_fieldcatalog.
<b>Events Build Up:</b>
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = i_events.
READ TABLE i_events
INTO wa_events
WITH KEY name = slis_ev_top_of_page.
IF sy-subrc = 0.
MOVE c_top_of_page TO wa_events-form.
MODIFY i_events FROM wa_events INDEX sy-tabix.
ENDIF.
READ TABLE i_events WITH KEY name = c_user_command
INTO wa_events.
IF sy-subrc = 0.
MOVE c_command TO wa_events-form.
MODIFY i_events FROM wa_events INDEX sy-tabix.
ENDIF.
<b>Layout Buil up is as:</b>
i_gd_layout-no_input = space.
i_gd_layout-colwidth_optimize = c_x.
i_gd_layout-totals_text = 'Totals'(201). "#EC *
i_gd_layout-box_fieldname = 'SELECTED'.
i_gd_layout-box_tabname = 'I_DISPLAY_DATA'.
i_gd_layout-edit = c_x.
Here one thing we need to take care id i am combining Check Box with & another field Output Type [KSCHL] like in Std. TCode VL71.
Can anybody solve this issue!
Thanks for reply.
Thanks & Regards,
Prasad.
06-29-2006 5:18 PM
REPORT ZTEST_ALV_CHECK MESSAGE-ID ZZ .
TYPE-POOLS: SLIS.
DATA: X_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
L_LAYOUT TYPE SLIS_LAYOUT_ALV,
X_EVENTS TYPE SLIS_ALV_EVENT,
IT_EVENTS TYPE SLIS_T_EVENT.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
CHK(1),
END OF ITAB.
SELECT VBELN
POSNR
FROM VBAP
UP TO 20 ROWS
INTO TABLE ITAB.
LOOP AT ITAB.
ITAB-CHK = 'X'.
MODIFY ITAB INDEX SY-TABIX.
ENDLOOP.
X_FIELDCAT-FIELDNAME = 'CHK'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 1.
X_FIELDCAT-INPUT = 'X'.
X_FIELDCAT-EDIT = 'X'.
X_FIELDCAT-CHECKBOX = 'X'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-SELTEXT_L = 'VBELN'.
X_FIELDCAT-HOTSPOT = 'X'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 2.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-SELTEXT_L = 'POSNR'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 3.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = L_LAYOUT
I_CALLBACK_PF_STATUS_SET = 'STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT = IT_FIELDCAT
TABLES
T_OUTTAB = ITAB
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 status
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_EXTAB text
*---------------------------------------------------------------------*
FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.
*- Pf status
SET PF-STATUS 'STATUS'.
ENDFORM. " STATUS
*&--------------------------------------------------------------------*
*& Form user_command
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELDtext
*---------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN 'BACK' OR 'CANC' OR 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'SALL'.
LOOP AT ITAB.
ITAB-CHK = 'X'.
MODIFY ITAB INDEX SY-TABIX.
ENDLOOP.
WHEN 'DALL'.
LOOP AT ITAB.
ITAB-CHK = ' '.
MODIFY ITAB INDEX SY-TABIX.
ENDLOOP.
ENDCASE.
<b>RS_SELFIELD-refresh = 'X'.</b>
ENDFORM. "USER_COMMAND
you are missing that....
Regards
vijay
06-29-2006 5:18 PM
Hi Prasad,
u r modifying the internal table it self while looping at ur internal table not the fieldcatalog.
see, u have to modify the fieldcatalog and set the folowing..
x_fieldcat-fieldname = 'SELECTED'.
x_fieldcat-tabname = 'I_DISPLAY_DATA'.
x_fieldcat-col_pos = 1.
x_fieldcat-input = 'X'.
x_fieldcat-edit = 'X'.
x_fieldcat-checkbox = 'X'.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
REGARDS.
KIRAN B
06-29-2006 5:21 PM
Hi prasad,
<b>RS_SELFIELD-refresh = 'X'.</b>
place this in the last of user_command form.
Regards
vijay
06-29-2006 5:29 PM
Hi Vijay,
That's Great Reply.
Thank you very much for your help.
Both the Select & De-Select functionalities are working perfectly.
once again thanks a lot.
Thanks & Regards,
Prasad.