‎2008 May 26 8:25 AM
Dear All,
I am facing a problem in ALV.
I have check box in ALV, and in ALV filter it appears to be a blank field.
May i know how to remove this checkbox field from filter?
Thanks in advance.
‎2008 May 26 8:42 AM
Hi Prasad,
To delete entries for a filter criterium, position the cursor on the appropriate line and choose Delete Condition.
Try this and get back to me incase of any queries.
Dont forget to reward points if found useful.
Thanks,
Satyesh
‎2008 May 26 9:11 AM
Hi,
Basically i want field not to appear. Instead of deleting it form dialog.
So filter popup should come without check box.
‎2008 May 26 9:36 AM
You need registered two events for grid instance: BEFORE_USER_COMMAND and AFTER_USER_COMMAND. In first event you can delete requiered field from fieldcatalog - for deleting from filter dialog. In second event you must repaired fieldcatalog for original.
Definition:
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS: HANDLE_BEFORE_USER_COMMAND
FOR EVENT BEFORE_USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM,
HANDLE_AFTER_USER_COMMAND
FOR EVENT AFTER_USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM
.
ENDCLASS.
Implementation:
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_BEFORE_USER_COMMAND.
IF E_UCOMM = '&MB_FILTER'. " Run at filter dialog (need change for single button)
DATA: TEMP_FCAT TYPE LVC_T_FCAT.
CALL METHOD G_GRID->GET_FRONTEND_FIELDCATALOG
IMPORTING
ET_FIELDCATALOG = TEMP_FCAT .
DELETE TEMP_FCAT WHERE FIELDNAME = 'your_checkbox'.
CALL METHOD G_GRID->SET_FRONTEND_FIELDCATALOG
EXPORTING
IT_FIELDCATALOG = TEMP_FCAT . " This fieldcatalog w/o requirered field
ENDIF.
ENDMETHOD.
METHOD HANDLE_AFTER_USER_COMMAND.
CALL METHOD G_GRID->SET_FRONTEND_FIELDCATALOG
EXPORTING
IT_FIELDCATALOG = FCAT. "This original fieldcatalog
ENDMETHOD.
ENDCLASS.
Register event:
DATA: G_HANDLER TYPE REF TO LCL_EVENT_RECEIVER.
CREATE OBJECT G_HANDLER.
SET HANDLER G_HANDLER->HANDLE_BEFORE_USER_COMMAND FOR G_GRID.
SET HANDLER G_HANDLER->HANDLE_AFTER_USER_COMMAND FOR G_GRID.
Good luck.
‎2008 May 26 10:39 AM
‎2008 May 26 1:44 PM
One else method for REUSE GRID:
1. Need copy pf-status STANDARD from FG SALV into your program. Then change button '&ILT' Filter on own button 'FILTER' with filter icon.
2. Create forms in your program for setting pf-status and processing user commands.
3. In user command processing catch press of 'FILTER' and starting own procedure then go to exit.
For example, I am deleting CARRID field from filter criteria.
TYPE-POOLS: SLIS.
DATA: SFLIGHT TYPE TABLE OF SFLIGHT WITH HEADER LINE.
START-OF-SELECTION.
SELECT * FROM SFLIGHT INTO TABLE SFLIGHT UP TO 20 ROWS.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_CALLBACK_PROGRAM = 'Z_YOUR_PROGRAM'
I_CALLBACK_PF_STATUS_SET = 'SET_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME = 'SFLIGHT'
TABLES
T_OUTTAB = SFLIGHT[].
*&---------------------------------------------------------------------*
*& Form SET_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM SET_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STANDARD' EXCLUDING RT_EXTAB.
ENDFORM. "SET_STATUS
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->OKCODE text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING OKCODE TYPE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
CASE OKCODE.
WHEN 'FILTER'.
DATA: GRID TYPE REF TO CL_GUI_ALV_GRID,
FCAT TYPE LVC_T_FCAT,
BUFFER_FCAT TYPE LVC_T_FCAT,
FILTER TYPE LVC_T_FILT,
LAYOUT TYPE LVC_S_LAYO.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = GRID
ET_FIELDCAT_LVC = FCAT.
BUFFER_FCAT = FCAT.
DELETE FCAT WHERE FIELDNAME = 'CARRID'.
CALL METHOD GRID->SET_FRONTEND_FIELDCATALOG
EXPORTING
IT_FIELDCATALOG = FCAT.
CALL METHOD GRID->GET_FILTER_CRITERIA
IMPORTING
ET_FILTER = FILTER.
CALL FUNCTION 'LVC_FILTER'
EXPORTING
IT_FIELDCAT = FCAT
IS_LAYOUT = LAYOUT
TABLES
IT_DATA = SFLIGHT[]
CHANGING
CT_FILTER = FILTER
EXCEPTIONS
NO_CHANGE = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
CALL METHOD GRID->SET_FRONTEND_FIELDCATALOG
EXPORTING
IT_FIELDCATALOG = BUFFER_FCAT.
EXIT.
ENDIF.
CALL METHOD GRID->SET_FILTER_CRITERIA
EXPORTING
IT_FILTER = FILTER.
CALL METHOD GRID->SET_FRONTEND_FIELDCATALOG
EXPORTING
IT_FIELDCATALOG = BUFFER_FCAT.
CALL METHOD GRID->REFRESH_TABLE_DISPLAY.
ENDCASE.
ENDFORM. "USER_COMMAND