ALV 操作实例
来源:互联网 发布:纯真ip数据库 mysql 编辑:程序博客网 时间:2024/06/14 20:32
界面如下:
实现过程大致如下:
STTRIBUTES:ALV_MODEL TYPE REF TO CL_SALV_WD_CONFIG_TABLE
METHODS:INIT_ALV_CONFIG 作用:ALV列表内容初始化设置
METHOD init_alv_config .
DATA lo_cmp_usage TYPE REF TO if_wd_component_usage.
lo_cmp_usage = wd_this->wd_cpuse_alv_table( ).
IF lo_cmp_usage->has_active_component( ) IS INITIAL.
lo_cmp_usage->create_component( ).
ENDIF.
DATA lo_interface TYPE REF TO iwci_salv_wd_table.
lo_interface = wd_this->wd_cpifc_alv_table( ).
DATA lr_column_settings TYPE REF TO if_salv_wd_column_settings.
lr_column_settings ?= wd_this->alv_model.
DATA lt_columns TYPE salv_wd_t_column_ref.
DATA ls_column TYPE salv_wd_s_column_ref.
DATA lr_column TYPE REF TO cl_salv_wd_column.
DATA lr_column_id TYPE string.
DATA lr_header TYPE REF TO cl_salv_wd_column_header.
DATA: lr_input_field TYPE REF TO cl_salv_wd_uie_input_field,
lr_checkbox TYPE REF TO cl_salv_wd_uie_checkbox,
lr_image TYPE REF TO cl_salv_wd_uie_image,
lr_dropdown_by_key TYPE REF TO cl_salv_wd_uie_dropdown_by_key.
lt_columns = lr_column_settings->get_columns( ).
LOOP AT lt_columns INTO ls_column.
lr_column_id = ls_column-id.
lr_column = ls_column-r_column.
lr_header = lr_column->create_header( ).
CASE lr_column_id.
WHEN 'Z_IMAGE'.
lr_header->set_text( ' ' ).
lr_column->set_width( '50' ).
CREATE OBJECT lr_image.
lr_image->set_source_fieldname( 'Z_IMAGE' ).
lr_column->set_cell_editor( lr_image ).
lr_column->set_h_align( cl_wd_table_column=>e_h_align-center ).
WHEN 'Z_ORDER'.
lr_header->set_text( '序号' ).
lr_column->set_width( '50' ).
lr_column->set_h_align( cl_wd_table_column=>e_h_align-center ).
lr_column->set_cell_design_fieldname( 'ZF_COLOR' ).
WHEN 'Z_PLAY_DATE'.
lr_header->set_text( '播出日期' ).
CREATE OBJECT lr_input_field
EXPORTING
value_fieldname = lr_column_id.
lr_input_field->set_read_only( abap_false ).
lr_input_field->set_alignment( cl_wd_table_column=>e_h_align-center ).
lr_column->set_width( '70' ).
lr_column->set_cell_editor( lr_input_field ).
lr_column->set_h_align( cl_wd_table_column=>e_h_align-center ).
lr_column->set_cell_design_fieldname( 'ZF_PLAY_DATE' ).
WHEN 'Z_REP_FLAG'.
lr_header->set_text( '首/重播' ).
CREATE OBJECT lr_dropdown_by_key
EXPORTING
selected_key_fieldname = lr_column_id.
lr_dropdown_by_key->set_key_visible( abap_false ).
lr_column->set_width( '70' ).
lr_column->set_h_align( cl_wd_table_column=>e_h_align-center ).
lr_column->set_cell_editor( lr_dropdown_by_key ).
WHEN 'Z_SPECIAL_FLAG'.
lr_header->set_text( '重点节目' ).
CREATE OBJECT lr_checkbox
EXPORTING
checked_fieldname = lr_column_id.
lr_checkbox->set_read_only( abap_true ).
lr_column->set_width( '70' ).
lr_column->set_cell_editor( lr_checkbox ).
lr_column->set_h_align( cl_wd_table_column=>e_h_align-center ).
.....................
WHEN OTHERS.
lr_column->set_visible( cl_wd_uielement=>e_visible-none ).
ENDCASE.
ENDLOOP.
ENDMETHOD.
METHODS:INIT_ALV_DISPLAY 作用: 显示设置,BT设置
METHOD init_alv_display .
DATA lo_cmp_usage TYPE REF TO if_wd_component_usage.
lo_cmp_usage = wd_this->wd_cpuse_alv_table( ).
IF lo_cmp_usage->has_active_component( ) IS INITIAL.
lo_cmp_usage->create_component( ).
ENDIF.
DATA lo_interface TYPE REF TO iwci_salv_wd_table.
lo_interface = wd_this->wd_cpifc_alv_table( ).
wd_this->alv_model = lo_interface->get_model( ).
wd_this->alv_model->if_salv_wd_table_settings~set_scrollable_col_count( 10 ).
wd_this->alv_model->if_salv_wd_table_settings~set_read_only( abap_false ).
wd_this->alv_model->if_salv_wd_table_settings~set_width( '100%' ).
wd_this->alv_model->if_salv_wd_table_settings~set_cell_action_event_enabled( ).
wd_this->alv_model->if_salv_wd_table_settings~set_visible_row_count( 8 ).
wd_this->alv_model->if_salv_wd_table_settings~set_fixed_table_layout( abap_true ).
wd_this->alv_model->if_salv_wd_std_functions~set_edit_check_available( abap_false ).
wd_this->alv_model->if_salv_wd_std_functions~set_edit_append_row_allowed( abap_false ).
wd_this->alv_model->if_salv_wd_std_functions~set_edit_insert_row_allowed( abap_false ).
wd_this->alv_model->if_salv_wd_std_functions~set_edit_delete_row_allowed( abap_false ).
wd_this->alv_model->if_salv_wd_std_functions~set_pdf_allowed( abap_false ).
wd_this->alv_model->if_salv_wd_std_functions~set_export_allowed( abap_false ).
wd_this->alv_model->if_salv_wd_table_settings~set_selection_mode( cl_wd_table=>e_selection_mode-multi ).
wd_this->alv_model->if_salv_wd_table_settings~set_cell_action_event_enabled( abap_true ) .
DATA lr_function_setting TYPE REF TO if_salv_wd_function_settings.
lr_function_setting = wd_this->alv_model.
DATA: lr_button TYPE REF TO cl_salv_wd_fe_button.
DATA: lr_function1 TYPE REF TO cl_salv_wd_function.
* 报播辅助开关
lr_function1 = lr_function_setting->create_function( 'FROM_SUB' ).
CREATE OBJECT lr_button.
lr_button->set_text( '报播辅助开关' ).
lr_function1->set_editor( lr_button ).
* 新建空白条目
lr_function1 = lr_function_setting->create_function( 'CREAT_SUB' ).
CREATE OBJECT lr_button.
lr_button->set_text( '新建空白条目' ).
lr_function1->set_editor( lr_button ).
* 复制条目
lr_function1 = lr_function_setting->create_function( 'COPY_SUB' ).
CREATE OBJECT lr_button.
lr_button->set_text( '复制条目' ).
lr_function1->set_editor( lr_button ).
* 删除条目
lr_function1 = lr_function_setting->create_function( 'DELETE_SUB' ).
CREATE OBJECT lr_button.
lr_button->set_text( '删除条目' ).
lr_function1->set_editor( lr_button ).
ENDMETHOD.
METHODS:ON_ALV_FUNCTION 继承ALV_TALBE上 ON_FUNCTION 作用: ALV 上BT的单击事件
METHOD on_alv_function .
CASE r_param->id.
WHEN 'FROM_SUB'. "报播辅助开关
wd_this->on_from_sub( ).
WHEN 'CREAT_SUB'. "新建空白条目
wd_this->on_creat_sub( ).
WHEN 'COPY_SUB'. "复制条目
wd_this->on_copy_sub( ).
WHEN 'DELETE_SUB'. "删除条目
wd_this->on_delete_sub( ).
ENDCASE.
ENDMETHOD.
METHODS:ON_ALV_CELL 继承ALV_TALBE上ON_CELL_ACTION 作用: ALV CELL上的事件
METHOD on_alv_cell .
DATA lo_nd_t_bb_bbd TYPE REF TO if_wd_context_node.
DATA lo_el_t_bb_bbd TYPE REF TO if_wd_context_element.
DATA ls_t_bb_bbd TYPE wd_this->element_t_bb_bbd.
DATA lt_t_bb_bbd TYPE wd_this->elements_t_bb_bbd.
lo_nd_t_bb_bbd = wd_context->get_child_node( name = wd_this->wdctx_t_bb_bbd ).
lo_el_t_bb_bbd = lo_nd_t_bb_bbd->get_element( ).
* get all declared attributes
lo_el_t_bb_bbd->get_static_attributes( IMPORTING static_attributes = ls_t_bb_bbd ).
lo_nd_t_bb_bbd->get_static_attributes_table( IMPORTING table = lt_t_bb_bbd ).
...
DATA ls_bb_pro TYPE zcdm_s_bb_pro.
READ TABLE lt_t_bb_bbd INDEX r_param->index INTO ls_t_bb_bbd.
CASE r_param->column.
....
WHEN 'Z_PLAY_TIME'.
IF ls_t_bb_bbd-z_play_time IS INITIAL.
"处理
ENDIF.
WHEN 'Z_PLAYROOM'.
ENDCASE.
........
MODIFY lt_t_bb_bbd FROM ls_t_bb_bbd INDEX r_param->index .
lo_nd_t_bb_bbd->bind_table( lt_t_bb_bbd ).
lo_nd_t_bb_bbd->set_lead_selection_index( r_param->index ). "设置当前行为选中行
ENDMETHOD.
METHODS:ON_COPY_SUB 作用: 复制已选择ALV行
METHOD on_copy_sub .
DATA element_set TYPE wdr_context_element_set.
DATA lo_nd_t_bb_bbd TYPE REF TO if_wd_context_node.
DATA lo_el_t_bb_bbd TYPE REF TO if_wd_context_element.
DATA ls_t_bb_bbd TYPE wd_this->element_t_bb_bbd.
DATA lt_t_bb_bbd TYPE wd_this->elements_t_bb_bbd.
DATA t_bb_bbd TYPE wd_this->elements_t_bb_bbd.
DATA lv_z_order LIKE ls_t_bb_bbd-z_order.
lo_nd_t_bb_bbd = wd_context->get_child_node( name = wd_this->wdctx_t_bb_bbd ).
lo_el_t_bb_bbd = lo_nd_t_bb_bbd->get_element( ).
lo_nd_t_bb_bbd->get_static_attributes_table( IMPORTING table = lt_t_bb_bbd ).
element_set = lo_nd_t_bb_bbd->get_selected_elements( including_lead_selection = abap_true ).
DATA l_index type i .
LOOP AT element_set INTO lo_el_t_bb_bbd .
l_index = lo_el_t_bb_bbd->GET_INDEX( ).
lo_el_t_bb_bbd->get_static_attributes( IMPORTING static_attributes = ls_t_bb_bbd ).
insert ls_t_bb_bbd INTO lt_t_bb_bbd INDEX l_index .
ENDLOOP.
LOOP AT lt_t_bb_bbd INTO ls_t_bb_bbd .
ls_t_bb_bbd-z_order = sy-tabix.
MODIFY lt_t_bb_bbd FROM ls_t_bb_bbd.
ENDLOOP.
lo_nd_t_bb_bbd->bind_table( new_items = lt_t_bb_bbd ).
ENDMETHOD. "ON_COPY_SUB
- ALV 操作实例
- ALV 报表 颜色 实例
- ALV实例学习
- ABAP实例之ALV
- ALV checkbox实例
- ALV tree应用实例
- ALV下拉菜单实例
- ALV下拉菜单实例
- ALV OO 实例
- 简单的ALV控件实例
- 自定义输出字段ALV实例
- 一个ALV(OO)的实例
- ALV如何取数实例
- ALV OO: 最简单的ALV OO实例-自定义容器
- ALV OO: 最简单的ALV OO实例-Docking容器
- ALV实例:默认选择行与列
- WebDynpro for ABAP 简单ALV实例
- WebDynpro for ABAP 简单ALV实例
- 自定义http response状态码
- List接口——ArrayList(Array)
- js判断页面是否加载完毕
- [转]使用Vim + Cscope/Ctags
- mtk
- ALV 操作实例
- javascript 显示当前系统时间
- 索引、唯一索引、聚集索引
- Java Stack Heap
- 学习spring事务模板
- 如何删除GHOST镜像
- IsPostBack深入探讨
- SIM卡相关
- List接口——Vector(Stack)