zoukankan      html  css  js  c++  java
  • OO方式实现ALV: cl_salv_table

    这里总结最近用cl_salv_table实现ALV遇到问题和解决办法

    FORM set_alv2 .
    DATA: lv_syrepid TYPE syrepid.
          lv_syrepid  = sy-cprog.
          cl_salv_table=>factory(
            EXPORTING
            list_display = abap_false
            r_container = cl_gui_container=>screen0
            IMPORTING
              r_salv_table = gr_alv
            CHANGING t_table = gt_doc ). “传输需要显示的内表
    
          gr_functions = gr_alv->get_functions( ).        "获取常用的ALV功能按钮
    
    
    DATA lv_icon TYPE string.
    lv_icon = icon_refresh.
    gr_functions->add_function(       "添加自定义按钮
     EXPORTING
       name = 'DOWNLOAD'
       icon = '@M9@'
       text = '下载文档'
       tooltip = '下载文档'
       position = if_salv_c_function_position=>right_of_salv_functions ). "往右边排
    
    gr_functions->add_function(
     EXPORTING
       name = 'SELECT_ALL'
       icon = '@4B@'
       text = '全选'
       tooltip = '全选'
       position = if_salv_c_function_position=>left_of_salv_functions ). "往右边排
    
    gr_functions->add_function(
     EXPORTING
       name = 'DESELECT_ALL'
       icon = '@4D@'
       text = '取消全选'
       tooltip = '取消全选'
       position = if_salv_c_function_position=>left_of_salv_functions ). "往右边排
    
    gr_functions->set_all( abap_true ). ”设置所有alv按钮(自带的+自定义的)
    "=====获取事件对象
    DATA: gr_event TYPE REF TO cl_salv_events_table.
    gr_event = gr_alv->get_event( ).
    
    "=====事件注册
    DATA: gr_handle_event TYPE REF TO cl_handle_events.
    CREATE OBJECT gr_handle_event.
    SET HANDLER gr_handle_event->on_user_command FOR gr_event.
    SET HANDLER gr_handle_event->on_checkbox     FOR gr_event.
    DATA: gr_column_list TYPE REF TO cl_salv_column_list.
    
          gr_columns = gr_alv->get_columns( ).               "获取列的class
          gr_column  = gr_columns->get_column('ACTION_NO').  "获取该列 
          gr_column->set_short_text('需求号').        "调用修改列名称的方法
          gr_columns->set_optimize( abap_true ).      "调用设置列最优化设置方法这边用到列实例是gr_colums不是gr_colum
    
          gr_column = gr_columns->get_column('FLAG').  
    
          gr_column->set_short_text('选择').
          gr_columnt ?= gr_column.                      "这边很重要
          gr_columnt->set_cell_type( 6 ).          "设置选择列为checkbox,6代表checkbox
    
          gr_display = gr_alv->get_display_settings( ).  "alv设置
          gr_display->set_list_header('需求号&文档编号报表'). "alv抬头设置
          gr_alv->display( )."调用实例方法显示表报        "调用显示alv方法展示ALV报表
    ENDFORM.                    " SET_ALV2
    下面是是事件的class的定义
    CLASS
    cl_handle_events DEFINITION. PUBLIC SECTION. METHODS: on_user_command FOR EVENT added_function OF cl_salv_events_table IMPORTING e_salv_function, on_checkbox FOR EVENT link_click OF cl_salv_events_table IMPORTING row column. ENDCLASS. CLASS cl_handle_events IMPLEMENTATION. METHOD on_user_command. PERFORM handle_user_command USING e_salv_function. ENDMETHOD. METHOD on_checkbox. PERFORM handle_clickbox USING row column. ENDMETHOD. ENDCLASS.
    事件的方法定义
    FORM
    handle_user_command USING p_function TYPE salv_de_function. CASE p_function. WHEN 'DOWNLOAD'. PERFORM down_doc. WHEN 'DESELECT_ALL'. gs_doc-flag = ' '. MODIFY gt_doc FROM gs_doc TRANSPORTING flag WHERE flag = 'X'. WHEN 'SELECT_ALL'. gs_doc-flag = 'X'. MODIFY gt_doc FROM gs_doc TRANSPORTING flag WHERE flag = ' '. ENDCASE. gr_alv->refresh( ). ENDFORM.
  • 相关阅读:
    Mybatis学习随笔3
    Mybatis学习随笔2
    Mybatis学习随笔
    Java校招面试-什么是线程安全/不安全
    装饰器2
    装饰器
    默认传参的陷阱
    处理日志文件
    第二天
    用户登录
  • 原文地址:https://www.cnblogs.com/caizjian/p/8806551.html
Copyright © 2011-2022 走看看