FORM frm_set_events .
** 设置自定义的ALV GUI STATUS
APPEND INITIAL LINE TO gt_events ASSIGNING FIELD-SYMBOL(<fs_pf_status_set>).
<fs_pf_status_set>-name = slis_ev_pf_status_set.
<fs_pf_status_set>-form = 'FRM_PF_STATUS_SET'.
** 设置用户事件USER COMMAND
APPEND INITIAL LINE TO gt_events ASSIGNING FIELD-SYMBOL(<fs_user_command>).
<fs_user_command>-name = slis_ev_user_command.
<fs_user_command>-form = 'FRM_USER_COMMAND'.
** 设置ALV执行控制
APPEND INITIAL LINE TO gt_events ASSIGNING FIELD-SYMBOL(<fs_caller_exit>).
<fs_caller_exit>-name = slis_ev_caller_exit_at_start.
<fs_caller_exit>-form = 'FRM_CALLER_EXIT'.
ENDFORM.
FORM frm_user_command USING uv_ucomm TYPE sy-ucomm
us_selfield TYPE slis_selfield.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = go_alvgrid.
CALL METHOD go_alvgrid->check_changed_data.
CASE uv_ucomm.
** 保存
WHEN c_submit.
PERFORM frm_create_pre USING cs_submit.
PERFORM frm_handle_data_submission2 USING cs_submit .
PERFORM frm_refresh_outtab_display.
WHEN c_check.
PERFORM frm_create_pre USING cs_check.
PERFORM frm_handle_data_submission2 USING cs_check.
PERFORM frm_refresh_outtab_display.
WHEN '&IC1' .
READ TABLE gt_out INDEX us_selfield-tabindex INTO gs_out.
us_selfield-fieldname = to_upper( us_selfield-fieldname ).
CASE us_selfield-fieldname.
WHEN 'LIGHT'.
PERFORM c14z_messages_show_as_popup
TABLES
gs_out-t_msg.
WHEN 'BELNR' OR 'GJAHR' OR 'BUKRS'.
CHECK gs_out-belnr IS NOT INITIAL .
CALL FUNCTION 'TRCA_FI_DOCUMENT_DISPLAY'
EXPORTING
companycode = gs_out-bukrs
document = gs_out-belnr
year = gs_out-gjahr.
WHEN OTHERS.
ENDCASE.
WHEN OTHERS.
ENDCASE.
ENDFORM.
FORM frm_caller_exit USING is_exit TYPE slis_data_caller_exit.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = go_alvgrid.
CALL METHOD go_alvgrid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter
EXCEPTIONS
error = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE c_succs NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE c_error.
LEAVE LIST-PROCESSING.
ENDIF.
CALL METHOD go_alvgrid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
CALL METHOD go_alvgrid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified
EXCEPTIONS
error = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE c_succs NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE c_error.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM.
这篇文章展示了如何在SAPABAP中设置和处理ALVGUISTATUS的自定义事件,包括USERCOMMAND事件(如保存和检查)以及CALLER_EXIT事件,用于注册编辑事件和数据验证。代码示例涉及到事件触发后的函数调用和业务逻辑处理。
1264

被折叠的 条评论
为什么被折叠?



