ALV-EDIT
来源:互联网 发布:mysql 多个字段排序 编辑:程序博客网 时间:2024/06/08 06:05
DATA:gr_table TYPE REF TO cl_salv_table.
DATA:gt_alv TYPE TABLE OF zsmtschd.
DATA: gt_mod TYPE TABLE OF zsmt_schp WITH HEADER LINE,
gt_mod_w TYPE TABLE OF zsmt_schp WITH HEADER LINE.
DATA:git_events TYPE slis_t_event. "ALV 事件
*----------------------------------------------------------------------*
* CLASS LCL_EVENT_RECEIVER DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS handle_modify
FOR EVENT data_changed_finished OF cl_gui_alv_grid
IMPORTING e_modified et_good_cells.
METHODS handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed e_onf4 e_onf4_before e_onf4_after e_ucomm.
ENDCLASS. "LCL_EVENT_RECEIVER DEFINITION
*----------------------------------------------------------------------*
* CLASS LCL_EVENT_RECEIVER IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_modify.
DATA stbl TYPE lvc_s_stbl.
ENDMETHOD. "HANDLE_MODIFY
METHOD handle_data_changed.
DATA stbl TYPE lvc_s_stbl.
PERFORM handle_data_changed USING er_data_changed. "处理受变化的数据
ENDMETHOD. "HANDLE_MODIFY
ENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTATION
DATA gt_event_receiver TYPE REF TO lcl_event_receiver .
DATA l_events TYPE LINE OF slis_t_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = git_events
EXCEPTIONS
list_type_wrong = 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.
l_events-name = 'CALLER_EXIT'.
l_events-form = 'FM_BUTTON'.
APPEND l_events TO git_events.
FORM fm_button USING e_grid TYPE slis_data_caller_exit.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
* EXPORTING
* IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
* ET_EXCLUDING =
* E_REPID =
* E_CALLBACK_PROGRAM =
* E_CALLBACK_ROUTINE =
e_grid = l_grid
* ET_FIELDCAT_LVC =
* ER_TRACE =
* E_FLG_NO_HTML =
* ES_LAYOUT_KKBLO =
* ES_SEL_HIDE =
* ET_EVENT_EXIT =
* ER_FORM_TOL =
* ER_FORM_EOL =
.
* 设置enter事件
CALL METHOD l_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter
EXCEPTIONS
error = 1
OTHERS = 2.
* 设置 单光标焦点移开被修改单元格后既触发事件
CALL METHOD l_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified
EXCEPTIONS
error = 1
OTHERS = 2.
CREATE OBJECT gt_event_receiver.
SET HANDLER gt_event_receiver->handle_modify FOR l_grid.
SET HANDLER gt_event_receiver->handle_data_changed FOR l_grid.
FORM handle_data_changed USING p_er_data_changed TYPE REF TO cl_alv_changed_data_protocol.
DATA:mod_data TYPE lvc_t_modi,
wa_mod_data TYPE lvc_s_modi.
DATA:l_htype LIKE dd01v-datatype.
FIELD-SYMBOLS: <fs_mod_rows> TYPE STANDARD TABLE,
<fs_cells> TYPE lvc_t_modi ,
<fs_cell_wa> TYPE lvc_s_modi .
FIELD-SYMBOLS: <ls_alv> LIKE LINE OF gt_alv.
IF NOT p_er_data_changed->mp_mod_rows IS INITIAL.
mod_data = p_er_data_changed->mt_mod_cells.
DATA:
ls_mod_w LIKE LINE OF gt_mod_w.
LOOP AT mod_data INTO wa_mod_data.
READ TABLE gt_alv ASSIGNING <ls_alv> INDEX wa_mod_data-row_id.
CASE wa_mod_data-fieldname.
WHEN 'ZHBPX'.
CALL FUNCTION 'NUMERIC_CHECK'
EXPORTING
string_in = wa_mod_data-value
IMPORTING
htype = l_htype.
IF l_htype <> 'NUMC' AND wa_mod_data-value IS NOT INITIAL.
MOVE-CORRESPONDING <ls_alv> TO gt_mod_w.
gt_mod_w-zhbpx = wa_mod_data-value.
APPEND gt_mod_w. CLEAR gt_mod_w.
MESSAGE e001(00) WITH '输入的值包含非数字'.
ELSE.
* 排除存在报错表中的数据,存需要记录进数据库表的数据
LOOP AT gt_mod_w WHERE schdn = <ls_alv>-schdn AND sponr = <ls_alv>-sponr.
DELETE gt_mod_w INDEX sy-tabix.
ENDLOOP.
MOVE-CORRESPONDING <ls_alv> TO gt_mod.
gt_mod-zhbpx = wa_mod_data-value.
APPEND gt_mod. CLEAR gt_mod.
* 更新ALV显示数据
<ls_alv>-zhbpx = wa_mod_data-value.
ENDIF.
ENDCASE.
ENDLOOP.
ENDIF.
ENDFORM. "handle_data_changed
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
it_fieldcat_lvc = l_alv_filedcat
is_layout_lvc = layout
i_save = 'A'
i_default = 'X'
i_callback_user_command = 'USER_COMMAND'
i_callback_pf_status_set = 'ALV_STATUS'
it_events = git_events
TABLES
t_outtab = gt_alv.
- ALV-EDIT
- alv edit cell dropdownlist
- 具有edit和save to db功能的ALV
- ALV
- alv
- ALV
- alv
- edit
- ALV事件
- alv macro
- alv tree
- alv tree
- alv 运用
- ALV总结
- ALV 输出
- alv细节
- ALV详解
- ALV详解
- hdu 1198 Farm Irrigation 并查集
- ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)
- AC自动机
- 新 Android在一个APP中通过包名或类名启动另一个APP
- 对字符串进行MD5处理
- ALV-EDIT
- Ngroke
- 第四周项目3-单链表应用(1)
- Application版本更新
- nginx动静分离html 页面
- android中的获取坐标
- iOS10适配汇总
- MFC 在线程中通过PostMessage更新界面主线程
- 用link标签实现 shortcut icon(给网页标题前添加一个小图标favicon.ico)