Application Development and Automation 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: 
Read only

Application tool bar button(Select & Deselect All)in Interactive ALV grid

Former Member
0 Likes
1,149

Hi All,

I am displaying some filelds in my report using interactive ALV. The first field in the output is a Checkbox.

In the Application tool bar there are two buttons Select All (F5) & Deselect All(F6). My requirement is when I click on Select All

all checkboxes should be checked and when I click on DeSelect All all checkboxes should be unchecked.

Any body please tell me how to do this?

Thanks,

Neethu.

Hi All,

I am displaying some filelds in my report using interactive ALV. The first field in the output is a Checkbox.

In the Application tool bar there are two buttons Select All (F5) & Deselect All(F6). My requirement is when I click on Select All

all checkboxes should be checked and when I click on DeSelect All all checkboxes should be unchecked.

Any body please tell me how to do this?

Thanks,

Neethu.

5 REPLIES 5
Read only

sravya_ch
Participant
0 Likes
1,053

Hi Neethu ,


REPORT ZALV_LIST4.

TABLES:
SPFLI.

TYPE-POOLS:
SLIS.

DATA:
T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
FS_FIELDCAT LIKE LINE OF T_FIELDCAT,
FS_LAYOUT TYPE SLIS_LAYOUT_ALV ,
W_COLOR(3) ,
W_ROW TYPE I,
W_FIELDNAME(20),
W_PROG TYPE SY-REPID.

DATA:
BEGIN OF T_SPFLI OCCURS 0,
COLOR(3),
CHECKBOX ,
CELL TYPE SLIS_T_SPECIALCOL_ALV,
CARRID TYPE SPFLI-CARRID,
CONNID TYPE SPFLI-CONNID,
CITYFROM TYPE SPFLI-CITYFROM,
CITYTO TYPE SPFLI-CITYTO,
DISTANCE TYPE SPFLI-DISTANCE,
END OF T_SPFLI.

DATA:
FS_CELL LIKE LINE OF T_SPFLI-CELL.

SELECT *
FROM SPFLI
INTO CORRESPONDING FIELDS OF TABLE T_SPFLI.

FS_FIELDCAT-FIELDNAME = 'CARRID'.
FS_FIELDCAT-REF_TABNAME = 'SPFLI'.
FS_FIELDCAT-COL_POS = 1.
FS_FIELDCAT-KEY = 'X'.
FS_FIELDCAT-HOTSPOT = 'X'.
APPEND FS_FIELDCAT TO T_FIELDCAT.

CLEAR FS_FIELDCAT .
FS_FIELDCAT-FIELDNAME = 'CONNID'.
FS_FIELDCAT-REF_TABNAME = 'SPFLI'.
FS_FIELDCAT-COL_POS = 2.
FS_FIELDCAT-KEY = 'X'.
FS_FIELDCAT-HOTSPOT = 'X'.
APPEND FS_FIELDCAT TO T_FIELDCAT.

CLEAR FS_FIELDCAT .
FS_FIELDCAT-FIELDNAME = 'DISTANCE'.
FS_FIELDCAT-REF_TABNAME = 'SPFLI'.
*FS_FIELDCAT-INPUT = 'X'.
FS_FIELDCAT-COL_POS = 3.
FS_FIELDCAT-KEY = ' '.
FS_FIELDCAT-EDIT = 'X'.
APPEND FS_FIELDCAT TO T_FIELDCAT.

CLEAR FS_FIELDCAT.
FS_FIELDCAT-FIELDNAME = 'CITYFROM'.
FS_FIELDCAT-REF_TABNAME = 'SPFLI'.
FS_FIELDCAT-COL_POS = 4.
FS_FIELDCAT-KEY = ' '.
APPEND FS_FIELDCAT TO T_FIELDCAT.

LOOP AT T_SPFLI WHERE DISTANCE GT 600.
W_FIELDNAME = 'DISTANCE'.
FS_CELL-FIELDNAME = W_FIELDNAME .
FS_CELL-COLOR-COL = 5.
FS_CELL-NOKEYCOL = 'X'.
APPEND FS_CELL TO T_SPFLI-CELL.
MODIFY T_SPFLI TRANSPORTING CELL.
ENDLOOP.

FS_LAYOUT-INFO_FIELDNAME = 'COLOR'.
FS_LAYOUT-BOX_FIELDNAME = 'CHECKBOX'.
FS_LAYOUT-COLTAB_FIELDNAME = 'CELL'.
FS_LAYOUT-F2CODE = '&ETA'.

W_PROG = SY-REPID.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = W_PROG
IS_LAYOUT = FS_LAYOUT
IT_FIELDCAT = T_FIELDCAT
TABLES
T_OUTTAB = T_SPFLI
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.

In the above program, the contents of the field u2018DISTANCEu2019 are colored depending on a condition (i.e., values greater than 600). The list will appear as follows.  


Try This Code .

Read only

Former Member
0 Likes
1,053

Neethu,

You need to write following code in your subroutine which handles the user commands.

FORM user_command USING ucomm TYPE sy-ucomm selfield TYPE slis_selfield.
IF ucomm = 'SEL_ALL'.
  LOOP AT <your internal table>.
    <wa>-<checkboxfield> = 'X'.
    MODIFY <your internal table> INDEX sy-tabix from <wa>.
ENDLOOP.
selfield-refresh = 'X'.
ELSEIF ucomm = 'DESEL_ALL'.
   LOOP AT <your internal table>.
     <wa>-<checkboxfield> = space.
     MODIFY <your internal table> INDEX sy-tabix from <wa>.
   ENDLOOP.
   selfield-refresh = 'X'.
 ENDIF.
ENDFORM.                    "user_command

Read only

Former Member
0 Likes
1,053

hi,

try this code ...

CASE sy-ucomm.

 WHEN 'SLCT'. " FUNCTION CODE FOR SELECT ALL

      LOOP AT IT INTO WA .
        WA-FIELDNAME = 'X'.
        MODIFY IT FROM WA.
      ENDLOOP.

 WHEN 'DSLT'.  " FUNCTION CODE FOR DESELECT ALL

      LOOP AT IT INTO WA .
        WA-FIELDNAME = ' '.
        MODIFY IT FROM WA.
      ENDLOOP.

ENDCASE.

Read only

Former Member
0 Likes
1,053

hi,

try this code ...

CASE sy-ucomm.

 WHEN 'SLCT'. " FUNCTION CODE FOR SELECT ALL

      LOOP AT IT INTO WA .
        WA-FIELDNAME = 'X'.
        MODIFY IT FROM WA.
      ENDLOOP.

 WHEN 'DSLT'.  " FUNCTION CODE FOR DESELECT ALL

      LOOP AT IT INTO WA .
        WA-FIELDNAME = ' '.
        MODIFY IT FROM WA.
      ENDLOOP.

ENDCASE.

Read only

Former Member
0 Likes
1,053

Hi ,

Try this complete program

REport ZPR_Close

NO STANDARD PAGE HEADING.

TABLES eban.

TYPE-pools : SLIS.

Data : BEGIN OF I_TAB OCCURS 0 ,

chk(1),

BANFN LIKE EBAN-BANFN, " P.R. No.

BNFPO LIKE EBAN-BNFPO, " Item No. Of P.R.

BSART LIKE EBAN-BSART, " Doc. Type

ERNAM LIKE EBAN-ERNAM, " cREATED bY

AFNAM LIKE EBAN-AFNAM, " Requisitioner

TXZ01 LIKE EBAN-TXZ01, " Material Desc

MATNR LIKE EBAN-MATNR, " Material Number

WERKS LIKE EBAN-WERKS, " Plant

MENGE LIKE EBAN-MENGE, " Quantity Requested

MEINS LIKE EBAN-MEINS, " Unit of Measure

BADAT LIKE EBAN-BADAT, " Requsition Date

LFDAT LIKE EBAN-LFDAT, " Delivery Date

PREIS LIKE EBAN-PREIS, " Price

end of i_tab.

*data : c_sy_subrc like sy-subrc.

Data : wa_tab like i_tab,

**-- Events Declaration.

IT_EVENTS TYPE SLIS_T_EVENT ,

WA_EVENTS TYPE SLIS_ALV_EVENT.

DATA: gs_layout TYPE slis_layout_alv,

i_events TYPE slis_t_event,

s_fieldtab TYPE slis_fieldcat_alv,

i_fieldtab TYPE slis_t_fieldcat_alv,

ls_line TYPE slis_listheader,

g_repid like sy-repid,

g_save,

gt_top_of_page TYPE slis_t_listheader.

DATA : X TYPE I.

clear i_tab[].

SELECTION-SCREEN BEGIN OF BLOCK BLK1.

SELECT-OPTIONS:

P_WERKS FOR EBAN-WERKS OBLIGATORY NO INTERVALS NO-EXTENSION,

P_BADAT FOR EBAN-BADAT DEFAULT SY-DATUM OBLIGATORY NO INTERVALS NO-EXTENSION.

Parameters: P_days(3) type n default 60 OBLIGATORY .

SELECTION-SCREEN END OF BLOCK BLK1.

*----


  • G L O B A L D A T A

*----


DATA: ok_code LIKE sy-ucomm.

*start-of-selection.

start-of-selection.

PERFORM GET_DATA.

****--Perform to Get Event.

  • PERFORM EVENT.

perform field_catalog.

perform display_list.

*end-of-selection.

end-of-selection.

&----


*& Form get_data

&----


  • text

----


FORM get_data .

data : ld_badat type sy-datum .

ld_badat = P_BADAT-low - P_days.

select * into CORRESPONDING FIELDS OF TABLE I_TAB

FROM eban

WHERE statu = 'N' and

WERKS = P_WERKS-low and

BADAT lt ld_badat and

loekz ne 'X' and

EBAKZ ne 'X'.

if sy-subrc eq 0 .

ENDIF .

ENDFORM. " get_data

&----


*& Form field_catalog

&----


  • text

----


FORM field_catalog .

CLEAR : s_fieldtab,

i_fieldtab[].

data :pos type i.

pos = 1.

pos = pos + 1.

s_fieldtab-col_pos = pos.

s_fieldtab-fieldname = 'CHK'.

s_fieldtab-seltext_l = 'CLOSE'.

s_fieldtab-checkbox = 'X'.

s_fieldtab-edit = 'X'.

s_fieldtab-tabname = 'I_TAB'.

APPEND s_fieldtab TO i_fieldtab.

clear s_fieldtab.

pos = pos + 1.

s_fieldtab-col_pos = pos.

s_fieldtab-fieldname = 'BANFN'.

s_fieldtab-seltext_l = 'P.R. No'.

s_fieldtab-key = 'X'.

  • s_fieldtab-outputlen = '10'.

s_fieldtab-tabname = 'I_TAB'.

APPEND s_fieldtab TO i_fieldtab.

pos = pos + 1.

s_fieldtab-col_pos = pos.

s_fieldtab-fieldname = 'BNFPO'.

s_fieldtab-seltext_l = 'Item No'.

s_fieldtab-key = 'X'.

  • s_fieldtab-outputlen = '6'.

s_fieldtab-tabname = 'I_TAB'.

APPEND s_fieldtab TO i_fieldtab.

pos = pos + 1.

s_fieldtab-col_pos = pos.

s_fieldtab-fieldname = 'BSART'.

s_fieldtab-seltext_l = 'Doc. Type'.

  • s_fieldtab-key = 'X'.

  • s_fieldtab-outputlen = '10'.

s_fieldtab-tabname = 'I_TAB'.

APPEND s_fieldtab TO i_fieldtab.

pos = pos + 1.

s_fieldtab-col_pos = pos.

s_fieldtab-fieldname = 'ERNAM'.

s_fieldtab-seltext_l = 'Created By'.

  • s_fieldtab-key = 'X'.

  • s_fieldtab-outputlen = '10'.

s_fieldtab-tabname = 'I_TAB'.

APPEND s_fieldtab TO i_fieldtab.

pos = pos + 1.

s_fieldtab-col_pos = pos.

s_fieldtab-fieldname = 'AFNAM'.

s_fieldtab-seltext_l = 'Requisitioner'.

  • s_fieldtab-key = 'X'.

  • s_fieldtab-outputlen = '10'.

s_fieldtab-tabname = 'I_TAB'.

APPEND s_fieldtab TO i_fieldtab.

pos = pos + 1.

s_fieldtab-col_pos = pos.

s_fieldtab-fieldname = 'TXZ01'.

s_fieldtab-seltext_l = 'Material Desc'.

  • s_fieldtab-key = 'X'.

  • s_fieldtab-outputlen = '10'.

s_fieldtab-tabname = 'I_TAB'.

APPEND s_fieldtab TO i_fieldtab.

pos = pos + 1.

s_fieldtab-col_pos = pos.

s_fieldtab-fieldname = 'MATNR'.

s_fieldtab-seltext_l = 'Material Number'.

  • s_fieldtab-key = 'X'.

  • s_fieldtab-outputlen = '10'.

s_fieldtab-tabname = 'I_TAB'.

APPEND s_fieldtab TO i_fieldtab.

pos = pos + 1.

s_fieldtab-col_pos = pos.

s_fieldtab-fieldname = 'WERKS'.

s_fieldtab-seltext_l = 'Plant'.

s_fieldtab-key = 'X'.

  • s_fieldtab-outputlen = '10'.

s_fieldtab-tabname = 'I_TAB'.

APPEND s_fieldtab TO i_fieldtab.

pos = pos + 1.

s_fieldtab-col_pos = pos.

s_fieldtab-fieldname = 'MENGE'.

s_fieldtab-seltext_l = 'Quantity Requested'.

s_fieldtab-edit = 'X'.

  • s_fieldtab-key = 'X'.

  • s_fieldtab-outputlen = '10'.

s_fieldtab-tabname = 'I_TAB'.

APPEND s_fieldtab TO i_fieldtab.

ENDFORM. " field_catalog

*****************************************************************

  • Form Set_pf_status

  • Notes: Called by FM REUSE_ALV_GRID_DISPLAY

*****************************************************************

FORM set_pf_status USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'STANDARD_FULLSCREEN'.

ENDFORM. "Set_pf_status

&----


*& Form User_command

&----


  • text

----


  • -->R_UCOMM text

  • -->RS_SELFIELD text

----


Form User_command using r_ucomm like sy-ucomm rs_selfield type slis_selfield.

data : li_count type I.

if r_ucomm EQ 'SEL'. "SElect

LOOP AT I_TAB .

I_TAB-CHK = 'X'.

MODIFY i_TAB TRANSPORTING CHK .

clear I_TAB .

ENDLOOP.

rs_selfield-refresh = 'X'.

endif.

if r_ucomm EQ 'DE_SEL'. "DEselect All

LOOP AT I_TAB .

I_TAB-CHK = ' '.

MODIFY i_TAB TRANSPORTING CHK .

clear I_TAB .

ENDLOOP.

rs_selfield-refresh = 'X'.

endif.

if r_ucomm eq 'CLOSE'.

LEAVE PROGRAM .

endif.

endform. "User_command

&----


*& Form layout_init

&----


  • text

----


  • -->I_LAYOUT text

----


FORM layout_init CHANGING i_layout TYPE slis_layout_alv.

CLEAR i_layout.

i_layout-colwidth_optimize = 'X'.

  • i_layout-edit = 'X'.

ENDFORM. "layout_init

&----


*& Form display_list

&----


  • text

----


FORM display_list .

perform layout_init CHANGING gs_layout.

data : IGs like LVC_S_GLAY .

IGs-EDT_CLL_CB = 'X'.

g_repid = SY-CPROG .

*append igs.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = g_repid

I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

I_GRID_TITLE = 'Close Purchase Requisition'

I_GRID_SETTINGS = igs

IS_LAYOUT = gs_layout

IT_FIELDCAT = i_fieldtab[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

I_SAVE = g_save

  • IS_VARIANT =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • IR_SALV_FULLSCREEN_ADAPTER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = i_tab

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

write 😕 sy-subrc.

ENDIF.

*& Form display_list

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


ENDFORM. " display_list