Page tree
Skip to end of metadata
Go to start of metadata

Summary: This page provides information that should help you to qualify the SAP ABAP application you need to analyze.

What you need to know

Types of ABAP code

There are two types of ABAP code: "Procedural ABAP" and "ABAP Object". A significant part of the development of custom code around SAP is done using Procedural ABAP. However, in the last version of SAP specific standard modules are implemented in ABAP Objects and as a result, the custom code has been adapted to ABAP Objects.

Please also see ABAP and SAP terminology for more background information.

Access to the ABAP source code

The code developed within the SAP instance is extracted from the SAP repository, by using an ABAP program (known as extraction tools) delivered with CAST AIP, in order to be analyzed. The extractor will handle:

  • all ABAP programs, including source code, belonging to a SAP package
  • all SAP tables and views belonging to SAP object names

Please see the CAST SAP Extractor NG for more information.

Objects analyzed by the ABAP Analyzer

The ABAP Analyzer analyzes the following objects:

  • ABAP Package
  • ABAP Program
  • ABAP Include
  • ABAP Function-pool
  • ABAP Type Pool
  • ABAP Form
  • ABAP Function
  • ABAP Event Block
  • ABAP Macro
  • ABAP Module
  • ABAP Module Pool
  • ABAP BADI
  • ABAP User Exit
  • SAP Table
  • SAP View
  • SAP Transaction
  • ABAP Processing Screen
  • ABAP Selection-Screen
  • ABAP Class
  • ABAP Class Pool
  • ABAP Constructor
  • ABAP Member
  • ABAP Method
  • ABAP Event
  • ABAP Event Method
  • ABAP Interface
  • ABAP Interface Pool
  • ABAP BAPI
  • ABAP BAPI Method
  • ABAP BAPI Key Field
  • ABAP BAPI Attribute
  • ABAP BAPI Event
  • R3 WebDynpro Component
  • R3 WebDynpro Application
  • R3 WebDynpro Window
  • R3 WebDynpro View
  • R3 WebDynpro Component Controller
  • SAP R3WDYN inbound plugin
  • SAP R3WDYN outbound plugin
  • R3 WebDynpro Event Handler
  • R3 WebDynpro Action
  • R3 WebDynpro Method
  • R3 WebDynpro Supply Function
  • R3 WebDynpro Attribute
The ABAP Analyzer supports Web Dynpro for ABAP only.

In addition, the ABAP Analyzer creates the following objects when the objects referenced in the code are not present:

  • ABAP Unresolved Object
  • ABAP Unresolved Folder

The ABAP Analyzer provides the ability to see the objects around two programming models:

Macroscopic objects

Microscopic objects

ABAP Package
ABAP Program
ABAP Include
ABAP Function Pool
ABAP Module Pool
ABAP Type Pool
ABAP Class Pool
ABAP Interface Pool
R3 WebDynpro component
R3 WebDynpro Application
R3 WebDynpro Window
R3 WebDynpro View
R3 WebDynpro Component Controller

ABAP Form
ABAP Function
ABAP Type
ABAP Event Block
ABAP Macro
ABAP Module
ABAP Class
ABAP Constructor
ABAP Member
ABAP Constant
ABAP Method
ABAP Event
ABAP Event Method
ABAP Interface
SAP Transaction
ABAP Processing Screen
ABAP Selection-Screen
ABAP BAPI
ABAP BAPI Method
ABAP BAPI Key Field
ABAP BAPI Attribute
ABAP BAPI Event
SAP R3WDYN inbound plugin
SAP R3WDYN outbound plugin
R3 WebDynpro Event Handler
R3 WebDynpro Action
R3 WebDynpro Method
R3 WebDynpro Supply Function
R3 WebDynpro Attribute

Technical inner structure

The ABAP Analyzer detects the technical structure regarding:

  • Dependencies between programs and includes
  • Calls between transactions, programs, includes, function-pools, user-exits and functions, forms, modules, processing & selection-screens and methods
  • Include links between reports, function-pools, user-exits, BADIs and Includes
  • Use of function pools
  • Definition and usage of Macros
  • Inheritance between classes
  • Implementation between classes and interfaces
  • Access links between methods, members and objects
  • Raise links and Rely On links between methods and events

The following "Belongs To" relationships are managed by the ABAP Analyzer (object types located in the second level belong to those which are located in the first level): 

Project:

  • Package
  • Processing Screen

SAP Project:

  • Table
  • View

Package:

  • Program
  • Include
  • Function Pool
  • Type Pool
  • Class Pool
  • Interface Pool
  • Transaction
  • BAPI
  • R3 WebDynpro Component

Program:

  • File Level Code
  • Event Block
  • Module
  • Function
  • Form
  • Selection Screen
  • Class
  • Interface

Include:

  • File Level Code
  • Event Block
  • Module
  • Function
  • Form
  • Selection Screen
  • Class
  • Interface

File Level Code:

  • Selection Screen

Function Pool:

  • Function
  • Form

Class Pool:

  • Class

Interface Pool:

  • Interface

Class:

  • Method
  • Constructor
  • Event Method
  • Member
  • Constant

Interface:

  • Method
  • Constructor
  • Event Method
  • Member

BAPI:

  • BAPI Method
  • Key Field
  • Attribute
  • Event

R3 WebDynpro Component

  • R3 WebDynpro Application
  • R3 WebDynpro Window
  • R3 WebDynpro View
  • R3 WebDynpro Component Controller

R3 WebDynpro Window

  • SAP R3WDYN inbound plugin

R3 WebDynpro View

  • SAP R3WDYN inbound plugin
  • SAP R3WDYN outbound plugin
  • R3 WebDynpro Action
  • R3 WebDynpro Event Handler
  • R3 WebDynpro Method

R3 WebDynpro Component Controller

  • R3 WebDynpro Method
  • R3 WebDynpro Supply function
  • R3 WebDynpro Attribute

In addition to the dependency analysis, a comprehensive set of metrics is calculated on the ABAP code, such as:

  • Cyclomatic complexity (which gives the number of logical paths within a given module or function)
  • SQL Complexity (returning queries with complex SQL statements, which can therefore potentially affect performance).

Quality rules are calculated on ABAP code (this includes Web Dynpro object types such as Method, Event Handlers and Supply functions) and on Open SQL queries.

Questions to ask the customer

The following list provides some questions that should be discussed with the customer before extracting any source code from the SAP repository:

  • What version of SAP is used (4.0B, 5.0, ...)?
    • Notes:
      • Cast AIP supports SAP R/3 (4.0 to 6.0)
      • For versions ECC5 and ECC6, the version numbers are 5.0 and 6.0 respectively
  • Do you use Open SQL or ABAP Native SQL?
    • The Metric Assistant only calculates metrics on Open SQL. ABAP Native SQL is detected for Quality rule purposes.
  • What is the naming convention used to identify the custom code?
    • The name of customized objects must start with a Z - although SAP does allow certified partners that deliver SAP complements to use other letters for the transactions (example: Y*, LZ*, LY*, SAPLY*, SAPLZ*)
  • Do you have other SAP packages outside of the Z package that you need to analyze?
  • Are applications implemented on several SAP instances?
  • Can you quantify the number of ABAP objects per package this represent?
  • Can you provide access to SAP on the CAST analysis machine or other workstation accessible by the CAST administrator?
    • SAP access must be set up for a SAP user that has development authority
  • Which network or local hard drive can be used to store the results of the extraction?

Collecting the source code

The ABAP code is extracted from the SAP repository via the an ABAP program (extractor) as mentioned before. The ABAP program queries the system catalog of the SAP repository and use built-in functions to access the source code and then save it as text files on disk. The results are saved in a special file format on a network, a local hard drive or on the SAP server home directory. The result files are then specified in the configuration of the ABAP analysis settings.

The extractor allows you to extract the number of rows for each extracted table. It saves this information in a XML format in file: SAP_tables_volume_0001.SQLTABLESIZE among those that are already generated. This file must be used to configure XXL diagnostics in the CAST Management Studio.

So, if you want to use these specific diagnostics, then you must select the option Extract number of rows in the SAP Extractor (this is the default value for this option). In addition, the extractor extracts the number of rows for client-dependent tables. Client-dependent tables can contain merged data related to different clients. By default, this option is activated. You must know that this operation can take a long time especially if the volumes of tables are huge.

In batch mode, the extractors cannot create subdirectories on the server. They will then use ZIP files to save source files and corresponding sub-directories related to packages. Note that this behavior is available for SAP 4.7, ECC5 and ECC6 only. For other versions, result files will be all saved in the same directory. This does not impact the analyzer (it finds information about package in source files) but if you change the extraction mode, then objects full name will change and this will impact dashboard in terms of deleted and new created objects.
See related documentation for more information on how to use this type of files.

Please see CAST SAP Extractor NG for more information about this.

It may be very useful to extract additional information that could be used to filter rules or in an upgrade context.Extracting additional information

This information is provided by the transactions ST03: Performance, SAP Statistics, Workload. The extraction of the information related to the transaction ST03 may be integrated in to a future version of the Cast extractors. However, for the moment, it is still necessary to extract this information manually.

ABAP Source Code

ABAP files

It is likely that the ABAP source code will not be extracted from the CAST AIP analysis machine. Therefore the ABAP files will be moved to the CAST AIP analysis machine following extraction. The CAST AIP administrator should note the number of ABAP files present in each Package / folder that is a candidate for the analysis. A header is inserted at the beginning of the extracted files. This header contains specific information such as the version of the extractor, the version of SAP, the package and the extraction date.

Example: File "Z_CREATE_EXAMPLE_DATA.abap":

* extractor_prog_Version 6.4 for SAP ECC5, ECC6.
* DATE 20100323 . DESCR Example of code to create data
* SAP_Version 701 .
* Dev_Class Z_ABAP_BOOK .

REPORT z_create_example_data 

It is important to use the files that are created by the CAST extractor because the ABAP Analyzer uses the information written in the ABAP file header.

Backup

The administrator will make sure that a backup of the current version of the ABAP source code is kept in a location clearly identified by the project team. This procedure will include a clear identification of the different versions and the date the files were extracted from the SAP repository.

  • No labels