Use the following code to display the messages returned from a BAPI call….
CALL FUNCTION ’BAPI_SALESORDER_CHANGE’
EXPORTING
salesdocument = gv_vbeln
order_header_in = wa_order_header_in
order_header_inx = wa_order_header_inx
TABLES
return = itab_return
order_item_in = lt_order_item_in
order_item_inx = lt_order_item_inx
schedule_lines = lt_schedule_lines
schedule_linesx = lt_schedule_linesx.
PERFORM display_messages tables itab_return.
FORM display_messages tables p_itab_return type BAPIRET2_T.
DATA: ls_msg TYPE bapiret2.
CALL FUNCTION ’MESSAGES_INITIALIZE’.
LOOP AT p_itab_return INTO ls_msg.
CALL FUNCTION ’MESSAGE_STORE’
EXPORTING
arbgb = ls_msg-id
msgty = ls_msg-type
msgv1 = ls_msg-message_v1
msgv2 = ls_msg-message_v2
msgv3 = ls_msg-message_v3
msgv4 = ls_msg-message_v4
txtnr = ls_msg-number
EXCEPTIONS
message_type_not_valid = 1
not_active = 2
OTHERS = 3.
ENDLOOP.
CALL FUNCTION ’MESSAGES_STOP’
EXCEPTIONS
a_message = 1
e_message = 2
i_message = 3
w_message = 4
OTHERS = 5.
CALL FUNCTION ’MESSAGES_SHOW’
EXPORTING
show_linno = ’ ’
EXCEPTIONS
inconsistent_range = 1
no_messages = 2
OTHERS = 3.
ENDFORM. ” DISPLAY_MESSAGES
REPORT ZTRUERSP NO STANDARD PAGE HEADING.
*********************************************************************
* Display the true average response time.
* The result of this report contains the same data the ST03-workload
* overview screen has with one major difference: the values belonging
* to a defined set of abaps usually running online and taking a very
* long time to complete are ignored during the calculation. These
* abap’s response time is not a real dialog response time (even if
* they run in dialog mode) and it can completely offset the actual
* response time of ST03 as well as all the other values (cpu time,
* sequential read …)
*********************************************************************
TABLES: TRDIR.
DATA: R TYPE P DECIMALS 1, K TYPE P DECIMALS 1, I TYPE I, X TYPE I,
Y TYPE I, ELEM_PER_ROW TYPE I VALUE 8, LASTREC(8), ELAPSTIM(8).
*
DATA: BEGIN OF LIST OCCURS 10.
INCLUDE STRUCTURE MSXXLIST.
DATA: END OF LIST.
DATA: BEGIN OF SUMMARY OCCURS 50.
INCLUDE STRUCTURE SAPWLSUMRY.
DATA: END OF SUMMARY.
DATA: BEGIN OF HI OCCURS 50.
INCLUDE STRUCTURE SAPWLHITL.
DATA: END OF HI.
DATA: BEGIN OF STAB.
INCLUDE STRUCTURE SAPWLSUMRY.
DATA: END OF STAB.
*
PARAMETERS: DATE LIKE SY-DATUM MODIF ID SC1 OBLIGATORY.
PARAMETERS: SERVER(8) MODIF ID SC1 OBLIGATORY LOWER CASE.
PARAMETERS: TRUE_RSP AS CHECKBOX.
SELECT-OPTIONS ABPAP FOR TRDIR-NAME NO INTERVALS.
*
PERFORM CALCULATE.
FORMAT INTENSIFIED OFF.
* box1
PERFORM BOX USING 1 4 ‘Instance’.
SKIP TO LINE 2. POSITION 2.
* line1
WRITE: /2 ‘SAP System’,
18 SY-SYSID,
29 ‘First record’,
45 ’00:00:00′,
56 ‘Date’,
72 DATE.
* line2
IF DATE = SY-DATUM.
LASTREC = SY-UZEIT.
ELSE.
LASTREC = ’235959′.
ENDIF.
WRITE: / ‘Server’ UNDER ‘SAP System’,
SY-HOST UNDER SY-SYSID,
‘Last record’ UNDER ‘First record’,
LASTREC USING EDIT MASK ‘__:__:__’ UNDER ’00:00:00′.
* line3
READ TABLE LIST INDEX 1.
TRANSLATE LIST-SERV USING ‘s a p d ‘.
CONDENSE LIST-SERV NO-GAPS.
WRITE: / ‘Instance no.’ UNDER ‘SAP System’,
LIST-SERV UNDER SY-SYSID,
‘Elapsed time’ UNDER ‘First record’,
LASTREC USING EDIT MASK ‘__:__:__’ UNDER ’00:00:00′.
* box2
PERFORM BOX USING 7 14 ‘Workload’.
SKIP TO LINE 8. POSITION 2.
* line1
WRITE: /2 ‘CPU time’,
26 STAB-CPUTI LEFT-JUSTIFIED,
38 ‘Database calls’,
62 STAB-PHYCALLS LEFT-JUSTIFIED.
* line2
R = STAB-READDIRCNT + STAB-READSEQCNT + STAB-CHNGCNT.
WRITE: / ‘Elapsed time’ UNDER ‘CPU time’,
STAB-ELAPSEDTI UNDER STAB-CPUTI LEFT-JUSTIFIED,
‘Database requests’ UNDER ‘Database calls’,
R UNDER STAB-PHYCALLS LEFT-JUSTIFIED.
* line3
WRITE: / ‘ Direct reads’ UNDER ‘Database calls’,
STAB-READDIRCNT UNDER STAB-PHYCALLS LEFT-JUSTIFIED.
* line4
WRITE: / ‘Dialog steps’ UNDER ‘CPU time’,
STAB-COUNT UNDER STAB-CPUTI LEFT-JUSTIFIED,
‘Sequential reads’ UNDER ‘Database calls’,
STAB-READSEQCNT UNDER STAB-PHYCALLS LEFT-JUSTIFIED.
* line5
R = STAB-RESPTI / STAB-COUNT.
WRITE: / ‘ AV. response time’ UNDER ‘CPU time’,
R UNDER STAB-CPUTI LEFT-JUSTIFIED,
‘Changes’ UNDER ‘Database calls’,
STAB-CHNGCNT UNDER STAB-PHYCALLS LEFT-JUSTIFIED.
* line6
R = STAB-CPUTI / STAB-COUNT.
WRITE: / ‘ AV. CPU time’ UNDER ‘CPU time’,
R UNDER STAB-CPUTI LEFT-JUSTIFIED.
* line7
R = STAB-QUEUETI / STAB-COUNT.
K = STAB-READDIRTI + STAB-READSEQTI + STAB-CHNGTI.
K = K / ( STAB-READDIRCNT + STAB-READSEQCNT + STAB-CHNGCNT ).
WRITE: / ‘ AV. wait time’ UNDER ‘CPU time’,
R UNDER STAB-CPUTI LEFT-JUSTIFIED,
‘Time per DB request’ UNDER ‘Database calls’,
K UNDER STAB-PHYCALLS LEFT-JUSTIFIED.
* line8
R = STAB-READDIRTI / STAB-READDIRCNT.
K = STAB-LOADGENTI / STAB-COUNT.
WRITE: / ‘ AV. load time’ UNDER ‘CPU time’,
K UNDER STAB-CPUTI LEFT-JUSTIFIED,
‘ Direct reads’ UNDER ‘Database calls’,
R UNDER STAB-PHYCALLS LEFT-JUSTIFIED.
* line9
R = STAB-READSEQTI / STAB-READSEQCNT.
K = ( STAB-READDIRTI + STAB-READSEQTI + STAB-CHNGTI ) / STAB-COUNT.
WRITE: / ‘ AV. DB req. time’ UNDER ‘CPU time’,
K UNDER STAB-CPUTI LEFT-JUSTIFIED,
‘ Sequential reads’ UNDER ‘Database calls’,
R UNDER STAB-PHYCALLS LEFT-JUSTIFIED.
* line10
R = ( STAB-BYTES / 1024 ) / STAB-COUNT.
K = STAB-CHNGTI / STAB-CHNGCNT.
IF TRUE_RSP = ‘X’.
WRITE: / ‘ AV. bytes req.’ UNDER ‘CPU time’ COLOR 6,
R UNDER STAB-CPUTI LEFT-JUSTIFIED COLOR 6,
‘ Changes and commis’ UNDER ‘Database calls’,
K UNDER STAB-PHYCALLS LEFT-JUSTIFIED.
ELSE.
WRITE: / ‘ AV. bytes req.’ UNDER ‘CPU time’,
R UNDER STAB-CPUTI LEFT-JUSTIFIED,
‘ Changes and commis’ UNDER ‘Database calls’,
K UNDER STAB-PHYCALLS LEFT-JUSTIFIED.
ENDIF.
* line11
WRITE: / .
* line12
R = STAB-ROLLINTI / STAB-ROLLINCNT.
WRITE: / ‘Roll-ins’ UNDER ‘CPU time’,
STAB-ROLLINCNT UNDER STAB-CPUTI LEFT-JUSTIFIED,
‘Av. time/roll in’ UNDER ‘Database calls’,
R UNDER STAB-PHYCALLS LEFT-JUSTIFIED.
* line13
R = STAB-ROLLOUTTI / STAB-ROLLOUTCNT.
WRITE: / ‘Roll-outs’ UNDER ‘CPU time’,
STAB-ROLLOUTCNT UNDER STAB-CPUTI LEFT-JUSTIFIED,
‘Av. time/roll out’ UNDER ‘Database calls’,
R UNDER STAB-PHYCALLS LEFT-JUSTIFIED.
* box3
PERFORM BOX USING 23 6 ‘Task types’.
SKIP TO LINE 24. POSITION 2.
WRITE /2
‘Only dialog times! The following long running reports are excluded:’.
FORMAT INTENSIFIED ON.
LOOP AT ABPAP.
Y = 25 + ( ( SY-TABIX – 1 ) DIV ELEM_PER_ROW ).
X = ( ( SY-TABIX – 1 ) MOD ELEM_PER_ROW ) * 9 + 2.
SKIP TO LINE Y. POSITION X.
WRITE ABPAP-LOW.
ENDLOOP.
*
INITIALIZATION.
DATE = SY-DATUM.
SERVER = SY-HOST.
*
*