标准ALV按钮功能实现弹框显示新ALV-使用SALV实现

在这里插入图片描述

”声明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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放弃幻想_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值