0% found this document useful (0 votes)
13 views6 pages

Adps

Uploaded by

Wilson Zapata
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views6 pages

Adps

Uploaded by

Wilson Zapata
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 6

REPORT RSAN_WB_ROUTINE_TEMP_REPORT .

TYPES: BEGIN OF y_source_fields ,


CALDAY TYPE /BI0/OICALDAY ,
TIME TYPE /BI0/OITIME ,
ZCHANGEIN TYPE /BIC/OIZCHANGEIN ,
ZCHANGENR TYPE /BIC/OIZCHANGENR ,
ZOBJECTID TYPE /BIC/OIZOBJECTID ,
TCTTIMSTMP TYPE /BI0/OITCTTIMSTMP ,
BPARTNER TYPE /BI0/OIBPARTNER ,
ZKFM_WVE1 TYPE /BIC/OIZKFM_WVE1 ,
ZREL_RESP TYPE /BIC/OIZREL_RESP ,
END OF y_source_fields .
TYPES: yt_source_fields TYPE STANDARD TABLE OF y_source_fields .

TYPES: BEGIN OF y_target_fields ,


ZLP_PERSO TYPE /BIC/OIZLP_PERSO ,
CALMONTH TYPE /BI0/OICALMONTH ,
ZLP_SALER TYPE /BIC/OIZLP_SALER ,
ZLP_AV TYPE /BIC/OIZLP_AV ,
CUSTOMER TYPE /BI0/OICUSTOMER ,
ZKFM_WVE1 TYPE /BIC/OIZKFM_WVE1 ,
BPARTNER TYPE /BI0/OIBPARTNER ,
ZLP_CLIE TYPE /BIC/OIZLP_CLIE ,
EMPLOYEE TYPE /BI0/OIEMPLOYEE ,
ZLP_ICART TYPE /BIC/OIZLP_ICART ,
ZIND_CART TYPE /BIC/OIZIND_CART ,
ZREL_RESP TYPE /BIC/OIZREL_RESP ,
END OF y_target_fields .
TYPES: yt_target_fields TYPE STANDARD TABLE OF y_target_fields .
*---------- Begin of type definitions -------------------------------

*TYPES: ...

*----------- End of type definitions --------------------------------


FORM compute_data_transformation
USING it_source TYPE yt_source_fields
ir_context TYPE REF TO if_rsan_rt_routine_context
EXPORTING et_target TYPE yt_target_fields .
*--------- Begin of transformation code -----------------------------

* @001 JRodriguez 25/08/2017


* Se guarda la foto del mes
* @002 Gguerrero 06/06/2018
* Corrige la foto del mes

TYPES: BEGIN OF LTY_OP23,


ZREL_RESP TYPE /BIC/AZKFMOP2300-/BIC/ZREL_RESP,
ZLP_AV TYPE /BIC/AZKFMOP2300-/BIC/ZLP_AV,
END OF LTY_OP23.

TYPES: BEGIN OF LTY_SALER,


ZLP_SALER TYPE /BIC/PZLP_SALER-/BIC/ZLP_SALER,
ZKFM_WVE1 TYPE /BIC/PZLP_SALER-/BIC/ZKFM_WVE1,
TAX_NUMB TYPE /BI0/QEMPLOYEE-PERSIDNO,
END OF LTY_SALER.

TYPES: BEGIN OF LTY_CLIE,


ZLP_CLIE TYPE /BIC/PZLP_CLIE-/BIC/ZLP_CLIE,
CUSTOMER TYPE /BIC/PZLP_CLIE-CUSTOMER,
END OF LTY_CLIE.

TYPES: BEGIN OF LTY_EMPLOYEE,


EMPLOYEE TYPE /BI0/QEMPLOYEE-EMPLOYEE,
PERSIDNO TYPE /BI0/QEMPLOYEE-PERSIDNO,
END OF LTY_EMPLOYEE.

DATA: LDT_ASIGNA TYPE yt_source_fields,


LDT_DESASIGNA TYPE yt_source_fields,
LST_SOURCE TYPE yt_source_fields,
LST_DESASIGNA TYPE SORTED TABLE OF y_source_fields
WITH NON-UNIQUE KEY ZOBJECTID TCTTIMSTMP,
LHT_DESASIGNA TYPE HASHED TABLE OF y_source_fields
WITH UNIQUE KEY BPARTNER ZKFM_WVE1 ZREL_RESP,
LHT_SOURCE TYPE HASHED TABLE OF y_source_fields
WITH UNIQUE KEY BPARTNER ZKFM_WVE1 ZREL_RESP ZCHANGEIN,
LWA_CARTERA TYPE y_target_fields,
LDT_CARTERA_ACT TYPE yt_target_fields,
LHT_OP23 TYPE HASHED TABLE OF LTY_OP23
WITH UNIQUE KEY ZREL_RESP ZLP_AV,
LDT_SALER TYPE STANDARD TABLE OF LTY_SALER,
LHT_SALER TYPE HASHED TABLE OF LTY_SALER
WITH UNIQUE KEY ZKFM_WVE1,
LDT_CLIE TYPE STANDARD TABLE OF LTY_CLIE,
LHT_CLIE TYPE HASHED TABLE OF LTY_CLIE
WITH UNIQUE KEY CUSTOMER,
LHT_EMPLOYEE TYPE HASHED TABLE OF LTY_EMPLOYEE
WITH UNIQUE KEY PERSIDNO,
meses TYPE VTBBEWE-ATAGE,
f_ini type VTBBEWE-DBERVON,
f_fin type VTBBEWE-DBERBIS,
aux_ini type VTBBEWE-DBERVON,
aux_fin type VTBBEWE-DBERBIS,
L_FECHOR(14) TYPE C,
GDT_CARTERA TYPE yt_target_fields,
GHT_CARTERA_ACT TYPE HASHED TABLE OF y_target_fields
WITH UNIQUE KEY ZLP_AV zkfm_wve1 BPARTNER ZREL_RESP,
LV_TABIX TYPE I,
FLAG TYPE C,
l_periodo(6) TYPE c,
l_year(4) TYPE c,
LR_REL TYPE RANGE OF /BI0/ABP_REL00-BP_RELTYPE,
LWA_REL LIKE LINE OF LR_REL.

FIELD-SYMBOLS: <L_SOURCE> TYPE y_source_fields,


<SOURCE_FIELDS> TYPE y_source_fields,
<L_OP23> TYPE LTY_OP23,
<L_SALER> TYPE LTY_SALER,
<L_CLIE> TYPE LTY_CLIE,
<L_EMPLOYEE> TYPE LTY_EMPLOYEE,
<L_CARTERA> TYPE y_target_fields.

REFRESH LR_REL.
LWA_REL-SIGN = 'I'.
LWA_REL-OPTION = 'BT'.
LWA_REL-LOW = 'ZREL36'.
LWA_REL-HIGH = 'ZREL41'.
APPEND LWA_REL TO LR_REL.
LWA_REL-LOW = 'ZREL51'.
LWA_REL-HIGH = 'ZREL52'.
APPEND LWA_REL TO LR_REL.
LWA_REL-LOW = 'ZREL54'.
LWA_REL-HIGH = 'ZREL55'.
APPEND LWA_REL TO LR_REL.

* break-point.
SELECT SINGLE ANOMES INTO L_PERIODO
FROM ZBI_PARAMETROS
WHERE PROYECTO = 'PE_CTR_CRM' AND EMPRESA = '3000'.

L_YEAR = L_PERIODO(4) - 1.
CONCATENATE L_YEAR '01' INTO L_PERIODO.

"DELETE IT_SOURCE WHERE ZREL_RESP IN LR_REL.

LDT_ASIGNA[] = LST_SOURCE[] = it_source[].


DELETE LDT_ASIGNA WHERE ZCHANGEIN NE 'I' AND
ZCHANGEIN NE 'U'.

LDT_DESASIGNA[] = it_source[].
DELETE LDT_DESASIGNA WHERE ZCHANGEIN NE 'D'.

LST_DESASIGNA[] = LDT_DESASIGNA[].
SORT LDT_DESASIGNA BY BPARTNER ZKFM_WVE1 ZREL_RESP
TCTTIMSTMP DESCENDING.
DELETE ADJACENT DUPLICATES FROM LDT_DESASIGNA
COMPARING BPARTNER ZKFM_WVE1 ZREL_RESP.
LHT_DESASIGNA[] = LDT_DESASIGNA[].

SORT LST_SOURCE BY BPARTNER ZKFM_WVE1 ZREL_RESP


ZCHANGENR DESCENDING.
DELETE ADJACENT DUPLICATES FROM LST_SOURCE
COMPARING BPARTNER ZKFM_WVE1 ZREL_RESP.
LHT_SOURCE[] = LST_SOURCE[].

SELECT DISTINCT /BIC/ZREL_RESP /BIC/ZLP_AV


INTO TABLE LHT_OP23
FROM /BIC/AZKFMOP2300
WHERE /BIC/ZLP_AV NE '009'.

IF LDT_ASIGNA[] IS NOT INITIAL.


"Vendedor
SELECT S~/BIC/ZLP_SALER S~/BIC/ZKFM_WVE1 S~TAX_NUMB
INTO TABLE LDT_SALER
FROM /BIC/PZLP_SALER AS S
INNER JOIN /BI0/PBPARTNER AS P ON P~BPARTNER = S~/BIC/ZKFM_WVE1
FOR ALL ENTRIES IN LDT_ASIGNA
WHERE S~OBJVERS = 'A'
AND S~/BIC/ZLP_INACT = 'N'
AND S~/BIC/ZKFM_WVE1 = LDT_ASIGNA-ZOBJECTID+22(10)
AND P~OBJVERS = 'A'
AND P~COUNTRY = 'PE'.

SORT LDT_SALER BY ZKFM_WVE1.


DELETE ADJACENT DUPLICATES FROM LDT_SALER COMPARING ZKFM_WVE1.
LHT_SALER[] = LDT_SALER[].

"Cliente
SELECT /BIC/ZLP_CLIE CUSTOMER
INTO TABLE LDT_CLIE
FROM /BIC/PZLP_CLIE
FOR ALL ENTRIES IN LDT_ASIGNA
WHERE OBJVERS = 'A'
AND CUSTOMER = LDT_ASIGNA-ZOBJECTID+12(10).

SORT LDT_CLIE BY CUSTOMER.


DELETE ADJACENT DUPLICATES FROM LDT_CLIE COMPARING CUSTOMER.
LHT_CLIE[] = LDT_CLIE[].
ENDIF.

DELETE LDT_SALER WHERE TAX_NUMB IS INITIAL.


IF LDT_SALER[] IS NOT INITIAL.
SELECT EMPLOYEE PERSIDNO
INTO TABLE LHT_EMPLOYEE
FROM /BI0/QEMPLOYEE
FOR ALL ENTRIES IN LDT_SALER
WHERE OBJVERS = 'A'
AND DATETO = '99991231'
AND PERSIDNO EQ LDT_SALER-TAX_NUMB
AND /BIC/ZKFM_TDID NE ''.
ENDIF.

LOOP AT LDT_ASIGNA ASSIGNING <SOURCE_FIELDS>.


CLEAR LWA_CARTERA.

LWA_CARTERA-BPARTNER = <SOURCE_FIELDS>-ZOBJECTID+12(10).
LWA_CARTERA-ZKFM_WVE1 = <SOURCE_FIELDS>-ZOBJECTID+22(10).
LWA_CARTERA-CUSTOMER = LWA_CARTERA-BPARTNER.
LWA_CARTERA-ZREL_RESP = <SOURCE_FIELDS>-ZREL_RESP.

READ TABLE LHT_SALER WITH TABLE KEY


ZKFM_WVE1 = LWA_CARTERA-ZKFM_WVE1
ASSIGNING <L_SALER>.
IF SY-SUBRC EQ 0.
LWA_CARTERA-ZLP_SALER = <L_SALER>-ZLP_SALER.

READ TABLE LHT_EMPLOYEE


WITH TABLE KEY PERSIDNO = <L_SALER>-TAX_NUMB
ASSIGNING <L_EMPLOYEE>.
IF SY-SUBRC EQ 0.
LWA_CARTERA-EMPLOYEE = <L_EMPLOYEE>-EMPLOYEE.
ENDIF.
ENDIF.

READ TABLE LHT_CLIE WITH TABLE KEY


CUSTOMER = LWA_CARTERA-CUSTOMER
ASSIGNING <L_CLIE>.
IF SY-SUBRC EQ 0.
LWA_CARTERA-ZLP_PERSO = LWA_CARTERA-ZLP_CLIE =
<L_CLIE>-ZLP_CLIE.
ENDIF.
READ TABLE LHT_OP23 WITH KEY
ZREL_RESP = <SOURCE_FIELDS>-ZOBJECTID+40(6)
ASSIGNING <L_OP23>.
IF SY-SUBRC EQ 0.
LWA_CARTERA-ZLP_AV = <L_OP23>-ZLP_AV.
ENDIF.

"Cartera Activa
READ TABLE LHT_DESASIGNA ASSIGNING <L_SOURCE> WITH TABLE KEY
BPARTNER = <SOURCE_FIELDS>-BPARTNER
ZKFM_WVE1 = <SOURCE_FIELDS>-ZKFM_WVE1
ZREL_RESP = <SOURCE_FIELDS>-ZREL_RESP.
IF SY-SUBRC NE 0 OR ( SY-SUBRC EQ 0
AND <L_SOURCE>-TCTTIMSTMP LT <SOURCE_FIELDS>-TCTTIMSTMP ).

COLLECT LWA_CARTERA INTO LDT_CARTERA_ACT.


ENDIF.

f_ini = <SOURCE_FIELDS>-CALDAY.

READ TABLE LST_DESASIGNA TRANSPORTING NO FIELDS WITH KEY


ZOBJECTID = <SOURCE_FIELDS>-ZOBJECTID.
LV_TABIX = SY-TABIX.
LOOP AT LST_DESASIGNA ASSIGNING <L_SOURCE>
WHERE ZOBJECTID = <SOURCE_FIELDS>-ZOBJECTID
AND TCTTIMSTMP GE <SOURCE_FIELDS>-TCTTIMSTMP.
EXIT.
ENDLOOP.

CLEAR: FLAG.
IF SY-SUBRC EQ 0.
f_fin = <L_SOURCE>-CALDAY.
ELSE.
f_fin = sy-datum - 1.
FLAG = 'X'.
ENDIF.

CONCATENATE f_ini(06) '01' INTO f_ini.


CONCATENATE f_fin(06) '01' INTO aux_fin.

WHILE aux_fin(6) GE f_ini(6).


LWA_CARTERA-CALMONTH = f_ini(6).

IF ( FLAG = 'X' ) OR
( f_ini(6) NE aux_fin(6) ).

COLLECT LWA_CARTERA INTO et_target.


ENDIF.

CONCATENATE f_ini(6) '15' INTO f_ini.


f_ini = f_ini + 30.

ENDWHILE.
ENDLOOP.

GHT_CARTERA_ACT[] = LDT_CARTERA_ACT[].

LOOP AT et_target ASSIGNING <L_CARTERA>.


READ TABLE LHT_SOURCE ASSIGNING <L_SOURCE>
WITH TABLE KEY
zkfm_wve1 = <L_CARTERA>-zkfm_wve1
BPARTNER = <L_CARTERA>-BPARTNER
ZREL_RESP = <L_CARTERA>-ZREL_RESP
ZCHANGEIN = 'D'.
IF SY-SUBRC EQ 0.
IF <L_CARTERA>-CALMONTH < <L_SOURCE>-CALDAY+0(6).
<L_CARTERA>-ZIND_CART = 'A'.
<L_CARTERA>-ZLP_ICART = 'N'.
ELSE.
<L_CARTERA>-ZIND_CART = 'I'.
<L_CARTERA>-ZLP_ICART = 'S'.
ENDIF.
ELSE.
<L_CARTERA>-ZIND_CART = 'A'.
<L_CARTERA>-ZLP_ICART = 'N'.
ENDIF.
ENDLOOP.

DELETE ET_TARGET WHERE CALMONTH < L_PERIODO.

You might also like