Jerry 也介绍过这个IDA,一句话写ALV
于是在saplearner上找了一个系列的帖子学习了一下
传统的ALV是在应用层实现的, 也就是从数据库中取到数据到内表,然后使用ALV使用这个内表来展示数据。使用IDA ALV,只用被选中的数据发送到UI来展示。
使用模糊搜索,可以看到有这么多IDA ALV相关类可以使用。
从类的命名基本上可以猜其用途。
下面示例中基本展示了IDA ALV的过程,其中345步如果注释掉的话就是一句话展示ALV了。
*&---------------------------------------------------------------------*
*& Report ZREP_IDA_001
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zrep_ida_001.
TABLES : snwd_pd.
DATA: lo_additional_condition TYPE REF TO if_salv_ida_condition,
lo_condition_factory TYPE REF TO if_salv_ida_condition_factory.
*0... Declare PARAMETERS
PARAMETERS: p_prdctg TYPE snwd_product_category.
*1... Declare SELECT-OPIONS
SELECT-OPTIONS s_prdid FOR snwd_pd-product_id.
START-OF-SELECTION.
*2... Create object reference ALV with IDA
DATA(lo_alv_display) = cl_salv_gui_table_ida=>create( iv_table_name = 'SNWD_PD' ).
*3... Build range tables
DATA(lo_range_collector) = NEW cl_salv_range_tab_collector( ).
lo_range_collector->add_ranges_for_name( iv_name = 'PRODUCT_ID'
it_ranges = s_prdid[] ).
lo_range_collector->get_collected_ranges(
IMPORTING
et_named_ranges = DATA(lt_select_options) ).
*4... Build conditions
lo_condition_factory = lo_alv_display->condition_factory( ).
lo_additional_condition = lo_condition_factory->equals( name = 'CATEGORY'
value = p_prdctg ).
*5... Set select options and conditions
lo_alv_display->set_select_options( it_ranges = lt_select_options
io_condition = lo_additional_condition ).
*6... Display ALV
lo_alv_display->fullscreen( )->display( ).