I wrote here about using LiveCompare to fully understand the impact of significant SAP changes as part of an upgrade and mentioned that LiveCompare includes a template to identify unused custom code. It’s called U.03 – Unused Custom Code and you’ll find it in the Upgrade Analysis folder.
LiveCompare uses a series of patterns to match the names of objects and classify them either as SAP or custom. If you use a namespace to house your customizations then you’ll definitely want to update the CustomObjectsNamingPatterns External Data Source (XDS) that’s installed when you install the LiveCompare Templates. The first five rows look like this:
|
Type
|
SapQuery
|
Like
|
RegEx
|
IorE
|
|
ALL
|
Y*
|
Y%
|
^Y
|
I
|
|
ALL
|
Z*
|
Z%
|
^Z
|
I
|
|
ALL
|
/ICORP/*
|
/ICORP/%
|
^/ICORP/
|
I
|
|
TCOD
|
Y*
|
Y%
|
^Y
|
I
|
If my namespace is /ACME/ I’d add a row just after the /ICORP/* line to look like:
|
ALL
|
/ICORP/*
|
/ICORP/%
|
^/ICORP/
|
I
|
|
ALL
|
/ACME/*
|
/ACME/%
|
^/ACME/
|
I
|
|
TCOD
|
Y*
|
Y%
|
^Y
|
I
|
The template first discovers all the custom objects in the as-is system then cross references this with the SAP performance history database on production (we recommend using the production for retrieving this data as it is the most accurate source of historical usage data).
If in the timeframe that performance history data is available, a custom object hasn’t been executed then it is marked as unused.
This report should not be taken at face value and all the identified programs deleted from the upgrade. There’s always the chance that some of them have been run, just outside the time window for which performance history is available.
Instead the report should be split by application area (or devclass if this provides better segmentation) and each subset handed off to the functional lead for review. Based on their Yes/No feedback, the set of programs that may be retired during the upgrade can be readily identified.
Eliminating unused custom code from the upgrade project eliminates wasted effort developing and testing programs that will never be used in the new production environment.
A question was asked by one customer: “What about eliminating unused sub-objects?” The point is that if you have a custom program that’s unused and it exclusively depends on, let’s say, five function modules how do we identify the five function modules? You’ll find a template to handle that case here on iShare in the media area. Here’s the direct link.
Posted
03-05-2009 10:43 AM
by
Chris Trueman