TYPE-POOLS: slis.
**ALV
DATA:gt_event_exit TYPE slis_t_event_exit.
DATA:gs_event_exit TYPE slis_event_exit.
DATA:gt_fieldcat TYPE lvc_t_fcat WITH HEADER LINE.
DATA:gc_glay TYPE lvc_s_glay.
DATA:gs_layout TYPE lvc_s_layo, “SLIS_LAYOUT_ALV,
wk_repid LIKE sy-repid.
DATA:gs_grid TYPE lvc_s_glay.
DATA:tem_grid TYPE REF TO cl_gui_alv_grid.
DATA:gt_events TYPE slis_t_event.
DATA:gs_events LIKE LINE OF gt_events.
ALV标准接口类:CL_GUI_ALV_GRID
类定义:
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.
ENDCLASS.
类实现:
CLASS lcl_event_receiver IMPLEMENTATION. “实现类 处理回车事件重点内容
METHOD handle_modify.重点内容
ENDMETHOD. “HANDLE_MODIFY
ENDCLASS. “LCL_EVENT_RECEIVER IMPLEMENTATION
DEFINE fill_alv.
CLEAR gt_fieldcat.
gt_fieldcat-fieldname = &1.
gt_fieldcat-scrtext_m = &2 .
gt_fieldcat-outputlen = &3.
gt_fieldcat-decimals_o = &4.
* begin add by yangq 保留小数点 不要去除小数点代码
* gt_fieldcat-decimals_o = 0.
* gt_fieldcat-decimals = 0.
* end add by yangq 保留小数点 不要去除小数点代码 .
APPEND gt_fieldcat.
END-OF-DEFINITION.
调用宏:
fill_alv ‘ZBZ’ ‘备注 ’ ‘10’ ”.
LOOP AT gt_fieldcat WHERE fieldname = ‘CHK’ OR fieldname = ‘ZMC’ OR fieldname = ‘ZZT’ OR fieldname = ‘ZBZ’.
- IF gt_fieldcat-fieldname = ‘CHK’.
- gt_fieldcat-checkbox = ‘X’.
- gt_fieldcat-edit = ‘X’.
- gt_fieldcat-fix_column = ‘X’.
ENDIF.
IF gt_fieldcat-fieldname = ‘ZMC’ OR gt_fieldcat-fieldname = ‘ZZT’ OR gt_fieldcat-fieldname = ‘ZBZ’.
gt_fieldcat-edit = ‘X’.
IF gt_fieldcat-fieldname = ‘ZMC’.
gt_fieldcat-ref_field = ‘ZMC’.
gt_fieldcat-ref_table = ‘ZCLFS’.
ELSEIF gt_fieldcat-fieldname = ‘ZZT’.
gt_fieldcat-ref_field = ‘ZZT’.
gt_fieldcat-ref_table = ‘ZCLJL’.
ELSEIF gt_fieldcat-fieldname = ‘ZBZ’.
gt_fieldcat-ref_field = ‘ZBZ’.
gt_fieldcat-ref_table = ‘ZCLJL’.
ENDIF.ENDIF.
MODIFY gt_fieldcat.
ENDLOOP.
gs_events-name = ‘CALLER_EXIT’.
gs_events-form = ‘CALLER_EXIT’.
APPEND gs_events TO gt_events.CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = ‘USER_COMMAND’- I_CALLBACK_TOP_OF_PAGE = ‘TOP_OF_PAGE’
i_callback_pf_status_set = ‘SET_PF’
it_fieldcat_lvc = gt_fieldcat[] - i_grid_settings = gs_grid
is_layout_lvc = gs_layout
i_save = ‘X’ it_events = gt_events
TABLES
t_outtab = result.
FORM user_command USING rf_ucomm LIKE sy-ucomm
rs TYPE slis_selfield . “#EC CALLED
DATA: wl_answer TYPE c.
DATA: lr_grid TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = lr_grid.
CALL METHOD lr_grid->check_changed_data.
DATA:p_count TYPE i.
rs-refresh = ‘X’. “自动刷新CASE rf_ucomm.
WHEN ‘&WLGZ’.
CLEAR wl_answer.
CALL FUNCTION ‘POPUP_TO_CONFIRM’
EXPORTING
text_question = ‘确定要保存数据吗?’
icon_button_1 = ‘是’ “是
icon_button_2 = ‘否’ “否
default_button = ‘2’
display_cancel_button = ”
start_column = 25
start_row = 6
IMPORTING
answer = wl_answer
EXCEPTIONS
text_not_found = 1
OTHERS = 2.IF wl_answer = ‘1’.
PERFORM frm_flgz.
ENDIF.
WHEN ‘&SALL’.- LOOP AT itab.
- itab-chk = ‘X’.
- MODIFY itab.
- CLEAR itab.
- ENDLOOP.
WHEN ‘&SCLL’. - LOOP AT itab.
- itab-chk = ”.
- MODIFY itab.
- CLEAR itab.
ENDLOOP.
ENDCASE.rs-refresh = ‘X’.
ENDFORM. ” USER_COMMAND