¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo quitar automáticamente el filtro de una tabla ALV al cambiar de vista - Guía paso a paso

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 72 Vistas
0
Cargando...

Hola,

Estoy usando una tabla ALV. Después de aplicar el filtro, me moví a otra vista. Pero cuando regreso a la vista anterior, el filtro todavía está activado. Sin embargo, quiero quitar la línea de filtro automáticamente al navegar entre pantallas. ¿Cómo puedo lograr esto?

Saludos,

Lakshmi.

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola, tuve el mismo problema. Puedes eliminar todos los filtros con este código:

"Crear algún código utilizando el asistente de código (llamar a la instancia utilizada de ALV)

DATA:

l_value TYPE REF TO cl_salv_wd_config_table,

lo_interface TYPE REF TO iwci_salv_wd_table.

TRY.

lo_interface = wd_this->wd_cpifc_alv_serv( ).

CATCH cx_wdr_rt_exception.

ENDTRY.

l_value = lo_interface->get_model( ).

DATA:

ls_field_ref TYPE salv_wd_s_field_ref,

lt_field_ref TYPE salv_wd_t_field_ref.

DATA:

"ls_filter_rule TYPE salv_wd_s_filter_rule_ref,

lt_filter_rule TYPE salv_wd_t_filter_rule_ref.

lt_field_ref = cl_salv_wd_model_table_util->if_salv_wd_table_util_fields~get_filtered_fields( l_value ).

LOOP AT lt_field_ref INTO ls_field_ref.

*lt_filter_rule = ls_field_ref-r_field->if_salv_wd_filter~get_filter_rules( ).

ls_field_ref-r_field->if_salv_wd_filter~delete_filter_rules( ).

ENDLOOP.

Saludos

Josip

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Lakshmi,

Revisa este código sobre la eliminación de filtro en la tabla ALV.

método on_upload_complete .

*... verificar el uso del componente ALV

data:

lr_salv_wd_table_usage tipo ref a if_wd_component_usage.

lr_salv_wd_table_usage = wd_this->wd_cpuse_salv_wd_table( ).

si lr_salv_wd_table_usage->has_active_component( ) es inicial.

lr_salv_wd_table_usage->create_component( ).

endif.

*... obtener el componente ALV

data:

lr_salv_wd_table tipo ref a iwci_salv_wd_table.

lr_salv_wd_table = wd_this->wd_cpifc_salv_wd_table( ).

*... (1) obtener ConfigurationModel desde el Componente ALV

wd_this->r_table = lr_salv_wd_table->get_model( ).

*... (2) configurar ConfigurationModel

*... inicializar TableSettings

data:

lr_table_settings tipo ref a if_salv_wd_table_settings.

lr_table_settings ?= wd_this->r_table .

lr_table_settings->set_read_only( abap_false ).

lr_table_settings->set_visible_row_count( '15' ).

data:

lr_header tipo ref a cl_salv_wd_header.

lr_header = lr_table_settings->get_header( ).

data:

l_header tipo cadena.

concatenar sy-sysid ' Vista general de vuelos' en l_header. "#EC NOTEXT

lr_header->set_text( l_header ).

lr_header->set_tooltip( 'Información sobre vuelos' ). "#EC NOTEXT

lr_header->set_image_source( 'ICON_VUELO' ).

lr_header->set_image_first( abap_false ).

*... inicializar FunctionSettings

cl_salv_wd_model_table_util=>if_salv_wd_table_util_stdfuncs~set_all(

r_model = wd_this->r_table ).

cl_salv_wd_model_table_util=>if_salv_wd_table_util_funcs~set_functions_visible(

r_model = wd_this->r_table

value = cl_wd_uielement=>e_visible-none ).

*... inicializar ColumnSettings

data:

lr_column_settings tipo ref a if_salv_wd_column_settings.

lr_column_settings ?= wd_this->r_table.

data:

lt_columns tipo salv_wd_t_column_ref.

lt_columns = lr_column_settings->get_columns( ).

data:

ls_column tipo salv_wd_s_column_ref.

loop at lt_columns into ls_column.

case ls_column-id.

when 'CARRID'.

data:

lr_uie_input_field tipo ref a cl_salv_wd_uie_input_field.

create object lr_uie_input_field

exporting

value_fieldname = ls_column-id.

ls_column-r_column->set_cell_editor( lr_uie_input_field ).

when 'CONNID' or 'FLDATE' or 'PLANETYPE' or

'PRICE' or 'CURRENCY' or 'SEATSOCC' or

'DISTANCE' or 'DISTID'.

when others.

ls_column-r_column->set_visible( cl_wd_uielement=>e_visible-none ).

endcase.

endloop.

*... inicializar FieldSettings

data:

lr_field_settings tipo ref a if_salv_wd_field_settings.

lr_field_settings ?= wd_this->r_table.

data:

lr_field tipo ref a cl_salv_wd_field.

*... establecer campos de referencia

lr_field = lr_field_settings->get_field( 'PRICE' ).

lr_field->set_reference_field( 'CURRENCY' ).

lr_field->set_reference_field_type( if_salv_wd_c_field_settings=>reffieldtype_curr ).

lr_field = lr_field_settings->get_field( 'PAYMENTSUM' ).

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

¿Por defecto obtendremos un filtro para todos los campos, verdad? Necesito eliminarlo para todos los campos, no solo para uno.

Quiero eliminar toda la fila de filtro cuando navegamos entre vistas.

Saludos,

Lakshmi.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Lakshmi

Obtén el campo en el que se establece el filtro y luego llama a la funcionalidad de eliminación

data:
  lref_filter type ref to cl_salv_wd_field.
  lref_filter = wd_this->m_handler_alv->if_salv_wd_field_settings~get_field( 'MyField1' ).

  lref_filter->if_salv_wd_filter~set_filter_allowed( ).
  lref_filter->if_salv_wd_filter~delete_filter_rule( ).

Saludos

Prashant

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?