viernes, 26 de abril de 2013
Z_SET_BEX_USER_TEMPLATE
Z_SET_BEX_USER_TEMPLATE
*&---------------------------------------------------------------------*
*& Report Z_SET_BEX_USER_TEMPLATE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_SET_BEX_USER_TEMPLATE.
**************************************************************************
* Type Pools
**************************************************************************
type-pools:
rs, rsr, rspar, rssg.
**************************************************************************
selection-screen begin of block rad2 with frame title text-001.
parameters:
p_usr like usr01-BNAME,
wbid like rsrwbindex-workbookid,
version(2) type c,
p_vers as checkbox default rs_c_true.
selection-screen end of block rad2.
tables: rsrwbtemplate, usr01.
select * from usr01
where bname = p_usr.
rsrwbtemplate-templateuser = usr01-bname.
rsrwbtemplate-workbookid = wbid.
if p_vers = rs_c_true.
rsrwbtemplate-LEAST_BEX_VERSIO = version.
endif.
update rsrwbtemplate.
if sy-subrc <> 0. insert rsrwbtemplate. endif.
endselect.
Botanita, Botana, SAP, BW, Ponte Carreira
BEX
Valor TAM y Aculumado: Variables e valor para Update Rules
**************Variables*****************************************
ACUMULADO
Clear: mes_ini, mes_fin, year_ini, year_fin, mes_year_ini, mes_year_fin.
mes_fin = COMM_STRUCTURE-CALMONTH+4(2).
year_fin = COMM_STRUCTURE-CALMONTH(4).
mes_ini = '01'.
year_ini = COMM_STRUCTURE-CALMONTH(4).
concatenate year_ini mes_ini into mes_year_ini.
concatenate year_fin mes_fin into mes_year_fin.
SELECT SUM( /BIC/ZHIG_080 )
FROM /BIC/AZOHIG_0100
INTO RESULT
WHERE COMP_CODE = COMM_STRUCTURE-COMP_CODE
AND ( CALMONTH => mes_year_ini and CALMONTH =< mes_year_fin ).
TAM
Clear: mes_ini, mes_fin, year_ini, year_fin, mes_year_ini, mes_year_fin.
mes_fin = COMM_STRUCTURE-CALMONTH+4(2).
year_fin = COMM_STRUCTURE-CALMONTH(4).
mes_ini = mes_fin + 1.
year_ini = year_fin - 1.
concatenate year_ini mes_ini into mes_year_ini.
concatenate year_fin mes_fin into mes_year_fin.
if mes_fin eq 13.
concatenate year_ini '01' into mes_year_fin.
endif.
SELECT SUM( /BIC/ZHIG_080 )
FROM /BIC/AZOHIG_0100
INTO RESULT
WHERE COMP_CODE = COMM_STRUCTURE-COMP_CODE
AND ( CALMONTH => mes_year_ini and CALMONTH =< mes_year_fin ).
*****************************************************************************
ACUMULADO
Clear: mes_ini, mes_fin, year_ini, year_fin, mes_year_ini, mes_year_fin.
mes_fin = COMM_STRUCTURE-CALMONTH+4(2).
year_fin = COMM_STRUCTURE-CALMONTH(4).
mes_ini = '01'.
year_ini = COMM_STRUCTURE-CALMONTH(4).
concatenate year_ini mes_ini into mes_year_ini.
concatenate year_fin mes_fin into mes_year_fin.
SELECT SUM( /BIC/ZHIG_080 )
FROM /BIC/AZOHIG_0100
INTO RESULT
WHERE COMP_CODE = COMM_STRUCTURE-COMP_CODE
AND ( CALMONTH => mes_year_ini and CALMONTH =< mes_year_fin ).
TAM
Clear: mes_ini, mes_fin, year_ini, year_fin, mes_year_ini, mes_year_fin.
mes_fin = COMM_STRUCTURE-CALMONTH+4(2).
year_fin = COMM_STRUCTURE-CALMONTH(4).
mes_ini = mes_fin + 1.
year_ini = year_fin - 1.
concatenate year_ini mes_ini into mes_year_ini.
concatenate year_fin mes_fin into mes_year_fin.
if mes_fin eq 13.
concatenate year_ini '01' into mes_year_fin.
endif.
SELECT SUM( /BIC/ZHIG_080 )
FROM /BIC/AZOHIG_0100
INTO RESULT
WHERE COMP_CODE = COMM_STRUCTURE-COMP_CODE
AND ( CALMONTH => mes_year_ini and CALMONTH =< mes_year_fin ).
*****************************************************************************
R3: EXIT_SAPLRSAP_004: 4R_SAKNR_0000_HIER
* In this
example, Sets are extracted for DataSource 4R_SAKNR_0000_HIER
* they are
compounded by a value of 'TEST' (for compound 0CHRT_ACCTS)
* The exit
is called for any hierarchy extracted from OLTP to BW,
* therefore
we have to make sure only desired FI-SL-Sets are modified.
* This
information is available in I_DATASOURCE and I_S_HIEBAS.
*
IF
I_DATASOURCE = '4R_SAKNR_0000_HIER'
"<--- datasource="" o:p="" your="">--->
AND I_S_HIEBAS-HCLASS = '0000'. "Hierarchy class of FI-SL-Sets
* Add
compound value to hierarchy leaves
LOOP AT C_T_HIENODE WHERE IOBJNM <>
'0HIER_NODE'.
* Shift nodename right to get space for
compound characteristic
SHIFT C_T_HIENODE-NODENAME RIGHT BY 4
PLACES.
* Put chart of accounts into first 4 places
C_T_HIENODE-NODENAME(4) = 'TEST'. "<-- compound="" o:p="" value="" your="">-->
MODIFY C_T_HIENODE.
ENDLOOP.
* Add
compound value to intervals in the same fashion
LOOP AT C_T_HIEINTV.
SHIFT C_T_HIEINTV-LEAFFROM RIGHT BY 4
PLACES.
C_T_HIEINTV-LEAFFROM(4) = 'TEST'. "<-- compound="" o:p="" value="" your="">-->
SHIFT C_T_HIEINTV-LEAFTO RIGHT BY 4 PLACES.
C_T_HIEINTV-LEAFTO(4) = 'TEST'. "<-- compound="" o:p="" value="" your="">-->
MODIFY C_T_HIEINTV.
ENDLOOP.
ENDIF.
Carga en masa de fotos
REPORT ZHR_BDC_UPLOADPIC
NO STANDARD PAGE HEADING LINE-SIZE 255.
INCLUDE
INCLUDE BDCRECX1.
I N T E R N A L T A B L E S
DATA : BEGIN OF IT_DATA OCCURS 0,
RP50G-PERNR(8), " LIKE RP50G-PERNR,
RLGRAP-FILENAME(128),
END OF IT_DATA.
S T A R T - O F - S E L E C T I O N
START-OF-SELECTION.
PERFORM OPEN_GROUP.
CALL FUNCTION 'UPLOAD'
EXPORTING
FILENAME = 'C:\PICTURE.TXT'
FILETYPE = 'DAT'
TABLES
DATA_TAB = IT_DATA
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7.
IF SY-SUBRC NE 0.
WRITE : / 'Unable to upload data'.
STOP.
ENDIF.
LOOP AT IT_DATA.
PERFORM BDC_DYNPRO USING 'OANEWCON' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'TOAOM-AR_OBJECT'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=NEW'.
PERFORM BDC_FIELD USING 'TOAOM-SAP_OBJECT'
'PREL'.
PERFORM BDC_FIELD USING 'TOAOM-AR_OBJECT'
'HRICOLFOTO'.
PERFORM BDC_DYNPRO USING 'SAPLSJ01' '0200'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'FIELD_VALUES-INPUT(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=OK'.
PERFORM BDC_FIELD USING 'FIELD_VALUES-INPUT(01)'
IT_DATA-RP50G-PERNR. "'10002'.
PERFORM BDC_FIELD USING 'FIELD_VALUES-INPUT(02)'
'0002'.
PERFORM BDC_DYNPRO USING 'SAPLOPTM' '0105'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'SAPB-SAPPOOLINF'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=OKAY'.
PERFORM BDC_FIELD USING 'SAPB-SAPPOOLINF'
IT_DATA-RLGRAP-FILENAME. "JPG'.
PERFORM BDC_TRANSACTION USING 'OAOH'.
clear IT_DATA-RLGRAP-FILENAME.
ENDLOOP.
PERFORM CLOSE_GROUP.
Botanita, Botana, SAP, BW, Ponte Carreira
ABAP
Infopaquete ABAP ejemplos
**********30 dias hacia atras**************************************+
program
conversion_routine.
* Type
pools used by conversion program
type-pools:
rsarc, rsarr, rssm.
tables:
rssdlrange.
* Global
code used by conversion rules
*$*$ begin
of global - insert your declaration only below this line *-*
* TABLES:
...
* DATA: ...
*$*$ end of
global - insert your declaration only before this line *-*
*
-------------------------------------------------------------------
* InfoObject = Z_BUDAT
* Fieldname = BUDAT
* data type = DATS
* length = 000008
* convexit =
*
-------------------------------------------------------------------
form
compute_BUDAT
tables l_t_range structure rssdlrange
changing p_subrc like sy-subrc.
* Insert source code to current selection field
*$*$ begin
of routine - insert your code only below this line *-*
data: l_idx
like sy-tabix, l_budat_low like sy-datum.
read table l_t_range with key fieldname =
'BUDAT'.
l_idx = sy-tabix.
* Se calcula la fecha de dos día hacia atras
* clear l_budat_low.
l_budat_low = sy-datum.
l_budat_low = ( l_budat_low - 29 ).
* Se pone la fecha de dos días hacia atras
como límite inferior del
* rango de fechas, el límite superior la fecha
que venía y el
* signo de igual se pasa a between.
* clear l_t_range-high.
l_t_range-high = sy-datum.
l_t_range-low = l_budat_low.
l_t_range-option = 'BT'.
l_t_range-sign = 'I'.
modify l_t_range index l_idx.
p_subrc = 0.
*$*$ end of
routine - insert your code only before this line *-*
endform.
*****************************************************************+
*********ultimo dia del mes******************************************
data: l_idx like sy-tabix.
read table l_t_range with key
fieldname = 'STIDA'.
l_idx = sy-tabix.
*....
data: u_fecha like sy-datum.
* Se calcula la fecha
u_fecha = sy-datum.
* Ultimo dia do mes
CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH'
EXPORTING
DAY_IN = u_fecha
IMPORTING
LAST_DAY_OF_MONTH = u_fecha
EXCEPTIONS
DAY_IN_NOT_VALID = 1
OTHERS = 2.
* rango de fechas
l_t_range-high = u_fecha.
l_t_range-low = u_fecha.
l_t_range-option = 'BT'.
l_t_range-sign = 'I'.
modify l_t_range index l_idx.
Botanita, Botana, SAP, BW, Ponte Carreira
ABAP
TEVEN: infotipo IT2011
Detallo un poco mas como tratar el Infotipo 2011.
Los registros del IT2011 no se almacenan en una tabla tipo PANNNN, con NNNN = Nº Infotipo, sino en la tabla TEVEN, por lo que funciones como HR_READ_INFOTYPE, no sirven para leer los datos del IT2011, entonces un ejemplo de lectura del IT2011 es como el siguiente:
Código:
SELECT * FROM teven APPENDING TABLE it_teven
WHERE pernr EQ gt_pernr-pernr
AND ldate EQ gf_fecha
AND stokz EQ space.
A su vez, para borrar un registro es aconsejable hacerlo de la siguiente manera:
Código:
IF teven-stokz EQ space.
teven-stokz = 'X'.
teven-uname = sy-uname.
teven-aedtm = sy-datum.
UPDATE teven.
ENDIF.
BAPI_CC1_UPLOAD_TIMEEVENT.
2 - Exit Variables (step_2): ultimo dia del mes
*======================================================================
** A partir de la referencia 1 obtiene el intervalo mes/año 1
*====================================================================
WHEN 'V_CFPA'.
CLEAR L_S_RANGE.
CLEAR: L_MONTH_LOW, L_MONTH_HIGH, L_YEAR_LOW, L_YEAR_HIGH.
LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = '0P_FPER'.
L_MONTH_LOW = '001'.
*L_MONTH_HIGH = LOC_VAR_RANGE-LOW+24(2).
L_YEAR_LOW = LOC_VAR_RANGE-LOW+3(4).
*L_YEAR_HIGH = LOC_VAR_RANGE-LOW+20(4).
CONCATENATE L_YEAR_LOW L_MONTH_LOW INTO L_S_RANGE-LOW.
*CONCATENATE L_YEAR_HIGH '0' L_MONTH_HIGH INTO L_S_RANGE-HIGH.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'E'.
APPEND L_S_RANGE TO E_T_RANGE.
EXIT.
ENDLOOP.
WHEN 'ZV_DUM'.
CLEAR L_S_RANGE.
data u_fecha type dats.
LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = '0PCALMON'.
concatenate loc_var_range-low '01' into u_fecha.
ENDLOOP.
CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH'
EXPORTING
DAY_IN = u_fecha
IMPORTING
LAST_DAY_OF_MONTH = u_fecha
EXCEPTIONS
DAY_IN_NOT_VALID = 1
OTHERS = 2.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'EQ'.
L_S_RANGE-LOW = u_fecha.
APPEND L_S_RANGE TO E_T_RANGE.
Botanita, Botana, SAP, BW, Ponte Carreira
CMOD BW,
Exit Variables BW
Template for the Adhoc Web Application

href="
href="
href="
href="
Botanita, Botana, SAP, BW, Ponte Carreira
BEX WEB
Code para transacción para lanzar cadenas
&---------------------------------------------------------------------*
*& Report ZBWPR00
*&
*
REPORT ZBWPR00.
************************************************************************
* VARIABLES
************************************************************************
CONSTANTS: c_co(13) TYPE C VALUE 'ZPC_IG_TRAN03', "Comercial
c_lo(13) TYPE C VALUE 'ZPC_IG_TRAN04', "Logística
c_cg(13) TYPE C VALUE 'ZPC_IG_TRAN05', "Control de Gestión
c_pr(13) TYPE C VALUE 'ZPC_IG_TRAN02', "Producción
c_ca(13) TYPE C VALUE 'ZPC_IG_TRAN06', "Calidad
c_fi(13) TYPE C VALUE 'ZPC_IG_TRAN07', "Finanzas
c_rh(13) TYPE C VALUE 'ZPC_IG_TRAN01'. "Recursos Humanos
DATA: V_CHAIN TYPE RSPC_CHAIN. "Cadena de proceso
************************************************************************
* PANTALLA SELECCIÓN
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS:
cb_co AS CHECKBOX, "Comercial
cb_lo AS CHECKBOX, "Logística
cb_cg AS CHECKBOX, "Control de Gestión
cb_pr AS CHECKBOX, "Producción
cb_ca AS CHECKBOX, "Calidad
cb_fi AS CHECKBOX, "Finanzas
cb_rh AS CHECKBOX. "Recursos Humanos
SELECTION-SCREEN END OF BLOCK b1.
************************************************************************
* START-OF-SELECTION
************************************************************************
START-OF-SELECTION.
MESSAGE I000(zbw).
IF cb_co IS NOT INITIAL.
CLEAR V_CHAIN.
V_CHAIN = c_co.
PERFORM F_CHAIN_START USING V_CHAIN.
ENDIF.
IF cb_lo IS NOT INITIAL.
CLEAR V_CHAIN.
V_CHAIN = c_lo.
PERFORM F_CHAIN_START USING V_CHAIN.
ENDIF.
IF cb_cg IS NOT INITIAL.
CLEAR V_CHAIN.
V_CHAIN = c_cg.
PERFORM F_CHAIN_START USING V_CHAIN.
ENDIF.
IF cb_pr IS NOT INITIAL.
CLEAR V_CHAIN.
V_CHAIN = c_pr.
PERFORM F_CHAIN_START USING V_CHAIN.
ENDIF.
IF cb_ca IS NOT INITIAL.
CLEAR V_CHAIN.
V_CHAIN = c_ca.
PERFORM F_CHAIN_START USING V_CHAIN.
ENDIF.
IF cb_fi IS NOT INITIAL.
CLEAR V_CHAIN.
V_CHAIN = c_fi.
PERFORM F_CHAIN_START USING V_CHAIN.
ENDIF.
IF cb_rh IS NOT INITIAL.
CLEAR V_CHAIN.
V_CHAIN = c_rh.
PERFORM F_CHAIN_START USING V_CHAIN.
ENDIF.
*****************************************************************
* RUTINAS
*****************************************************************
*&---------------------------------------------------------------------*
*& Form F_CHAIN_START
*&---------------------------------------------------------------------*
* Ejecutar cadena de procesos
*----------------------------------------------------------------------*
* -->Pe_CHAIN text
*----------------------------------------------------------------------*
FORM F_CHAIN_START USING Pe_CHAIN.
CALL FUNCTION 'RSPC_CHAIN_START' IN BACKGROUND TASK
* [AS SEPARATE UNIT]
* [DESTINATION dest]
EXPORTING
i_chain = Pe_CHAIN
i_synchronous = 'X'.
.
COMMIT WORK.
* CALL FUNCTION 'RSPC_CHAIN_START'
* EXPORTING
* i_chain = Pe_CHAIN
* i_synchronous = 'X'.
ENDFORM. " F_CHAIN_START
Botanita, Botana, SAP, BW, Ponte Carreira
ABAP
Coger el ultimo valor de un CHAR
opción 1
data: str_aux type string.
str_aux =
data: length type i.
length = strlen( str_aux ).
if not length is initial.
perdon
length = lenght - 1.
endif.
opcion 2
data: str_aux type string.
str_aux =
shift str_aux by 1 places RIGHT CIRCULAR.
if not str_aux is initial.
endif.
Botanita, Botana, SAP, BW, Ponte Carreira
ABAP
borrado con patron
DELETE DATA_PACKAGE WHERE COMP_CODE = 'YYYY'
AND ( MATERIAL NP 'K*'
AND MATERIAL NP 'W*'
AND MATERIAL NP 'H*'
AND MATERIAL NP 'L*').
Botanita, Botana, SAP, BW, Ponte Carreira
ABAP
Rutina: Año Bisiesto // Fisper-->Calmonth
data: year type /BI0/OICALYEAR,
tri type /BI0/OICALQUART1,
dia type c LENGTH 2,
mes type /BI0/OICALMONTH2,
yearmes type /BI0/OICALMONTH.
INCLUDE rs_bct_hr_update_rules_general.
***********
clear: mes, year, dia, yearmes.
year = COMM_STRUCTURE-CALMONTH(4).
year = year + 1.
mes = COMM_STRUCTURE-CALMONTH+4(2).
dia = COMM_STRUCTURE-CALDAY+6(2).
if mes eq '02'.
concatenate year mes into yearmes.
PERFORM CALCULATE_ULTIMO
USING yearmes
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
CHANGING RESULT
RETURNCODE.
else.
concatenate year mes dia into RESULT.
endif.
************************************************************+
************************************************************
data: year type /BI0/OICALYEAR,
tri type /BI0/OICALQUART1,
dia type c LENGTH 2,
mes type /BI0/OICALMONTH2.
clear: mes, year.
year = COMM_STRUCTURE-CALMONTH(4).
year = year + 1.
mes = COMM_STRUCTURE-CALMONTH+4(2).
dia = COMM_STRUCTURE-CALDAY+6(2).
if dia eq '29'.
dia = '28'.
endif.
concatenate year mes dia into RESULT.
*************************************************************
*************************************************************
data: mes type /BI0/OICALMONTH2,
year type /BI0/OICALYEAR.
clear: mes, year.
year = TRAN_STRUCTURE-FISCPER(4) .
mes = TRAN_STRUCTURE-FISCPER+5(2) .
if mes > 12.
mes = 12.
endif.
if mes = 00.
mes = 01.
endif.
concatenate year mes into RESULT.
Botanita, Botana, SAP, BW, Ponte Carreira
ABAP
3 - Exit variables BW (Step 3): ejemplo
ELSEIF i_step = 3.
* Formula variable for Unit
LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = 'P_UCONV1'.
perform f_check_p_uconv1 using loc_var_range
changing l_subrc.
if l_subrc <> 0.
raise entry_again.
endif.
ENDLOOP.
ENDIF.
Botanita, Botana, SAP, BW, Ponte Carreira
CMOD BW,
Exit Variables BW
2 - Exit variables (Step_2): ejemplos para text variables
* Text variables
*====================================================================
* Rellena el texto del año anterior
*====================================================================
WHEN 'TFYEAR1'.
PERFORM f_fill_tfyear1 USING loc_var_range
CHANGING l_s_range.
APPEND L_S_RANGE TO E_T_RANGE.
*====================================================================
* Rellena el periodo a partir del valor de periodo introducido
*====================================================================
WHEN 'tP_PER3'.
CLEAR L_S_RANGE.
LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = 'ZV_PER3'.
PERFORM f_fill_tP_PER3 USING loc_var_range
CHANGING l_s_range.
APPEND L_S_RANGE TO E_T_RANGE.
EXIT.
ENDLOOP.
*====================================================================
* Rellena el periodo a partir del valor de periodo acumulado
*====================================================================
WHEN 'tZ_PERAC'.
CLEAR L_S_RANGE.
LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = 'Z_PERAC'.
PERFORM f_fill_tZ_PERAC USING loc_var_range
CHANGING l_s_range.
APPEND L_S_RANGE TO E_T_RANGE.
EXIT.
ENDLOOP.
WHEN OTHERS.
ENDCASE.
Botanita, Botana, SAP, BW, Ponte Carreira
CMOD BW,
Exit Variables BW
1- Exit Variables BW (Step 1): ejemplos
Botanita, Botana, SAP, BW, Ponte Carreira
CMOD BW,
Exit Variables BW
2 - Exit Variables BW (Step 2): Ejemplos
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.
Botanita, Botana, SAP, BW, Ponte Carreira
CMOD BW,
Exit Variables BW
Suscribirse a:
Entradas (Atom)