zoukankan      html  css  js  c++  java
  • web_dynpro_ALV:(包ZLYTEST2)(alv 的事件只需注意一个R_PARAM就哦了)

    主程序界面添加alv组件SALV_WD_TABLE,componentcontrol里导入alv组件,在组件使用->alv->interface里将context中的DATA与对应节点数据绑定,在视图里导入alv组件SALV_WD_TABLE(两个),这样就完成了最基本的ALV框架实现.如果想让ALV按自己的意愿显示,可以在视图初始化

    的时候调用ALV初始化方法.INIT_ALV().在该方法里可以自定义实现某些工能

    method init_alv .
      data: lr_comp_alv    type ref to if_wd_component_usage   ,
            lr_comp_if_alv type ref to iwci_salv_wd_table      ,
            lr_config      type ref to cl_salv_wd_config_table .
      data: lr_column_settings type ref to if_salv_wd_column_settings,
            lr_column          type ref to cl_salv_wd_column         ,
            lr_column_header   type ref to cl_salv_wd_column_header  .
      data: lt_column type salv_wd_t_column_ref   ,
            ls_column type salv_wd_s_column_ref   .
    ****
      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.
      data lr_column_id type string.
    ****
      data: lr_field_amnt type ref to cl_salv_wd_field   .
      data: lv_aggr_rule   type ref to cl_salv_wd_aggr_rule ,
            lr_sort_rule   type ref to cl_salv_wd_sort_rule .
    *  call method lr_config->if_salv_wd_table_settings~set_selection_mode
    *     exporting
    *          value = cl_wd_table=>e_selection_mode-multi_no_lead.
      lr_comp_alv = wd_this->wd_cpuse_alv( ) .”根据ALV名字来定
      if lr_comp_alv->has_active_component( ) is initial.
        lr_comp_alv->create_component( ).
      endif.
      data alv2_cnfg type ref to cl_salv_wd_config_table.
      lr_comp_if_alv = wd_this->wd_cpifc_alv( ).”根据ALV名字来定
      lr_config      = lr_comp_if_alv->get_model( ).
      alv2_cnfg = lr_comp_if_alv->get_model( ).
      lr_column_settings ?= alv2_cnfg .
      lt_column = lr_column_settings->get_columns( ).
    *   Set header
      data: lr_header type ref to cl_salv_wd_header ,
            l_header  type string .
      lr_header = alv2_cnfg->if_salv_wd_table_settings~get_header( ).
      l_header  = '测试ALV报表' .
      lr_header->set_text( l_header ) .
    *=========================================================
      data: l_value  type ref to cl_salv_wd_config_table.
      l_value = lr_comp_if_alv->get_model( ).
    *  l_value->if_salv_wd_table_settings~set_fixed_table_layout( abap_true ).  "使列宽不可自动调节
    *  l_value->if_salv_wd_table_settings~set_width( '1000PX'  ) .                "设置宽度
      l_value->if_salv_wd_table_settings~set_visible_row_count( '5' ).        "显示的行数
      l_value->if_salv_wd_table_settings~set_read_only( abap_true ).
     l_value->if_salv_wd_table_settings~set_cell_action_event_enabled( abap_true ).
    l_value->if_salv_wd_table_settings~set_design( cl_wd_table=>e_design-alternating ).
    *  DATA: lr_button TYPE REF TO cl_salv_wd_uie_button.
    *  lr_column = l_value->if_salv_wd_column_settings~get_column( 'CARRID' ).
    *  CREATE OBJECT lr_button.
    *  lr_button->set_text_fieldname( 'TITLE' ).
    *  lr_column->set_cell_editor( lr_button ).
    *  DATA: lr_link TYPE REF TO cl_salv_wd_uie_link_to_action.
    *  lr_column = l_value->if_salv_wd_column_settings~get_column( 'CONNID'
    *).
    *  CREATE OBJECT lr_link.
    *  lr_link->set_text_fieldname( 'DOCNO' ).
    *  lr_column->set_cell_editor( lr_link ).
    l_value->if_salv_wd_table_settings~set_selection_mode( cl_wd_table=>e_selection_mode-none ).
    *  l_value->if_salv_wd_table_settings~set_selection_mode( cl_wd_table=>e_selection_mode-single_no_lead ).
    *  l_value->if_salv_wd_table_settings~set_selection_mode( cl_wd_table=>e_selection_mode-single ).
      l_value->if_salv_wd_function_settings~set_enabled( abap_true ) .
      l_value->if_salv_wd_table_settings~delete_header( ) .
      l_value->if_salv_wd_std_functions~set_display_as_allowed( abap_false ) .
    l_value->if_salv_wd_std_functions~set_sort_headerclick_allowed( abap_false ) .
      l_value->if_salv_wd_std_functions~set_edit_check_available( abap_false ) .
      l_value->if_salv_wd_std_functions~set_edit_insert_row_allowed( abap_false ) .
      l_value->if_salv_wd_std_functions~set_export_allowed( abap_false ) ."设置是否可以导出
      l_value->if_salv_wd_std_functions~set_view_list_allowed( abap_false )."设置列选择输出是否可更改
      l_value->if_salv_wd_std_functions~set_pdf_allowed( abap_false ) .
      l_value->if_salv_wd_std_functions~set_edit_append_row_allowed( abap_false ) .
      l_value->if_salv_wd_std_functions~set_edit_delete_row_allowed( abap_false ) .
    l_value->if_salv_wd_std_functions~set_filter_filterline_allowed( abap_false )."设置筛选是否可见
      l_value->if_salv_wd_std_functions~set_filter_complex_allowed( abap_false ).
     l_value->if_salv_wd_std_functions~set_dialog_settings_allowed( abap_false )."设置设置按钮条
      data: lr_table_settings type ref to if_salv_wd_table_settings.
      lr_table_settings ?= l_value.
      lr_table_settings->set_data_check( '01' ).
      lr_table_settings->set_read_only( abap_false ).
      loop at lt_column into ls_column.
        lr_column_id = ls_column-id.
        lr_column = ls_column-r_column.
        case ls_column-id.
          when 'DOCNO'.
            lr_column_header = ls_column-r_column->create_header( ).
            lr_column_header->set_text( '公文号' ).
    *        DATA: lr_link_to_action TYPE REF TO cl_salv_wd_uie_link_to_action.
    *        CREATE OBJECT lr_link_to_action.
    *        lr_link_to_action->set_text_fieldname( ls_column-id ).
    *        ls_column-r_column->set_cell_editor( lr_link_to_action ).
          when 'TITLE'.
            lr_column_header = ls_column-r_column->create_header( ).
            lr_column_header->set_text( '模板名称' ).
            data: lr_link_to_action type ref to cl_salv_wd_uie_link_to_action.
            create object lr_link_to_action.
            lr_link_to_action->set_text_fieldname( ls_column-id ).
    *        lr_link_to_action->set_read_only( abap_true ).
            ls_column-r_column->set_cell_editor( lr_link_to_action ).
    *        DATA  lr_dropdown      TYPE REF TO cl_salv_wd_uie_dropdown_by_idx.
    *        CREATE OBJECT lr_dropdown_by_key
    *          EXPORTING
    *            selected_key_fieldname = ls_column-id.
    **        lr_dropdown_by_key->set_read_only( abap_true ).
    *        lr_dropdown_by_key->set_key_visible( abap_false ).
    *        lr_column->set_cell_editor( lr_dropdown_by_key ).
    DATA  lr_dropdown      TYPE REF TO cl_salv_wd_uie_dropdown_by_idx.
          when 'PLANTP'.
            lr_column_header = ls_column-r_column->create_header( ).
            lr_column_header->set_text( '计划类型' ).
            CREATE OBJECT lr_dropdown_by_key
              EXPORTING
                selected_key_fieldname = ls_column-id.
            lr_dropdown_by_key->set_read_only( abap_true ).
            lr_dropdown_by_key->set_key_visible( abap_false ).
            lr_column->set_cell_editor( lr_dropdown_by_key ).
          when 'WTYPE'.
            lr_column_header = ls_column-r_column->create_header( ).
            lr_column_header->set_text( '物业类型' ).
            CREATE OBJECT lr_dropdown_by_key
              EXPORTING
                selected_key_fieldname = ls_column-id.
            lr_dropdown_by_key->set_read_only( abap_true ).
            lr_dropdown_by_key->set_key_visible( abap_false ).
            lr_column->set_cell_editor( lr_dropdown_by_key ).
          when 'BTYPE'.
            lr_column_header = ls_column-r_column->create_header( ).
            lr_column_header->set_text( '建筑类型' ).
            CREATE OBJECT lr_dropdown_by_key
              EXPORTING
                selected_key_fieldname = ls_column-id.
            lr_dropdown_by_key->set_read_only( abap_true ).
            lr_dropdown_by_key->set_key_visible( abap_false ).
            lr_column->set_cell_editor( lr_dropdown_by_key ).
    *        DATA: lr_button3 TYPE REF TO cl_salv_wd_uie_button.
    *        CREATE OBJECT lr_button3.
    *        lr_button3->set_text_fieldname( 'VALUE3' ).
    *        ls_column-r_column->set_cell_editor( lr_button3 ).
          when 'MTYPE'.
            lr_column_header = ls_column-r_column->create_header( ).
            lr_column_header->set_text( '专业类型' ).
            CREATE OBJECT lr_dropdown_by_key
              EXPORTING
                selected_key_fieldname = ls_column-id.
            lr_dropdown_by_key->set_read_only( abap_true ).
            lr_dropdown_by_key->set_key_visible( abap_false ).
            lr_column->set_cell_editor( lr_dropdown_by_key ).
          when 'UNAME'.
            lr_column_header = ls_column-r_column->create_header( ).
            lr_column_header->set_text( '创建人' ).
    *        DATA: lr_input_field TYPE REF TO cl_salv_wd_uie_input_field.
    *        CREATE OBJECT lr_input_field
    *          EXPORTING
    *            value_fieldname = ls_column-id.
    *        ls_column-r_column->set_cell_editor( lr_input_field ).
          when 'UTIME'.
            lr_column_header = ls_column-r_column->create_header( ).
            lr_column_header->set_text( '创建时间' ).
          when 'DOWNLOAD'.
            lr_column_header = ls_column-r_column->create_header( ).
            lr_column_header->set_text( '下载' ).
            data: lr_button3 type ref to cl_salv_wd_uie_button.
            create object lr_button3.
            lr_button3->set_text_fieldname( 'DOWNLOAD' ).
            ls_column-r_column->set_cell_editor( lr_button3 ).
          when others.
            ls_column-r_column->set_visible( cl_wd_uielement=>e_visible-none ).
        Endcase.

     

    修改按钮可增如下:

    data LR_BUTTONUI TYPE REF TO CL_SALV_WD_FE_BUTTON.
      DATA LR_SEPARATOR TYPE REF TO CL_SALV_WD_FE_SEPARATOR.
      DATA LV_FUNCTION  TYPE REF TO CL_SALV_WD_FUNCTION.
    IF WD_THIS->READONLY = 'X'.
      CREATE OBJECT LR_BUTTONUI.
      LR_BUTTONUI->SET_TEXT( '创建行' ).
      LV_FUNCTION = LR_CONFIG->IF_SALV_WD_FUNCTION_SETTINGS~CREATE_FUNCTION( ID = 'CREATE' ).
      LV_FUNCTION->SET_EDITOR( LR_BUTTONUI ).
      lv_function->set_visible( '01' ).
        CREATE OBJECT LR_BUTTONUI.
      LR_BUTTONUI->SET_TEXT( '删除行' ).
      LV_FUNCTION = LR_CONFIG->IF_SALV_WD_FUNCTION_SETTINGS~CREATE_FUNCTION( ID = 'DELETE' ).
      LV_FUNCTION->SET_EDITOR( LR_BUTTONUI ).
      lv_function->set_visible( '01' ).
        CREATE OBJECT LR_BUTTONUI.
      LR_BUTTONUI->SET_TEXT( '保存' ).
      LV_FUNCTION = LR_CONFIG->IF_SALV_WD_FUNCTION_SETTINGS~CREATE_FUNCTION( ID = 'SAVE' ).
      LV_FUNCTION->SET_EDITOR( LR_BUTTONUI ).
      lv_function->set_visible( '01' ).
      ELSE.
      CREATE OBJECT LR_BUTTONUI.
      LR_BUTTONUI->SET_TEXT( '创建行' ).
      LV_FUNCTION = LR_CONFIG->IF_SALV_WD_FUNCTION_SETTINGS~CREATE_FUNCTION( ID = 'CREATE' ).
      LV_FUNCTION->SET_EDITOR( LR_BUTTONUI ).

        CREATE OBJECT LR_BUTTONUI.
      LR_BUTTONUI->SET_TEXT( '删除行' ).
      LV_FUNCTION = LR_CONFIG->IF_SALV_WD_FUNCTION_SETTINGS~CREATE_FUNCTION( ID = 'DELETE' ).
      LV_FUNCTION->SET_EDITOR( LR_BUTTONUI ).
        CREATE OBJECT LR_BUTTONUI.
      LR_BUTTONUI->SET_TEXT( '保存' ).
      LV_FUNCTION = LR_CONFIG->IF_SALV_WD_FUNCTION_SETTINGS~CREATE_FUNCTION( ID = 'SAVE' ).
      LV_FUNCTION->SET_EDITOR( LR_BUTTONUI ).
      ENDIF.


      endloop.
    endmethod.

    如果想在对数据修改之后触发事件,可以自定义function对应ALVDATA_CHECK方法,

    ON_CELL_CLICK事件设置成cell_action

    method on_click .
      data lo_api_controller     type ref to if_wd_controller.
      data lo_message_manager    type ref to if_wd_message_manager.
      lo_api_controller ?= wd_this->wd_get_api( ).
      data:
        lo_node      type ref to if_wd_context_node,
         lo_elem      type ref to if_wd_context_element,
         ls_context   type wd_this->element_zt206_l,
         lt_context   type wd_this->elements_zt206_l,
         ls_context2   type wd_this->element_zt207_l,
         lt_context2   type wd_this->elements_zt207_l,
         lw_string    type string,
         lw_xstring   type xstring.
      data filename type string."定义下载文件名
      "获取选择行
      data lo_nd_zt205_r type ref to if_wd_context_node.
      data lt_zt205_r type wd_this->elements_zt205_r.
      data ls_zt205_r type wd_this->element_zt205_r.
      lo_nd_zt205_r = wd_context->get_child_node( name = wd_this->wdctx_zt205_r ).
      lo_nd_zt205_r->get_static_attributes_table( importing table = lt_zt205_r ).
      read table lt_zt205_r into ls_zt205_r index r_param->index.
      "定义显示用的表名
      data lo_nd_zt206_l type ref to if_wd_context_node.
      data lt_zt206_l type wd_this->elements_zt206_l.
      data ls_zt206_l type wd_this->element_zt206_l.
      data lo_nd_zt207_l type ref to if_wd_context_node.
      data lt_zt207_l type wd_this->elements_zt207_l.
      data ls_zt207_l type wd_this->element_zt207_l.
      "设置可见属性
      data lo_el_context type ref to if_wd_context_element.
      data lv_visible_t type wd_this->element_context-visible_t.
      data lv_visible_t2 type wd_this->element_context-visible_t2.
      data lv_visible_t3 type wd_this->element_context-visible_t3.
      "根据选择列内容执行显示或下载
      case r_param->column.
        when 'TITLE'.
          lo_el_context = wd_context->get_element( ).
          lv_visible_t = '02'.
          lo_el_context->set_attribute(
            name =  `VISIBLE_T`
            value = lv_visible_t ).
          case ls_zt205_r-plantp.
            when 1 or 3.
              lo_el_context = wd_context->get_element( ).
              lv_visible_t2 = '02'.
              lo_el_context->set_attribute(
                name =  `VISIBLE_T2`
                value = lv_visible_t2 ).
              lo_el_context = wd_context->get_element( ).
              lv_visible_t2 = '01'.
              lo_el_context->set_attribute(
                name =  `VISIBLE_T3`
                value = lv_visible_t3 ).
              lo_nd_zt206_l = wd_context->get_child_node( name = wd_this->wdctx_zt206_l ).
              select * from ztpm206 into corresponding fields of table lt_zt206_l where title = ls_zt205_r-title and docno = ls_zt205_r-docno.
              loop at lt_zt206_l into ls_zt206_l.
                if sy-tabix = 1."单行显示主要信心
                else.
                  clear ls_zt206_l-docno.
                  clear ls_zt206_l-btype.
                  clear ls_zt206_l-wtype.
                  clear ls_zt206_l-title.
                  modify lt_zt206_l from ls_zt206_l.
                endif.
              endloop.
              lo_nd_zt206_l->bind_table( new_items = lt_zt206_l set_initial_elements = abap_true ).
            when 2 or 4.
              lo_el_context = wd_context->get_element( ).
              lv_visible_t2 = '01'.
              lo_el_context->set_attribute(
                name =  `VISIBLE_T2`
                value = lv_visible_t2 ).
              lo_el_context = wd_context->get_element( ).
              lv_visible_t3 = '02'.
              lo_el_context->set_attribute(
                name =  `VISIBLE_T3`
                value = lv_visible_t3 ).
              lo_nd_zt207_l = wd_context->get_child_node( name = wd_this->wdctx_zt207_l ).
              select * from ztpm207 into corresponding fields of table lt_zt207_l where title = ls_zt205_r-title and docno = ls_zt205_r-docno.
              loop at lt_zt207_l into ls_zt207_l.
                if sy-tabix = 1.
                else.
                  clear ls_zt207_l-docno.
                  clear ls_zt207_l-title.
                  modify lt_zt207_l from ls_zt207_l.
                endif.
              endloop.
              lo_nd_zt207_l->bind_table( new_items = lt_zt207_l set_initial_elements = abap_true ).
          endcase.
        when 'DOWNLOAD'.
          case ls_zt205_r-plantp.
            when 1 or 3.
              select * from ztpm206 into corresponding
           fields of table lt_context
           where docno = ls_zt205_r-docno and title = ls_zt205_r-title.
              loop at lt_context into ls_context.
                concatenate lw_string
                            ls_context-docno
                            ls_context-wtype
                            ls_context-btype
                            ls_context-wid
                            ls_context-wdesc
                            ls_context-node
                            ls_context-pvalue
                            ls_context-refer
                            ls_context-remark
                            cl_abap_char_utilities=>newline into lw_string
                            separated by cl_abap_char_utilities=>horizontal_tab.
              endloop.
            when 2 or 4.
              select * from ztpm207 into corresponding
            fields of table lt_context2
            where docno = ls_zt205_r-docno and title = ls_zt205_r-title.
              loop at lt_context2 into ls_context2.
                concatenate lw_string
                            ls_context2-docno
                            ls_context2-wid
                            ls_context2-wtask
                            ls_context2-refer
                            ls_context2-pvalue
                            ls_context2-remark
                            cl_abap_char_utilities=>newline into lw_string
                            separated by cl_abap_char_utilities=>horizontal_tab.
              endloop.
            when others.
          endcase.
    * convert the string => Xstring
          call function 'SCMS_STRING_TO_XSTRING'
            exporting
              text           = lw_string
    *      MIMETYPE       = ' '
    *      ENCODING       =
           importing
              buffer         = lw_xstring
           exceptions
              failed         = 1
              others         = 2 .
          concatenate ls_zt205_r-title '.TXT' into filename.
    * export the XString to Excel
          wdr_task=>client_window->client->attach_file_to_response(
    **path to the word file
            i_filename = filename
    ** String Variable
            i_content =  lw_xstring
    ** File Type
            i_mime_type = 'NOTEPAD' ).
      endcase.
    endmethod.

    ^_^很多人都把资料锁进了note里,以后还怎么百度呢^_^
  • 相关阅读:
    poj3278 Catch That Cow
    poj2251 Dungeon Master
    poj1321 棋盘问题
    poj3083 Children of the Candy Cor
    jvm基础知识—垃圾回收机制
    jvm基础知识1
    java面试基础必备
    java soket通信总结 bio nio aio的区别和总结
    java scoket aIO 通信
    java scoket Blocking 阻塞IO socket通信四
  • 原文地址:https://www.cnblogs.com/sapSB/p/3015523.html
Copyright © 2011-2022 走看看