on 07-25-2008 4:56 PM
Hi,
My requirement is when ALV is displayed first time, it should come up with filter. Could you please let me know how to set filter row by default in ALV.
Thanks,
The solution to the problem is to create the filter not while doing the configuration of the alv model (e.g. in wddoinit()), but in an separate eventhandler based on the ON_AFTER_CONFIG ...
Probably the applied filters during model configuration are resetted with the first databinding?
method ON_AFTER_CONF .
DATA lo_interfacecontroller TYPE REF TO iwci_salv_wd_table .
lo_interfacecontroller = wd_this->wd_cpifc_usage_alv( ).
DATA lo_value TYPE REF TO cl_salv_wd_config_table.
lo_value = lo_interfacecontroller->get_model(
).
* Filtern nach speziellen Serialnummern
* Feld holen
data lo_field type ref to cl_salv_wd_field.
data lo_field_settings type ref to if_salv_wd_field_settings.
data lo_filter_rule type ref to cl_salv_wd_filter_rule.
* Filter aktuelles Jahr
data low type string.
low = sy-datum(4).
* Feld/Spalte CALYEAR
lo_field_settings ?= lo_value.
lo_field ?= lo_field_settings->get_field( 'CALYEAR' ).
lo_field->if_salv_wd_filter~set_filter_allowed( value = abap_true ).
* Filter Rule erstellen
lo_filter_rule ?= lo_field->if_salv_wd_filter~create_filter_rule(
operator = 'EQ'
low_value = low ).
endmethod.
Info: For filtering Patterns e.g. Serialnumbers with 1* use operator CP
* Feld/Spalte SERNR
lo_field_settings ?= lo_value.
lo_field ?= lo_field_settings->get_field( 'SERNR' ).
lo_field->if_salv_wd_filter~set_filter_allowed( value = abap_true ).
data low type string.
* Serialnumber starting with 1
low = '1*'.
lo_filter_rule ?= lo_field->if_salv_wd_filter~create_filter_rule(
operator = 'CP'
low_value = low ).
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi
You can use the code below to make the filter visible by default in alv tables.
*declaration of alv usage
DATA lo_cmp_usage TYPE REF TO if_wd_component_usage.
DATA lo_interfacecontroller TYPE REF TO iwci_salv_wd_table .
*declaration of alv usage
*declare config model
DATA lo_config_model_value TYPE REF TO cl_salv_wd_config_table.
DATA lo_settings TYPE REF TO cl_salv_wd_function_std.
lo_cmp_usage = wd_this->wd_cpuse_alv_requi_list( ).
IF lo_cmp_usage->has_active_component( ) IS INITIAL.
lo_cmp_usage->create_component( ).
ENDIF.
lo_interfacecontroller = wd_this->wd_cpifc_alv_requi_list( ).
lo_config_model_value = lo_interfacecontroller->get_model( ).
*to make fileter visible by default
cl_salv_wd_model_table_util=>if_salv_wd_table_util_funcs~set_functions_visible(
r_model = lo_config_model_value
value = cl_wd_uielement=>e_visible-none ).
*to make settings link visible on al table
lo_settings = lo_config_model_value->if_salv_wd_function_settings~get_function_std( if_salv_wd_c_std_functions=>settings ).
lo_settings->set_visible( ).
regards
chythanya
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Check this code to set ALV Filter.
* create an instance of ALV component
DATA: LR_CMP_USAGE TYPE REF TO IF_WD_COMPONENT_USAGE.
DATA: LR_IF_CONTROLLER TYPE REF TO IWCI_SALV_WD_TABLE,
LR_CMDL TYPE REF TO CL_SALV_WD_CONFIG_TABLE.
LR_CMP_USAGE = WD_THIS->WD_CPUSE_ALV( ).
IF LR_CMP_USAGE->HAS_ACTIVE_COMPONENT( ) IS INITIAL.
LR_CMP_USAGE->CREATE_COMPONENT( ).
ENDIF.
* get reference to the ALV model
LR_IF_CONTROLLER = WD_THIS->WD_CPIFC_ALV( ).
LR_CMDL = LR_IF_CONTROLLER->GET_MODEL( ).
* set ALV Filter
DATA: LR_FIELD_SETTINGS TYPE REF TO IF_SALV_WD_FIELD_SETTINGS.
DATA: LR_FIELD TYPE REF TO CL_SALV_WD_FIELD.
LR_FIELD_SETTINGS ?= LR_CMDL.
LR_FIELD = LR_FIELD_SETTINGS->GET_FIELD( 'ENAME' ).
LR_FIELD->IF_SALV_WD_FILTER~CREATE_FILTER_RULE(
OPERATOR = 'NE'
LOW_VALUE = ' ' ).
Regards,
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi experts,
I tried to set my ALV Filter but it is not applied. I always see all the data.
Do I have to do more then this:
* Filtern nach aktuellem Jahr.
* Feld holen
DATA lo_field TYPE REF TO cl_salv_wd_field.
DATA lo_field_settings TYPE REF TO if_salv_wd_field_settings.
DATA lo_filter_rule TYPE REF TO cl_salv_wd_filter_rule.
* Filter aktuelles Jahr
DATA low TYPE string.
low = sy-datum(4).
* Feld/Spalte CALYEAR
lo_field_settings ?= lo_value.
lo_field = lo_field_settings->get_field( 'CALYEAR' ).
lo_field->if_salv_wd_filter~set_filter_allowed( value = abap_true ).
* Filter Rule erstellen
lo_filter_rule ?= lo_field->if_salv_wd_filter~create_filter_rule(
operator = 'EQ'
low_value = low ).
Thanks for the answers.
Best regards,
Volker
User | Count |
---|---|
93 | |
10 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.