Uploaded by சக்திமான் GAMING

abap-debugging-techniques

advertisement
SAP ABAP Debugging Techniques
Author
: Lalit Kabra
Employee ID: 239602
_______________________________________________________________________________________
SAP ABAP Debugging Techniques
Page 1 of 12
Created by: Lalit Kabra
TCS Confidential
ABAP Debugger
The ABAP Debugger is an integrated test tool within the ABAP Workbench. We use it to check the program logic and to
find errors in the source code of an ABAP program. In the Debugger, you can step through the source code of a program.
The running program is interrupted after each step, allowing you to check its processing logic and the results of individual
statements.
Features
The Debugger provides an efficient means of identifying errors in ABAP programs. It contains the following functions:
•
Displaying source code in the Debugger
•
Setting and deleting breakpoints
•
Setting and deleting watchpoints
•
Stopping a program at a particular statement or event
•
Displaying and changing field contents at runtime
•
Setting and deleting database locks
•
Opening the ABAP Editor, or Object Navigator
•
System settings and runtime warnings
Starting the Debugger
There are two possible ways for starting the Debugger in the ABAP Workbench:
•
Debugging without Breakpoint
•
Debugging with Breakpoint
Debugging without Breakpoint
You can start the Debugger as follows:
•
In SE80: Select a program or transaction and from the top menu choose Program → Test → Debugging.
•
In SE38: From the top menu choose Program → Execute → Debugging.
•
From any other screen: From the top menu choose System → Utilities → Debug ABAP
Or Enter /h in the command field and press enter
Debugging with Breakpoints
A breakpoint is a signal in a specific line of the program source code. This signal indicates to the ABAP runtime processor
to stop the program at the relevant line and start the ABAP Debugger.
There are different ways to put break points:
•
Hard coded / Static break points:
You can put a breakpoint in our program by writing statement “BREAK-POINT” or “BREAK <userid>”.
Use “BREAK <userid>” to stop the program execution when a specific user is executing the program.
_______________________________________________________________________________________
SAP ABAP Debugging Techniques
Page 2 of 12
Created by: Lalit Kabra
TCS Confidential
Static breakpoints are not normally user-specific. Once a user has inserted the statement BREAK-POINT or
BREAK name in an ABAP program, the system always interrupts the program at that point for that user or only for
the user name. This procedure is only useful in the development phase of an application, when the program
execution is always to be interrupted at the same place.
Î Remove all hard coded breakpoints from your program before you transport it.
•
Dynamic break points:
We can put dynamic breakpoints from SE80 or SE38 or debugger. Dynamic breakpoints are always user-specific,
and are deleted when you log off from the R/3 System.
Dynamic breakpoints are more flexible than static breakpoints, because you can deactivate or delete them at
runtime. They have the following advantages:
•
You do not have to change the program code
•
You can set them even when the program is locked by another programmer
•
You can define a counter that only activates the breakpoint after it has been reached
_______________________________________________________________________________________
SAP ABAP Debugging Techniques
Page 3 of 12
Created by: Lalit Kabra
TCS Confidential
•
Setting Breakpoints from Debugger:
We can set breakpoint at a specific statement, Subroutine, Function Module or Method
Refer to the screen shot below for menu path.
We can also set breakpoints at system exceptions; the debugger stops the program directly after a system
exception, that is, after a runtime error has been intercepted
The statement “BREAK-POINT” without the addition ID causes an error in the extended program check.
A breakpoint in SELECT - ENDSELECT loops can cause an exception through loss of the database cursor. The
reason for this is that - during debugging - a database Commit is triggered.
During background processing and during the database update, program execution is not interrupted. If you have
a breakpoint that is always active, the system writes a "Breakpoint reached" entry into the system log during
background processing and during updating. After this entry, the program name and the position of the breakpoint
in the program are listed.
Watchpoints
Like a breakpoint, a watchpoint is an indicator in a program that tells the ABAP runtime processor to interrupt the program
at a particular point. Unlike breakpoints, however, watchpoints are not activated until the contents of a specified field
change. Watchpoints, like dynamic breakpoints, are user-specific, and so do not affect other users running the same
program. You can only define watchpoints in the Debugger.
_______________________________________________________________________________________
SAP ABAP Debugging Techniques
Page 4 of 12
Created by: Lalit Kabra
TCS Confidential
You set watchpoints in the Debugger to monitor the contents of specific fields. They inform you when the value of a field
changes. When the value changes; the Debugger interrupts the program.
•
•
•
•
You can set up to ten watchpoints in a program.
You can also specify the conditions on which a watchpoint is to become active.
You can specify logical conditions between up to five conditional watchpoints.
You can define watchpoints as either local or global. If you define a global watchpoint, it is active in all called
programs. Local watchpoints are only active in the specified program.
•
You can use watchpoints to display changes to the references of strings, data and object references, and
internal tables.
Setting Watchpoints
To set a watchpoint, start the Debugger and proceed as follows:
1. Choose Create watchpoint
2. Select local or global watchpoint.
3. Enter the program and the name of the field for which you want to set the watchpoint. In the Program field, the
name of the program currently running is always defaulted.
4. If you want your watchpoint to be activated each time the contents of the field change, the definition is now
complete, and you can return to the Debugger by pressing ENTER.
5. To create a conditional watchpoint, that is only activated when a particular situation arises.
6. You can use the Comparison field option to specify whether the comparison is to be carried out with a value that
you specify or with the contents of another field. Depending on your choice from step 6, enter a value or a field for
the comparison.
7. Checking all the breakpoints/watch points in the program. From here any watch point or break point can be
activated/deactivated.
_______________________________________________________________________________________
SAP ABAP Debugging Techniques
Page 5 of 12
Created by: Lalit Kabra
TCS Confidential
Stepping Through the Source Code in Debugging
•
F5 (Single Step): Use this option to step through the program statement by statement.
•
F6 (Execute): Use this option to process a program line by line. All of the statements on the current line are
processed in a single step. This allows you to process the whole program. This is mainly used to execute a
Function Module or a Subroutine in a single step; without entering into the Function Module / Subroutine.
•
F7 (Return): The Debugger returns to the point at which control returns to the main program. We use this option
to return from other programs or to return from a module or subroutine or a function module.
•
F8 (Run / continue): Use this option to process the program up to the next breakpoint. If there are no more
breakpoints in the program, the system exits debugging mode and executes the rest of the program normally.
Processing Fields
You can display / change the contents of various fields like variables, structures, internal tables etc at runtime in
debugging mode
_______________________________________________________________________________________
SAP ABAP Debugging Techniques
Page 6 of 12
Created by: Lalit Kabra
TCS Confidential
To view all fields of a structure double click on that structure.
_______________________________________________________________________________________
SAP ABAP Debugging Techniques
Page 7 of 12
Created by: Lalit Kabra
TCS Confidential
Releasing Database Locks
During Debugging, the COMMIT statement, which indicates the end of a Logical Unit of Work, may occur after a
significant number of debugging steps. Any database locks that are set are maintained for the whole of this time
There may be occasions when you want to interrupt your testing without actually ending the debugging session. In this
case, you should release the database locks, otherwise other users will not be able to make changes until your debugging
session is finished.
To do this, choose Debugging → Database → Commit (unlock) to unlock the database and permanently write the
changes to the database. Remember that this could, in certain circumstances, lead to database inconsistencies.
If you want to undo all of the database changes that have been made since the last commit, choose Debugging →
Database → Rollback.
Update Debugging
Update function modules do not run in the same user session as the program that is currently running in the ABAP
Debugger. These function modules are therefore not included in debugging. Only if you select the Update debugging
option can you display and debug them after the COMMIT WORK.
Debugging Background Job
You can do this only after the job has finished execution. This will simulate the exact background scenario with the same
selection screen values as used in the job and sy-batch set to 'X'. Use SM37 to get list of jobs, type 'JDBG' in the
command line (no '/’), put the cursor on the job and press ENTER.
You are in debug mode now. Step through SAP program (press F7 couple of times) until you get to code you need.
_______________________________________________________________________________________
SAP ABAP Debugging Techniques
Page 8 of 12
Created by: Lalit Kabra
TCS Confidential
Debugging Modal Dialogs Programs
Some time we have situations where we get a pop up window and we want to debug it, to do that follow the steps as
given below.
Create a txt file on the desktop with the following lines:
[FUNCTION]
Command=/H
Title=Debugger
Type=SystemCommand
Drag and drop this file to the modal window to set debugging on.
Debugging SAPScripts
Activate the ABAP debugger from in the form layout of SAP Script
From the top Menu in SE71 go to System -- > Utilities --> Debug ABAP
Then execute the print program and the script opens in the debug mode.
_______________________________________________________________________________________
SAP ABAP Debugging Techniques
Page 9 of 12
Created by: Lalit Kabra
TCS Confidential
Debugging SMARTFORMS
To debug a smart-form, one should place a hard-coded breakpoint (BREAK-<userid>) at the place where you want to
debug. This will take you directly to the smartform.
Please make sure to delete this hard coded break point before transporting to the next system.
Difference between Classical Debugger and New Debugger:
Classical Debugger:
1.) In classical Debugger Debuggee and Debugger run in the same session. Debugger Dynpro is placed in
between.
2.) Not all ABAP code can be debugged and some functions are restricted.
3.) The classical Debugger sessions are live in an internal session. These break points are no longer available if
new internal session is created (e.g. SUBMIT, CALL TRANSACTION)
_______________________________________________________________________________________
SAP ABAP Debugging Techniques
Page 10 of 12
Created by: Lalit Kabra
TCS Confidential
New ABAP Debugger:
1.) New ABAP debugger runs in the two separate sessions i.e. Debuggee and Debugger are in two different
sessions. With this once can refer to the Input Screen any time during the debugging. Debuggee session is
inactive and is only for display.
2.) More Robust Debugger Architecture.
3.) It has possibility to implement new features faster and with less risk.
4.) New debugger is more flexible and extensible state of the art debugger UI.
5.) Upto 4 parallel visible instances of a tool can be opened. (e.g. Compare 4 internal tables).
6.) In the New ABAP Debugger breakpoints are live in external sessions.
7.) The new ABAP Debugger Provides 9 Desktops:
Three user specific desktops, which can be customized and can be saved as favorite debugger environment.
Six Standard desktops, which should cover most of the common working conditions in the debugger.
•
•
•
•
•
•
Standard: Stepping Through the code (Editor, Stack, Quick Watch).
Structures : Compare Structures
Tables
: Compare Tables
Objects : Compare Objects
Detail Dispels : Compare Strings, Simple Fields.
Breakpoints: Maintain the Breakpoints.
There are some features which are better in Classical Debugger. So one can switch to classical debugger:
To switch to classical Debugger from the debugger screen follow the path:
Debugger >> Switch to Classical Debugger
_______________________________________________________________________________________
SAP ABAP Debugging Techniques
Page 11 of 12
Created by: Lalit Kabra
TCS Confidential
References
http://help.sap.com/
https://www.sdn.sap.com/
_______________________________________________________________________________________
SAP ABAP Debugging Techniques
Page 12 of 12
Created by: Lalit Kabra
TCS Confidential
Download