You are on page 1of 12

*&---------------------------------------------------------------------*

*& Report ZFAK_HR_INCOME_TAX_DETAILS


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zfak_hr_income_tax_details.

TABLES: ztax_details.

CONTROLS: tabctrl TYPE TABLEVIEW USING SCREEN '100'.

DATA: BEGIN OF tax_details OCCURS 10,


mark(1).
INCLUDE STRUCTURE ztax_details.
DATA: END OF tax_details.

DATA: wa_details LIKE ztax_details.

DATA: ok_code TYPE sy-ucomm,


textmsg(50),
answer(1),
delimate_date TYPE begda,
column TYPE i,
display_check(1),
change_check(1),
copy_check(1),
create_check(1),
table_lines TYPE i.

START-OF-SELECTION.

CALL SCREEN '100'.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.

SET PF-STATUS 'STATUS1'.


SET TITLEBAR '001'.

ENDMODULE. " STATUS_0100 OUTPUT

*&---------------------------------------------------------------------*
*& Module UPDATE_TAX_DETAILS_TABLE OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE update_tax_details_table OUTPUT.
REFRESH tax_details.
CLEAR tax_details.

SELECT * FROM ztax_details INTO CORRESPONDING FIELDS OF TABLE tax_details.


SORT tax_details BY molga begda.
CLEAR tax_details.

CLEAR table_lines.
LOOP AT tax_details.
table_lines = table_lines + 1.
ENDLOOP.

tabctrl-lines = table_lines.

ENDMODULE. " UPDATE_TAX_DETAILS_TABLE OUTPUT

*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.

CASE ok_code.

WHEN 'CREATE'.

create_check = 'X'.
CLEAR: display_check, copy_check, change_check.
CLEAR ok_code.
CLEAR textmsg.
CLEAR wa_details.

CALL SCREEN '200'.

WHEN 'COPY'.

LOOP AT tax_details WHERE mark = 'X'.


MOVE-CORRESPONDING tax_details TO wa_details.
ENDLOOP.

IF sy-subrc = 0.
copy_check = 'X'.
CLEAR: display_check, create_check, change_check.
CLEAR ok_code.
CLEAR textmsg.
CALL SCREEN '200'.
ELSE.
CLEAR ok_code.
CLEAR textmsg.
ENDIF.

WHEN 'EDIT'.

LOOP AT tax_details WHERE mark = 'X'.


MOVE-CORRESPONDING tax_details TO wa_details.
ENDLOOP.
IF sy-subrc = 0.
change_check = 'X'.
CLEAR: display_check, copy_check, create_check.
CLEAR ok_code.
CLEAR textmsg.
CALL SCREEN '200'.
ELSE.
CLEAR ok_code.
CLEAR textmsg.
ENDIF.

WHEN 'DISPLAY'.

LOOP AT tax_details WHERE mark = 'X'.


MOVE-CORRESPONDING tax_details TO wa_details.
ENDLOOP.

IF sy-subrc = 0.
display_check = 'X'.
CLEAR: copy_check, create_check, change_check.
CLEAR ok_code.
CLEAR textmsg.
CALL SCREEN '200'.
ELSE.
CLEAR ok_code.
CLEAR textmsg.
ENDIF.

WHEN 'DELETE'.

LOOP AT tax_details WHERE mark = 'X'.

DELETE FROM ztax_details WHERE


molga = tax_details-molga AND
begda = tax_details-begda.

ENDLOOP.

CLEAR: display_check, copy_check, create_check, change_check.


CLEAR ok_code.
CLEAR textmsg.

WHEN 'BACK'.

textmsg = 'Data will be Lost. Do you really want to Exit?'.

CALL FUNCTION 'POPUP_TO_CONFIRM'


EXPORTING
titlebar = 'Information'
text_question = textmsg
text_button_1 = 'Yes'
icon_button_1 = 'ICON_LED_RED'
text_button_2 = 'No'
icon_button_2 = 'ICON_LED_GREEN'
display_cancel_button = 'X'
popup_type = 'ICON_MESSAGE_INFORMATION'
IMPORTING
answer = answer
EXCEPTIONS
text_not_found = 1
OTHERS = 2.

IF answer = '1'.
LEAVE PROGRAM.
ELSE.
CLEAR ok_code.
CLEAR answer.
ENDIF.

WHEN 'EXIT'.

textmsg = 'Data will be Lost. Do you really want to Exit?'.

CALL FUNCTION 'POPUP_TO_CONFIRM'


EXPORTING
titlebar = 'Information'
text_question = textmsg
text_button_1 = 'Yes'
icon_button_1 = 'ICON_LED_RED'
text_button_2 = 'No'
icon_button_2 = 'ICON_LED_GREEN'
display_cancel_button = 'X'
popup_type = 'ICON_MESSAGE_INFORMATION'
IMPORTING
answer = answer
EXCEPTIONS
text_not_found = 1
OTHERS = 2.

IF answer = '1'.
LEAVE PROGRAM.
ELSE.
CLEAR ok_code.
CLEAR answer.
ENDIF.

WHEN 'CANCEL'.

textmsg = 'Data will be Lost. Do you really want to Exit?'.

CALL FUNCTION 'POPUP_TO_CONFIRM'


EXPORTING
titlebar = 'Information'
text_question = textmsg
text_button_1 = 'Yes'
icon_button_1 = 'ICON_LED_RED'
text_button_2 = 'No'
icon_button_2 = 'ICON_LED_GREEN'
display_cancel_button = 'X'
popup_type = 'ICON_MESSAGE_INFORMATION'
IMPORTING
answer = answer
EXCEPTIONS
text_not_found = 1
OTHERS = 2.

IF answer = '1'.
LEAVE PROGRAM.
ELSE.
CLEAR ok_code.
CLEAR answer.
ENDIF.

WHEN OTHERS.

CLEAR ok_code.

ENDCASE.

ENDMODULE. "user_command_0100 INPUT

*&---------------------------------------------------------------------*
*& Module MODIFY_TABLE_CONTROL INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE modify_table_control INPUT.

MODIFY tax_details FROM tax_details INDEX tabctrl-current_line.

ENDMODULE. " MODIFY_TABLE_CONTROL INPUT

*&---------------------------------------------------------------------*
*& Module STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0200 OUTPUT.

IF display_check NE 'X'.

SET PF-STATUS 'STATUS2'.


SET TITLEBAR '002'.

ELSE.

SET PF-STATUS 'STATUS3'.


SET TITLEBAR '003'.

ENDIF.

ENDMODULE. " STATUS_0200 OUTPUT

*&---------------------------------------------------------------------*
*& Module SET_FIELD_STATUS OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE set_field_status OUTPUT.

IF display_check = 'X'.

LOOP AT SCREEN.
IF screen-name = 'WA_DETAILS-MOLGA' OR
screen-name = 'WA_DETAILS-BEGDA' OR
screen-name = 'WA_DETAILS-TAXWT' OR
screen-name = 'WA_DETAILS-EPFWT' OR
screen-name = 'WA_DETAILS-PRORT' OR
screen-name = 'WA_DETAILS-PROMD' OR
screen-name = 'WA_DETAILS-PRODT' OR
screen-name = 'WA_DETAILS-CHEK1' OR
screen-name = 'WA_DETAILS-CHEK2' OR
screen-name = 'WA_DETAILS-CHEK3' OR
screen-name = 'WA_DETAILS-CHEK4' OR
screen-name = 'WA_DETAILS-BOTAX' OR
screen-name = 'WA_DETAILS-BOAMT' OR
screen-name = 'WA_DETAILS-EPFBT' OR
screen-name = 'WA_DETAILS-AGERL' OR
screen-name = 'WA_DETAILS-AGELT' OR
screen-name = 'WA_DETAILS-AGEPR' OR
screen-name = 'WA_DETAILS-DONPR' OR
screen-name = 'WA_DETAILS-DONFV' OR
screen-name = 'WA_DETAILS-DTCPR' OR
screen-name = 'WA_DETAILS-DTCFV' OR
screen-name = 'WA_DETAILS-IISPR' OR
screen-name = 'WA_DETAILS-IISFV' OR
screen-name = 'WA_DETAILS-HIPPR' OR
screen-name = 'WA_DETAILS-HIPFV' OR
screen-name = 'WA_DETAILS-PFCPR' OR
screen-name = 'WA_DETAILS-PFCFV' OR
screen-name = 'WA_DETAILS-PODPR' OR
screen-name = 'WA_DETAILS-PODFV'.
screen-input = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.

ELSEIF copy_check = 'X'.

LOOP AT SCREEN.
IF screen-name = 'WA_DETAILS-MOLGA' OR
screen-name = 'WA_DETAILS-BEGDA' OR
screen-name = 'WA_DETAILS-TAXWT' OR
screen-name = 'WA_DETAILS-EPFWT' OR
screen-name = 'WA_DETAILS-PRORT' OR
screen-name = 'WA_DETAILS-PROMD' OR
screen-name = 'WA_DETAILS-PRODT' OR
screen-name = 'WA_DETAILS-CHEK1' OR
screen-name = 'WA_DETAILS-CHEK2' OR
screen-name = 'WA_DETAILS-CHEK3' OR
screen-name = 'WA_DETAILS-CHEK4' OR
screen-name = 'WA_DETAILS-BOTAX' OR
screen-name = 'WA_DETAILS-BOAMT' OR
screen-name = 'WA_DETAILS-EPFBT' OR
screen-name = 'WA_DETAILS-AGERL' OR
screen-name = 'WA_DETAILS-AGELT' OR
screen-name = 'WA_DETAILS-AGEPR' OR
screen-name = 'WA_DETAILS-DONPR' OR
screen-name = 'WA_DETAILS-DONFV' OR
screen-name = 'WA_DETAILS-DTCPR' OR
screen-name = 'WA_DETAILS-DTCFV' OR
screen-name = 'WA_DETAILS-IISPR' OR
screen-name = 'WA_DETAILS-IISFV' OR
screen-name = 'WA_DETAILS-HIPPR' OR
screen-name = 'WA_DETAILS-HIPFV' OR
screen-name = 'WA_DETAILS-PFCPR' OR
screen-name = 'WA_DETAILS-PFCFV' OR
screen-name = 'WA_DETAILS-PODPR' OR
screen-name = 'WA_DETAILS-PODFV'.
screen-input = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.

ELSEIF change_check = 'X'.

LOOP AT SCREEN.
IF screen-name = 'WA_DETAILS-MOLGA' OR
screen-name = 'WA_DETAILS-BEGDA'.
screen-input = 0.
ELSEIF screen-name = 'WA_DETAILS-TAXWT' OR
screen-name = 'WA_DETAILS-EPFWT' OR
screen-name = 'WA_DETAILS-PRORT' OR
screen-name = 'WA_DETAILS-PROMD' OR
screen-name = 'WA_DETAILS-PRODT' OR
screen-name = 'WA_DETAILS-CHEK1' OR
screen-name = 'WA_DETAILS-CHEK2' OR
screen-name = 'WA_DETAILS-CHEK3' OR
screen-name = 'WA_DETAILS-CHEK4' OR
screen-name = 'WA_DETAILS-BOTAX' OR
screen-name = 'WA_DETAILS-BOAMT' OR
screen-name = 'WA_DETAILS-EPFBT' OR
screen-name = 'WA_DETAILS-AGERL' OR
screen-name = 'WA_DETAILS-AGELT' OR
screen-name = 'WA_DETAILS-AGEPR' OR
screen-name = 'WA_DETAILS-DONPR' OR
screen-name = 'WA_DETAILS-DONFV' OR
screen-name = 'WA_DETAILS-DTCPR' OR
screen-name = 'WA_DETAILS-DTCFV' OR
screen-name = 'WA_DETAILS-IISPR' OR
screen-name = 'WA_DETAILS-IISFV' OR
screen-name = 'WA_DETAILS-HIPPR' OR
screen-name = 'WA_DETAILS-HIPFV' OR
screen-name = 'WA_DETAILS-PFCPR' OR
screen-name = 'WA_DETAILS-PFCFV' OR
screen-name = 'WA_DETAILS-PODPR' OR
screen-name = 'WA_DETAILS-PODFV'.
screen-input = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.

ELSEIF create_check = 'X'.

LOOP AT SCREEN.
IF screen-name = 'WA_DETAILS-MOLGA' OR
screen-name = 'WA_DETAILS-BEGDA' OR
screen-name = 'WA_DETAILS-TAXWT' OR
screen-name = 'WA_DETAILS-EPFWT' OR
screen-name = 'WA_DETAILS-PRORT' OR
screen-name = 'WA_DETAILS-PROMD' OR
screen-name = 'WA_DETAILS-PRODT' OR
screen-name = 'WA_DETAILS-CHEK1' OR
screen-name = 'WA_DETAILS-CHEK2' OR
screen-name = 'WA_DETAILS-CHEK3' OR
screen-name = 'WA_DETAILS-CHEK4' OR
screen-name = 'WA_DETAILS-BOTAX' OR
screen-name = 'WA_DETAILS-BOAMT' OR
screen-name = 'WA_DETAILS-EPFBT' OR
screen-name = 'WA_DETAILS-AGERL' OR
screen-name = 'WA_DETAILS-AGELT' OR
screen-name = 'WA_DETAILS-AGEPR' OR
screen-name = 'WA_DETAILS-DONPR' OR
screen-name = 'WA_DETAILS-DONFV' OR
screen-name = 'WA_DETAILS-DTCPR' OR
screen-name = 'WA_DETAILS-DTCFV' OR
screen-name = 'WA_DETAILS-IISPR' OR
screen-name = 'WA_DETAILS-IISFV' OR
screen-name = 'WA_DETAILS-HIPPR' OR
screen-name = 'WA_DETAILS-HIPFV' OR
screen-name = 'WA_DETAILS-PFCPR' OR
screen-name = 'WA_DETAILS-PFCFV' OR
screen-name = 'WA_DETAILS-PODPR' OR
screen-name = 'WA_DETAILS-PODFV'.
screen-input = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.

ENDIF.

IF create_check = 'X' OR
copy_check = 'X' OR
change_check = 'X'.

IF wa_details-epfwt IS INITIAL.
CLEAR wa_details-chek2.
CLEAR wa_details-epfbt.
LOOP AT SCREEN.
IF screen-name = 'WA_DETAILS-CHEK2' OR
screen-name = 'WA_DETAILS-EPFBT'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-name = 'WA_DETAILS-CHEK2' OR
screen-name = 'WA_DETAILS-EPFBT'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

IF wa_details-chek1 IS INITIAL.
CLEAR wa_details-agerl.
CLEAR wa_details-agelt.
CLEAR wa_details-agepr.
LOOP AT SCREEN.
IF screen-name = 'WA_DETAILS-AGERL' OR
screen-name = 'WA_DETAILS-AGELT' OR
screen-name = 'WA_DETAILS-AGEPR'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-name = 'WA_DETAILS-AGERL' OR
screen-name = 'WA_DETAILS-AGELT' OR
screen-name = 'WA_DETAILS-AGEPR'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

IF wa_details-chek2 IS INITIAL.
CLEAR wa_details-epfbt.
LOOP AT SCREEN.
IF screen-name = 'WA_DETAILS-EPFBT'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-name = 'WA_DETAILS-EPFBT'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

IF wa_details-chek3 IS INITIAL.
CLEAR wa_details-botax.
CLEAR wa_details-boamt.
LOOP AT SCREEN.
IF screen-name = 'WA_DETAILS-BOTAX' OR
screen-name = 'WA_DETAILS-BOAMT'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-name = 'WA_DETAILS-BOTAX' OR
screen-name = 'WA_DETAILS-BOAMT'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

IF wa_details-chek4 IS INITIAL.
CLEAR wa_details-prodt.
LOOP AT SCREEN.
IF screen-name = 'WA_DETAILS-PRODT'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-name = 'WA_DETAILS-PRODT'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

ENDIF.

ENDMODULE. " SET_FIELD_STATUS OUTPUT

*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0200 INPUT.

CASE ok_code.

WHEN 'SAVE'.

CLEAR ok_code.

IF wa_details-molga IS NOT INITIAL AND


wa_details-begda IS NOT INITIAL AND
wa_details-taxwt IS NOT INITIAL AND
( create_check EQ 'X' OR
copy_check EQ 'X' ).

DELETE FROM ztax_details WHERE


begda GT wa_details-begda AND
endda GT wa_details-begda AND
molga = wa_details-molga.

delimate_date = wa_details-begda - 1.

SELECT SINGLE * FROM ztax_details WHERE


molga = wa_details-molga AND
begda LE wa_details-begda AND
endda GE wa_details-begda.
IF sy-subrc = 0.
UPDATE ztax_details
SET endda = delimate_date
WHERE molga = wa_details-molga AND
begda LE wa_details-begda AND
endda GE wa_details-begda.
ENDIF.

wa_details-endda = '99991231'.

MODIFY ztax_details FROM wa_details.


COMMIT WORK.
ELSEIF wa_details-molga IS INITIAL.
SET CURSOR FIELD 'WA_DETAILS-MOLGA'.
MESSAGE e000(zhr_tax).
ELSEIF wa_details-begda IS INITIAL.
SET CURSOR FIELD 'WA_DETAILS-BEGDA'.
MESSAGE e001(zhr_tax).
ELSEIF wa_details-taxwt IS INITIAL.
SET CURSOR FIELD 'WA_DETAILS-TAXWT'.
MESSAGE e002(zhr_tax).
ENDIF.

IF wa_details-molga IS NOT INITIAL AND


wa_details-begda IS NOT INITIAL AND
wa_details-taxwt IS NOT INITIAL AND
change_check EQ 'X'.

MODIFY ztax_details FROM wa_details.


COMMIT WORK.

ELSEIF wa_details-taxwt IS INITIAL.


SET CURSOR FIELD 'WA_DETAILS-TAXWT'.
MESSAGE e002(zhr_tax).
ENDIF.

WHEN 'BACK'.

CLEAR wa_details.
CLEAR ok_code.
CLEAR answer.
CLEAR: display_check, change_check, copy_check, create_check.

CALL SCREEN '100'.

WHEN 'EXIT'.

textmsg = 'Data will be Lost. Do you really want to Exit?'.

CALL FUNCTION 'POPUP_TO_CONFIRM'


EXPORTING
titlebar = 'Information'
text_question = textmsg
text_button_1 = 'Yes'
icon_button_1 = 'ICON_LED_RED'
text_button_2 = 'No'
icon_button_2 = 'ICON_LED_GREEN'
display_cancel_button = 'X'
popup_type = 'ICON_MESSAGE_INFORMATION'
IMPORTING
answer = answer
EXCEPTIONS
text_not_found = 1
OTHERS = 2.

IF answer = '1'.
LEAVE PROGRAM.
ELSE.
CLEAR ok_code.
CLEAR answer.
ENDIF.

WHEN 'CANCEL'.

textmsg = 'Data will be Lost. Do you really want to Exit?'.

CALL FUNCTION 'POPUP_TO_CONFIRM'


EXPORTING
titlebar = 'Information'
text_question = textmsg
text_button_1 = 'Yes'
icon_button_1 = 'ICON_LED_RED'
text_button_2 = 'No'
icon_button_2 = 'ICON_LED_GREEN'
display_cancel_button = 'X'
popup_type = 'ICON_MESSAGE_INFORMATION'
IMPORTING
answer = answer
EXCEPTIONS
text_not_found = 1
OTHERS = 2.

IF answer = '1'.
LEAVE PROGRAM.
ELSE.
CLEAR ok_code.
CLEAR answer.
ENDIF.

WHEN OTHERS.

CLEAR ok_code.

ENDCASE.

ENDMODULE. " USER_COMMAND_0200 INPUT

You might also like