我有一个带有可编辑字段的ALV网格,如果我检查输入的数据并显示错误,ALV更新,如果我试图更改输入数据,其他情况下ALV不再更新。
PAI中的代码是:
ls_layout-cwidth_opt = abap_true.
CREATE OBJECT go_alv
EXPORTING
i_parent = cl_gui_custom_container=>screen0
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5.
IF sy-subrc EQ 0.
* Adapting field catalog
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZAMOUNT'
CHANGING
ct_fieldcat = lt_fieldcat.
IF sy-subrc EQ 0.
* Field catalog specifics
LOOP AT lt_fieldcat ASSIGNING <ls_fieldcat>.
IF <ls_fieldcat>-fieldname = 'DMBTR'.
<ls_fieldcat>-edit = abap_true.
ENDIF.
ENDLOOP.
ENDIF.
* Show data usig ALV class
go_alv->set_table_for_first_display(
EXPORTING
is_layout = ls_layout
CHANGING
it_outtab = gt_out
it_fieldcatalog = lt_fieldcat ).
go_alv->set_ready_for_input( EXPORTING
i_ready_for_input = 1 ).
CALL METHOD go_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
CALL METHOD go_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
ENDIF.PBO中的代码是:
IF go_alv IS NOT INITIAL.
CALL METHOD go_alv->check_changed_data( ).
PERFORM check_amounts TABLES gt_out
CHANGING gv_sum_amounts
gv_tot_amount.
CALL METHOD go_alv->refresh_table_display
EXPORTING
is_stable = VALUE #( row = abap_true
col = abap_true )
i_soft_refresh = 'X'.
cl_gui_cfw=>flush( ).
ENDIF.在执行check_amounts中,如果用户修改了输入字段,并且在内部表中删除了错误,但在ALV中没有显示错误,则我将使用这些错误填充ALV的一个字段。
我还试图通过调用内部刷新来实现data_change_finished方法,但没有解决异常。
你能帮帮我吗?谢谢
发布于 2021-03-03 15:21:45
我不太清楚我是否理解你的问题,但以下是一些潜在的问题:
的方法中,您将刷新的时间提前到.
我尝试定义一个本地类来处理data_changed和data_changed_finished事件,并将check_amount和刷新放在data_changed_finished事件的方法中。也许这些对你有帮助?如果您对此有任何疑问,请告诉我,我可以详细介绍。
问候
https://stackoverflow.com/questions/66447451
复制相似问题