2007 Jun 15 2:31 AM
Hi,
my prg is taking long time to execute, can anyone tell me how can i change my code or to measuer where it is time taking
FORM GET_DATA.
IF NOT P_UNAME IS INITIAL.
SELECT * FROM USR02 INTO CORRESPONDING FIELDS OF TABLE USER_ROLE
WHERE BNAME IN P_UNAME.
ELSE.
SELECT * FROM USR02 INTO CORRESPONDING FIELDS OF TABLE USER_ROLE.
ENDIF.
LOOP AT USER_ROLE.
MOVE-CORRESPONDING USER_ROLE TO US_ROLES.
SELECT * FROM AGR_USERS WHERE UNAME = USER_ROLE-BNAME.
IF SY-SUBRC = 0.
MOVE AGR_USERS-AGR_NAME TO US_ROLES-AGR_NAME.
APPEND US_ROLES.
ENDIF.
ENDSELECT.
IF SY-SUBRC NE 0.
APPEND US_ROLES.
ENDIF.
CLEAR US_ROLES.
ENDLOOP.
DELETE US_ROLES WHERE BNAME = ' '.
LOOP AT US_ROLES.
SELECT SINGLE * FROM USR21 WHERE BNAME = US_ROLES-BNAME.
IF SY-SUBRC = 0.
US_ROLES-KOSTL = USR21-KOSTL.
ENDIF.
IF SY-SUBRC = 0.
SELECT SINGLE * FROM ADCP WHERE PERSNUMBER = USR21-PERSNUMBER.
IF SY-SUBRC = 0.
US_ROLES-FUNCTION = ADCP-FUNCTION.
US_ROLES-DEPARTMENT = ADCP-DEPARTMENT.
ENDIF.
ENDIF.
SELECT SINGLE * FROM AGR_TEXTS WHERE AGR_NAME = US_ROLES-AGR_NAME
AND SPRAS = 'E'.
IF SY-SUBRC = 0.
US_ROLES-TEXT = AGR_TEXTS-TEXT.
ENDIF.
MODIFY US_ROLES.
CLEAR US_ROLES.
ENDLOOP.
Hi,
my prg is taking long time to execute, can anyone tell me how can i change my code or to measuer where it is time taking
FORM GET_DATA.
IF NOT P_UNAME IS INITIAL.
SELECT * FROM USR02 INTO CORRESPONDING FIELDS OF TABLE USER_ROLE
WHERE BNAME IN P_UNAME.
ELSE.
SELECT * FROM USR02 INTO CORRESPONDING FIELDS OF TABLE USER_ROLE.
ENDIF.
LOOP AT USER_ROLE.
MOVE-CORRESPONDING USER_ROLE TO US_ROLES.
SELECT * FROM AGR_USERS WHERE UNAME = USER_ROLE-BNAME.
IF SY-SUBRC = 0.
MOVE AGR_USERS-AGR_NAME TO US_ROLES-AGR_NAME.
APPEND US_ROLES.
ENDIF.
ENDSELECT.
IF SY-SUBRC NE 0.
APPEND US_ROLES.
ENDIF.
CLEAR US_ROLES.
ENDLOOP.
DELETE US_ROLES WHERE BNAME = ' '.
LOOP AT US_ROLES.
SELECT SINGLE * FROM USR21 WHERE BNAME = US_ROLES-BNAME.
IF SY-SUBRC = 0.
US_ROLES-KOSTL = USR21-KOSTL.
ENDIF.
IF SY-SUBRC = 0.
SELECT SINGLE * FROM ADCP WHERE PERSNUMBER = USR21-PERSNUMBER.
IF SY-SUBRC = 0.
US_ROLES-FUNCTION = ADCP-FUNCTION.
US_ROLES-DEPARTMENT = ADCP-DEPARTMENT.
ENDIF.
ENDIF.
SELECT SINGLE * FROM AGR_TEXTS WHERE AGR_NAME = US_ROLES-AGR_NAME
AND SPRAS = 'E'.
IF SY-SUBRC = 0.
US_ROLES-TEXT = AGR_TEXTS-TEXT.
ENDIF.
MODIFY US_ROLES.
CLEAR US_ROLES.
ENDLOOP.
2007 Jun 15 2:56 AM
2007 Jun 15 2:56 AM
try for sql trace t-code -st05.there u can analyze the sql statements and u'll come to know which statement is taking long time.
steps:
goto st05
trace on and com eto se38 execute the program then trace off.and then analyze.
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |