**************************************************************4**********
* TRANSATION ID :
* PROGRAM TITLE : ZFID
* AUTHOR :
* SUPPLIER :
* DATE :
* DEVELOPMENT ID : ZFID
* CHANGE REQUEST (CTS) :
* DESCRIPTION :
*=======================================================================
* COPIED FROM : (CLONED PROGRAM)
* TITLE : (PROGRAM TITLE)
* OTHER RELATED OBJ : (OBJECT NAMES)
*=======================================================================
* CHANGE HISTORY LOG
*-----------------------------------------------------------------------
* MOD. NO.| DATE | NAME | CORRECTION NUMBER | CHANGE REFE
*-----------------------------------------------------------------------
* MOD-001 |YYYY.MM.DD| XXXXXXXXXXXXXX | XXXXXXXXXX | XXXXXXXXXX
*
* DESCRIPTION:
*-----------------------------------------------------------------------
* MOD-002 |YYYY.MM.DD| XXXXXXXXXXXXXX | XXXXXXXXXX | XXXXXXXXXX
*
* DESCRIPTION:
************************************************************************
REPORT zfid1146 MESSAGE-ID 00 NO STANDARD PAGE HEADING.
DATA: date_from TYPE sy-datum,
date_to TYPE sy-datum,
return_code TYPE sy-subrc.
DATA: gt_attributes TYPE STANDARD TABLE OF casdayattr,
gs_attributes TYPE casdayattr.
*--------------------------------------------------------------------*
TYPES:BEGIN OF typ_alv,
id(10) TYPE i,
ms TYPE char10,
z1 TYPE char8,
z2 TYPE char8,
z3 TYPE char8,
z4 TYPE char8,
z5 TYPE char8,
z6 TYPE char8,
z7 TYPE char8,
d1 TYPE datum,
d2 TYPE datum,
d3 TYPE datum,
d4 TYPE datum,
d5 TYPE datum,
d6 TYPE datum,
d7 TYPE datum,
cellcolor TYPE lvc_t_scol,
END OF typ_alv.
DATA:gt_alv TYPE STANDARD TABLE OF typ_alv,
gs_alv TYPE typ_alv.
DATA:gt_ztfi0425 TYPE STANDARD TABLE OF ztfi0425,
gs_ztfi0425 TYPE ztfi0425.
DATA:id(10) TYPE i.
*--------------------------------------------------------------------*
*---------------------------------------------------------------------*
* alv component *
*---------------------------------------------------------------------*
DATA: gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat TYPE lvc_s_fcat,
gs_layout TYPE lvc_s_layo,
gt_sort TYPE lvc_t_sort,
gs_sort TYPE lvc_s_sort,
go_grid TYPE REF TO cl_gui_alv_grid,
go_custom_container TYPE REF TO cl_gui_custom_container.
DATA: gs_stable TYPE lvc_s_stbl. " 刷新
CLASS lcl_event_receiver DEFINITION DEFERRED.
DATA: o_event_receiver TYPE REF TO lcl_event_receiver.
DATA: ok_code TYPE sy-ucomm.
DATA: save_ok TYPE sy-ucomm.
*--------------------------------------------------------------------*
PARAMETERS :p_gjahr TYPE gjahr OBLIGATORY DEFAULT sy-datum+0(4).
DATA gs_cellcolor TYPE lvc_s_scol . " 单元格颜色结构
DATA gt_cellcolor TYPE lvc_t_scol.
DEFINE set_color.
gs_cellcolor-fname = &1.
gs_cellcolor-color-col = '3'.
gs_cellcolor-color-int = '1'.
gs_cellcolor-color-inv = '0'.
APPEND gs_cellcolor TO gt_cellcolor.
END-OF-DEFINITION.
DEFINE set_color1.
gs_cellcolor-fname = &1.
gs_cellcolor-color-col = '2'.
gs_cellcolor-color-int = '1'.
gs_cellcolor-color-inv = '0'.
APPEND gs_cellcolor TO gt_cellcolor.
END-OF-DEFINITION.
DEFINE set_color2.
gs_cellcolor-fname = &1.
gs_cellcolor-color-col = '4'.
gs_cellcolor-color-int = '1'.
gs_cellcolor-color-inv = '0'.
APPEND gs_cellcolor TO gt_cellcolor.
END-OF-DEFINITION.
*&---------------------------------------------------------------------*
*& 包含 ZFID044_C01
*&---------------------------------------------------------------------*
*****************************定义类
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.
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
PERFORM set_toolbar CHANGING e_object." e_interactive.
ENDMETHOD.
METHOD handle_user_command.
PERFORM handle_user_command_alv USING e_ucomm.
ENDMETHOD.
ENDCLASS. "lcl_event_receiver
START-OF-SELECTION.
PERFORM sel_data.
* PERFORM dis_data.
*&---------------------------------------------------------------------*
*& Form SEL_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sel_data .
date_from = p_gjahr && '0101'.
date_to = p_gjahr && '1231'.
SELECT * FROM ztfi0425 INTO TABLE gt_ztfi0425
WHERE datum >= date_from
AND datum <= date_to.
SORT gt_ztfi0425 BY datum.
CALL FUNCTION 'DAY_ATTRIBUTES_GET'
EXPORTING
factory_calendar = ' ' "工厂日历ID
holiday_calendar = ' ' "假期日历ID
date_from = date_from "开始日期
date_to = date_to "截止日期
language = sy-langu "系统当前语言
non_iso = ' '
* IMPORTING
* year_of_valid_from = year_of_valid_from
* year_of_valid_to = year_of_valid_to
* returncode = return_code
TABLES
day_attributes = gt_attributes "返回日期每日属性
EXCEPTIONS
factory_calendar_not_found = 1
holiday_calendar_not_found = 2
date_has_invalid_format = 3
date_inconsistency = 4
OTHERS = 5.
DATA:lv_zsfjj TYPE char1.
LOOP AT gt_attributes INTO gs_attributes.
IF gs_attributes-date = date_from.
gs_alv-ms = date_from+0(6).
ELSE.
IF gs_attributes-weekday = '1'.
IF gs_alv-ms IS INITIAL.
gs_alv-ms = gs_attributes-date+0(6).
ENDIF.
ENDIF.
ENDIF.
IF gt_ztfi0425[] IS NOT INITIAL.
CLEAR:lv_zsfjj.
READ TABLE gt_ztfi0425 INTO gs_ztfi0425 WITH KEY datum = gs_attributes-date BINARY SEARCH.
IF gs_ztfi0425-sfjjr = 'X'.
lv_zsfjj = 'X'.
ENDIF.
CASE gs_attributes-date+4(2).
WHEN '01' OR '03' OR '05' OR '07' OR '09' OR '11'.
IF gs_attributes-weekday = '1'.
gs_alv-z1 = gs_attributes-date+6(2).
gs_alv-d1 = gs_attributes-date.
IF lv_zsfjj = 'X'.
set_color 'Z1'.
ELSE.
set_color1 'Z1'.
ENDIF.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '2'.
gs_alv-z2 = gs_attributes-date+6(2).
gs_alv-d2 = gs_attributes-date.
IF lv_zsfjj = 'X'.
set_color 'Z2'.
ELSE.
set_color1 'Z2'.
ENDIF.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '3'.
gs_alv-z3 = gs_attributes-date+6(2).
gs_alv-d3 = gs_attributes-date.
IF lv_zsfjj = 'X'.
set_color 'Z3'.
ELSE.
set_color1 'Z3'.
ENDIF.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '4'.
gs_alv-z4 = gs_attributes-date+6(2).
gs_alv-d4 = gs_attributes-date.
IF lv_zsfjj = 'X'.
set_color 'Z4'.
ELSE.
set_color1 'Z4'.
ENDIF.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '5'.
gs_alv-z5 = gs_attributes-date+6(2).
gs_alv-d5 = gs_attributes-date.
IF lv_zsfjj = 'X'.
set_color 'Z5'.
ELSE.
set_color1 'Z5'.
ENDIF.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '6'.
gs_alv-z6 = gs_attributes-date+6(2).
gs_alv-d6 = gs_attributes-date.
IF lv_zsfjj = 'X'.
set_color 'Z6'.
ELSE.
set_color1 'Z6'.
ENDIF.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '7'.
gs_alv-z7 = gs_attributes-date+6(2).
gs_alv-d7 = gs_attributes-date.
IF lv_zsfjj = 'X'.
set_color 'Z7'.
ELSE.
set_color1 'Z7'.
ENDIF.
gs_alv-cellcolor = gt_cellcolor.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
CLEAR:gt_cellcolor[].
ENDIF.
WHEN '02' OR '04' OR '06' OR '08' OR '10' OR '12'.
IF gs_attributes-weekday = '1'.
gs_alv-z1 = gs_attributes-date+6(2).
gs_alv-d1 = gs_attributes-date.
IF lv_zsfjj = 'X'.
set_color 'Z1'.
ELSE.
set_color2 'Z1'.
ENDIF.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '2'.
gs_alv-z2 = gs_attributes-date+6(2).
gs_alv-d2 = gs_attributes-date.
IF lv_zsfjj = 'X'.
set_color 'Z2'.
ELSE.
set_color2 'Z2'.
ENDIF.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '3'.
gs_alv-z3 = gs_attributes-date+6(2).
gs_alv-d3 = gs_attributes-date.
IF lv_zsfjj = 'X'.
set_color 'Z3'.
ELSE.
set_color2 'Z3'.
ENDIF.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '4'.
gs_alv-z4 = gs_attributes-date+6(2).
gs_alv-d4 = gs_attributes-date.
IF lv_zsfjj = 'X'.
set_color 'Z4'.
ELSE.
set_color2 'Z4'.
ENDIF.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '5'.
gs_alv-z5 = gs_attributes-date+6(2).
gs_alv-d5 = gs_attributes-date.
IF lv_zsfjj = 'X'.
set_color 'Z5'.
ELSE.
set_color2 'Z5'.
ENDIF.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '6'.
gs_alv-z6 = gs_attributes-date+6(2).
gs_alv-d6 = gs_attributes-date.
IF lv_zsfjj = 'X'.
set_color 'Z6'.
ELSE.
set_color2 'Z6'.
ENDIF.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '7'.
gs_alv-z7 = gs_attributes-date+6(2).
gs_alv-d7 = gs_attributes-date.
IF lv_zsfjj = 'X'.
set_color 'Z7'.
ELSE.
set_color2 'Z7'.
ENDIF.
gs_alv-cellcolor = gt_cellcolor.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
CLEAR:gt_cellcolor[].
ENDIF.
WHEN OTHERS.
ENDCASE.
ELSE.
CASE gs_attributes-date+4(2).
WHEN '01' OR '03' OR '05' OR '07' OR '09' OR '11'.
IF gs_attributes-weekday = '1'.
gs_alv-z1 = gs_attributes-date+6(2).
gs_alv-d1 = gs_attributes-date.
set_color1 'Z1'.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '2'.
gs_alv-z2 = gs_attributes-date+6(2).
gs_alv-d2 = gs_attributes-date.
set_color1 'Z2'.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '3'.
gs_alv-z3 = gs_attributes-date+6(2).
gs_alv-d3 = gs_attributes-date.
set_color1 'Z3'.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '4'.
gs_alv-z4 = gs_attributes-date+6(2).
gs_alv-d4 = gs_attributes-date.
set_color1 'Z4'.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '5'.
gs_alv-z5 = gs_attributes-date+6(2).
gs_alv-d5 = gs_attributes-date.
set_color1 'Z5'.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '6'.
gs_alv-z6 = gs_attributes-date+6(2).
gs_alv-d6 = gs_attributes-date.
set_color 'Z6'.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '7'.
gs_alv-z7 = gs_attributes-date+6(2).
gs_alv-d7 = gs_attributes-date.
set_color 'Z7'.
gs_alv-cellcolor = gt_cellcolor.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
CLEAR:gt_cellcolor[].
ENDIF.
WHEN '02' OR '04' OR '06' OR '08' OR '10' OR '12'.
IF gs_attributes-weekday = '1'.
gs_alv-z1 = gs_attributes-date+6(2).
gs_alv-d1 = gs_attributes-date.
set_color2 'Z1'.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '2'.
gs_alv-z2 = gs_attributes-date+6(2).
gs_alv-d2 = gs_attributes-date.
set_color2 'Z2'.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '3'.
gs_alv-z3 = gs_attributes-date+6(2).
gs_alv-d3 = gs_attributes-date.
set_color2 'Z3'.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '4'.
gs_alv-z4 = gs_attributes-date+6(2).
gs_alv-d4 = gs_attributes-date.
set_color2 'Z4'.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '5'.
gs_alv-z5 = gs_attributes-date+6(2).
gs_alv-d5 = gs_attributes-date.
set_color2 'Z5'.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '6'.
gs_alv-z6 = gs_attributes-date+6(2).
gs_alv-d6 = gs_attributes-date.
set_color 'Z6'.
gs_alv-cellcolor = gt_cellcolor.
ELSEIF gs_attributes-weekday = '7'.
gs_alv-z7 = gs_attributes-date+6(2).
gs_alv-d7 = gs_attributes-date.
set_color 'Z7'.
gs_alv-cellcolor = gt_cellcolor.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
CLEAR:gt_cellcolor[].
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDIF.
IF gs_attributes-date = date_to AND gs_attributes-weekday NE 7.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
CLEAR:gt_cellcolor[].
ENDIF.
ENDLOOP.
IF gt_ztfi0425[] IS INITIAL.
LOOP AT gt_attributes INTO gs_attributes.
gs_ztfi0425-datum = gs_attributes-date.
IF gs_attributes-weekday = '6' OR gs_attributes-weekday = '7'.
gs_ztfi0425-sfjjr = 'X'.
ENDIF.
APPEND gs_ztfi0425 TO gt_ztfi0425.
CLEAR:gs_ztfi0425.
ENDLOOP.
ENDIF.
LOOP AT gt_alv INTO gs_alv.
id = id + 1.
gs_alv-id = id.
MODIFY gt_alv FROM gs_alv.
ENDLOOP.
CALL SCREEN 100.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS '100'.
SET TITLEBAR '100'.
PERFORM frm_alv.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_alv .
IF go_custom_container IS INITIAL.
CREATE OBJECT go_custom_container
EXPORTING
container_name = 'CON1'.
CREATE OBJECT go_grid
EXPORTING
i_parent = go_custom_container.
PERFORM prepare_field_catalog.
PERFORM prepare_layout CHANGING gs_layout .
PERFORM frm_alv_display.
CREATE OBJECT o_event_receiver."创造事件对象
* 注册附件上传alv事件
SET HANDLER o_event_receiver->handle_toolbar FOR go_grid.
SET HANDLER o_event_receiver->handle_user_command FOR go_grid.
* SET HANDLER o_event_receiver->handle_hotspot_click FOR go_grid .
CALL METHOD go_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CALL METHOD go_grid->set_toolbar_interactive.
ENDIF.
go_grid->refresh_table_display( is_stable = gs_stable ).
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PREPARE_FIELD_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM prepare_field_catalog .
DATA ls_fcat TYPE lvc_s_fcat .
DATA:lt_fieldcat TYPE slis_t_fieldcat_alv.
DATA:gs_fieldcat LIKE LINE OF lt_fieldcat.
DEFINE add_fcat.
CLEAR ls_fcat.
lv_ipos = lv_ipos + 1.
ls_fcat-col_pos = lv_ipos.
ls_fcat-fieldname = &1.
ls_fcat-reptext = &2.
ls_fcat-outputlen = &3.
ls_fcat-ref_field = &4.
ls_fcat-ref_table = &5.
ls_fcat-no_zero = 'X'.
ls_fcat-just = 'L'.
ls_fcat-edit = ''.
APPEND ls_fcat TO gt_fieldcat.
END-OF-DEFINITION.
DATA: lv_ipos TYPE i.
add_fcat 'MS' '描述' '6' '' '' ." ."
add_fcat 'Z1' '周一' '4' '' '' ." ."
add_fcat 'Z2' '周二' '4' '' '' ." ."
add_fcat 'Z3' '周三' '4' '' '' ." ."
add_fcat 'Z4' '周四' '4' '' '' ." ."
add_fcat 'Z5' '周五' '4' '' '' ." ."
add_fcat 'Z6' '周六' '4' '' '' ." ."
add_fcat 'Z7' '周日' '4' '' '' ." ."
gs_sort-fieldname = 'MS'.
gs_sort-up = 'X'.
gs_sort-subtot = 'X'.
APPEND gs_sort TO gt_sort.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form prepare_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GS_LAYOUT text
*----------------------------------------------------------------------*
FORM prepare_layout CHANGING ps_layout TYPE lvc_s_layo.
* 布局设置
ps_layout-zebra = 'X' .
ps_layout-sel_mode = 'D'.
* ps_layout-cwidth_opt = 'X'.
ps_layout-box_fname = 'SEL'.
ps_layout-ctab_fname = 'CELLCOLOR'. "一定要大写
ENDFORM. " prepare_layout
*&---------------------------------------------------------------------*
*& Form FRM_ALV_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_alv_display .
DATA: lt_excluding TYPE ui_functions,
ls_excluding LIKE LINE OF lt_excluding.
DATA: is_variant TYPE disvariant.
ls_excluding = cl_gui_alv_grid=>mc_fc_check.
APPEND ls_excluding TO lt_excluding.
ls_excluding = cl_gui_alv_grid=>mc_fc_loc_paste.
APPEND ls_excluding TO lt_excluding.
ls_excluding = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
APPEND ls_excluding TO lt_excluding.
ls_excluding = cl_gui_alv_grid=>mc_fc_loc_append_row.
APPEND ls_excluding TO lt_excluding.
ls_excluding = cl_gui_alv_grid=>mc_fc_loc_copy.
APPEND ls_excluding TO lt_excluding.
ls_excluding = cl_gui_alv_grid=>mc_fc_loc_copy_row.
APPEND ls_excluding TO lt_excluding.
ls_excluding = cl_gui_alv_grid=>mc_fc_loc_cut.
APPEND ls_excluding TO lt_excluding.
ls_excluding = cl_gui_alv_grid=>mc_fc_loc_undo.
APPEND ls_excluding TO lt_excluding.
go_grid->set_table_for_first_display(
EXPORTING
i_save = 'X'
is_layout = gs_layout
it_toolbar_excluding = lt_excluding
CHANGING
it_outtab = gt_alv
it_fieldcatalog = gt_fieldcat
it_sort = gt_sort
).
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SET_TOOLBAR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_E_OBJECT text
*----------------------------------------------------------------------*
FORM set_toolbar CHANGING prf_object TYPE REF TO cl_alv_event_toolbar_set.
DATA: ls_toolbar TYPE stb_button.
DATA: lt_toolbar TYPE TABLE OF stb_button.
DATA: ls_icon TYPE icon.
* CLEAR prf_object->mt_toolbar[].
CLEAR ls_toolbar.
MOVE 'ZJR' TO ls_toolbar-function.
MOVE '节假日' TO ls_toolbar-quickinfo.
* MOVE icon_insert_row TO ls_toolbar-icon.
MOVE '节假日' TO ls_toolbar-text.
MOVE '' TO ls_toolbar-disabled.
INSERT ls_toolbar INTO prf_object->mt_toolbar INDEX 23.
CLEAR ls_toolbar.
MOVE 'ZGZ' TO ls_toolbar-function.
MOVE '工作日' TO ls_toolbar-quickinfo.
* MOVE icon_delete_row TO ls_toolbar-icon.
MOVE '工作日' TO ls_toolbar-text.
MOVE '' TO ls_toolbar-disabled.
INSERT ls_toolbar INTO prf_object->mt_toolbar INDEX 24.
CLEAR ls_toolbar.
MOVE 'ZBC' TO ls_toolbar-function.
MOVE '保存' TO ls_toolbar-quickinfo.
* MOVE icon_delete_row TO ls_toolbar-icon.
MOVE '保存' TO ls_toolbar-text.
MOVE '' TO ls_toolbar-disabled.
INSERT ls_toolbar INTO prf_object->mt_toolbar INDEX 25.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form HANDLE_USER_COMMAND_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_UCOMM text
*----------------------------------------------------------------------*
FORM handle_user_command_alv USING e_ucomm.
DATA: gt_cell TYPE lvc_t_cell.
DATA: gs_cell TYPE lvc_s_cell.
DATA: lt_rowid TYPE lvc_t_row,
lw_rowid TYPE lvc_s_row,
lt_row TYPE lvc_t_roid.
DATA: gt_columns TYPE lvc_t_col,
gs_columns TYPE lvc_s_col.
DATA: lv_col(10) TYPE i.
DATA: lv_index(10) TYPE i.
DATA: lv_datum TYPE datum.
DATA: lv_lines TYPE i.
CASE e_ucomm.
WHEN 'ZJR'.
go_grid->get_selected_cells( IMPORTING et_cell = gt_cell ).
IF gt_cell[] IS INITIAL.
CALL METHOD go_grid->get_selected_rows(
IMPORTING
et_index_rows = lt_rowid
et_row_no = lt_row ).
IF lt_rowid[] IS NOT INITIAL.
LOOP AT lt_rowid INTO lw_rowid.
gs_cell-row_id-index = lw_rowid-index.
gs_cell-col_id = 'Z1'.APPEND gs_cell TO gt_cell.
gs_cell-col_id = 'Z2'.APPEND gs_cell TO gt_cell.
gs_cell-col_id = 'Z3'.APPEND gs_cell TO gt_cell.
gs_cell-col_id = 'Z4'.APPEND gs_cell TO gt_cell.
gs_cell-col_id = 'Z5'.APPEND gs_cell TO gt_cell.
gs_cell-col_id = 'Z6'.APPEND gs_cell TO gt_cell.
gs_cell-col_id = 'Z7'.APPEND gs_cell TO gt_cell.
CLEAR:lw_rowid.
ENDLOOP.
ELSE.
go_grid->get_selected_columns( IMPORTING et_index_columns = gt_columns ).
CLEAR:lv_lines.
lv_lines = lines( gt_alv ).
LOOP AT gt_columns INTO gs_columns.
CLEAR:lv_index.
lv_index = 1.
gs_cell-col_id = gs_columns-fieldname.
DO lv_lines TIMES.
gs_cell-row_id-index = lv_index.
lv_index = lv_index + 1.
APPEND gs_cell TO gt_cell.
ENDDO.
CLEAR:gs_columns.
ENDLOOP.
ENDIF.
ENDIF.
LOOP AT gt_cell INTO gs_cell.
CLEAR:lv_datum.
READ TABLE gt_alv INTO gs_alv INDEX gs_cell-row_id.
IF gs_cell-col_id = 'Z1'.
lv_datum = gs_alv-d1.
ELSEIF gs_cell-col_id = 'Z2'.
lv_datum = gs_alv-d2.
ELSEIF gs_cell-col_id = 'Z3'.
lv_datum = gs_alv-d3.
ELSEIF gs_cell-col_id = 'Z4'.
lv_datum = gs_alv-d4.
ELSEIF gs_cell-col_id = 'Z5'.
lv_datum = gs_alv-d5.
ELSEIF gs_cell-col_id = 'Z6'.
lv_datum = gs_alv-d6.
ELSEIF gs_cell-col_id = 'Z7'.
lv_datum = gs_alv-d7.
ENDIF.
READ TABLE gt_ztfi0425 INTO gs_ztfi0425 WITH KEY datum = lv_datum BINARY SEARCH.
gs_ztfi0425-sfjjr = 'X'.
MODIFY gt_ztfi0425 FROM gs_ztfi0425 TRANSPORTING sfjjr WHERE datum = lv_datum.
id = gs_cell-row_id-index.
gt_cellcolor = gs_alv-cellcolor.
LOOP AT gt_cellcolor INTO gs_cellcolor WHERE fname = gs_cell-col_id.
gs_cellcolor-color-col = '3'.
MODIFY gt_cellcolor FROM gs_cellcolor.
ENDLOOP.
gs_alv-cellcolor = gt_cellcolor.
MODIFY gt_alv FROM gs_alv TRANSPORTING cellcolor WHERE id = id.
CLEAR:gs_cell,gs_alv,gs_ztfi0425.
ENDLOOP.
WHEN 'ZGZ'.
go_grid->get_selected_cells( IMPORTING et_cell = gt_cell ).
IF gt_cell[] IS INITIAL.
CALL METHOD go_grid->get_selected_rows(
IMPORTING
et_index_rows = lt_rowid
et_row_no = lt_row ).
IF lt_rowid[] IS NOT INITIAL.
LOOP AT lt_rowid INTO lw_rowid.
gs_cell-row_id-index = lw_rowid-index.
gs_cell-col_id = 'Z1'.APPEND gs_cell TO gt_cell.
gs_cell-col_id = 'Z2'.APPEND gs_cell TO gt_cell.
gs_cell-col_id = 'Z3'.APPEND gs_cell TO gt_cell.
gs_cell-col_id = 'Z4'.APPEND gs_cell TO gt_cell.
gs_cell-col_id = 'Z5'.APPEND gs_cell TO gt_cell.
gs_cell-col_id = 'Z6'.APPEND gs_cell TO gt_cell.
gs_cell-col_id = 'Z7'.APPEND gs_cell TO gt_cell.
CLEAR:lw_rowid.
ENDLOOP.
ELSE.
go_grid->get_selected_columns( IMPORTING et_index_columns = gt_columns ).
CLEAR:lv_lines.
lv_lines = lines( gt_alv ).
LOOP AT gt_columns INTO gs_columns.
CLEAR:lv_index.
lv_index = 1.
gs_cell-col_id = gs_columns-fieldname.
DO lv_lines TIMES.
gs_cell-row_id-index = lv_index.
lv_index = lv_index + 1.
APPEND gs_cell TO gt_cell.
ENDDO.
CLEAR:gs_columns.
ENDLOOP.
ENDIF.
ENDIF.
LOOP AT gt_cell INTO gs_cell.
CLEAR:lv_col.
CLEAR:lv_datum.
READ TABLE gt_alv INTO gs_alv INDEX gs_cell-row_id.
IF gs_cell-col_id = 'Z1'.
lv_datum = gs_alv-d1.
ELSEIF gs_cell-col_id = 'Z2'.
lv_datum = gs_alv-d2.
ELSEIF gs_cell-col_id = 'Z3'.
lv_datum = gs_alv-d3.
ELSEIF gs_cell-col_id = 'Z4'.
lv_datum = gs_alv-d4.
ELSEIF gs_cell-col_id = 'Z5'.
lv_datum = gs_alv-d5.
ELSEIF gs_cell-col_id = 'Z6'.
lv_datum = gs_alv-d6.
ELSEIF gs_cell-col_id = 'Z7'.
lv_datum = gs_alv-d7.
ENDIF.
READ TABLE gt_ztfi0425 INTO gs_ztfi0425 WITH KEY datum = lv_datum BINARY SEARCH.
gs_ztfi0425-sfjjr = ''.
MODIFY gt_ztfi0425 FROM gs_ztfi0425 TRANSPORTING sfjjr WHERE datum = lv_datum.
CASE lv_datum+4(2).
WHEN '01' OR '03' OR '05' OR '07' OR '09' OR '11'.
lv_col = '2'.
WHEN '02' OR '04' OR '06' OR '08' OR '10' OR '12'.
lv_col = '4'.
WHEN OTHERS.
ENDCASE.
id = gs_cell-row_id-index.
gt_cellcolor = gs_alv-cellcolor.
LOOP AT gt_cellcolor INTO gs_cellcolor WHERE fname = gs_cell-col_id.
gs_cellcolor-color-col = lv_col.
MODIFY gt_cellcolor FROM gs_cellcolor.
ENDLOOP.
gs_alv-cellcolor = gt_cellcolor.
MODIFY gt_alv FROM gs_alv TRANSPORTING cellcolor WHERE id = id.
CLEAR:gs_cell,gs_alv,gs_ztfi0425.
ENDLOOP.
WHEN 'ZBC'.
MODIFY ztfi0425 FROM TABLE gt_ztfi0425.
IF sy-subrc = 0.
COMMIT WORK.
MESSAGE '保存成功' TYPE 'S'.
ELSE.
ROLLBACK WORK.
MESSAGE '保存失败' TYPE 'E'.
ENDIF.
ENDCASE.
gs_stable-row = 'X'.
go_grid->refresh_table_display( is_stable = gs_stable ).
ENDFORM.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR: ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT' OR 'CANC'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module EXIT_COMMAND INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit_command INPUT.
save_ok = ok_code.
CLEAR: ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT' OR 'CANC'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.