2020-08-13 18:08发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好,有人可以在同一ALV报告中为多个热点字段提供一个代码示例吗? 这会很简单,但会有些卡住,非常感谢
由于您似乎正在使用REUSE_ALV_GRID_DISPLAY,并且已经在一个字段中使用它,因此如果在其他列上启用了热点,则很容易测试它涉及的哪一列:
FORM f_user_command使用r_ucomm LIKE sy -ucomm rs_selfield TYPE slis_selfield。 案例r_ucomm。 当"&IC1"时。 双击/热点 案例rs_selfield-fieldname。 当'TKNUM'。 设置参数ID'TNR'FIELD rs_selfield-value。 呼叫交易" VT03N"并跳过第一屏。 当" VBELN"。 ... 结束。 结束。 ENDFORM。
用户B ,
请告诉我们您在哪里 坚持不懈,您使用的是什么ALV框架? 是工厂方法还是网格方法等。
请注意!
这就是使用简单ALV(CL_SALV_TABLE)的方式。
使用ALV列表查看器(CL_GUI_ALV_GRID),它可以正常工作。 您可以订阅事件HOTSPOT_CLICK,该事件具有行和列的参数(E_ROW_ID/ES_ROW_NO,E_COLUMN_ID)。 处理事件时,这些参数使您知道按下了哪个单元格。
CL_SALV_TABLE的概述:
详细信息:
1。 为类" CL_SALV_EVENTS_TABLE"的事件" LINK_CLICK"声明一个方法(例如on_link_click)
CLASS lcl_application DEFINITION FINAL。 公共部分。 CLASS_METHODS on_link_click事件链接_click of cl_salv_events_table IMPORTING行列。 " ... ENDCLASS。
2。 订阅ALV对象的事件 3。 将列定义为ALV对象的HOTSPOTS("超链接")
DATA my_alv类型引用至cl_salv_table。 数据lr_column类型参考cl_salv_column_table。 数据lr_columns类型参考cl_salv_columns_table。 数据lr_events类型参考cl_salv_events_table。 设置ALV cl_salv_table =>工厂(正在导入r_salv_table = my_alv 更改t_table = my_table。 " ... " 2订阅ALV对象的事件 lr_events = my_alv-> get_event()。 设置处理程序lcl_application => on_link_click FOR lr_events。 " ... " 3.将列定义为ALV对象的HOTSPOTS("超链接") lr_columns = my_alv-> get_columns()。 lr_column?= lr_columns-> get_column('MYCOL1')。 lr_column-> set_cell_type(if_salv_c_cell_type => hotspot)。 lr_column?= lr_columns-> get_column('MYCOL2')。 lr_column-> set_cell_type(if_salv_c_cell_type => hotspot)。 " ... "显示ALV my_alv-> display()。
4。 当事件被调用并传递给已声明的方法(on_link_click)时,参数ROW和COLUMN将使您知道已单击了哪个单元格,而使用ROW则将知道在这种情况下该怎么做。
CLASS lcl_application " ... 方法on_link_click。 行 栏 READ TABLE my_table ASSIGNING FIELD-SYMBOL()INDEX行。 将结构的ASSIGN COMPONENT列分配到FIELD-SYMBOL()。 CASE栏。 当" MYCOL1"时。 " ... 当" MYCOL2"时。 " ... 结束。 终结法。 ENDCLASS。
(我省略了对异常的处理,以使必要的编码更加明显。)
嗨,Satish,这是ALV网格报表< br>直到现在,当我有一个hotsdpot字段时,我都以一种非常简单的方式编写了它:
如果sy-subrc =0。从wa_fldcat的运输热点中修改it_fldcat,而字段名='TKNUM'。 ENDIF。
并在表单上:
FORM f_user_command使用类似于sy-ucomm的r_ucomm rs_selfield类型slis_selfield。 设置参数ID'TNR'字段rs_selfield-value。呼叫交易'VT03N'和跳过第一屏。 > ENDFORM。
有点卡住了。 和主意好吗? (看到了用长代码建议的那个问题的一些老答案,并想知道也许有更简单的方法),再次非常感谢您
如果解决了, 请标记您问题的"最佳答案"("已接受标记"),然后关闭问题。
非常感谢!
最多设置5个标签!
由于您似乎正在使用REUSE_ALV_GRID_DISPLAY,并且已经在一个字段中使用它,因此如果在其他列上启用了热点,则很容易测试它涉及的哪一列:
用户B ,
请告诉我们您在哪里 坚持不懈,您使用的是什么ALV框架? 是工厂方法还是网格方法等。
请注意!
这就是使用简单ALV(CL_SALV_TABLE)的方式。
使用ALV列表查看器(CL_GUI_ALV_GRID),它可以正常工作。 您可以订阅事件HOTSPOT_CLICK,该事件具有行和列的参数(E_ROW_ID/ES_ROW_NO,E_COLUMN_ID)。 处理事件时,这些参数使您知道按下了哪个单元格。
CL_SALV_TABLE的概述:
详细信息:
1。 为类" CL_SALV_EVENTS_TABLE"的事件" LINK_CLICK"声明一个方法(例如on_link_click)
2。 订阅ALV对象的事件
3。 将列定义为ALV对象的HOTSPOTS("超链接")
4。 当事件被调用并传递给已声明的方法(on_link_click)时,参数ROW和COLUMN将使您知道已单击了哪个单元格,而使用ROW则将知道在这种情况下该怎么做。
(我省略了对异常的处理,以使必要的编码更加明显。)
嗨,Satish,
这是ALV网格报表< br>直到现在,当我有一个hotsdpot字段时,我都以一种非常简单的方式编写了它:
如果sy-subrc =0。
从wa_fldcat的运输热点中修改it_fldcat,而字段名='TKNUM'。
ENDIF。
并在表单上:
FORM f_user_command使用类似于sy-ucomm的r_ucomm
尝试添加另一个热点字段时,rs_selfield类型slis_selfield。
设置参数ID'TNR'字段rs_selfield-value。
呼叫交易'VT03N'和跳过第一屏。 >
ENDFORM。
有点卡住了。 和主意好吗? (看到了用长代码建议的那个问题的一些老答案,并想知道也许有更简单的方法),
再次非常感谢您
如果解决了, 请标记您问题的"最佳答案"("已接受标记"),然后关闭问题。
非常感谢!
一周热门 更多>