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

ALV filter problem

Former Member
0 Likes
1,245

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.

5 REPLIES 5
Read only

Former Member
0 Likes
784

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

Read only

Former Member
0 Likes
784

Hi,

Basically i want field not to appear. Instead of deleting it form dialog.

So filter popup should come without check box.

Read only

0 Likes
784

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.

Read only

Former Member
0 Likes
784

hi,

I am using classical ALV

Read only

0 Likes
784

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