How to get ALV filter work for lower case characters
When you are using ALV screen with class CL_SALV_TABLE or CL_GUI_ALV_GRID.
The filter is working for some column but not working for the others.
After changing the content for this column to uppercase, the filter works again.
I searched on the internet and found that most solutions point at field catalog.
When I try this in my own case, it did not work.
Default ALV screen is designed for uppercase. When you are using “Hump Type” which including
lower case and upper case letters. Under default column settings, the filter will turn
the content you filtered to upper case automatically.
What you should do?
You should enable the lowercase mode for the specific column.
How to enable this?
When you get your column for example lo_column.
You just need to call its set lowercase function.
*define the column DATA lo_column TYPE REF TO cl_salv_column_table. DATA lo_columns TYPE REF TO cl_salv_columns_table. DATA lt_column_ref TYPE salv_t_column_ref. DATA ls_column_ref TYPE salv_s_column_ref. DATA go_salv_table TYPE REF TO cl_salv_table . DATA lt_column_ref TYPE salv_t_column_ref. DATA ls_column_ref TYPE salv_s_column_ref. *get your ALV instance cl_salv_table=>factory( IMPORTING r_salv_table = go_salv_table CHANGING t_table = "your table here ). *get the column lo_columns = go_salv_table->get_columns( ). lt_column_ref = lo_columns->get( ). * set lowwer case LOOP AT lt_column_ref INTO ls_column_ref. lo_column ?= ls_column_ref-r_column. CASE ls_column_ref-columnname. WHEN 'XXXX'. lo_column->set_lowercase( value = if_salv_c_bool_sap=>true ). ENDCASE. ENDLOOP.
This is how I solve this problem, Hope this will help you!
Excellent work around. When I've had that issue in the past, I have used a structure with domains that have lower case checked.
This will work nicely if I am not defining my ALV using a structure.
Haha, It is my pleasure