alv回车_如何实现ALV中回车带出其他栏位的值

本文介绍了如何在SAP ALV中处理data_changed_finished事件,当用户在'PERNR'字段回车后,自动从数据库获取并填充相关字段如'perna', 'werks', 'lgnum'等,同时处理可能的错误情况。" 123488912,12163668,CFA II Corporate Finance深度解析,"['财务管理', '投资分析', '金融理论', '股利分配', '企业并购']
摘要由CSDN通过智能技术生成

1.类定义

CLASS lcl_event_handler DEFINITION.

PUBLIC SECTION.

METHODS:

handle_data_changed_finished FOR EVENT data_changed_finished OF cl_gui_alv_grid IMPORTING e_modified et_good_cells,

handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid

IMPORTING e_object e_interactive.

ENDCLASS.                    "lcl_event_handler DEFINITION

DATA gs_toolbar  TYPE stb_button.

*----------------------------------------------------------------------*

*       CLASS lcl_event_handler IMPLEMENTATION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS lcl_event_handler IMPLEMENTATION.

METHOD handle_data_changed_finished.

PERFORM f_data_changed_finished USING e_modified et_good_cells.

ENDMETHOD.                    "handle_data_changed_finished

METHOD handle_toolbar.

ENDMETHOD.

ENDCLASS.

2。data_changed_finished 所响应的事件

FORM f_data_changed_finished  USING p_modified TYPE char1

pt_good_cells TYPE lvc_t_modi.

DATA: w_ih_modi TYPE lvc_s_modi,

w_ih_output TYPE typ_output.

DATA: w_pernr TYPE zwmt036-pernr,

w_zwmt036 TYPE zwmt036,

w_zwmt035 TYPE zwmt035,

w_zwmt126 TYPE zwmt126,

w_t300t TYPE t300t,

w_t30at TYPE t30at.

CHECK pt_good_cells IS NOT INITIAL.

CALL METHOD g_grid_9021->check_changed_data

*  IMPORTING

*    e_valid   =

*  CHANGING

*    c_refresh = 'X'

.

CLEAR flg_error.

LOOP AT pt_good_cells INTO w_ih_modi.

CLEAR w_ih_output.

READ TABLE g_it_output_show INTO w_ih_output INDEX w_ih_modi-row_id.

CASE w_ih_modi-fieldname.

WHEN 'PERNR'.

IF w_ih_modi-value IS INITIAL.

IF w_ih_output-perna IS NOT INITIAL.

CLEAR w_ih_output-perna.

MODIFY g_it_output_show[] FROM w_ih_output INDEX w_ih_modi-row_id.

ENDIF.

ELSE.

CLEAR: w_pernr,w_zwmt036.

SELECT SINGLE *

FROM zwmt036

INTO w_zwmt036

WHERE pernr = w_ih_modi-value.

IF sy-subrc IS INITIAL.

w_ih_output-perna = w_zwmt036-perna.

w_ih_output-werks = w_zwmt036-werks.

w_ih_output-lgnum = w_zwmt036-lgnum.

w_ih_output-kqbsf = w_zwmt036-kqbsf.

w_ih_output-kqtxt = w_zwmt036-kqtxt.

IF w_ih_output-werks NE p_werks.

flg_error = '1'.

ENDIF.

CLEAR w_t300t.

SELECT SINGLE *

FROM t300t

INTO w_t300t

WHERE spras = '1'

AND   lgnum = w_zwmt036-lgnum.

w_ih_output-lnumt = w_t300t-lnumt.

MODIFY g_it_output_show[] FROM w_ih_output INDEX w_ih_modi-row_id.

ELSE.

flg_error = '2'.

ENDIF.

ENDIF.

ENDCASE.

ENDLOOP.

CALL METHOD g_grid_9021->refresh_table_display

*    EXPORTING

*      is_stable      =

*      i_soft_refresh =

EXCEPTIONS

finished       = 1

OTHERS         = 2

.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

3.注册事件

这一步放在,pbo创建alv的时候。

CREATE OBJECT gcl_event_handler.

SET HANDLER gcl_event_handler->handle_data_changed_finished  FOR g_grid_9021.

CALL METHOD g_grid_9021->register_edit_event

EXPORTING

i_event_id = cl_gui_alv_grid=>mc_evt_modified

EXCEPTIONS

error      = 1

OTHERS     = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值