DATA: l_s_range TYPE rsr_s_rangesid.
DATA: l_s_var_range LIKE rrrangeexit,
l_ano TYPE i,
l_mes TYPE i,
aux LIKE rrrangeexit-low,
aux_ano(4),
aux_mes(2).
IF i_step = '2'.
WHEN 'ZVAR_MES_ANT'.
READ TABLE i_t_var_range WITH KEY vnam = '0DAT' INTO l_s_var_range.
l_ano = l_s_var_range-low(4).
l_mes = l_s_var_range-low+4(2).
if l_mes > 1.
l_mes = l_mes - 1.
elseif l_mes = 1.
l_mes = 12.
l_ano = l_ano - 1.
endif.
clear: aux, aux_mes, aux_ano.
aux_mes = l_mes.
if aux_mes <= 9.
concatenate '0' aux_mes into aux_mes.
endif.
aux_ano = l_ano.
concatenate aux_ano aux_mes into aux.
MOVE aux TO l_s_range-low.
CONDENSE l_s_range-low.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
APPEND l_s_range TO e_t_range.
ENDCASE.
ENDIF.
*Variable 1: Variable del año actual
when 'ZCYEAR'.
clear l_s_range.
l_s_range-low = sy-datum(4).
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
clear: l_s_range.
*Variable: Variable del ejercicio actual
when 'ZV_FISCYEAR'.
clear l_s_range.
l_s_range-low = sy-datum(4).
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
clear: l_s_range.
*Variable: variable dia hoy
when 'ZV_SYDATUM'.
clear l_s_range.
l_s_range-low = sy-datum.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
clear: l_s_range.
** Variável para obter o mês.ano da variável 0P_KEYDT
when 'ZV_CMKEYDT'. loop at i_t_var_range into loc_var_range
where vnam = '0P_KEYDT'.
clear l_s_range.
clear: aux_year_n0, mm.
aux_year_n0 = loc_var_range-low(4).
mm = loc_var_range-low+4(2).
concatenate aux_year_n0 mm into l_s_range-low.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
endif.
Variables para o relatorio de FI 1.3. a partir de dadta de vencimento
**** obtem a data de lançamento para n-0, n-1 e n-2. e meses homologos.
when 'ZV_KEYDT_N2'.
loop at i_t_var_range into loc_var_range
where vnam = '0P_KEYDT'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
concatenate aux_year_n2 '01' '01' into l_s_range-low.
concatenate aux_year_n2 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_KEYDT_N1'.
loop at i_t_var_range into loc_var_range
where vnam = '0P_KEYDT'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
concatenate aux_year_n1 '01' '01' into l_s_range-low.
concatenate aux_year_n1 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_KEYDT_N0'.
loop at i_t_var_range into loc_var_range
where vnam = '0P_KEYDT'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
concatenate aux_year_n0 '01' '01' into l_s_range-low.
concatenate aux_year_n0 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_KEYDT_M'.
loop at i_t_var_range into loc_var_range
where vnam = '0P_KEYDT'.
clear l_s_range.
l_s_range-low = loc_var_range-low+4(2). "low value e.g.200001
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_KEYDT'.
loop at i_t_var_range into loc_var_range
where vnam = '0P_KEYDT'.
clear l_s_range.
l_s_range-low = loc_var_range-low. "low value e.g.200001
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
* Conta o nº de meses para os relatorios de RH
when 'ZV_COUNTM'.
clear: l_s_range, aux_data_h, aux_data_l, l_s_diff_period .
loop at i_t_var_range into loc_var_range where vnam = 'ZP_CALMO'.
concatenate loc_var_range-low '01' into aux_data_l.
concatenate loc_var_range-high '01' into aux_data_h.
call function 'MONTHS_BETWEEN_TWO_DATES'
exporting
i_datum_bis = aux_data_h
i_datum_von = aux_data_l* I_KZ_INCL_BIS = ' '
importing
e_monate = l_s_diff_period.
add 1 to l_s_diff_period.
l_s_range-low = l_s_diff_period.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
* Variável para o relatórios de RH que vai permitir incluir na data o último dia do mês para recolher os dados do cadastro.
when 'ZV_AUXDATA'.
clear: l_s_range, aux_data.
loop at i_t_var_range into loc_var_range where vnam = 'ZP_CALMO'.
concatenate loc_var_range-high '01' into aux_data.
call function 'SLS_MISC_GET_LAST_DAY_OF_MONTH'
EXPORTING
day_in = aux_data
IMPORTING
last_day_of_month = aux_data
EXCEPTIONS
day_in_not_valid = 1
others = 2.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = aux_data.
append l_s_range to e_t_range.
exit.
endloop.
* Variables que obteñen o día, o mes e o año.(formato fiscal 001.2011)
when 'ZP_DAY'.
loop at i_t_var_range into loc_var_range
where vnam = 'CAL_DAY'.
clear l_s_range.
l_s_range-low = loc_var_range-low+6(2) .
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZP_PERIO'.
loop at i_t_var_range into loc_var_range
where vnam = 'CAL_DAY'.
clear l_s_range.
l_s_range-low = loc_var_range-low+4(2). "low value e.g.200001
concatenate '0' l_s_range-low into l_s_range-low.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZP_YEAR'.
loop at i_t_var_range into loc_var_range
where vnam = 'CAL_DAY'.
clear l_s_range.
l_s_range-low = loc_var_range-low(4). "low value e.g.200001
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
Variable3: Variables que obteñen o día, o mes e o año.(formato CAL 01.2011)
when 'ZV_CALDAY'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY'.
clear l_s_range.
l_s_range-low = loc_var_range-low+6(2). "low value e.g.200001
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_CALMO'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY'.
clear l_s_range.
l_s_range-low = loc_var_range-low+4(2). "low value e.g.200001
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_CALYE'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY'.
clear l_s_range.
l_s_range-low = loc_var_range-low(4). "low value e.g.200001
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.* fin VARIABLE
*basado en la misma variable de dia, variables del dia 01.01.YYYY hasta DD.MM.YYYY para los anhos n, n-1 y n-2.
when 'ZV_DAY1_N2'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
if mm eq '02' and dd eq '29'.
dd = '28'.
endif.
concatenate aux_year_n2 '01' '01' into l_s_range-low.
concatenate aux_year_n2 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_DAY1_N1'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
if mm eq '02' and dd eq '29'.
dd = '28'.
endif.
concatenate aux_year_n1 '01' '01' into l_s_range-low.
concatenate aux_year_n1 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_DAY1_N0'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
concatenate aux_year_n0 '01' '01' into l_s_range-low.
concatenate aux_year_n0 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.* fin VARIABLE
*basado en la misma variable de dia, variables del dia 01.01.YYYY hasta DD.MM.YYYY para los anhos n, n-1 y n-2.
when 'ZV_MM1_N2'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_CALMONTH'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
concatenate aux_year_n2 '01' into l_s_range-low.
concatenate aux_year_n2 mm into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_MM1_N1'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_CALMONTH'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
concatenate aux_year_n1 '01' into l_s_range-low.
concatenate aux_year_n1 mm into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_MM1_N0'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_CALMONTH'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
concatenate aux_year_n0 '01' into l_s_range-low.
concatenate aux_year_n0 mm into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.*basado en variable de dia, variables del dia DD.MM.YYYY hasta DD.MM.YYYY para os anhos n-1 y n-2.
when 'ZV_DAY2_N2'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY2'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 2.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
concatenate aux_year_n2 mm dd into l_s_range-low.
aux_year_n2 = loc_var_range-high(4) - 2.
mm = loc_var_range-high+4(2).
dd = loc_var_range-high+6(2).
concatenate aux_year_n2 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_DAY2_N1'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY2'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 1.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
concatenate aux_year_n2 mm dd into l_s_range-low.
aux_year_n2 = loc_var_range-high(4) - 1.
mm = loc_var_range-high+4(2).
dd = loc_var_range-high+6(2).
concatenate aux_year_n2 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
======================================================================
** A partir del mes/año calcula al acumulado anual hasta ese mes
** incluido
*====================================================================
WHEN 'ZV_FYPCP'.
CLEAR L_S_RANGE.
LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = '0RMA_FIP'.
PERFORM f_fill_ZV_FYPCP USING loc_var_range
CHANGING l_s_range.
APPEND L_S_RANGE TO E_T_RANGE.
EXIT.
ENDLOOP.
*======================================================================
** A partir del mes introducido calcula al acumulado anual hasta ese mes
** incluido
*====================================================================
WHEN 'ZV_PER3A'.
CLEAR L_S_RANGE.
LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = 'ZV_PER3'.
l_s_range-low = '001'.
l_s_range-high = LOC_VAR_RANGE-LOW.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'BT'.
APPEND L_S_RANGE TO E_T_RANGE.
EXIT.
ENDLOOP.
DATA: l_s_var_range LIKE rrrangeexit,
l_ano TYPE i,
l_mes TYPE i,
aux LIKE rrrangeexit-low,
aux_ano(4),
aux_mes(2).
IF i_step = '2'.
WHEN 'ZVAR_MES_ANT'.
READ TABLE i_t_var_range WITH KEY vnam = '0DAT' INTO l_s_var_range.
l_ano = l_s_var_range-low(4).
l_mes = l_s_var_range-low+4(2).
if l_mes > 1.
l_mes = l_mes - 1.
elseif l_mes = 1.
l_mes = 12.
l_ano = l_ano - 1.
endif.
clear: aux, aux_mes, aux_ano.
aux_mes = l_mes.
if aux_mes <= 9.
concatenate '0' aux_mes into aux_mes.
endif.
aux_ano = l_ano.
concatenate aux_ano aux_mes into aux.
MOVE aux TO l_s_range-low.
CONDENSE l_s_range-low.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
APPEND l_s_range TO e_t_range.
ENDCASE.
ENDIF.
*=======================================================================
* Determines current month
* *=======================================================================
DATA: L_DATUM LIKE SY-DATUM.
WHEN 'ZCMONTH'.
CLEAR L_S_RANGE.
L_S_RANGE-LOW = SY-DATUM(6).
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'EQ'.
APPEND L_S_RANGE TO E_T_RANGE.
*=====================================================================
* SCY_CP CHARACTERISTIC - CALENDAR YEAR OF THE CALENDAR PERIOD ENTERED
*=====================================================================
WHEN 'ZCY_CP'.
CLEAR L_S_RANGE.
LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE WHERE VNAM = 'ZCPUSR1'.
L_S_RANGE-LOW = LOC_VAR_RANGE-LOW+0(4).
L_S_RANGE-OPT = 'EQ'.
APPEND L_S_RANGE TO E_T_RANGE.
ENDLOOP.
*=====================================================================
* SCY_1_CP CHARACTERISTIC - CALENDAR YEAR - 1 OF THE CAL PERIOD ENTERED
*=====================================================================
WHEN 'ZCY_1_CP'.
CLEAR L_S_RANGE.
LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE WHERE VNAM = 'ZCPUSR1'.
ZYEAR = LOC_VAR_RANGE-LOW+0(4).
L_S_RANGE-LOW = ZYEAR - 1.
L_S_RANGE-OPT = 'EQ'.
APPEND L_S_RANGE TO E_T_RANGE.
ENDLOOP.
*=====================================================================
* SFY_2_FP CHARACTERISTIC - CALENDAR YEAR - 2 OF THE CAL PERIOD ENTERED
*=====================================================================
WHEN 'ZCY_2_CP'.
CLEAR L_S_RANGE.
LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE WHERE VNAM = 'ZCPUSR1'.
ZYEAR = LOC_VAR_RANGE-LOW+0(4).
L_S_RANGE-LOW = ZYEAR - 2.
L_S_RANGE-OPT = 'EQ'.
APPEND L_S_RANGE TO E_T_RANGE.
ENDLOOP.
*=====================================================================
*=====================================================================
*Variable 1: Variable del año actual
when 'ZCYEAR'.
clear l_s_range.
l_s_range-low = sy-datum(4).
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
clear: l_s_range.
*Variable: Variable del ejercicio actual
when 'ZV_FISCYEAR'.
clear l_s_range.
l_s_range-low = sy-datum(4).
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
clear: l_s_range.
*Variable: variable dia hoy
when 'ZV_SYDATUM'.
clear l_s_range.
l_s_range-low = sy-datum.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
clear: l_s_range.
** Variável para obter o mês.ano da variável 0P_KEYDT
when 'ZV_CMKEYDT'. loop at i_t_var_range into loc_var_range
where vnam = '0P_KEYDT'.
clear l_s_range.
clear: aux_year_n0, mm.
aux_year_n0 = loc_var_range-low(4).
mm = loc_var_range-low+4(2).
concatenate aux_year_n0 mm into l_s_range-low.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
endif.
Variables para o relatorio de FI 1.3. a partir de dadta de vencimento
**** obtem a data de lançamento para n-0, n-1 e n-2. e meses homologos.
when 'ZV_KEYDT_N2'.
loop at i_t_var_range into loc_var_range
where vnam = '0P_KEYDT'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
concatenate aux_year_n2 '01' '01' into l_s_range-low.
concatenate aux_year_n2 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_KEYDT_N1'.
loop at i_t_var_range into loc_var_range
where vnam = '0P_KEYDT'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
concatenate aux_year_n1 '01' '01' into l_s_range-low.
concatenate aux_year_n1 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_KEYDT_N0'.
loop at i_t_var_range into loc_var_range
where vnam = '0P_KEYDT'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
concatenate aux_year_n0 '01' '01' into l_s_range-low.
concatenate aux_year_n0 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_KEYDT_M'.
loop at i_t_var_range into loc_var_range
where vnam = '0P_KEYDT'.
clear l_s_range.
l_s_range-low = loc_var_range-low+4(2). "low value e.g.200001
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_KEYDT'.
loop at i_t_var_range into loc_var_range
where vnam = '0P_KEYDT'.
clear l_s_range.
l_s_range-low = loc_var_range-low. "low value e.g.200001
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
* Conta o nº de meses para os relatorios de RH
when 'ZV_COUNTM'.
clear: l_s_range, aux_data_h, aux_data_l, l_s_diff_period .
loop at i_t_var_range into loc_var_range where vnam = 'ZP_CALMO'.
concatenate loc_var_range-low '01' into aux_data_l.
concatenate loc_var_range-high '01' into aux_data_h.
call function 'MONTHS_BETWEEN_TWO_DATES'
exporting
i_datum_bis = aux_data_h
i_datum_von = aux_data_l* I_KZ_INCL_BIS = ' '
importing
e_monate = l_s_diff_period.
add 1 to l_s_diff_period.
l_s_range-low = l_s_diff_period.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
* Variável para o relatórios de RH que vai permitir incluir na data o último dia do mês para recolher os dados do cadastro.
when 'ZV_AUXDATA'.
clear: l_s_range, aux_data.
loop at i_t_var_range into loc_var_range where vnam = 'ZP_CALMO'.
concatenate loc_var_range-high '01' into aux_data.
call function 'SLS_MISC_GET_LAST_DAY_OF_MONTH'
EXPORTING
day_in = aux_data
IMPORTING
last_day_of_month = aux_data
EXCEPTIONS
day_in_not_valid = 1
others = 2.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = aux_data.
append l_s_range to e_t_range.
exit.
endloop.
* Variables que obteñen o día, o mes e o año.(formato fiscal 001.2011)
when 'ZP_DAY'.
loop at i_t_var_range into loc_var_range
where vnam = 'CAL_DAY'.
clear l_s_range.
l_s_range-low = loc_var_range-low+6(2) .
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZP_PERIO'.
loop at i_t_var_range into loc_var_range
where vnam = 'CAL_DAY'.
clear l_s_range.
l_s_range-low = loc_var_range-low+4(2). "low value e.g.200001
concatenate '0' l_s_range-low into l_s_range-low.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZP_YEAR'.
loop at i_t_var_range into loc_var_range
where vnam = 'CAL_DAY'.
clear l_s_range.
l_s_range-low = loc_var_range-low(4). "low value e.g.200001
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
Variable3: Variables que obteñen o día, o mes e o año.(formato CAL 01.2011)
when 'ZV_CALDAY'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY'.
clear l_s_range.
l_s_range-low = loc_var_range-low+6(2). "low value e.g.200001
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_CALMO'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY'.
clear l_s_range.
l_s_range-low = loc_var_range-low+4(2). "low value e.g.200001
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_CALYE'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY'.
clear l_s_range.
l_s_range-low = loc_var_range-low(4). "low value e.g.200001
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
append l_s_range to e_t_range.
exit.
endloop.* fin VARIABLE
*basado en la misma variable de dia, variables del dia 01.01.YYYY hasta DD.MM.YYYY para los anhos n, n-1 y n-2.
when 'ZV_DAY1_N2'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
if mm eq '02' and dd eq '29'.
dd = '28'.
endif.
concatenate aux_year_n2 '01' '01' into l_s_range-low.
concatenate aux_year_n2 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_DAY1_N1'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
if mm eq '02' and dd eq '29'.
dd = '28'.
endif.
concatenate aux_year_n1 '01' '01' into l_s_range-low.
concatenate aux_year_n1 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_DAY1_N0'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
concatenate aux_year_n0 '01' '01' into l_s_range-low.
concatenate aux_year_n0 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.* fin VARIABLE
*basado en la misma variable de dia, variables del dia 01.01.YYYY hasta DD.MM.YYYY para los anhos n, n-1 y n-2.
when 'ZV_MM1_N2'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_CALMONTH'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
concatenate aux_year_n2 '01' into l_s_range-low.
concatenate aux_year_n2 mm into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_MM1_N1'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_CALMONTH'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
concatenate aux_year_n1 '01' into l_s_range-low.
concatenate aux_year_n1 mm into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_MM1_N0'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_CALMONTH'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm.
aux_year_n2 = loc_var_range-low(4) - 2.
aux_year_n1 = loc_var_range-low(4) - 1.
aux_year_n0 = loc_var_range-low(4) - 0.
mm = loc_var_range-low+4(2).
concatenate aux_year_n0 '01' into l_s_range-low.
concatenate aux_year_n0 mm into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.*basado en variable de dia, variables del dia DD.MM.YYYY hasta DD.MM.YYYY para os anhos n-1 y n-2.
when 'ZV_DAY2_N2'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY2'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 2.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
concatenate aux_year_n2 mm dd into l_s_range-low.
aux_year_n2 = loc_var_range-high(4) - 2.
mm = loc_var_range-high+4(2).
dd = loc_var_range-high+6(2).
concatenate aux_year_n2 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
when 'ZV_DAY2_N1'.
loop at i_t_var_range into loc_var_range
where vnam = 'ZV_DAY2'.
clear l_s_range.
clear: aux_year_n2, aux_year_n1, aux_year_n0, mm, dd.
aux_year_n2 = loc_var_range-low(4) - 1.
mm = loc_var_range-low+4(2).
dd = loc_var_range-low+6(2).
concatenate aux_year_n2 mm dd into l_s_range-low.
aux_year_n2 = loc_var_range-high(4) - 1.
mm = loc_var_range-high+4(2).
dd = loc_var_range-high+6(2).
concatenate aux_year_n2 mm dd into l_s_range-high.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
append l_s_range to e_t_range.
exit.
endloop.
======================================================================
** A partir del mes/año calcula al acumulado anual hasta ese mes
** incluido
*====================================================================
WHEN 'ZV_FYPCP'.
CLEAR L_S_RANGE.
LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = '0RMA_FIP'.
PERFORM f_fill_ZV_FYPCP USING loc_var_range
CHANGING l_s_range.
APPEND L_S_RANGE TO E_T_RANGE.
EXIT.
ENDLOOP.
*======================================================================
** A partir del mes introducido calcula al acumulado anual hasta ese mes
** incluido
*====================================================================
WHEN 'ZV_PER3A'.
CLEAR L_S_RANGE.
LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = 'ZV_PER3'.
l_s_range-low = '001'.
l_s_range-high = LOC_VAR_RANGE-LOW.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'BT'.
APPEND L_S_RANGE TO E_T_RANGE.
EXIT.
ENDLOOP.
No hay comentarios:
Publicar un comentario