”声明OO事件
CLASS l_cl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS: on_link_click FOR EVENT link_click OF cl_salv_events_table
IMPORTING
row "事件触发所在的行号
column."事件触发所在的列名
ENDCLASS.
"实现
CLASS l_cl_handle_events IMPLEMENTATION.
METHOD on_link_click.
PERFORM show_cell_info USING row column.
ENDMETHOD.
ENDCLASS.
DATA:go_alv TYPE REF TO cl_salv_table,
go_funlst TYPE REF TO cl_salv_functions_list.
DATA:cxroot TYPE REF TO cx_root,
excmsg TYPE string.
DATA:gr_columns TYPE REF TO cl_salv_columns_table.
DATA:gr_column TYPE REF TO cl_salv_column_table.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = go_alv
CHANGING
t_table = gs_alv-gt_mx[] )."显示的内表
CATCH cx_root INTO cxroot.
excmsg = cxroot->get_text( ).
MESSAGE e000(oo) WITH excmsg.
ENDTRY.
"=====获取事件对象
DATA: lr_event TYPE REF TO cl_salv_events_table.
lr_event = go_alv->get_event( ).
"=====事件注册
DATA: lr_handle_event TYPE REF TO l_cl_handle_events.
CREATE OBJECT lr_handle_event.
SET HANDLER lr_handle_event->on_link_click FOR lr_event.
go_funlst = go_alv->get_functions( ).
go_funlst->set_all( ‘X’).
"字段名称
gr_columns = go_alv->get_columns( ).
gr_column ?= gr_columns->get_column( 'VBELN ’ ). gr_column->set_long_text( ‘交货单号’ ). gr_column->set_output_length( ‘10’ ). gr_column->set_cell_type( if_salv_c_cell_type=>hotspot ).
gr_column ?= gr_columns->get_column( 'POSNR ’ ). gr_column->set_long_text( ‘交货单行’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'KUNNR ’ ). gr_column->set_long_text( ‘客户账户’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'WADAT_IST ’ ). gr_column->set_long_text( ‘过账日期’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'KONDA ’ ). gr_column->set_long_text( ‘基地’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'LFIMG ’ ). gr_column->set_long_text( ‘数量’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'YA08 ’ ). gr_column->set_long_text( ‘公司补贴(YA08)’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'GSBT ’ ). gr_column->set_long_text( ‘客户承担’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'KBETR ’ ). gr_column->set_long_text( ‘总金额’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'VGBEL ’ ). gr_column->set_long_text( ‘销售订单’ ). gr_column->set_output_length( ‘10’ ). gr_column->set_cell_type( if_salv_c_cell_type=>hotspot ).
gr_column ?= gr_columns->get_column( 'VGPOS ’ ). gr_column->set_long_text( ‘销售订单行’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'ERDAT ’ ). gr_column->set_long_text( ‘创建日期’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'ERNAM ’ ). gr_column->set_long_text( ‘创建人’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'VKORG ’ ). gr_column->set_long_text( ‘销售组织’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'ZTRUCK ’ ). gr_column->set_long_text( ‘货运车型’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'ZPROV ’ ). gr_column->set_long_text( ‘目的省’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'ZCITY ’ ). gr_column->set_long_text( ‘目的市’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'ZAREA ’ ). gr_column->set_long_text( ‘目的区县’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'ZPROV_NAME ’ ). gr_column->set_long_text( ‘目的省描述’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'ZCITY_NAME ’ ). gr_column->set_long_text( ‘目的市描述’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'ZAREA_NAME ’ ). gr_column->set_long_text( ‘目的区县描述’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'KDGRP ’ ). gr_column->set_long_text( ‘包装类型’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'PROV_CODE ’ ). gr_column->set_long_text( ‘省份编码’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'CITY_CODE ’ ). gr_column->set_long_text( ‘县区编码’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( 'AREA_CODE ’ ). gr_column->set_long_text( ‘县区编码’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( ‘PROV_CODE_NAME’ ). gr_column->set_long_text( ‘省份编码描述’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( ‘CITY_CODE_NAME’ ). gr_column->set_long_text( ‘县区编码描述’ ). gr_column->set_output_length( ‘10’ ).
gr_column ?= gr_columns->get_column( ‘AREA_CODE_NAME’ ). gr_column->set_long_text( ‘县区编码描述’ ). gr_column->set_output_length( ‘10’ ).
IF go_alv IS BOUND.
go_alv->set_screen_popup(
start_column = 10 "开始宽度
end_column = 150 "结束宽度
start_line = 5 "开始高度
end_line = 30 )."结束高度
go_alv->display( ).
ENDIF.
ENDFORM.
&---------------------------------------------------------------------
*& Form SHOW_CELL_INFO
&---------------------------------------------------------------------
FORM show_cell_info USING p_row TYPE i
p_column TYPE lvc_fname.
DATA: l_row TYPE char10.
WRITE p_row TO l_row LEFT-JUSTIFIED.
READ TABLE gs_alv-gt_mx INTO gs_mx INDEX l_row.
CASE p_column.
WHEN ‘VGBEL’.
SET PARAMETER ID ‘AUN’ FIELD gs_mx-vgbel.
CALL TRANSACTION ‘VA03’ AND SKIP FIRST SCREEN.
WHEN 'VBELN'.
SET PARAMETER ID 'VL' FIELD gs_mx-vbeln.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM.