添加热点(hotspot)

摘要:
本教程介绍如何添加和处理SALV列上的热点。要添加热点,需要执行以下步骤:1.从SALV对象_ SALV_COLUMNS_ Reference To TABLE获取CL。CL_SALV_COLUMNS_TABLE是一个关于所有字段的对象。由于热点被添加到特定列,get_column()方法获得一个列CL_SALV_column_对于TABLE的引用,类强制转换为“?=”此处使用。2.通过方法set_cell_Type()为列设置热点3。如果您需要响应热点的单击,还需要设置相应的事件_链接_单击处理程序此实例将热点添加到销售订单列,然后单击热点以显示信息框。

本教程介绍如何在SALV列上添加并处理热点hotspot。在大多数alv报表中,hotspot被用来标示有下钻报表的字段,比如能在销售订单号字段上下钻到VA03(销售订单显示)。

为了添加hotspot,具体需要以下步骤:

1,需要从SALV对象(CL_SALV_TABLE)得到CL_SALV_COLUMNS_TABLE的引用。CL_SALV_COLUMNS_TABLE是关于全部字段(column)的对象,由于hotspot是添加到某个具体的列上,所以还要get_column()方法得到单个列CL_SALV_COLUMN_TABLE的引用,这里用到类的强制转换‘?=’。

2,通过方法set_cell_type()为列设置hotspot

3,如果需要响应hotspot的点击,还需要设定对应事件on_link_click的handler

本实例在销售订单列上添加hotspot,单击hotspot探出信息框。

新的UML流程图如下:添加了两个方法,set_hotspot_vbeln()和on_link_click()

原始代码参照-->SALV教程1-创建简单SALV

salv_column_hotspot

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
*&---------------------------------------------------------------------*
*& 一个简单的通过类CL_SALV_TABLE生成SALV的例子
*&---------------------------------------------------------------------*
REPORT z_salv_7.
*
*----------------------------------------------------------------------*
*       CLASS lcl_report DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_reportDEFINITION.
*
  PUBLIC SECTION.
*
*   定义SALV输出内表
    TYPES:BEGIN OF ty_vbak,
             vbelnTYPE vbak-vbeln,
             erdatTYPE erdat,
             auartTYPE auart,
             kunnrTYPE kunnr,
           END OF ty_vbak.
*
    DATA: t_vbakTYPESTANDARD TABLE OF ty_vbak.
*
*   ALV reference
    DATA: o_alvTYPEREF TO cl_salv_table.
*
    METHODS:
*     抽取数据
      get_data,
*
*     生成输出内容
      generate_output.
*
*$*$*.....CODE_ADD_1 - Begin..................................1..*$*$*
*
* 定义private method来设定SALV不同特性
  PRIVATE SECTION.
    METHODS:
      set_pf_statusCHANGING co_alvTYPEREF TO cl_salv_table.
 
*   设置hotspot
    METHODS:
      set_hotspot_vbelnCHANGING co_alv    TYPEREF TO cl_salv_table.
*
*   Event Handler for HOTSPOT event
    METHODS:
      on_link_clickFOR EVENT link_clickOF cl_salv_events_table
        IMPORTING
            row
            column  .
*$*$*.....CODE_ADD_1 - End....................................1..*$*$*
 
ENDCLASS.                    "lcl_report DEFINITION
 
*----------------------------------------------------------------------*
*       CLASS lcl_report IMPLEMENTATION
*----------------------------------------------------------------------*
* 类实现
CLASS lcl_reportIMPLEMENTATION.
*
  METHOD get_data.
*   抽取数据
    SELECT vbeln
           erdat
           auart
           kunnr
      INTOTABLE t_vbak
      FROM vbak
           UP TO20ROWS.
*
  ENDMETHOD.                    "get_data
 
*.......................................................................
  METHOD generate_output.
*   New ALV instance
*   We are calling the static Factory method which will give back
*   the ALV object reference.
*
* exception class
    DATA: lx_msgTYPEREF TO cx_salv_msg.
    TRY.
        cl_salv_table=>factory(
          IMPORTING
            r_salv_table= o_alv
          CHANGING
            t_table      = t_vbak).
      CATCH cx_salv_msgINTO lx_msg.
    ENDTRY.
*
*$*$*.....CODE_ADD_2 - Begin..................................2..*$*$*
*
*    In this area we will call the methods which will set the
*      different properties to the ALV
*   调用status设置方法
    CALL METHOD set_pf_status
      CHANGING
        co_alv= o_alv.
 
*   Set Up the Hotspot & Event Handler
    CALL METHOD set_hotspot_vbeln
      CHANGING
        co_alv= o_alv.
*$*$*.....CODE_ADD_2 - End....................................2..*$*$*
*
*   调用Display方法将数据输出到屏幕上
    o_alv->display().
*
  ENDMETHOD.                    "generate_output
*
*$*$*.....CODE_ADD_3 - Begin..................................3..*$*$*
*
*    In this area we will implement the methods which are defined in
*      the class definition
* status设置方法实现
  METHOD set_pf_status.
 
    DATA: lo_functionsTYPEREF TO cl_salv_functions_list.
*   设置默认的标准状态栏
    lo_functions= co_alv->get_functions().
    lo_functions->set_default( abap_true).
 
  ENDMETHOD.
 
  METHOD set_hotspot_vbeln.
*
*...HotSpot
    DATA: lo_cols_tabTYPEREF TO cl_salv_columns_table,
          lo_col_tab  TYPEREF TO cl_salv_column_table.
*
*   get Columns object
    lo_cols_tab= co_alv->get_columns().
*
*   Get VBELN column
    TRY.
        lo_col_tab?= lo_cols_tab->get_column('VBELN').
      CATCH cx_salv_not_found.
    ENDTRY.
*
*   Set the HotSpot for VBELN Column
    TRY.
        CALL METHOD lo_col_tab->set_cell_type
          EXPORTING
            value= if_salv_c_cell_type=>hotspot.
        .
      CATCH cx_salv_data_error.
    ENDTRY.
*
*...Events
    DATA: lo_eventsTYPEREF TO cl_salv_events_table.
*
*   all events
    lo_events= o_alv->get_event().
*
*   设定event handler
    SET HANDLER me->on_link_clickFOR lo_events.
*
  ENDMETHOD.                    "set_hotspot_vbeln
*
* Handles the UI on the VBELN (HotSpot)
  METHOD on_link_click.
*
    DATA: la_vbakTYPE ty_vbak.
*
*   取得销售订单
    READ TABLE me->t_vbakINTO la_vbakINDEX row.
    IF la_vbak-vbelnISNOTINITIAL.
      MESSAGEi398(00)WITH'You have selected' la_vbak-vbeln.
    ENDIF.
*
  ENDMETHOD.                    "on_link_click
*$*$*.....CODE_ADD_3 - End....................................3..*$*$*
*
ENDCLASS.                    "lcl_report IMPLEMENTATION
 
START-OF-SELECTION.
 
  DATA: lo_reportTYPEREF TO lcl_report.
 
  CREATE OBJECT lo_report.
* 抽取数据
  lo_report->get_data().
* 生成SALV
  lo_report->generate_output().

运行后,双击热点会弹出信息框。

2016-09-12_16-56-08

以上。

免责声明:文章转载自《添加热点(hotspot)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇码云推送项目总是没有权限C#常用控件和属性下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CSS 固定table 表头和列

<html><head>    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">    <title>固定表头和列</title>    <style>        .FixedTitleRow ...

Html代码中table跨2行和跨2列的用法

一直以来总是会写跨2列的Html代码,不会写跨2行的例子,找机会研究了一下!先说说跨2列的例子,这个很好理解例1  跨2列: 1<table border="1">2                <tr>3                    <td colspan="2" align="center">111<...

多线程:C#线程同步lock,Monitor,Mutex,同步事件和等待句柄

转自:http://www.cnblogs.com/freshman0216/archive/2008/07/29/1252253.html 本篇从Monitor,Mutex,ManualResetEvent,AutoResetEvent,WaitHandler的类关系图开始, 希望通过本篇的介绍能对常见的线程同步方法有一个整体的认识,而对每种方式的使用细...

hbck2的一些用法

一、执行 hbase org.apache.hbase.HBCK2 可以看到下面一些选择项 **示例: -d 打印debug日志 -s 跳过客户端与服务端一致性的版本检测 hbase org.apache.hbase.HBCK2 -d -s bypass 1、bypass [OPTIONS] ... HBCK2的核心功能,bypass可以将一个或多个卡...

POI写入word docx 07 的两种方法

下载最新jar包:http://poi.apache.org/download.html 以及API 1.写入word 1.1 直接通过XWPFDocument生成 在使用XWPFDocument写docx文件时不需要像使用HWPFDocument写doc文件那样必须从一个doc文件开始,我们可以直接new一个空的XWPFDocument,之后再往这个XW...

Oracle——基础知识(一)

   一、Oracle中的数据类型 1、字符串类型。如:char、nchar、varchar2、nvarchar2。2、数值类型。如:int、number(p,s)、integer、smallint。3、日期类型。如:date、interval、timestamp。 4、其他。RAW-用来存储操作系统使用的原始二进制数据,可用于存储像图像或声音记录这样的信...