博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OO方式实现ALV: cl_salv_table
阅读量:6891 次
发布时间:2019-06-27

本文共 3133 字,大约阅读时间需要 10 分钟。

这里总结最近用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.

 

转载于:https://www.cnblogs.com/caizjian/p/8806551.html

你可能感兴趣的文章
实验心得
查看>>
mysql 生成行号
查看>>
Control your Thinkpad T430 fan speed in Ubuntu 12.
查看>>
【OSC手机App技术解析】- 在WebView中组装HTML
查看>>
转载 Linux 整合 AD 實戰:CentOS 7.0 整合 Active Directory 驗證管理
查看>>
Android应用升级,检测更新,下载,检验,安装
查看>>
Elasticsearch refresh vs. flush
查看>>
质量管理:测试基础架构图
查看>>
Windows Server 2008安装SQL Server 2008
查看>>
jsonp的原理?
查看>>
快速开发框架V0.001(免费、100%开源)
查看>>
文件上传与下载/Mail
查看>>
jQuery ajax() 方法
查看>>
怎样安排您的读书时间?
查看>>
IoC
查看>>
一、 Python的基本概念
查看>>
子元素margin影响父元素的问题
查看>>
MUI功能列表
查看>>
为什么沃尔玛和其他大型零售商正联手创建移动支付?
查看>>
ios注册通知NSNotificationCenter(一)
查看>>