Skip to Content
0
Former Member
Jul 22, 2008 at 01:50 PM

What is the best coding and how check it ?

21 Views

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.