Hello Gurus,
I must choose between 2 solutions to implement a Start Routine of my ODS (from another ODS), but I don't know which is the most efficient. I must certify my choice.
Following these 2 Solutions.
/BIC/PHNCN is master data, which contain 700 000 lines and NCNUMBER is the key of my master data.
How I check which code is the most efficient ? To SE30, how can I simulate my data-pakage ?
Thanks a lot.
Rgds,
*************************************************************************************************
First Solution :
-
TYPE it_numbc IS
NCNUMBER
REQDAT
DOSDAT
CUSTODAT
DODATE
HANDDATE
STDATE
DECDATE
HDCREA
END OF TYPE.
DATA:
ITB_NC TYPE SORTED TABLE OF it_numbc WITH NON-UNIQUE KEY
ncnumber OBJVERS,
IS_NCNUMBER TYPE /BIC/NCNUMB.
Code routine :
IF DATA_PACKAGE[ ] IS NOT INITIAL.
SELECT NCID REQDAT DOSDAT CUSTODAT DODATE HANDDATE STDATE DECDATE HDCREA
FROM /BIC/PHNCN
INTO CORRESPONDING FIELDS OF TABLE ITB_NC
FOR ALL ENTRIES IN DATA_PACKAGE
WHERE ncnumber= DATA_PACKAGE- NCNUMBER
AND OBJVERS = u2018Au2019.
ENDIF.
LOOP AT DATA_PACKAGE.
IF DATA_PACKAGE -/BIC/NTYPE = 'CO'.
DATA_PACKAGE -/BIC/ORGTYPE = 'I'.
ELSE.
DATA_PACKAGE -/BIC/ORGTYPE = 'E'.
ENDIF.
Read table ITB_NC
WITH KEY NCNUMBER = DATA_PACKAGE-NCNUMBER
BINARY SEARCH.
IF sy-subrc = 0.
DATA_PACKAGE -/BIC/NCID = ITB_NC -/BIC/NCNUMBER.
DATA_PACKAGE -/BIC/REQDAT = ITB_NC -/BIC/REQDAT.
DATA_PACKAGE -/BIC/DOSDAT = ITB_NC -/BIC/DOSDAT.
DATA_PACKAGE -/BIC/CUSTODAT = ITB_NC -/BIC/CUSTODAT.
DATA_PACKAGE -/BIC/DODATE = ITB_NC -/BIC/DODATE.
DATA_PACKAGE -/BIC/HANDDATE = ITB_NC -/BIC/HANDDATE.
DATA_PACKAGE -/BIC/STDATE = ITB_NC -/BIC/STDATE.
DATA_PACKAGE -/BIC/DECDATE = ITB_NC -/BIC/DECDATE.
IF ( ITB_NC-/BIC/HDCREA = '' ) OR
( ITB_NC -/BIC/HDCREA = u201800000000u2019 ) OR
( ITB_NC -/BIC/HDCREA IS INTIAL ).
DATA_PACKAGE -/BIC/HDCREA = ITB_NC -/BIC/REQDAT.
ELSE.
DATA_PACKAGE -/BIC/HDCREA = ITB_NC -/BIC/HDCREA.
ENDIF.
ENDIF.
ENDLOOP.
*************************************************************************************************
Second Solution :
-
TABLES: /BIC/NCNUMB.
DATA:
ITB_NC TYPE SORTED TABLE OF /BIC/NCNUMB WITH NON-UNIQUE KEY
ncnumber OBJVERS,
ITB_NC_TMP TYPE SORTED TABLE OF /BIC/NCNUMB WITH NON-UNIQUE KEY
ncnumber OBJVERS,
IS_NCNUMBER TYPE /BIC/NCNUMB.
Code routine :
DATA: LS_DP LIKE DATA_PACKAGE.
SELECT *
FROM /BIC/PHNCN
INTO CORRESPONDING FIELDS OF TABLE ITB_NC_TMP.
ITB_NC [ ] = ITB_NC_TMP [ ].
FREE ITB_NC_TMP.
LOOP AT DATA_PACKAGE INTO LS_DP.
IF LS_DP-/BIC/NTYPE = 'CO'.
LS_DP-/BIC/ORGTYPE = 'I'.
ELSE.
LS_DP-/BIC/ORGTYPE = 'E'.
ENDIF.
LOOP AT ITB_NC INTO IS_NCNUMBER
WHERE ncnumber = LS_DP-ncnumber
AND OBJVERS = 'A'.
DATA_PACKAGE -/BIC/NCID = IS_NCNUMBER -/BIC/NCNUMBER.
DATA_PACKAGE -/BIC/REQDAT = IS_NCNUMBER -/BIC/REQDAT.
DATA_PACKAGE -/BIC/DOSDAT = IS_NCNUMBER -/BIC/DOSDAT.
DATA_PACKAGE -/BIC/CUSTODAT = IS_NCNUMBER -/BIC/CUSTODAT.
DATA_PACKAGE -/BIC/DODATE = IS_NCNUMBER -/BIC/DODATE.
DATA_PACKAGE -/BIC/HANDDATE = IS_NCNUMBER -/BIC/HANDDATE.
DATA_PACKAGE -/BIC/STDATE = IS_NCNUMBER -/BIC/STDATE.
DATA_PACKAGE -/BIC/DECDATE = IS_NCNUMBER -/BIC/DECDATE.
IF IS_NCNUMBER -/BIC/HDCREA = ''.
LS_DP-/BIC/HDCREA = IS_NCNUMBER -/BIC/REQDAT.
ELSE.
LS_DP-/BIC/HDCREA = IS_NCNUMBER -/BIC/HDCREA.
ENDIF.
ENDLOOP.
MOVE-CORRESPONDING LS_DP TO DATA_PACKAGE.
MODIFY DATA_PACKAGE INDEX SY-TABIX.
ENDLOOP.