Tips and Tricks for the ABAP® Programming Language
Y9030018 – Testing/Debugging – Variable Delay for each processed subroutine
The user can see which subroutine is currently executes. At the same time a few trace informations are saved in an internal table.
ABAP™-Source-Code
You can copy and paste the source code directly into the ABAP™-Workbench.
REPORT Y9030018 LINE-SIZE 250. "Release 3.1G, 4.5A ************************************************************************ * Copyright (c) 1999 by CT-Team, 33415 Verl * * you can use or modify this report for your own work as long * as you don't try to sell or republish it. * in no event will the author be liable for indirect, special, * Incidental, or consequental damages (if any) arising out of * the use of this report. * ************************************************************************ *//////////////////////////////////////////////////////////////////////* MOVE: 'Info at SAPGUI and TRACE-LIST about FORM-trace ' TO SY-TITLE. *//////////////////////////////////////////////////////////////////////* *************** Tables ********************** TABLES: T100, T022D, T022T, TSP01, TSP1T, TEDE1, THLPF. *************** Parameters ********************** PARAMETERS: P_DISPL(1) TYPE C DEFAULT 'N', P_TRACE(1) TYPE C DEFAULT 'J'. *************** Variablendeklaration ********************** DATA: ROCKS TYPE I. DATA: TIME1 TYPE I. DATA: TIME2 TYPE I. DATA: TIME3(15) TYPE P. DATA: WORK1(150) TYPE C. *************** internal Tables ********************** DATA: BEGIN OF I_TRACETAB OCCURS 10, Z1(150) TYPE C, END OF I_TRACETAB. * DATA: VTAB(400) TYPE C OCCURS 30 WITH HEADER LINE. *************** macros ********************** GET RUN TIME FIELD TIME1. "initial *....................................................................... DEFINE TRACE1. WRITE &1 TO WORK1+100. IF WORK1 CP '*# '. ENDIF. MOVE '/' TO WORK1+SY-FDPOS(1). CONDENSE WORK1. END-OF-DEFINITION. *....................................................................... DEFINE TRACE2. TIME3 = &1 - TIME1. WRITE 'UPRO-time:/ ' TO WORK1+100. CONDENSE WORK1. WRITE TIME3 TO WORK1+100. CONDENSE WORK1. END-OF-DEFINITION. *....................................................................... DEFINE DISPLAY1. APPEND WORK1 TO I_TRACETAB. ROCKS = ROCKS + 5. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING PERCENTAGE = ROCKS TEXT = WORK1. CLEAR WORK1. END-OF-DEFINITION. *....................................................................... *//////////////////////////////////////////////////////////////////////* ************* Programmsteuerung ******************* *//////////////////////////////////////////////////////////////////////* GET RUN TIME FIELD TIME1. WRITE: /1 'Information for programming...' COLOR 6. ULINE. *............................................................... DO 11 TIMES. "a sample PERFORM SY-INDEX OF READ-T100 READ-T022T READ-T022D READ-TSP01 UPRO-4 READ-TSP1T READ-TEDE1 READ-THLPF READ-T022D READ-TSP1T UPRO-4. ENDDO. * * IF P_TRACE EQ 'J'. PERFORM DISPLAY-TRACETAB. ELSE. WRITE: /1 'Only short information at SAPGUI'. ENDIF. *//////////////////////////////////////////////////////////////////////* ************* subprogramms ******************* *//////////////////////////////////////////////////////////////////////* ************************************************************************ * read external table T100 ************************************************************************ FORM READ-T100. * WRITE: /5 'READ-T100 is here' COLOR 5. *....................................................................... GET RUN TIME FIELD TIME1. TRACE1: 'READ-T100', SY-UZEIT, TIME1. * SELECT * INTO TABLE VTAB FROM T100 UP TO 20 ROWS WHERE SPRSL EQ SY-LANGU AND ARBGB EQ '01'. * IF P_DISPL EQ 'J'. PERFORM UPRO-5. ENDIF. * GET RUN TIME FIELD TIME2. TRACE2: TIME2. DISPLAY1. * ENDFORM. ************************************************************************ * Read external table T022D ************************************************************************ FORM READ-T022D. * WRITE: /5 'READ-T022D is here' COLOR 5. *....................................................................... * GET RUN TIME FIELD TIME1. GET TIME. TRACE1: 'READ-T022D', SY-UZEIT, TIME1. * SELECT * INTO TABLE VTAB FROM T022D UP TO 20 ROWS. * IF P_DISPL EQ 'J'. PERFORM UPRO-5. ENDIF. * GET RUN TIME FIELD TIME2. TRACE2: TIME2. DISPLAY1. * ENDFORM. ************************************************************************ * Read external table T022T ************************************************************************ FORM READ-T022T. * WRITE: /5 'READ-T022t is here' COLOR 5. *....................................................................... * GET RUN TIME FIELD TIME1. GET TIME. TRACE1: 'READ-T022T', SY-UZEIT, TIME1. * SELECT * INTO TABLE VTAB FROM T022T UP TO 15 ROWS. * IF P_DISPL EQ 'J'. PERFORM UPRO-5. ENDIF. * GET RUN TIME FIELD TIME2. TRACE2: TIME2. DISPLAY1. * ENDFORM. ************************************************************************ * Read external table TSP01 ************************************************************************ FORM READ-TSP01. * WRITE: /5 'READ-TSP01 is here' COLOR 5. *....................................................................... * GET RUN TIME FIELD TIME1. GET TIME. TRACE1: 'READ-TSP01', SY-UZEIT, TIME1. * SELECT * INTO TABLE VTAB FROM TSP01 UP TO 10 ROWS. * IF P_DISPL EQ 'J'. PERFORM UPRO-5. ENDIF. * GET RUN TIME FIELD TIME2. TRACE2: TIME2. DISPLAY1. * ENDFORM. ************************************************************************ * Read external table TSP1T ************************************************************************ FORM READ-TSP1T. * WRITE: /5 'READ-TSP1T is here' COLOR 5. *....................................................................... * GET RUN TIME FIELD TIME1. GET TIME. TRACE1: 'READ-TSP1T', SY-UZEIT, TIME1. * SELECT * INTO TABLE VTAB FROM TSP1T UP TO 11 ROWS. * IF P_DISPL EQ 'J'. PERFORM UPRO-5. ENDIF. * GET RUN TIME FIELD TIME2. TRACE2: TIME2. DISPLAY1. * ENDFORM. ************************************************************************ * Read external Table TEDE1 ************************************************************************ FORM READ-TEDE1. * WRITE: /5 'READ-TEDE1 is here' COLOR 5. *....................................................................... * GET RUN TIME FIELD TIME1. GET TIME. TRACE1: 'READ-TEDE1', SY-UZEIT, TIME1. * SELECT * INTO TABLE VTAB FROM TEDE1 UP TO 15 ROWS. * IF P_DISPL EQ 'J'. PERFORM UPRO-5. ENDIF. * GET RUN TIME FIELD TIME2. TRACE2: TIME2. DISPLAY1. * ENDFORM. ************************************************************************ * Read external table THLPF ************************************************************************ FORM READ-THLPF. * WRITE: /5 'READ-THLPF is here' COLOR 5. *....................................................................... * GET RUN TIME FIELD TIME1. GET TIME. TRACE1: 'READ-THLPF', SY-UZEIT, TIME1. * SELECT * INTO TABLE VTAB FROM THLPF UP TO 13 ROWS. * IF P_DISPL EQ 'J'. PERFORM UPRO-5. ENDIF. * GET RUN TIME FIELD TIME2. TRACE2: TIME2. DISPLAY1. * ENDFORM. ************************************************************************ * only a wait in the form ************************************************************************ FORM UPRO-4. * WRITE: /5 'upro-4 is here' COLOR 5. *....................................................................... * GET RUN TIME FIELD TIME1. GET TIME. TRACE1: 'upro-4', SY-UZEIT, TIME1. * WAIT UP TO 3 SECONDS. * GET RUN TIME FIELD TIME2. TRACE2: TIME2. DISPLAY1. * ENDFORM. ************************************************************************ * only a loop in the form ************************************************************************ FORM UPRO-5. * WRITE: /5 'upro-5 is here' COLOR 5. *....................................................................... * GET RUN TIME FIELD TIME1. GET TIME. "update for field SY-UZEIT TRACE1: 'upro-5', SY-UZEIT, TIME1. * WAIT UP TO 1 SECONDS. LOOP AT VTAB. WRITE: /1 VTAB. ENDLOOP. * GET RUN TIME FIELD TIME2. TRACE2: TIME2. DISPLAY1. * ENDFORM. ************************************************************************ * display trace-data ************************************************************************ FORM DISPLAY-TRACETAB. * DATA: F1(15) TYPE C. DATA: F2(8) TYPE N. DATA: F3(15) TYPE N. DATA: F4(10) TYPE C. DATA: F5(20) TYPE N. DATA: SLASH(2) VALUE '/'. DATA: Z_SUM(10) TYPE P DECIMALS 2. *....................................................................... SKIP 2. ULINE. WRITE: /5 'Display-tracetab' COLOR 3. ULINE. *....................................................................... * LOOP AT I_TRACETAB. SPLIT I_TRACETAB AT SLASH INTO F1 F2 F3 F4 F5. WRITE: /1 F1, 16 F2, 28 F3, 40 F4, 58 F5. ENDLOOP. * GET RUN TIME FIELD TIME2. Z_SUM = TIME2 / 1000000. * SKIP 2. ULINE. WRITE: /1 'Duration: ', Z_SUM, 'Seconds'. * ENDFORM. ************************************************************************ ************************************************************************ ******************* Programmende ***************************************