Вы находитесь на странице: 1из 3

WHEN 'ZSEDATE01'.

IF i_step = 1.
CLEAR : l_s_range, ydate.
ydate = sy-datum - 1.
l_s_range-low = ydate.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
APPEND l_s_range TO e_t_range.
ENDIF.
***************MTD from N-1 calday*********************

WHEN 'VMTD'.

IF i_step = 2.
LOOP AT i_t_var_range INTO ls_var_range WHERE vnam = 'ZSEDATE01'.

zdate1 = ls_var_range-low.
zyear = zdate1+0(4).
zmonth = zdate1+4(2).
CONCATENATE zyear zmonth '01' INTO zdate2.
lt_range-low = zdate2.
lt_range-high = zdate1.
lt_range-sign = 'I'.
lt_range-opt = 'BT'.
APPEND lt_range TO e_t_range.
ENDLOOP.
ENDIF.

***************Yago MTD from N-1 Calday****************************

WHEN 'VYAGOMTD'.
IF i_step = 2.
LOOP AT i_t_var_range INTO ls_var_range WHERE vnam = 'ZSEDATE01'.
zdate1 = ls_var_range-low.
zyear = zdate1+0(4) - 1.
zmonth = zdate1+4(2).
zday = zdate1+6(2).
CONCATENATE zyear zmonth '01' INTO zdate2.
CONCATENATE zyear zmonth zday INTO zdate3.
CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH'
EXPORTING
day_in = zdate2
IMPORTING
last_day_of_month = zdate
EXCEPTIONS
day_in_not_valid = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
* for feb month
IF zdate3 GT zdate.
zdate3 = zdate.
ENDIF.
lt_range-low = zdate2.
lt_range-high = zdate3.
lt_range-sign = 'I'.
lt_range-opt = 'BT'.
APPEND lt_range TO e_t_range.
ENDLOOP.
ENDIF.

***************YTD from N-1 Calday****************************

WHEN 'VYTD'.
IF i_step = 2.
LOOP AT i_t_var_range INTO ls_var_range WHERE vnam = 'ZSEDATE01'.
* READ TABLE i_t_var_range INTO ls_var_range WITH KEY vnam = 'ZCALDAT'.
* IF sy-subrc EQ 0.
zdate1 = ls_var_range-low.
zyear = zdate1+0(4).
zmonth = zdate1+4(2).

IF zmonth = '01' OR zmonth = '02' OR zmonth = '03'.


zyear1 = zyear - 1.
CONCATENATE zyear1 '04' '01' INTO zdate2.
ELSE.
CONCATENATE zyear '04' '01' INTO zdate2.
ENDIF.

lt_range-low = zdate2.
lt_range-high = zdate1.
lt_range-sign = 'I'.
lt_range-opt = 'BT'.
APPEND lt_range TO e_t_range.
* ENDIF.
ENDLOOP.
ENDIF.

***************Yago YTD from N-1 Calday****************************

WHEN 'VYAGOYTD'.
IF i_step = 2.
LOOP AT i_t_var_range INTO ls_var_range WHERE vnam = 'ZSEDATE01'.
* READ TABLE i_t_var_range INTO ls_var_range WITH KEY vnam = 'ZCALDAT'.
* IF sy-subrc EQ 0.
zdate1 = ls_var_range-low.
zyear = zdate1+0(4) .
zmonth = zdate1+4(2).
zday = zdate1+6(2).

IF zmonth = '01' OR zmonth = '02' OR zmonth = '03'.


zyear1 = zyear - 2.
zyear2 = zyear - 1.
CONCATENATE zyear1 '04' '01' INTO zdate2.
CONCATENATE zyear2 zmonth zday INTO zdate3.
CONCATENATE zyear2 zmonth '01' INTO zdate1.
CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH'
EXPORTING
day_in = zdate1
IMPORTING
last_day_of_month = zdate
EXCEPTIONS
day_in_not_valid = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
* for feb month
IF zdate3 GT zdate.
zdate3 = zdate.
ENDIF.
ELSE.
zyear3 = zyear - 1.
CONCATENATE zyear3 '04' '01' INTO zdate2.
CONCATENATE zyear3 zmonth zday INTO zdate3.
CONCATENATE zyear3 zmonth '01' INTO zdate1.
CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH'
EXPORTING
day_in = zdate1
IMPORTING
last_day_of_month = zdate
EXCEPTIONS
day_in_not_valid = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
* for feb month
IF zdate3 GT zdate.
zdate3 = zdate.
ENDIF.
ENDIF.

lt_range-low = zdate2.
lt_range-high = zdate3.
lt_range-sign = 'I'.
lt_range-opt = 'BT'.
APPEND lt_range TO e_t_range.
* ENDIF.
ENDLOOP.
ENDIF.

WHEN OTHERS.

ENDCASE.

Вам также может понравиться