Sie sind auf Seite 1von 9

SAPtips

P
a
g
e

1
S
A
P
t
i
p
s

J
o
u
r
n
a
l
J
u
n
e
/
J
u
l
y

2
0
0
6


V
o
l
u
m
e

I
V

I
s
s
u
e

3

SAPtips.com SAPtips 2006 Klee Associates, Inc.
Editors Note: We can always
count on ABAP Editor Rehan Zaidi
to bring something substantial to
the SAPtips table, and this article
is no exception. If you are an ABAP
developer you know the value of opti-
mizing your existing code as well as
learning tips and tricks to generate
more efcient code in the future. In
this issue Rehan shows you how to
utilize SAPs ABAP Code Inspector to
check repository objects (in terms of
performance), security, syntax, and
naming conventions. Conducting an
inspection of this type will help you
identify potential coding aws. It will
also help you identify unnecessary or
redundant tasks that would add pro-
cessing time to your routines. Rehan
presents an overview of the Code
Inspector and demonstrates how
to call it using either a transaction
code or a menu path. He describes
the types of errors the Code Inspec-
tor may identify, and explains the
hints it may suggest for improving
the ABAP code. Having explained
the basics, Rehan then takes you
through an example of how he has
used this tool, complete with screen
shots and lessons learned. Whats
next? Assemble the troops and pre-
pare for inspection.
Introduction
SAP has empowered consultants
(and users) in all areas by provid-
ing tools for checking the quality of
their work. The ABAP Workbench
is no exception. One such tool avail-
able with the ABAP Workbench is
the Code Inspector. It allows you to
check the syntax and semantic con-
sistency of ABAP programs, and also
lets you improve their performance.
4On ABAP/J2EE
Improving the Quality of Your ABAP Code
Using the Code Inspector-
A Guide for SAP

Developers and Consultants


By Rehan Zaidi, Siemens Pakistan
Due to the ease and control with
which you can test a large number of
programs, learning the basics of this
tool is necessary for developers and
consultants.
The aim of this article is to provide
a description of the Code Inspector
and the way it may be used to check
ABAP programs. These are some of
the questions that this article will
address:
What are the two methods for call-
ing the Code Inspector?
What are the errors that the Code
Inspector may identify?

What are some of the code improve-
ment hints the Inspector may sug-
gest?
I will begin with an overview of
the Code Inspector and the benets it
provides to developers. Ill discuss, in
detail, the steps required in checking
repository objects such as ABAP pro-
grams, classes, and function groups.
Finally, I will use an example drawn
from an easy-for-all company scenar-
io to illustrate my views. I am going
to include tips learned from my per-
sonal experience and observation.
This article is intended primarily
for SAP developers. I will assume
that the reader is familiar with basic
ABAP concepts and syntax. For
more information, refer to the SAP
documentation on http://help.sap.com/.
Though the screenshots have been
taken from Release 4.7, the tips men-
tioned are relevant for later releases
as well.
The Code Inspector:
An Overview
The Code Inspector is a tool (avail-
able in the ABAP Workbench) that
lets you check ABAP repository
objects including ABAP programs,
classes, and function modules. These
checks highlight problems related to
the syntax, security, and performance
of the ABAP code. In addition, you
may also search through the code for
single words and/or patterns of ABAP
statements. The objects that may be
checked using the Code Inspector are
shown in Figure 1.
Function Groups
Programs
Classes
Interfaces
Type Groups
Figure 1: Objects That May Be Checked
The Code Inspector
lets you check ABAP
repository objects
including programs,
classes, and
function modules.
SAPtips
P
a
g
e

2
S
A
P
t
i
p
s

J
o
u
r
n
a
l
J
u
n
e
/
J
u
l
y

2
0
0
6


V
o
l
u
m
e

I
V

I
s
s
u
e

3

SAPtips.com SAPtips 2006 Klee Associates, Inc.
The output (result) of the Inspector
is in the form of a hierarchy show-
ing the various check categories, as
shown in Figure 2.

The output contains three columns,
each represented by a different color
(see Figure 3), showing the number
of errors or warnings found by each
check.
The Code Inspector offers numer-
ous advantages to consultants and
developers:
Instead of carrying out manual
checks for programs individually,
you may check multiple objects
by dening Object Sets. The check
may be carried out either online
or in the background (for quick
performance).
It gives you total control over the
tests or functions to be executed.
For exceptional situations, you may
suppress the checks for a given
statement by adding pseudo-com-
ments in your ABAP source code.
There are two ways of calling the
Code Inspector, namely via transac-
tion SCI or via a menu path of the
respective repository object mainte-
nance screen. With transaction SCI,
you:
a) rst create an Object Set that
species the programs or classes
to be checked,
b) then dene a Variant for specify-
ing the checks that are to be car-
ried out, and
c) nally, create and execute an
exception that is used to gener-
ate the check results. The Vari-
ants, Object Sets, and Inspection
may be dened as local (pertinent
to one user) or global (accessible
by all users) depending on the
scenario.
On the other hand, you may also
call the Code Inspector from the
ABAP Editor (transaction SE38), the
Class Builder (transaction SE24),
and the Function Builder (transac-
tion SE37) using the menu path
shown in Figure 4.
4On ABAP/J2EE
Figure 2: The Code Inspector Output
Priority Color Codes Meaning
Red Error
Yellow Warning
Green Information
Figure 3: Priority Code Colors and Their Meaning
Figure 4: Accessing the Code Inspector from Transaction SE38
SAPtips
P
a
g
e

3
S
A
P
t
i
p
s

J
o
u
r
n
a
l
J
u
n
e
/
J
u
l
y

2
0
0
6


V
o
l
u
m
e

I
V

I
s
s
u
e

3

SAPtips.com SAPtips 2006 Klee Associates, Inc.
In this case, if there is no
DEFAULT Variant dened
for your user, the system uses
the global Variant DEFAULT
while carrying out the inspec-
tion.
Calling the Code In-
spector with Transac-
tion SCI
As already mentioned,
there are two ways of call-
ing the Code Inspector for
checking your ABAP code.
The more powerful option
is using the transaction code
SCI. The main screen of this
transaction is shown in Fig-
ure 5.
Before creating an inspec-
tion, you need to dene
a suitable Object Set and
Check Variant. Enter a suit-
able name for your Object Set
and then click on the Create
icon. This takes you to the
screen shown in Figure 6.
Enter a description for
your Object Set. You also
need to enter suitable values
in the Object Assignment and
Object Selection areas. The
Object Assignment area lets
you dene your selection by
specifying the user who cre-
ated the objects in question,
or on the basis of the applica-
tion ID, software component,
and package. For example, if
youd like to specify a set of
objects created by the user S_
JONES, you should enter the
same in the Person Respon-
sible eld.

4On ABAP/J2EE
Figure 5: Code Inspector -- Main Screen of Transaction SCI
Figure 6: Dening an Object Set
SAPtips
P
a
g
e

4
S
A
P
t
i
p
s

J
o
u
r
n
a
l
J
u
n
e
/
J
u
l
y

2
0
0
6


V
o
l
u
m
e

I
V

I
s
s
u
e

3

SAPtips.com SAPtips 2006 Klee Associates, Inc.
The Object Selection area is
used to specify the programs,
classes, and function groups
that you want to include in
your selection. On the Class-
es, Func Groups tab, enter
the criteria for selecting the
object that you would like to
check. For example, if you
would like to select all pro-
grams that begin with the let-
ter Z, you should enter Z* in
the Program eld. When you
have specied your selection,
save your entries by clicking
the Save button.
Next, you need to create or
choose a suitable Variant for
your inspection. On the main
screen of transaction SCI
(Figure 5), enter a name in
the Check Variant eld, and
click the Create button. This
takes you to a screen similar
to the one shown in Figure
7.
Specify a suitable name
and description for your
Variant. This screen displays
the entire range of checks
and functions available in the
Code Inspector. Use the checkboxes
to select the checks that you want to
include in your program Inspection.
Finally, you have to create
and execute an inspection for
your specied objects. On
the main screen of transac-
tion SCI, enter an appropri-
ate name for your inspection,
and click the Create button.
The screen appears, as shown
in Figure 8.
On this screen, enter the
name of your newly cre-
ated Check Variant, and the
Object Set, in the elds pro-
vided. Then, click the Execute
button to start the inspection
immediately. When the inspection is
complete, a message The Inspection
was carried out successfully is dis-
played. The output of the inspection
is then displayed, as shown in Figure
9.
4On ABAP/J2EE
Figure 7: Creating and Executing a Check Variant
Figure 8: Creating and Executing the Inspection
SAPtips
P
a
g
e

5
S
A
P
t
i
p
s

J
o
u
r
n
a
l
J
u
n
e
/
J
u
l
y

2
0
0
6


V
o
l
u
m
e

I
V

I
s
s
u
e

3

SAPtips.com SAPtips 2006 Klee Associates, Inc.
Checks and Functions In-
cluded in the Code Inspector
The range of checks and functions
available in the Code Inspector may
be divided into four categories. Let
us discuss them in detail.
a) Syntactical Checks
The rst category deals with checks
related to the ABAP syntax. In addi-
tion to the normal ABAP correctness,
the Code Inspector also carries out
an Extended Program Check, which
includes the following:
It checks whether the state-
ments that call external pro-
grams (or program com-
ponents) are used in the correct
manner. Some of the statements
that fall in this category are
shown in Figure 10. For example,
an error is generated if a transac-
tion referred to in a CALL Trans-
action Statement does not exist.

The Inspection function searches
for statements that could cre-
ate problems if the program is
used for different languages. For
example, statements that use
hard-coded text literals instead
of text IDs.
It highlights any variables or
form routines that are declared
in a given program but are never
used.
The Inspector function also looks
for statements used in an incor-
rect context. For example, a
COMMIT WORK used within a
SELECT loop would give unde-
sirable results.
b) Security Checks
The checks pertinent to this cat-
egory nd statements (or constructs)
that may hamper the stability and
security of your SAP system. Typical
examples of these are:
4On ABAP/J2EE
Figure 9: Code Inspector Output
Statements after which the
return code (SY-SUBRC)
must be checked. The SY-
SUBRC denotes the suc-
cess (or outcome) of an
ABAP statement. In some
cases, use of the return
code value is absolutely
necessary.
Constructs in which
authorization checks are
essential, but are not
used.
Statements that use
Native SQL.
c) Performance Checks
As the name implies, these
checks identify statements
(or constructs) that may lead
to a decline in the programs per-
formance. Some of these statements
include:
CHECK statements based on
a table eld within a SELECT
loop. This reads more data than
is required, and may cause the
program to get slow.

Statements that bypass the buf-
fers residing on the application
server.
CALL TRANSACTION
SUBMIT
CALL FUNCTION
PERFORM IN (PROGRAM)
CALL SCREEN
SET PF-STATUS
Figure 10: Statements that Call External Pro-
gram Components
The Code Inspector
also carries out an
Extended Program
Check.
SAPtips
P
a
g
e

6
S
A
P
t
i
p
s

J
o
u
r
n
a
l
J
u
n
e
/
J
u
l
y

2
0
0
6


V
o
l
u
m
e

I
V

I
s
s
u
e

3

SAPtips.com SAPtips 2006 Klee Associates, Inc.
Select statements that
do not have a suitable
WHERE clause. In this
case, the system may not
be able to use an appro-
priate index and may
carry out a sequential
scan on the entire table,
thus resulting in extreme-
ly long runtimes.
d) Search Functions
In addition to the checks
mentioned, the Code Inspec-
tor allows you to search for
words (tokens) or entire state-
ments in your Object Set. The
search option also allows you
to base your search on pat-
terns using wildcards such
as +and *. For searching
a word or statement in your
Object Set, create a Variant
that is comprised of one (or
both) of the search functions
(see Figure 11). The Inspec-
tion is then created and exe-
cuted as already mentioned.
There are two search func-
tions available, namely token
search and statement search.
The token search function allows
you to locate single words (having at
least a length of three characters) in
your program code. When using this
search option, the characters + and *
have special meanings. The symbol +
represents a single character within a
word, whereas * denotes a sequence
of characters. For example, if you
want to search for internal tables
having names ITAB1, ITAB2, etc.,
you will write ITAB+ in the search
eld.
On the other hand, the Search
ABAP Statement Patterns lets you
nd sets of similar ABAP statements
within your ABAP code. In this case,
the + and *may also be used to dene
the search criteria. While search-
ing for a statement, the wildcard +
denotes one word or token, whereas
* represents any number of words.
For example, consider the statement
pattern:
READ TABLE + WITH KEY + = +
In this case, the system searches for
all READ statements that nd a table
row, on the basis of a single key eld.
In other words, after the KEY clause,
you may expect a table eld name,
followed by an =symbol and then
a comparison value. All READ state-
ments that use two or more eld com-
parisons are omitted by this search.

You may combine the rule men-
tioned in the token search with the
statement search function in order to
dene more powerful search criteria.
In this case, additional information is
provided for the token in consider-
ation. For example, our READ state-
ment pattern may look like:
READ TABLE + WITH KEY +ABC+ = +
For the key eld, the system
searches only for those elds that are
ve characters long and have ABC
in the center.

Suppressing Checks for
Selected Code Statements
When an inspection is executed, all
the checks selected for the specied
Variant are carried out. However, in
some exceptional circumstances, you
may need to exclude a given program
from the code inspection. If you want
to skip a check for a given statement,
you need to insert special check-spe-
cic phrases known as pseudo-com-
ments, in the program code. Exam-
Figure 11: Specifying a Search Function
4On ABAP/J2EE
SAPtips
P
a
g
e

7
S
A
P
t
i
p
s

J
o
u
r
n
a
l
J
u
n
e
/
J
u
l
y

2
0
0
6


V
o
l
u
m
e

I
V

I
s
s
u
e

3

SAPtips.com SAPtips 2006 Klee Associates, Inc.
ples are #EC CI_NOWHERE and
#EC CI_NOFIRST. This is inserted
at the end of the statement that is to
be skipped from the check.
In order to nd out which pseudo-
comment is appropriate for a given
check, click on the icon on the Vari-
ant creation screen (see Figure 7).
This displays the documentation of
the given check that mentions the
relevant pseudo-comment name, as
shown in Figure 12.
Figure 12: Documentation of a Code Inspector Check
Putting It All Together
In this section, I will use the con-
cepts presented in this article to dem-
onstrate how the Code Inspector may
be used to fulll a simple require-
ment. Let us consider the following
scenario:
You are given the task of check-
ing the performance of all customer
programs (having names beginning
with the letter Z). In addition, you
also want to gure out how many
programs incorporate the SELECT
SINGLE statement.
In order to fulll the requirement, a
Variant Z_MY_VARIANT is dened,
as shown in Figure 13.

The Performance Checks indicator
is selected, as the primary emphasis
of the test is on the performance of
the programs concerned. The Search
Function (Search Functs.) indicator
is also checked, and the pattern to be
searched is entered as:
SELECT SINGLE * WHERE *
An Object Set Z_MY_OBJECTS is
created, as shown in Figure 14.
Since we need a set of all programs
having names starting with Z, the
Program eld in the Object Selec-
tion area is lled with Z*. Finally,
an inspection is created and executed
using the newly-created Variant and
Object Set. The output of the inspec-
tion is shown in Figure 15.
Figure 13: Creating the Z_MY_VARIANT Variant
4On ABAP/J2EE
SAPtips
P
a
g
e

8
S
A
P
t
i
p
s

J
o
u
r
n
a
l
J
u
n
e
/
J
u
l
y

2
0
0
6


V
o
l
u
m
e

I
V

I
s
s
u
e

3

SAPtips.com SAPtips 2006 Klee Associates, Inc.
Conclusion
In this article, I discussed the
basics of the Code Inspector and
the steps required in order to test
the quality of ABAP programs.
Then, I listed the set of checks
and functions that the Inspec-
tor supports. Finally, I discussed
a requirement that may be ful-
lled via use of this tool. I hope
that this article will be a pre-
cious resource for you, and will
help you in checking the quality
of your programs in the least
possible time.
Rehan Zaidi, Senior SAP Con-
sultant, Siemens Pakistan.
Rehan has been involved in both
ABAP development and func-
tional conguration for SAP HR
implementations at multination-
al and local companies, and also
has experience with SAP Work-
ow. He has contributed articles
to the SAP Professional Journal,
the HR Expert newsletter, and
to the TechRepublic Website.
He is currently working on his
rst book, specically designed
for SAP HR Users and Manag-
ers, as well as a guide for ABAP/
Workow Consultants titled
201 Interview Questions on
Workow. Rehan is the found-
er of the Web site www.siteofSAP.
com. Rehans email address is
Rehan.Zaidi@SAPtips.com.
Figure 14: Creating the Object Set Z_MY_OBJECTS
Figure 15: Output of Inspection
4On ABAP/J2EE
SAPtips
P
a
g
e

9
S
A
P
t
i
p
s

J
o
u
r
n
a
l
J
u
n
e
/
J
u
l
y

2
0
0
6


V
o
l
u
m
e

I
V

I
s
s
u
e

3

SAPtips.com SAPtips 2006 Klee Associates, Inc.
The information in our publications and on our Website is the copyrighted work of Klee Associates, Inc. and is owned by Klee Associates, Inc. NO WARRANTY:
This documentation is delivered as is, and Klee Associates, Inc. makes no warranty as to its accuracy or use. Any use of this documentation is at the risk of the user.
Although we make every good faith effort to ensure accuracy, this document may include technical or other inaccuracies or typographical errors. Klee Associates,
Inc. reserves the right to make changes without prior notice. NO AFFILIATION: Klee Associates, Inc. and this publication are not afliated with or endorsed by SAP
AG, SAP AG software referenced on this site is furnished under license agreements between SAP AG and its customers and can be used only within the terms of such
agreements. SAP AG and mySAP are registered trademarks of SAP AG. All other product names used herein are trademarks or registered trademarks of their
respective owners.
SAPtips
Journal

Das könnte Ihnen auch gefallen