This extension provides support for SAP ABAP. If your application
contains SAP ABAP source code and you want to view these object
types and their links with other objects, then you should install this extension.
This release of the extension is based on the previous 1.0.x releases and contains identical functionality, features and bug fixes. Please check the release notes for more information. Despite the equivalence, there may still be some differences in results produced between 2.x and 1.x releases due to improvements introduced as part of the process of supporting this technology with CAST Imaging V3. Specifically, when comparing the analysis results of the same application:
there may be a reduction in the number of Lines of Code (LOC) reported in 2.0.x results for ABAP objects: improved counting methods have been implemented and values are now more accurate
there may be less ABAP Class objects reported in 2.0.x results: improved full name creation has been implemented and the number of objects reported is now more accurate
Function Point, Quality and Sizing support
Function Points (transactions): a green tick indicates that OMG Function Point counting and Transaction Risk Index are supported
Quality and Sizing: a green tick indicates that CAST can measure size and that a minimum set of Quality Rules exist
Function Points (transactions)
Quality and Sizing
✅
✅
Technical information
Supported releases
The SAP ABAP Analyzer supports all SAP ABAP products, running with SAP modules Basis and ABA of NetWeaver v7.
There are two available methods for collecting source code for the com.castsoftware.sap extension:
Use the com.castsoftware.aip.extractor.sap to extract the source code directly from your SAP instance and into a format that can be packaged for delivery to CAST Imaging. Instructions can be found in CAST SAP Extractor
NG.
If you are storing your source code in abapGit, you can package the source code as a ZIP created from a clone of this source code repository. The following abapGit file storage types are supported and the resulting objects are identical to those generated from a com.castsoftware.aip.extractor.sap extraction:
Name
Programming Language
Supported
Description
*.abap
ABAP
True
objects, programs, classes
*.sap.xml
ABAP
True
SAP Tables, transactions, views, CDS
*.tabl.xml
ABAP
True
SAP Tables
*.tran.xml
ABAP
True
SAP transactions
*.view.xml
ABAP
True
SAP views
*.wdya.xml
ABAP
True
web dynpros
*.wdyn.xml
ABAP
True
web dynpros
package.devc.xml
ABAP
True
packages
*.asddls
ABAP CDS
True
CDS
*.ddls.asddls
ABAP CDS
True
CDS
In order for CAST to save SAP tables and programs during an analysis, the following must be true (if only one of these things is true then the tables and programs will not be saved in the results):
the SAP tables and programs must have been successfully extracted from the SAP system and analyzed with the ABAP client code
AND the SAP tables and programs must be referenced in the ABAP client code
The extension will “discover” one project (and configure one “Analysis Unit”) for the highest level folder (within the root folder) containing files that use the .ABAP file extension. If multiple SAP extractions are delivered at the same time, one project will be created for each SAP extraction within the delivered source code.
The following technical items are discovered:
Root path
SAP Table extraction folder (no discovery scan will take place in sub-folders of a SAP Table extraction folder)
.SQLTABLESIZE file
XXL table rules are performance related rules that help detect incorrect or poorly performing SQL queries running on XXL tables. XXL tables can be defined as extremely large tables, containing a large amount of data. The goal is to use table size from production systems because development / integration systems may not feature really large tables and would not help detect real threat on application performance levels.
You will need to manually create this file if you are packaging code directly from an abapGit repository. The file should then be delivered with your extracted SAP table code.
Download and installation instructions
The extension is downloaded and installed automatically.
SAPCDSViews: Only CDS Views starting with /, Y or Z are analyzed. All other CDS Views are ignored.
SAP OpenSQL Objects
Icon
ID
Description
Concept
CAST_ABAP_SAPTableIndex
SAP table index
Index
CAST_ABAP_SAPTableForeignKey
SAP table foreign key
SQL Key
CAST_ABAP_SAPTablePrimaryKey
SAP table primary key
SQL Key
CAST_ABAP_SAPUnresolvedTable
SAP unresolved Table
Table
SAPTable
SAP Table
Table
CAST_ABAP_SAPTableColumn
SAP table column
Table Column
SAP Tables and SAP Views are only saved in the Analysis schema when they are called from the analysis source code.
BAPI objects
Icon
ID
Description
Concept
CAST_SAP_BAPI_EVENT
SAP BAPI Event
Event Handling
CAST_SAP_BAPI_File
SAP BAPI File
File
CAST_SAP_BAPI
SAP BAPI
Function
CAST_SAP_BAPI_METHOD
SAP BAPI Method
Function
CAST_SAP_BAPI_KEY_FIELD
SAP BAPI Key Field
UI
CAST_SAP_BAPI_ATTRIBUTE
SAP BAPI Attribute
Variable
Web Dynpro for ABAP
Icon
ID
Description
Concept
CAST_SAP_R3WDYN_Application
R3 WebDynpro Application
Application
CAST_SAP_R3WDYN_EventHandler
R3 WebDynpro Event Handler
Event Handling
CAST_SAP_R3WDYN_File
SAP Web Dynpro File
File
CAST_SAP_R3WDYN_Action
R3 WebDynpro Action
Function
CAST_SAP_R3WDYN_Method
R3 WebDynpro Method
Function
CAST_SAP_R3WDYN_SupplyFunction
R3 WebDynpro Supply Function
Function
CAST_SAP_R3WDYN_Attribute
R3 WebDynpro Attribute
UI
CAST_SAP_R3WDYN_Component
R3 WebDynpro Component
UI
CAST_SAP_R3WDYN_ComponentController
R3 WebDynpro Component Controller
UI
CAST_SAP_R3WDYN_InboundPlugin
SAP R3WDYN inbound plugin
UI
CAST_SAP_R3WDYN_InterfaceController
R3 WebDynpro Interface Controller
UI
CAST_SAP_R3WDYN_InterfaceView
R3 WebDynpro Interface View
UI
CAST_SAP_R3WDYN_OutboundPlugin
SAP R3WDYN outbound plugin
UI
CAST_SAP_R3WDYN_View
R3 WebDynpro View
UI
CAST_SAP_R3WDYN_Window
R3 WebDynpro Window
UI
Links
Link type
When is this type of link created?
Example
ACCESS EXEC
This link is created when a piece of code calls
a method.
CALL METHOD oref->method1...
ACCESS MEMBER
This link is created when an object make an
access to a member of another object.
METHOD mymethod.
WRITE ref->attr
ENDMETHOD.
ACCESS READ
This link is created when an object reads a
value of another object.
METHOD mymethod.
X = ref->attr
ENDMETHOD.
ACCESS WRITE
This link is created when an object modifies a
value of another object.
METHOD mymethod.
ref->attr = 10
ENDMETHOD.
BELONGS TO
This link is created when one object belongs to
another object.
report abapReport
Function f
Endfunction
(f belongs to abapReport).
CALL
This link is used to describe a function that
is called in a code block.
Function f
Perform g
Endfunction
(f calls g)
CALL
This link is created when a SAP transaction
calls another SAP transaction.
This information is extracted from the SAP
system.
CALL
This link is created when a SAP transaction
calls the processing screen or the selection screen of an ABAP
program.
This information is extracted from the SAP
system.
CALL
This link is created when an ABAP program calls
a SAP transaction.
CALL TRANSACTION SA10 AND SKIP FIRST SCREEN.
...
LEAVE TO TRANSACTION SA10.
CALL
This link is created when an event block of a
screen calls an ABAP module.
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
*
PROCESS AFTER INPUT.
CHAIN.
FIELD: SDYN_CONN-CITY, SDYN_CONN-COUNTRY,
SDYN_CONN-CARID, SDYN_CONN-MARK.
MODULE USER_COMMAND.
ENDCHAIN.
CALL
This link is created when an ABAP component
calls a screen.
This information is extracted from the SAP
system.
INCLUDE
This link is used when a file includes another
file.
Report abapReport
Include include_name
INHERIT EXTEND
This link is created from a class A to a class
B if A inherits B.
CLASS subclass DEFINITION
INHERITING FROM superclass.
ENDCLASS.
INHERIT OVERRIDE
If a method of a class overrides a method
belonging to a parent class, then this link is created between the two
methods.
METHODS mymethod REDEFINITION.
INHERIT IMPLEMENT
This link is created from a class to an
interface when the class implements this interface.
CLASS myclass DEFINITION.
PUBLIC SECTION.
INTERFACES: interf1, interf2 ...
ENDCLASS.
INHERIT IMPLEMENT
If a class implements an interface, this link
is also created between the method belonging to the class and the
corresponding method belonging to the interface.
INTTERFACE status.
METHODS write.
ENDINTERFACE.
CLASS counter DEFINITION.
PUBLIC SECTION.
INTERFACE status.
...
ENDCLASS.
CLASS counter IMPLEMENTATION.
METHOD status~write.
...
ENDMETHOD.
...
ENDCLASS.
RAISE
This link is created when a method activates an
event.
RAISE EVENT evt EXPORTING ...
RELY ON
This link is created when a method is a handler
for an event.
METHODS handler FOR EVENT evt OF {class|interf}
IMPORTING ... ei ...[sender].
USE
This link is created when a processing screen
or a selection screen is used in conjuncton with an ABAP program.
This information is extracted from the SAP
system.
USE
This link is created when a SAP transaction
calls an ABAP program.
This information is extracted from the SAP
system.
USE
This link is created when an ABAP component
calls a screen.
This information is extracted from the SAP
system.
USE
This link is created when a processing screen
or a selection screen is used in conjuncton with an ABAP program.
This information is extracted from the SAP
system.
USE SELECT
This link is used when a code block contains an
SQL request with a select statement (in the case of embedded SQL or
native SQL).
Report abapReport
Select col from table
USE UPDATE
This link is used when a code block contains an
SQL request with an update statement (in the case of embedded SQL or
native SQL).
Report abapReport.
Update table set col=’a’
USE DELETE
This link is used when a code block contains an
SQL request with a delete statement (in the case of embedded SQL or
native SQL).
Report abapReport
Delete from table
USE INSERT
This link is used when a code block contains an
SQL request with an insert (in the case of embedded SQL or native
SQL).
Unresolved Reference to ‘<CALLEE_NAME>’ found in object ‘<CALLER_NAME>’.
Severity
Warning
Explanation
The analyzer found a reference to an object called <CALLEE_NAME> and was not able to find out that object in the source code to be analyzed.
User Action
Select the object <CALLEE_NAME> in the list of objects in the Unresolved folder of the technical browser in CAST Enlighten. Check the source code with the application team. If this is an application specific component, then it is recommended to add it to the analysis scope. Missing components could affect reference resolution and potentially quality rules.
ABAP.02
Info
Explanation
Identifier
ABAP.02
Message
Unresolved Include ‘<INCLUDE_NAME>’ found in object ‘<CALLER_NAME>’.
Severity
Warning
Explanation
The analyzer found a reference to an include file called <INCLUDE_NAME> and was not able to find out the corresponding file in the source code to be analyzed.
User Action
Select the object <INCLUDE_NAME> in the list of objects in the Unresolved folder of the technical browser in CAST Enlighten. Check the source code with the application team. If this is an application specific include, then it is recommended to add it to the analysis scope. Missing components could affect reference resolution and potentially quality rules.
ABAP.03
Info
Explanation
Identifier
ABAP.03
Message
Include resolution completed.
Severity
Information
Explanation
All the include file references have been processed. The analyzer will now start the analysis.
User Action
Nothing special to do.
ABAP.04
Info
Explanation
Identifier
ABAP.04
Message
Unsupported syntax found at line and column in file ‘’ (<CODE>).
Severity
Warning
Explanation
The analyzer is not able to parse the piece of ABAP source code <CODE> correctly. The parsing of the source file will not complete and only the corresponding object will be created without any properties and children objects.
User Action
Identify with the application team whether it is an incorrect syntax on the customer side (the source code should compile correctly). If not, then contact CAST Support.
ABAP.05
Info
Explanation
Identifier
ABAP.05
Message
Duplicated object ‘<OBJECT_NAME>’ found in file ‘<FILENAME>’.
Severity
Warning
Explanation
The analyzer found 2 objects with the name <OBJECT_NAME> and same type in the source file <FILENAME>. Only the first one is taken in account.
User Action
Identify with the application team the ABAP element and check if the source code compile correctly. If yes, then contact CAST Support.
ABAP.06
Info
Explanation
Identifier
ABAP.06
Message
Starting macros resolution. This action may take a while…
Severity
Information
Explanation
The analyzer starts to process the macro directives in the source code.
User Action
Nothing special to do.
ABAP.07
Info
Explanation
Identifier
ABAP.07
Message
Macros resolution completed.
Severity
Information
Explanation
All the macro directives found in the source code have been processed.
User Action
Nothing special to do.
ABAP.08
Info
Explanation
Identifier
ABAP.08
Message
The following file will not be processed ‘<FILENAME>’: duplicated program or report ‘<PROGRAM_NAME>’.
Severity
Warning
Explanation
The analyzer found a source file containing a program called <PROGRAM_NAME> that has been already analyzed in another source file. In order to avoid duplicates, the second source file is not analyzed. This situation can occur when 2 versions of the same program have been delivered.
User Action
Identify the duplicated object with the application team. Exclude the file from the next analysis.
ABAP.09
Info
Explanation
Identifier
ABAP.09
Message
The following file will not be processed ‘<FILENAME>’: duplicated include ‘<INCLUDE_NAME>’.
Severity
Warning
Explanation
The analyzer found a source file containing a include called <INCLUDE_NAME> that has been already analyzed in another source file. In order to avoid duplicates, the second source file is not analyzed. This situation can occur when 2 versions of the same include have been delivered.
User Action
Identify the duplicated object with the application team. Exclude the file from the next analysis.
ABAP.10
Info
Explanation
Identifier
ABAP.10
Message
The following file will not be processed ‘<FILENAME>’: duplicated function-pool ‘<FUNCTION_POOL_NAME>’.
Severity
Warning
Explanation
The analyzer found a source file containing a function pool called <FUNCTION_POOL_NAME> that has been already analyzed in another source file. In order to avoid duplicates, the second source file is not analyzed. This situation can occur when 2 versions of the same function pool have been delivered.
User Action
Identify the duplicated object with the application team. Exclude the file from the next analysis.
ABAP.11
Info
Explanation
Identifier
ABAP.11
Message
The following file will not be processed ‘<FILENAME>’: duplicated type-pool ‘<TYPE_POOL_NAME>’.
Severity
Warning
Explanation
The analyzer found a source file containing a type pool called <TYPE_POOL_NAME> that has been already analyzed in another source file. In order to avoid duplicates, the second source file is not analyzed. This situation can occur when 2 versions of the same type pool have been delivered.
User Action
Identify the duplicated object with the application team. Exclude the file from the next analysis.
ABAP.12
Info
Explanation
Identifier
ABAP.12
Message
The following file will not be processed ‘<FILENAME>’: duplicated user-exit ‘<USER_EXIT_NAME>’.
Severity
Warning
Explanation
The analyzer found a source file containing a user-exit called <USER_EXIT_NAME> that has been already analyzed in another source file. In order to avoid duplicates, the second source file is not analyzed. This situation can occur when 2 versions of the same user-exit have been delivered.
User Action
Identify the duplicated object with the application team. Exclude the file from the next analysis.
ABAP.13
Info
Explanation
Identifier
ABAP.13
Message
Loading SAP tables . . .
Severity
Information
Explanation
The analyzer is loading the extraction files containing the information on database tables. The number of files depends on the size of the extraction.
User Action
Nothing special to do.
ABAP.14
Info
Explanation
Identifier
ABAP.14
Message
<DB_TABLE_NUMBER> tables <DB_VIEW_NUMBER> views have been loaded.
Severity
Information
Explanation
This message presents the number of database tables and database views that have been identified in extraction files. This information can be used to validate the number of database tables that have been created in the Local base compared to the database tables that are used by the ABAP code.
User Action
Nothing special to do.
ABAP.15
Info
Explanation
Info
Explanation
Identifier
ABAP.15
Message
No file to parse.
Severity
Error
Explanation
The analysis settings are not correct and no ABAP source files has been selected for being analyzed.
User Action
Review the Analysis Unit configuration and the source file settings.
ABAP.16
Info
Explanation
Identifier
ABAP.16
Message
Unresolved SAP database table or view: ‘<DB_TABLE_NAME>’ called in object ‘<CALLER_NAME>’.
Severity
Warning
Explanation
The analyzer found an Open SQL query refering to a database table or a database view called <DB_TABLE_NAME> that has not been identified in the extraction files.
User Action
Select the object <DB_TABLE_NAME> in the list of objects in the Unresolved folder of the technical browser in CAST Enlighten. Check the SAP table extracted files with the application team and investigate why these tables or views have not been extracted. Missing components could affect reference resolution and potentially quality rules.
ABAP.17
Info
Explanation
Identifier
ABAP.17
Message
Unresolved Class or Interface: ‘’ called in object ‘<CALLER_NAME>’.
Severity
Warning
Explanation
The analyzer found a reference to a class or an interface called that is not defined in any ABAP source file belonging to the analysis scope.
User Action
Select the object in the list of objects in the Unresolved folder of the technical browser in CAST Enlighten. Check the source code with the application team. Missing components could affect reference resolution and potentially quality rules.
ABAP.18
Info
Explanation
Identifier
ABAP.18
Message
Unresolved Method: ‘<METHOD_NAME>’ in class ‘<CLASS_NAME>’ called in object ‘<CALLER_NAME>’.
Severity
Warning
Explanation
The analyzer found a reference to a class method called <METHOD_NAME> for which no source code has been identified in the analysis scope. This could also occur when a parent class in which the method is defined has not been delivered.
User Action
Select the object <METHOD_NAME> in the list of objects in the Unresolved folder of the technical browser in CAST Enlighten. Check the source code with the application team. Missing components could affect reference resolution and potentially quality rules.
ABAP.19
Info
Explanation
Identifier
ABAP.19
Message
Unresolved Member: ‘<MEMBER_NAME>’ in class ‘<CLASS_NAME>’ called in object ‘<CALLER_NAME>’.
Severity
Warning
Explanation
The analyzer found a reference to a class member called <MEMBER_NAME> for which no source code has been identified in the analysis scope. This could also occur when a parent class in which the member is defined has not been delivered.
User Action
Select the object in the list of objects in the Unresolved folder of the technical browser in CAST Enlighten. Check the source code with the application team. Missing components could affect reference resolution and potentially quality rules.
ABAP.20
Info
Explanation
Identifier
ABAP.20
Message
Unresolved Events: ‘<EVENT_NAME>’ in class ‘<CLASS_NAME>’ called in object ‘<CALLER_NAME>’.
Severity
Warning
Explanation
The analyzer found a reference to a class event called <EVENT_NAME> for which no source code has been identified in the analysis scope. This could also occur when a parent class in which the event is defined has not been delivered.
User Action
Select the object in the list of objects in the Unresolved folder of the technical browser in CAST Enlighten. Check the source code with the application team. Missing components could affect reference resolution and potentially quality rules.
ABAP.21
Info
Explanation
Identifier
ABAP.21
Message
<MESSAGE>
Severity
Warning
Explanation
The analyzer is not able to read a LIST file that contains the information on SAP transactions and various cases can be described by this message. This occurs when the file is not correctly generated by the CAST SAP Extractor.
User Action
Identify the LIST file for which the message has been produced and contact CAST Support.
ABAP.22
Info
Explanation
Identifier
ABAP.22
Message
Light processing file ‘<FILENAME>’.
Severity
Information
Explanation
The analyzer processes the source files in 2 steps. The first one aims to identify the different objects across the source files. The second one parses the code and resolves references. This message appears when the first step starts.
User Action
Nothing special to do.
ABAP.23
Info
Explanation
Identifier
ABAP.23
Message
Processing file ‘<FILENAME>’.
Severity
Information
Explanation
The analyzer processes the source files in 2 steps. The first one aims to identify the different objects across the source files. The second one parses the code and resolves references. This message appears when the second step starts.
User Action
Nothing special to do.
ABAP.24
Info
Explanation
Identifier
ABAP.24
Message
Unresolved Transaction: ‘<TRANSACTION_NAME>’ called in object ‘<CALLER_NAME>’.
Severity
Warning
Explanation
The analyzer found a reference to a transaction called <TRANSACTION_NAME> that has not been identified in any extraction file. This can occur when the package in which the transaction is defined has not been delivered or is not part of the analysis scope.
User Action
Select the object in the list of objects in the Unresolved folder of the technical browser in CAST Enlighten. Check the source code with the application team. Missing components could affect reference resolution and potentially quality rules.
ABAP.25
Info
Explanation
Identifier
ABAP.25
Message
Loading SAP database tables file ‘<FILENAME>’. . .
Severity
Information
Explanation
The analyzer is loading one of the extraction files containing the information on database tables.
User Action
Nothing special to do.
ABAP.26
Info
Explanation
Identifier
ABAP.26
Message
Resolving SAP database table Foreign Keys. . .
Severity
Information
Explanation
The analyzer creates links between database tables by following the Foreign Keys relations.
User Action
Nothing special to do.
ABAP.27
Info
Explanation
Identifier
ABAP.27
Message
SAP database table Foreign Keys resolved.
Severity
Information
Explanation
The analyzer completed the creation of links between database tables.