Hi Experts,
I am loading the data DSO to Info cube, but it took long time, in DSO level 65 lacs records, i wrote some ABAP logic, how to improve the Performance
change the ABAP code.
here we are getting the data 2 DSO's using ABAP code.
please respond asap.
TYPES : BEGIN OF ty_ds400,
GENDER TYPE /BI0/OIGENDER,
DATEBIRTH TYPE /BI0/OIDATEBIRTH,
HE_STCAMP TYPE /BI0/OIHE_STCAMP,
IS_MARITST TYPE /BI0/OIIS_MARITST,
/BIC/ZBLDGRP TYPE /BIC/OIZBLDGRP,
HE_DEGLVL TYPE /BI0/OIHE_DEGLVL,
HE_STORGA TYPE /BI0/OIHE_STORGA,
HE_STORGP TYPE /BI0/OIHE_STORGP,
/BIC/ZROLL_NO TYPE /BIC/OIZROLL_NO,
/BIC/ZQUAL_NAM TYPE /BIC/OIZQUAL_NAM,
/BIC/ZSTWOEXP TYPE /BIC/OIZSTWOEXP,
END OF ty_ds400.
DATA : lt_ds400 type TABLE OF ty_ds400 .
DATA : LS_DS400 TYPE TY_DS400.
types : Begin of ty_ds200,
HE_REGBEG type /BI0/OIHE_REGBEG,
HE_PRGRM type /BI0/OIHE_PRGRM,
HE_STAGE type /BI0/OIHE_STAGE,
HE_YRSES type /BI0/OIHE_YRSES,
HE_REGEND type /BI0/OIHE_REGEND,
HE_STUDNT type /BI0/OIHE_STUDNT,
/BIC/ZREG type /BIC/OIZREG,
end of ty_ds200.
data : lt_ds200 type table of ty_ds200,
ls_ds200 type ty_ds200.
if RESULT_PACKAGE is not initial.
select
GENDER
DATEBIRTH
HE_STCAMP
IS_MARITST
/BIC/ZBLDGRP
HE_DEGLVL
HE_STORGA
HE_STORGP
/BIC/ZROLL_NO
/BIC/ZQUAL_NAM
/BIC/ZSTWOEXP
From /BI0/AHE_DS0400 INTO TABLE
lt_ds400
FOR ALL ENTRIES IN RESULT_PACKAGE
WHERE /BIC/ZROLL_NO = RESULT_PACKAGE-/BIC/ZROLL_NO
and DATETO = '99991231'.
SELECT
HE_REGBEG "begin date
HE_PRGRM
HE_STAGE
HE_YRSES
HE_REGEND " end date
HE_STUDNT
/BIC/ZREG " reg type
FROM /BI0/AHE_DS0200 INTO table lt_ds200 FOR ALL ENTRIES IN
RESULT_PACKAGE
where HE_STUDNT = RESULT_PACKAGE-HE_STUDNT AND HE_REGSTE = 'A'.
sort lt_ds200 by HE_STUDNT HE_REGBEG descending .
loop at RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>.
READ TABLE LT_DS400 INTO LS_DS400 WITH KEY /BIC/ZROLL_NO =
<RESULT_FIELDS>-/BIC/ZROLL_NO.
IF SY-SUBRC = 0.
<RESULT_FIELDS>-HE_STORGP = LS_DS400-HE_STORGP .
<RESULT_FIELDS>-HE_STORGA = LS_DS400-HE_STORGA.
<RESULT_FIELDS>-HE_STCAMP = LS_DS400-HE_STCAMP.
<RESULT_FIELDS>-DATEBIRTH = LS_DS400-DATEBIRTH.
<RESULT_FIELDS>-GENDER = LS_DS400-GENDER .
<RESULT_FIELDS>-IS_MARITST = LS_DS400-IS_MARITST .
<RESULT_FIELDS>-HE_DEGLVL = LS_DS400-HE_DEGLVL.
<RESULT_FIELDS>-/BIC/ZBLDGRP = LS_DS400-/BIC/ZBLDGRP.
<RESULT_FIELDS>-/BIC/ZQUAL_NAM = LS_DS400-/BIC/ZQUAL_NAM.
<RESULT_FIELDS>-/BIC/ZSTWOEXP = LS_DS400-/BIC/ZSTWOEXP.
ENDIF.
loop at lt_ds200 into ls_ds200 where HE_STUDNT =
<RESULT_FIELDS>-HE_STUDNT
and HE_REGBEG le
<RESULT_FIELDS>-/BIC/ACRETEDON
and HE_REGEND ge
<RESULT_FIELDS>-/BIC/ACRETEDON
.
endloop .
if sy-subrc eq 0 . " is not initial .
<RESULT_FIELDS>-HE_YRSES = LS_DS200-HE_YRSES .
<RESULT_FIELDS>-/BIC/ZSTATU = 'A' .
<RESULT_FIELDS>-HE_STAGE = LS_DS200-HE_STAGE .
<RESULT_FIELDS>-HE_PRGRM = LS_DS200-HE_PRGRM .
<RESULT_FIELDS>-/BIC/ZREG = LS_DS200-/BIC/ZREG.
<RESULT_FIELDS>-HE_AYEAR = LS_DS200-HE_YRSES+0(4) .
<RESULT_FIELDS>-HE_PERID = LS_DS200-HE_YRSES+4(3) .
else.
loop at lt_ds200 into ls_ds200 where HE_STUDNT =
<RESULT_FIELDS>-HE_STUDNT
and HE_REGBEG le
<RESULT_FIELDS>-/BIC/ACRETEDON.
<RESULT_FIELDS>-HE_YRSES = LS_DS200-HE_YRSES .
<RESULT_FIELDS>-/BIC/ZSTATU = 'N' .
<RESULT_FIELDS>-HE_STAGE = LS_DS200-HE_STAGE .
<RESULT_FIELDS>-HE_PRGRM = LS_DS200-HE_PRGRM .
<RESULT_FIELDS>-HE_AYEAR = LS_DS200-HE_YRSES+0(4) .
<RESULT_FIELDS>-HE_PERID = LS_DS200-HE_YRSES+4(3) .
exit.
endloop.
* read table lt_ds200 into LS_DS200 with key
* HE_STUDNT = <RESULT_FIELDS>-HE_STUDNT
* .
* if sy-subrc = 0 .
* <RESULT_FIELDS>-HE_YRSES = LS_DS200-HE_YRSES .
* <RESULT_FIELDS>-/BIC/ZSTATU = 'N' .
* <RESULT_FIELDS>-HE_STAGE = LS_DS200-HE_STAGE .
* <RESULT_FIELDS>-HE_PRGRM = LS_DS200-HE_PRGRM .
* <RESULT_FIELDS>-HE_AYEAR = LS_DS200-HE_YRSES+0(4) .
* <RESULT_FIELDS>-HE_PERID = LS_DS200-HE_YRSES+4(3) .
* endif .
endif .
clear : ls_ds200 .
* Spliting the value form 0CALWEEK to ZWEEKNO (LAST 2 CHAR).
<RESULT_FIELDS>-/BIC/ZWEEKNO = <RESULT_FIELDS>-CALWEEK+4(2).
ENDLOOP.
ENDIF.