Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Selecting Multiple rows in an ALV

0 Kudos

Hi Experts,

Using 'REUSE_ALV_GRID_DISPLAY' is it possible to select multiple rows, WITHOUT using CTRL OR SHIFT keys ?

thanks in advance.

5 REPLIES 5

former_member188685
Active Contributor
0 Kudos

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.

0 Kudos

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

Former Member
0 Kudos

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.

0 Kudos

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

0 Kudos

I dont think thats possible, only one option available is Select all and de-select all with out cntrl and shift.

santhosh