DATA ok_code TYPE sy-ucomm.
CLASS lcl_event_receiver DEFINITION DEFERRED.
CLASS cl_gui_cfw DEFINITION LOAD.
CLASS cl_gui_container DEFINITION LOAD.
DATA: go_grid TYPE REF TO cl_gui_alv_grid,
go_container TYPE REF TO cl_gui_custom_container,
go_receiver TYPE REF TO lcl_event_receiver,
gs_stbl TYPE lvc_s_stbl,
gv_soft,
gs_layout TYPE lvc_s_layo,
gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat TYPE lvc_s_fcat.
*-----------------------------------------------------------
DATA r_pernr TYPE RANGE OF persno WITH HEADER LINE.
*----------------------------------------------------------------------*
* CLASS lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS. "lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
DATA: ls_toolbar TYPE stb_button.
CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
* MOVE 'SEND' TO ls_toolbar-function.
move 'SEL' to ls_toolbar-function.
MOVE icon_ws_post TO ls_toolbar-icon.
MOVE '生成员工总体培训计划' TO ls_toolbar-quickinfo.
MOVE '生成' TO ls_toolbar-text.
* MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. "handle_toolbar
METHOD handle_user_command.
DATA: lt_rows TYPE lvc_t_row.
* DATA lt_error LIKE TABLE OF gs_error.
DATA LV_SUBRC TYPE SY-SUBRC.
CASE e_ucomm.
* WHEN 'SEND'.
when 'SEL'.
CALL METHOD go_grid->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
CALL METHOD cl_gui_cfw=>flush.
IF lt_rows[] IS NOT INITIAL.
* PERFORM selection_lines TABLES lt_rows
* Gt_error.
REFRESH GT_ERROR.
PERFORM selection_lines1 TABLES lt_rows
Gt_error
CHANGING LV_SUBRC.
IF GT_ERROR[] IS NOT INITIAL.
CALL SCREEN 300 STARTING AT 5 5
ENDING AT 100 20.
ELSE.
IF LV_SUBRC = 0.
MESSAGE '成功' TYPE 'S'.
ENDIF.
ENDIF.
* PERFORM SEND_EMAIL.
ELSE.
MESSAGE '请选择有效行' TYPE 'S'.
ENDIF.
ENDCASE.
ENDMETHOD. "handle_user_command
*-----------------------------------------------------------------
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
TABLES: pa0002, hrp1000, pa9602, pa0001, hrp9825.
*PARAMETERS P_PERNR TYPE PERSNO MATCHCODE OBJECT PREM obligatory.
*SELECT-OPTIONS s_pernr FOR pa0001-pernr MATCHCODE OBJECT prem NO INTERVALS.
SELECTION-SCREEN BEGIN OF SCREEN 1100 AS WINDOW.
PARAMETERS: p_begda TYPE begda OBLIGATORY,
p_year type ZZTEYJND as listbox VISIBLE LENGTH 10,
p_mon type ZZTEYJYF as listbox VISIBLE LENGTH 8.
SELECTION-SCREEN END OF SCREEN 1100.
START-OF-SELECTION.
GET pernr.
rp-provide-from-last p0002 space pn-begda pn-endda.
CHECK pnp-sw-found = 1.
r_pernr-sign = 'I'.
r_pernr-option = 'EQ'.
r_pernr-low = p0002-pernr.
APPEND r_pernr.
END-OF-SELECTION.
IF r_pernr[] IS INITIAL.
MESSAGE '没有数据' TYPE 'S'.
STOP.
ENDIF.
PERFORM get_data.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module status_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STA_0100'.
CLEAR ok_code.
SET TITLEBAR 'TIT_0100'.
IF go_grid IS NOT BOUND.
CREATE OBJECT go_grid
EXPORTING
i_parent = cl_gui_container=>screen0.
gs_layout-sel_mode = 'A'.
gs_layout-cwidth_opt = 'X'.
PERFORM get_fieldcatalog. "填充标题
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layout
CHANGING
it_outtab = gt_output[]
it_fieldcatalog = gt_fieldcat.
CREATE OBJECT go_receiver.
SET HANDLER go_receiver->handle_user_command FOR go_grid.
SET HANDLER go_receiver->handle_toolbar FOR go_grid.
CALL METHOD go_grid->set_toolbar_interactive.
ELSE.
gs_stbl-row = 'X'.
gs_stbl-col = 'X'.
gv_soft = 'X'.
CALL METHOD go_grid->refresh_table_display
EXPORTING
is_stable = gs_stbl
i_soft_refresh = gv_soft.
ENDIF.
ENDMODULE. " status_0100 OUTPUT
CLASS lcl_event_receiver DEFINITION DEFERRED.
CLASS cl_gui_cfw DEFINITION LOAD.
CLASS cl_gui_container DEFINITION LOAD.
DATA: go_grid TYPE REF TO cl_gui_alv_grid,
go_container TYPE REF TO cl_gui_custom_container,
go_receiver TYPE REF TO lcl_event_receiver,
gs_stbl TYPE lvc_s_stbl,
gv_soft,
gs_layout TYPE lvc_s_layo,
gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat TYPE lvc_s_fcat.
*-----------------------------------------------------------
DATA r_pernr TYPE RANGE OF persno WITH HEADER LINE.
*----------------------------------------------------------------------*
* CLASS lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS. "lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
DATA: ls_toolbar TYPE stb_button.
CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
* MOVE 'SEND' TO ls_toolbar-function.
move 'SEL' to ls_toolbar-function.
MOVE icon_ws_post TO ls_toolbar-icon.
MOVE '生成员工总体培训计划' TO ls_toolbar-quickinfo.
MOVE '生成' TO ls_toolbar-text.
* MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. "handle_toolbar
METHOD handle_user_command.
DATA: lt_rows TYPE lvc_t_row.
* DATA lt_error LIKE TABLE OF gs_error.
DATA LV_SUBRC TYPE SY-SUBRC.
CASE e_ucomm.
* WHEN 'SEND'.
when 'SEL'.
CALL METHOD go_grid->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
CALL METHOD cl_gui_cfw=>flush.
IF lt_rows[] IS NOT INITIAL.
* PERFORM selection_lines TABLES lt_rows
* Gt_error.
REFRESH GT_ERROR.
PERFORM selection_lines1 TABLES lt_rows
Gt_error
CHANGING LV_SUBRC.
IF GT_ERROR[] IS NOT INITIAL.
CALL SCREEN 300 STARTING AT 5 5
ENDING AT 100 20.
ELSE.
IF LV_SUBRC = 0.
MESSAGE '成功' TYPE 'S'.
ENDIF.
ENDIF.
* PERFORM SEND_EMAIL.
ELSE.
MESSAGE '请选择有效行' TYPE 'S'.
ENDIF.
ENDCASE.
ENDMETHOD. "handle_user_command
*-----------------------------------------------------------------
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
TABLES: pa0002, hrp1000, pa9602, pa0001, hrp9825.
*PARAMETERS P_PERNR TYPE PERSNO MATCHCODE OBJECT PREM obligatory.
*SELECT-OPTIONS s_pernr FOR pa0001-pernr MATCHCODE OBJECT prem NO INTERVALS.
SELECTION-SCREEN BEGIN OF SCREEN 1100 AS WINDOW.
PARAMETERS: p_begda TYPE begda OBLIGATORY,
p_year type ZZTEYJND as listbox VISIBLE LENGTH 10,
p_mon type ZZTEYJYF as listbox VISIBLE LENGTH 8.
SELECTION-SCREEN END OF SCREEN 1100.
START-OF-SELECTION.
GET pernr.
rp-provide-from-last p0002 space pn-begda pn-endda.
CHECK pnp-sw-found = 1.
r_pernr-sign = 'I'.
r_pernr-option = 'EQ'.
r_pernr-low = p0002-pernr.
APPEND r_pernr.
END-OF-SELECTION.
IF r_pernr[] IS INITIAL.
MESSAGE '没有数据' TYPE 'S'.
STOP.
ENDIF.
PERFORM get_data.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module status_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STA_0100'.
CLEAR ok_code.
SET TITLEBAR 'TIT_0100'.
IF go_grid IS NOT BOUND.
CREATE OBJECT go_grid
EXPORTING
i_parent = cl_gui_container=>screen0.
gs_layout-sel_mode = 'A'.
gs_layout-cwidth_opt = 'X'.
PERFORM get_fieldcatalog. "填充标题
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layout
CHANGING
it_outtab = gt_output[]
it_fieldcatalog = gt_fieldcat.
CREATE OBJECT go_receiver.
SET HANDLER go_receiver->handle_user_command FOR go_grid.
SET HANDLER go_receiver->handle_toolbar FOR go_grid.
CALL METHOD go_grid->set_toolbar_interactive.
ELSE.
gs_stbl-row = 'X'.
gs_stbl-col = 'X'.
gv_soft = 'X'.
CALL METHOD go_grid->refresh_table_display
EXPORTING
is_stable = gs_stbl
i_soft_refresh = gv_soft.
ENDIF.
ENDMODULE. " status_0100 OUTPUT