TYPES: BEGINOF zhr_month,
jun TYPEi,
jul TYPEi,
aug TYPEi,
ENDOF zhr_month.
DATA: gt_table TYPETABLEOF zhr_month,
gw_table LIKELINE OF gt_table.
CONTROLS: tc_table TYPE TABLEVIEW USINGSCREEN0100.
DATA: cols LIKELINEOF tc_table-cols.
DATA: ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm.
CALLSCREEN100.
*----------------------------------------------------------------------*
* MODULE status_0100 OUTPUT
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STAT1'.
SETTITLEBAR'TITL1'.
ENDMODULE. "status_0100 OUTPUT
*----------------------------------------------------------------------*
* MODULE user_command_0100 INPUT
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
DATA w_month(2) TYPEc.
DATA p_date TYPE datum.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN'BACK'.
LEAVETOSCREEN0.
WHEN'EXIT'.
LEAVEPROGRAM.
WHEN'CREATE'.
w_month = sy-datum+4(2).
PERFORM screen_setting.
WHEN'MODIFY'.
* You can use any function module you want to get the month input from user.
CALLFUNCTION'F4_DATE'
EXPORTING
date_for_first_month = sy-datum
IMPORTING
select_date = p_date
EXCEPTIONS
calendar_buffer_not_loadable = 1
date_after_range = 2
date_before_range = 3
date_invalid = 4
factory_calendar_not_found = 5
holiday_calendar_not_found = 6
parameter_conflict = 7
OTHERS = 8.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
w_month = p_date+4(2).
PERFORM screen_setting.
WHEN'SAVE'.
LOOPAT gt_table INTO gw_table.
* Save to database.
ENDLOOP.
LOOPAT tc_table-cols INTO cols.
cols-screen-input = '0'.
MODIFY tc_table-cols FROM cols INDEX sy-tabix.
ENDLOOP.
ENDCASE."CASE save_ok
CLEAR save_ok.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form screen_setting
*&---------------------------------------------------------------------*
FORM screen_setting.
CASE w_month.
WHEN'06'.
LOOPAT tc_table-cols INTO cols.
IF cols-screen-name = 'GW_TABLE-JUN' .
cols-screen-input = '1'.
ELSE.
cols-screen-input = '0'.
ENDIF.
MODIFY tc_table-cols FROM cols INDEX sy-tabix.
ENDLOOP.
WHEN'07'.
LOOPAT tc_table-cols INTO cols.
IF cols-screen-name = 'GW_TABLE-JUL' .
cols-screen-input = '1'.
ELSE.
cols-screen-input = '0'.
ENDIF.
MODIFY tc_table-cols FROM cols INDEX sy-tabix.
ENDLOOP.
WHEN'08'.
LOOPAT tc_table-cols INTO cols.
IF cols-screen-name = 'GW_TABLE-AUG' .
cols-screen-input = '1'.
ELSE.
cols-screen-input = '0'.
ENDIF.
MODIFY tc_table-cols FROM cols INDEX sy-tabix.
ENDLOOP.
ENDCASE.
ENDFORM. "screen_setting
module tc_TABLE_modify input.
* Saving the contents of table control
modify gt_TABLE
from gw_TABLE
index tc_TABLE-current_line .
endmodule.