09-29-2008 9:24 AM
Hi Experts,
Using 'REUSE_ALV_GRID_DISPLAY' is it possible to select multiple rows, WITHOUT using CTRL OR SHIFT keys ?
thanks in advance.
09-29-2008 9:33 AM
Incase of the function module if you use BOX_FIELDNAME
Have one more extra field in your table of type c, and specify that in the layout.
layout-box_fieldname = 'SEL'
pass the layout to ALV function.
you can get the Functions like Selelct all and Deselect all Options you can use those two functions.
09-29-2008 9:39 AM
I am using the same single charecter field concept. But i need to use control or shift keys to select multiple rows. Kindly let me know if this is possible..
Thanks
09-29-2008 11:00 AM
I have done an application for multiple selection in ALV using check box concept. Please find that code below.
&----
*& Report ZATL_DELIVERY
*&
&----
*&
*&
&----
REPORT zatl_delivery.
INCLUDE zatl_delivery_declarations.
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln OBLIGATORY.
SELECTION-SCREEN END OF BLOCK a.
INITIALIZATION.
AT SELECTION-SCREEN.
START-OF-SELECTION .
SET PF-STATUS 'ABC'.
SET PF-STATUS 'BCD'.
get the sales order numbers thru given
selection-screen parameters
SELECT vbeln FROM vbak INTO TABLE it_data
WHERE vbeln IN s_vbeln.
AND ERDAT = P_DATE.
IF NOT it_data[] IS INITIAL.
SELECT vbeln vstel FROM vbap INTO TABLE it_vstel
FOR ALL ENTRIES IN it_data
WHERE vbeln = it_data-vbeln.
ENDIF.
LOOP AT it_data INTO wa_data.
CALL FUNCTION 'ZBAPI_GET_MATERIAL_PLANT_DTL'
EXPORTING
v_vbeln = wa_data-vbeln
TABLES
it_bapi = it_result.
LOOP AT it_result INTO wa_result.
READ TABLE it_vstel INTO wa_vstel WITH KEY
vbeln = wa_result-vbeln.
wa_final-vbeln = wa_result-vbeln. " SALES ORDER NO
wa_final-matnr = wa_result-matnr.
wa_final-vstel = wa_vstel-vstel.
wa_final-werks = wa_result-werks.
wa_final-labst = wa_result-kwmeng.
APPEND wa_final TO it_final.
CLEAR wa_result.
ENDLOOP.
REFRESH it_result.
CLEAR wa_data.
ENDLOOP.
PERFORM build_fldcat.
PERFORM disp_output.
*SET PF-STATUS 'ABC'.
&----
*& Form ABC
&----
text
----
-->EXTAB text
----
FORM abc USING extab TYPE slis_t_extab.
SET PF-STATUS 'ABC'. " excluding extab.
ENDFORM. "ABC
read
&----
*& Form build_fldcat
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_fldcat .
wa_fldcat-col_pos = '1'.
wa_fldcat-fieldname = 'MARK'.
wa_fldcat-checkbox = 'X'.
wa_fldcat-edit = 'X'.
wa_fldcat-seltext_m = 'MARK'.
APPEND wa_fldcat TO i_fldcat.
CLEAR wa_fldcat.
wa_fldcat-col_pos = '2'.
wa_fldcat-fieldname = 'VBELN'.
wa_fldcat-tabname = 'IT_FINAL'.
wa_fldcat-seltext_m = 'SALES ORD NO'.
APPEND wa_fldcat TO i_fldcat.
wa_fldcat-col_pos = '3'.
wa_fldcat-fieldname = 'MATNR'.
wa_fldcat-tabname = 'IT_FINAL'.
wa_fldcat-seltext_m = 'MAT NO'.
APPEND wa_fldcat TO i_fldcat.
wa_fldcat-col_pos = '4'.
wa_fldcat-fieldname = 'WERKS'.
wa_fldcat-tabname = 'IT_FINAL'.
wa_fldcat-seltext_m = 'PLANT'.
APPEND wa_fldcat TO i_fldcat.
wa_fldcat-col_pos = '5'.
wa_fldcat-fieldname = 'LABST'.
wa_fldcat-tabname = 'IT_FINAL'.
wa_fldcat-seltext_m = 'QNTY'.
APPEND wa_fldcat TO i_fldcat.
ENDFORM. " build_fldcat
&----
*& Form disp_output
&----
text
----
--> p1 text
<-- p2 text
----
FORM disp_output .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'ABC'
it_fieldcat = i_fldcat
i_callback_user_command = 'CHECKED'
TABLES
t_outtab = it_final
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. " disp_output
&----
*& Form CHECKED
&----
text
----
-->R_UCOMM text
-->RS_SELFIELD text
----
FORM checked USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA: gd_repid LIKE sy-repid, "Exists
ref_grid TYPE REF TO cl_gui_alv_grid.
IF ref_grid IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref_grid.
ENDIF.
IF NOT ref_grid IS INITIAL.
CALL METHOD ref_grid->check_changed_data .
ENDIF.
CASE r_ucomm.
WHEN 'DELIVERY'.
IF rs_selfield-fieldname = 'MARK'.
DATA : date_external(10) TYPE c.
DATA: temp_date TYPE sy-datum.
temp_date = sy-datum.
temp_date = temp_date + 1.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = sy-datum
IMPORTING
date_external = date_external
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
LOOP AT it_final INTO wa_final WHERE mark EQ 'X'.
PERFORM bdc_dynpro USING 'SAPMV50A' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LV50C-VBELN'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'LIKP-VSTEL'
wa_final-vstel. " 'HLL'.
PERFORM bdc_field USING 'LV50C-DATBI'
date_external. "
PERFORM bdc_field USING 'LV50C-VBELN'
wa_final-vbeln. " '34'.
PERFORM bdc_dynpro USING 'SAPMV50A' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LIPS-MATNR(02)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
PERFORM bdc_field USING 'LIKP-BLDAT'
date_external. " '19.09.2008'.
CLEAR date_external.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = temp_date
IMPORTING
date_external = date_external
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
PERFORM bdc_field USING 'LIKP-WADAT'
date_external ." '19.09.2008'.
CLEAR date_external.
PERFORM bdc_field USING 'LIKP-BTGEW'
wa_final-labst. " -'12'.
PERFORM bdc_field USING 'LIKP-GEWEI'
'wa_likp-GEWEI'.
PERFORM bdc_transaction USING 'VL01'.
PERFORM msg_get TABLES it_msg.
CLEAR wa_final.
REFRESH it_msg.
ENDLOOP.
PERFORM disp_msg.
ENDIF.
ENDCASE.
ENDFORM. "CHECKED
&----
*& Form BDC_DYNPRO
&----
text
----
-->P_0443 text
-->P_0444 text
----
FORM bdc_dynpro USING value(p_0443)
value(p_0444).
wa_bdc-program = p_0443.
wa_bdc-dynpro = p_0444.
wa_bdc-dynbegin = 'X'.
APPEND wa_bdc TO it_bdc.
CLEAR wa_bdc.
ENDFORM. " BDC_DYNPRO
&----
*& Form BDC_FIELD
&----
text
----
-->P_0448 text
-->P_0449 text
----
FORM bdc_field USING value(p_0448)
value(p_0449).
wa_bdc-fnam = p_0448.
wa_bdc-fval = p_0449.
APPEND wa_bdc TO it_bdc.
CLEAR wa_bdc.
ENDFORM. " BDC_FIELD
&----
*& Form BDC_TRANSACTION
&----
text
----
-->P_0508 text
----
FORM bdc_transaction USING value(p_0508).
CALL TRANSACTION p_0508 USING it_bdc
MODE 'N'
UPDATE 'S'
MESSAGES INTO it_msg.
ENDFORM. " BDC_TRANSACTION
&----
*& Form msg_get
&----
text
----
-->P_IT_MSG text
----
FORM msg_get TABLES p_it_msg STRUCTURE bdcmsgcoll.
LOOP AT p_it_msg INTO wa_msg.
v_msgid = wa_msg-msgid.
v_msgnr = wa_msg-msgnr.
v_msgv1 = wa_msg-msgv1.
v_msgv2 = wa_msg-msgv2.
v_msgv3 = wa_msg-msgv3.
v_msgv4 = wa_msg-msgv4.
IF wa_msg-msgtyp = 'E' OR
wa_msg-msgtyp = 'A' OR
wa_msg-msgtyp = 'X'.
PERFORM build_msg USING v_msgid
v_msgnr
v_msgv1
v_msgv2
v_msgv3
v_msgv4
CHANGING msg_text_e.
Build the text for successful records getting created
ELSEIF wa_msg-msgtyp = 'S' OR
wa_msg-msgtyp = 'W' OR
wa_msg-msgtyp = 'I'.
PERFORM build_msg USING v_msgid
v_msgnr
v_msgv1
v_msgv2
v_msgv3
v_msgv4
CHANGING msg_text_s.
ENDIF.
ENDLOOP.
ENDFORM. " msg_get
&----
*& Form build_msg
&----
text
----
-->P_V_MSGID text
-->P_V_MSGNR text
-->P_V_MSGV1 text
-->P_V_MSGV2 text
-->P_V_MSGV3 text
-->P_V_MSGV4 text
<--P_MSG_TEXT_E text
----
FORM build_msg USING p_v_msgid
p_v_msgnr
p_v_msgv1
p_v_msgv2
p_v_msgv3
p_v_msgv4
CHANGING p_msg_text_s.
CALL FUNCTION 'TB_MESSAGE_BUILD_TEXT'
EXPORTING
langu = sy-langu
msgid = p_v_msgid
msgno = p_v_msgnr " wa_msgcoll-msgnr
msgv1 = p_v_msgv1
msgv2 = p_v_msgv2
msgv3 = p_v_msgv3
msgv4 = p_v_msgv4
IMPORTING
text = p_msg_text_s.
wa_mess-v_msg = p_msg_text_s .
APPEND wa_mess TO i_mess.
CLEAR wa_mess.
ENDFORM. " build_msg
&----
*& Form disp_msg
&----
text
----
--> p1 text
<-- p2 text
----
FORM disp_msg .
PERFORM build_fieldcat_secandary.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'BCD'
it_fieldcat = i_fldcat1
i_callback_user_command = 'SECANDARY'
TABLES
t_outtab = i_mess
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. " disp_msg
&----
*& Form build_fieldcat_secandary
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_fieldcat_secandary .
wa_fldcat1-col_pos = '1'.
wa_fldcat1-fieldname = 'V_MSG'.
wa_fldcat1-tabname = 'I_MESS'.
wa_fldcat1-seltext_m = 'MESSAGE'.
APPEND wa_fldcat1 TO i_fldcat1.
ENDFORM. " build_fieldcat_secandary
&----
*& Form SECANDARY
&----
text
----
-->R_UCOMM text
----
FORM secandary USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN 'BCK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDFORM. "SECANDARY
&----
*& Form ABC
&----
text
----
-->EXTAB text
----
FORM bcd USING extab TYPE slis_t_extab.
SET PF-STATUS 'BCD'. " excluding extab.
ENDFORM. "ABC
Hope this will help you,
Murthy.
09-29-2008 12:06 PM
Hi,
I havent got an Helpful info from the code u have pasted..
What I am looking is for selecting the Multiple rows in an ALV with out using CTRL or SHIFT Keys.
Regards,
Sreekanth.G
09-29-2008 12:08 PM
I dont think thats possible, only one option available is Select all and de-select all with out cntrl and shift.
santhosh