0% found this document useful (0 votes)
48 views17 pages

IBM Code Review Checklist

The document is a comprehensive code review checklist that evaluates various aspects of programming standards, including documentation, validation results, and compliance with functional specifications. It covers multiple areas such as program history, naming conventions, error handling, and Unicode compatibility, providing a systematic approach to ensure code quality. Each checklist item includes a validation result to indicate compliance or any issues found during the review process.

Uploaded by

Aniruddha_Ghosh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as XLSX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views17 pages

IBM Code Review Checklist

The document is a comprehensive code review checklist that evaluates various aspects of programming standards, including documentation, validation results, and compliance with functional specifications. It covers multiple areas such as program history, naming conventions, error handling, and Unicode compatibility, providing a systematic approach to ensure code quality. Each checklist item includes a validation result to indicate compliance or any issues found during the review process.

Uploaded by

Aniruddha_Ghosh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as XLSX, PDF, TXT or read online on Scribd
You are on page 1/ 17

Code Review - Checklist

WRICEF ID
WRICEF Type
Technical Specification Title
Functional Specification Title and Release
Developer Name
Code Reviewed By
Reviewed On

S.No Documentation Validation Result


1 Does the program contain completed program history section as per the standards with Yes
appropriate and meaningful documentation?
2 If the program produces an output file, are the name and the location of the file documented ? N/A
3 Is the program's overall functionality / purpose described in the header ? Yes
4 Have all the restrictions/ assumptions (if any) been specified in the header? Yes
5 Are the data declarations, variables and parameters adequately commented ? Yes
6 Do all program elements (data objects, subroutines) follow the prescribed naming standards ? Yes
7 Are all the subroutines documented in detail (parameters, purpose of the subroutine, Yes
exceptions)?
8 Is the code (local variables, complex logic) within the subroutine documented sufficiently ? Yes
9 Are all the global declarations declared in a separate include? N/A
10 Are all the form routines written in an Include Program? N/A
11 Do all the includes in the program have the correct program header block with all the N/A
information filled in as per the Programming standards document?
12 Has a spell-check been done on the documentation and text elements? Yes
13 Has on-line program documentation been created for reusable Function Modules/Methods? N/A
14 Are Function Modules documented clearly with their purpose and the use of each of the N/A
interface parameters ?
15 Has Document Naming convention followed? Yes
16 Has development package used in object is aligned to Application area of development? Yes
17 Has message class used in object is aligned to Application area of development? N/A
18 If this is a modification, did you document the changed lines with the Change Number/defect Yes
number?
19 Has RICEF development object naming standards followed? Yes

Functional Specification Review Checklist Object Name


FSR Checklist
Version 1.0 Version <X.Y>
S.No General Programming Standards Validation Result
1 Have the development units been attached to the appropriate packages (development Yes
classes) ?
2 Do all the development units for the object belong to the same transport request? Yes
3 Is the Object ID and the description provided in the text for the transport request ? No
4 Has the transport request been checked for consistency and completeness ? Yes
5 Has common Utilities Class been used in development as required? N/A
6 Has Error and Exception handling been done as per Standards document? N/A
7 Has appropriate Authorization objects been used as required? N/A
8 Has the code review been done? Yes
9 Has the Transport naming convention followed as per the standards? Yes
10 Has code bundle (TS, TS review checklist, UT Plan, Code Review checklist) updated in No
SolMan?
11 Are all internal tables declared using the TYPES addition? Yes
12 Is each & every field in the internal table type definitiondocumented? Yes
13 Is every character variable declared as a variable of type C (even though this is not mandatory N/A
as per SAP) ?
14 Does the program use constants/ZBC_CONST instead of hard coding values ? Yes
15 Are the parameters/select-options validated as against their check tables? N/A
16 Are the parameters/select-options declared with reference to dictionary types (wherever N/A
applicable)?
17 Are the data objects (variables, constants, field symbols and internal tables) declared with a N/A
DDIC reference (wherever possible)?
18 Is the sequence in which the forms are called the same as in the Include file? N/A
19 Is a SY-SUBRC check done for all SELECT / READ statements ? Yes
20 Are all redundant SELECTs / READs eliminated ? Yes
21 Are text elements used for text literals that are output on the screen / list ? N/A
22 Did you use the “Pretty Printer” for code alignments, indentation and uppercase keywords for Yes
code readability?
23 Did you avoid using direct update to standard database tables? Direct updates to database Yes
tables are not allowed.
24 Do the SELECT statements filter the unnecessary data via the WHERE clause instead of Yes
fetching the and ignoring it using the CHECK / IF statements ?

25 Do the SELECT statements use the key fields in the WHERE clause wherever possible Yes
(thereby making use of the indexes on the table) ?
26 Do all the SELECT statements use an array fetch(Array Fetch means using all the fields in the Yes
Table. But this is recommended only for table with few fields.) wherever possible ?
27 Do all the INSERT statements use an array / table insert wherever possible ? N/A
28 Has the COMMIT WORK statement been used judiciously ? N/A
29 Has the deletion flag been considered in the SELECT statements in the WHERE clause N/A
(wherever applicable) ?

Functional Specification Review Checklist Object Name


FSR Checklist
Version 1.0 Version <X.Y>
31 Are internal tables always initialized using the REFRESH statement ? Yes
32 Are internal tables always created without a header line ? Yes
33 Are the additions MOVE-CORRESPONDING and INTO CORRESPONDING justified (only for N/A
if the data transfer is for too many fields)?
34 If a COLLECT statement is being used, has an APPEND statement been considered instead ? N/A
35 Has an EPC and Code Inspector check with project specific variant(ZCI_SYM) been done and Yes
the resultant errors resolved?
36 Does the order of your declarations, events and subroutines follow standards? (Did you used Yes
the template programs provided in standards?)
37 Did you use the standard output report header? N/A
38 Did you use the proper program attributes(Editor Lock check…)? Yes
39 Are standard function modules used wherever possible (for date manipulation, Pop-ups etc.) ? N/A
40 Use of standard function modules for date manipulation, Pop-ups etc. N/A
41 Did you include messages of type S for batch programs to help track the program progress N/A
and identify long program steps?(database operations, function calls, number of records
processed)
42 Did you remove all commented codes / break-point statements, sy-uname validations etc? Yes
43 Did you use Append Structures to extend SAP objects? N/A
44 Does the program take care of peculiar short dumps such as ‘Division by Zero’ and ‘Type N/A
Conversion error’?
45 Did you check run-time analysis (SE30) and analyzed the trace? No
46 If a Custom table has been created, has a data archiving(deletion) strategy defined? N/A
47 Any specific checks for OOPS programming N/A
48 Did you complete SQL Trace(ST05) on this program with a wide range of selection and N/A
rectified any RED blocks. If there were any RED areas in the SQL trace, it is the developer’s
responsibility to analyze(using Explain SQL) and fix the issue.
49 Did you incorporate the proper security based on the requirements? N/A

S.No Unicode Compatibility Validation Result


1 Is the FIND command used with the qualifier OFFSET ? No
2 Is the REPLACE command used with the qualifier OFFSET ? No
3 Is the SEARCH command used with the right additions? No
4 Does the REPORT statement have the LINE-SIZE addition ? No
5 Is the DESCRIBE FIELD command is used with the qualifier OUTPUT-LENGTH ? No
6 Is the PRINT-CONTROL command is used with the addition POSITION ? No
7 Is the WRITE command used only in these formats - N/A
WRITE <String> , WRITE <Char field> ?
8 Is the WRITE command used with qualifier AT only in these formats where applicable - N/A
WRITE AT <col> <Char field>, WRITE AT <col>(<len>) <Char field> ?
9 Is the WRITE command is used with qualifier USING EDIT MASK where applicable ? N/A
10 Is the WRITE command is used with qualifier INPUT where applicable ? N/A

Functional Specification Review Checklist Object Name


FSR Checklist
Version 1.0 Version <X.Y>
S.No Transactions / Module Pool Validation Result
1 Screen numbers created as per ABAP programming standards N/A
2 Validations on input screen elements done properly N/A
3 PF Status created as per the Functional Specifications(if avaiable) N/A
4 Help functionality exists for all screen fields N/A
Standard Function keys are not used for these custom codes N/A
eg: F3 should be used only for Back
5 Proper “Exit” and “Back” functionality must exist for each screen N/A

S.No Forms Validation Result


1 Is the function module "NAST_PROTOCOL_UPDATE" being used to display all messages for N/A
Forms using Output Determination?
2 Are all long texts displayed on the SAP Script using the INCLUDE command ? N/A
3 Are the Page Type, Size, Orientation and Format defined as per requirements? N/A
4 Are all special requirements (special fonts, bar code and logo) fulfilled ? N/A
5 Is the output type configured with the correct program name and form name where Forms are N/A
triggered using Output Determination ?
6 Are the paragraphs and tabs defined correctly ? N/A
7 Are Styles created wherever appropriate (reusable formatting)? N/A
8 Is the next page correctly assigned ? N/A
9 Does the Smart Form contain any business logic locally ? N/A
10 For Smart Forms and Adobe Forms, is the name of the form hard-coded in the print program ? N/A
11 Are the structures and table types created for the form included in the same transport request N/A
as the form and the driver program ?
12 Maximum use of Text Modules for Long text outputs instead of Standard text. Lesser use of N/A
Static text unless required.
13 Are the layout field bindings done properly in the designer? Note: The designer doesn’t show N/A
any errors on wrong field bindings!
14 Are the data type and formats of the values being printed correct? N/A
15 Are the required Form properties enabled/disabled based on type of Form (Print/Interactive)? N/A
16 Is all conditional logic for outputting various fields and values done in the print program (as N/A
against in the form context, which can impact performance) ?
17 Has the form layout been downloaded for Backup? N/A
(Prefer to save it in the TS or UTP document with a transport number mentioned in the name
as a version)

S.No Reports Validation Result


1 Is the standard report header used ? N/A
2 Is the standard report footer(This is applicable more for classical report when there is page N/A
break) used ?

Functional Specification Review Checklist Object Name


FSR Checklist
Version 1.0 Version <X.Y>
3 Are the control breaks used appropriately when displaying list/summary reports ? N/A
4 Is the ON CHANGE OF construct being used ? N/A
5 Is the internal table SORTed by the right fields before control processing is applied to it ? N/A

S.No Interfaces / Conversions/Idocs Validation Result


1 The file name and the path are appropriately validated and a suitable message is displayed ? N/A
2 Logical File path is provided as a parameter on the selection-screen (instead of hard-coding it N/A
in the program)?
5 Has the proposed Utility class defined in the Programming standards been used? N/A
7 Does file folder structure exist as per standard ? N/A
8 Has the file handling Function Modules created for Kraft been used in code when handling N/A
files?
9 Has SOA manager been used in case of Web Service interface? N/A
10 Is an F4 help provided for the file name (application server files and presentation server files, N/A
as appropriate) ?
11 After the CALL TRANSACTION statement , are the error messages captured in an internal N/A
table?
12 Has the SY-SUBRC been checked after a CALL TRANSACTION statement? N/A
13 Is the BDCDATA table REFRESHED after a CALL TRANSACTION ? N/A
14 Audit report displaying the records, which have been posted or is not shown N/A
15 In case of Interface, Have the CIF architecture components (File handling, Data Handling, N/A
Notifications ...) been used as required?
16 If the program uses an input file, are the name and location of the file documented ? N/A
17 Does the error log contain all the necessary information to identify the cause of the error ? N/A
18 Recommendation is to use standard BAPI & IDOC. Howover below are few review comments N/A
that can be considered:
19 If there is need to create custom IDOC, proper justification has been provided? N/A
20 Where ever possible standard IDOCs have been leveraged and extended instead of creating N/A
custom IDOC from scratch.
21 Instead of extending IDOCs, analysis has been done to leverage references, Qualifiers and/or N/A
text fields?
22 In case of custom IDOC segments, are all fields defined as characters? N/A
23 Are Custom segments/IDOCs released? N/A
24 In case of standard IDOC type selected, is latest version and released for customer use? N/A
25 Look for standard Idoc types/Process codes before creating custom ones N/A
26 Has the commit work done after calling BAPI? N/A
27 Do not change the existing Idoc type without confirming the impact for the existing interfaces. N/A
28 Release the Segment if some modifications are done in the Existing Segment. N/A
29 Has ROLLBACK considered based on the business need? N/A

S.No Enhancements Validation Result

Functional Specification Review Checklist Object Name


FSR Checklist
Version 1.0 Version <X.Y>
1 Do any of the enhancement implementations contain a COMMIT WORK statement ? No
2 Are the exceptions for the user-exits and BAdIs handled appropriately? N/A
3 For all DDIC enhancements, are the impacted dictionary objects adjusted after the N/A
enhancement ?
4 Has the enhancement category is appropriately selected for new custom tables and N/A
include/append structures?
5 Are the interface parameters for the enhancement used correctly (do all fields which are Yes
expected to pass a value actually do so)?
6 Are all assumptions on the availability of the program's global variables valid for all the Yes
documented test scenarios ?

S.No Workflow Validation Result


1 Are all the Tasks, new methods, events, attributes and role function modules are attached to N/A
the correct package/development class ?
2 Has it been ensured that the work items are created only for responsible agents with no N/A
duplication ?
3 Are the workflow steps checked for infinite loops for the given conditions ? N/A
4 Are the wait events placed appropriately with defined process control ? N/A
5 Do all the newly implemented BOR Objects have the status "Released" ? N/A

S.No Performance Validation Result


1 Have the nested SELECT statements been analyzed for their performance impact ? Is their Yes
use justified ?
2 Is WHERE condition in SELECT supported by an index on the table wherever possible? Yes
3 Has the BINARY search been used for searching a record from an internal table and is the Yes
table SORTED?
4 If JOIN can be used then, has preference been given to it over writing individual SELECT N/A
statements?
5 Has FIELD-SYMOBLS been given preference over WORK AREA, if internal table modification N/A
required in LOOP.
7 Has Parallel cursor given preference over use nested loops? If Parallel cursor is not possible N/A
to implement nesting loop cannot be more than 4 level down.
8 Do all instances of the DO…ENDDO construct contain a valid termination condition ? N/A
9 Are internal tables always SORTed only by the fields required (instead of sorting the table by Yes
all fields)?
10 Do all the SELECT statements fetch only those fields that are required (i.e., is a SELECT * Yes
avoided wherever possible for large tables) ?
11 If any of the SELECT statements use the ORDER BY clause, is this justified (has the N/A
alternative of fetching the data into an internal table and Sorting it been considered)?
12 If FOR ALL ENTRIES is being used, has the internal table been checked for the non-initial N/A
condition ?
13 Has the use of Native SQL been avoided ? N/A

Functional Specification Review Checklist Object Name


FSR Checklist
Version 1.0 Version <X.Y>
14 Has the code inspector been performed using variant 'ZCI_SYM'? Yes
15 Has SQL trace and ABAP trace have been performed? Yes

Functional Specification Review Checklist Object Name


FSR Checklist
Version 1.0 Version <X.Y>
Remarks

Functional Specification Review Checklist Object Name


FSR Checklist
Version 1.0 Version <X.Y>
Remarks

Delta change does not contain any such variable

TVARVC table has been used


Delta change does not contain any change in selection screen
Delta change does not contain any change in selection screen

Delta change does not contain any change in select

Functional Specification Review Checklist Object Name


FSR Checklist
Version 1.0 Version <X.Y>
Delta change does not contain any move corresponding

This is executed from Portal not in SAP GUI

Remarks

Functional Specification Review Checklist Object Name


FSR Checklist
Version 1.0 Version <X.Y>
Remarks

Remarks

Remarks

Functional Specification Review Checklist Object Name


FSR Checklist
Version 1.0 Version <X.Y>
Remarks

Remarks

Functional Specification Review Checklist Object Name


FSR Checklist
Version 1.0 Version <X.Y>
Delta change to existing program. No new custom table created

Remarks

Remarks

Functional Specification Review Checklist Object Name


FSR Checklist
Version 1.0 Version <X.Y>
Functional Specification Review Checklist Object Name
FSR Checklist
Version 1.0 Version <X.Y>
Code Walkthrough Checklist - Tips Tricks

S.No
1

3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
21
22

23

24

25

26

27

28
29
30

849173937.xlsx
15/17
Date Printed: 02/09/2025
Code Walkthrough Checklist - Tips Tricks

TIPS & TRICKS


All new messages have no more than 4 ampersands and have a long text or the “self-explanatory flag” set. Variable
a long text are called &V1&, &V2&, &V3&, or &V4& respectively.
SY-SUBRC is NOT tested within a SELECT loop (unless for an independent operation). This test is made AFTER the EN
code is ALWAYS ZERO just inside a SELECT loop. DO … VARYING is always used to deal with groups of repetitive dat
test as first step inside the loop:
IF <key data field in varying clause> IS INITIAL OR <key data field> GT <searched for value>. EXIT. ENDIF
Variants are used if a program needs to run with different parameters and the “no value” option (which allows INITIA
value) or a “selection variable” (which takes a value from TVARV) is used to minimize the number of variants require
“Successive Screen” messages, i.e. type ‘S’, can be used to log a program’s progress – or to leave non-critical mess
If more than 500 records in total, use PARALLEL CURSOR logic instead of nested LOOPS.
Inner joins for a 1:N relationship use the table with the “1’ relationship as driving table.
If the relationship is not lopsided, use the table with the lesser number of WHERE clauses as the driver.
If SELECT is not based on key fields, create INDEX. Take care that too many INDEXES degrade performance rather th
Always consult the database group.
While creating an INDEX, order the fields by their frequency of occurrence. The more frequent fields go first.
When searching for a fragment in a long string, uses the special operators such as CO, CA, CS, etc. instead of progra
from scratch.
Uses CONCATENATE or SPLIT – do not program from scratch.
To delete leading characters (usually spaces) program uses SHIFT … LEFT DELETING LEADING [SPACE/<any field na
character string>].
Only open a file if you know you are going to use it. Close all files at the end of the program. Only open a BDC sess
to use it. Use the describe statement or check return codes to determine whether there is any data to process.
Aggregate statements like count, avg, etc. should not be used on the Select.
Ensure that all declared variables in the program are actually used. Use the SLIN / SCID transactions (extended prog
Code Inspector).
The use of NE in select statements should be discouraged. This includes ranges and select-options.
Ensure that all forms are documented well.
Check return codes.
Constants and Text Elements should be used instead of hard coded variables.
Use variants for potential “hard coded” values in the program that may change.
Does the program contain SELECT * statements? If so, convert the statements into SELECT <col1> <col2> stateme
projection view. The exception would be that most or all fields are used.
Does the program contain CHECK statements for table fields within the SELECT…ENDSELECT loop? If so, replace the
with a suitable where clause.
Do SELECT statements on non-key fields use a suitable database index, or is the table buffered? Work with Basis to
that may help.
Does the program use nested SELECT statements? If so, convert the nested select statements into database views
statement.
Does the program contain SELECT statements without a WHERE clause for tables that grow constantly (BSEG, MKPF,
program design is wrong.
Does the program use SELECT…APPEND ITAB…ENDSELECT to fill internal tables? If so, change the program to fill th
using SELECT…INTO TABLE.
Does the program use SELECT…ORDER BY…statements? Unless there is a suitable index with the same fields as th
read the data into an internal table and sort it there.
Use SQL trace on each program to evaluate the true performance of SQL statements.
When reading internal tables, use binary search if possible.

849173937.xlsx
16/17
Date Printed: 02/09/2025
Code Walkthrough Checklist - Tips Tricks

849173937.xlsx
17/17
Date Printed: 02/09/2025

You might also like