Вы находитесь на странице: 1из 14

SAP-HANAtization Checklist

Version Date Author


1.0 19-Mar-15 Snehanshu Mukherjee

INSTRUCTIONS :
1. The developer should fill up the Developer's Section in the 'Control Info' tab - all fields are mandatory. The 'Process Che
mandatorily.
2. The developer has to complete each point in the column F of Hanatization checlist sheet. If any point is marked as "Fail"
mandatory. Leaving any point as blank is treated as non-compliance.
3. The developer also has to complete column H. If any point is marked as "No" then providing supporting reason (column
treated as non-compliance.
4. The developer then saves the checklist with a meaningful name. The filename should include Project Name and develo
5. The reviewer has to similarly analyze each point in the checklist and mark as appropriate (column J). If any point is mark
(column K) is mandatory.
6. Finally, the reviewer has to mark the review as complete, fillup the SME(Reviewer section) in "Control Info" tab. Then th
file after completion' in "Control Info" tab to make sure all validations are done. Then the file needs to be re-saved.

Explanation of columns in "Hanatization Checklist" :


1. Column A contains the coding scenarios which need to be corrected in the code.
2. Column B contains the SCI check points which will be used to identify the code scenarioes maintained in column A.
3. Column C indicates that entries with 'Action' need to be adjusted and 'No Action' can be ignored and SCI error can be h
4. Column D gives recommendation about what action need to be taken.
5. Column E entries with 'Mandatory' need be taken care and absolute must. Entries with 'Recommendation' can be done
6. Column F & G need to be filled by the developer. If 'Fail' entered in column F, then comment is must in column G.
7. Column H & I also need to be filled by the developer. If 'No' selected in column H, then in column I has to enter the reas
8. Column J & K need to be filled by the reviewer. If 'Fail' entered in column J, then comment is must in column K.
NAtization Checklist
Change Description
Initial

mandatory. The 'Process Checkpoint' section also needs to be completed

f any point is marked as "Fail" the providing supporting comments (column G) is

ng supporting reason (column I) is mandatory. Leaving any point as blank is

ude Project Name and development/object ID.


column J). If any point is marked as "Fail" then providing supporting commnets

in "Control Info" tab. Then the reviewer has to press the custom button 'Validate
needs to be re-saved.

maintained in column A.
gnored and SCI error can be hiden.

ecommendation' can be done in Optimization stage.


nt is must in column G.
column I has to enter the reason.
is must in column K.
AAO SAP TAC ABAP - HANAtization Checklist
Developer's Section
Project Name (including Customer Name)
Object ID (optional)
Development Title (optional)
Date (DD-MM-YYYY)
Developer
System ID/Client
CTS Number

Process Checkpoints
Validate file afte
HANAtization CDF has been filled and baselined?
Issue Log is updated?
Code Inspector has been run and output is baselined?
Extended Syntax check has been run and output is baselined?
Time Booking is done and in correct buckets

SME (Reviewer) Section


Review Completed
Reviewer LN ID
Date
Review Result
Reviewer's comment
Validate file after completion
0
Possible scenario SCI variant Action

SELECT * Search problematic SELECT * Action


statements

SELECT * FROM /glb/rgtt_cg2prc Search SELECT statement with Action


WHERE bukrs = p_bukrs DELETE statement
AND monat NE 0
ORDER BY PRIMARY KEY.
CHECK /glb/rgtt_cg2prc-gjahr NE v_gjahr
OR /glb/rgtt_cg2prc-monat NE v_monat.
MOVE /glb/rgtt_cg2prc TO */glb/rgtt_cg2prc.
ENDSELECT.

SELECT * FROM /glb/rgtt_cg2prc SELECT Statements with Action


WHERE bukrs = p_bukrs Subsequent CHECK
AND monat NE 0
ORDER BY PRIMARY KEY.
CHECK /glb/rgtt_cg2prc-gjahr NE v_gjahr
OR /glb/rgtt_cg2prc-monat NE v_monat.
MOVE /glb/rgtt_cg2prc TO */glb/rgtt_cg2prc.
ENDSELECT.

Table buffer bypassing Search ABAP Statement Patterns Action


"SELECT * BYPASSING BUFFER *"

Native SQL- During DB migration the NativeSQL Search ABAP Statement Patterns Action
constructs have to be adjusted or removed "EXEC SQL"

Native SQL- During DB migration the NativeSQL Search ABAP Statement Patterns Action
constructs have to be adjusted or removed "CL_SQL_STATEMENT"
Native SQL- During DB migration the NativeSQL Critical Statements Action
constructs have to be adjusted or removed Native SQL

Native SQL- During DB migration the NativeSQL Use of ADBC Interface Action
constructs have to be adjusted or removed ADBC clasees

DB-Hints Critical Statements Action


DB Hints
DB-Hints Search ABAP Statement Patterns Action
CALL FUNCTION
'DB_EXISTS_INDEX'

DB-Hints Find ORACLE Rule Hints Action


De-pooling/De-clustering -- Accessing Search DB Operations in Action
cluster/pool directly instead of table Pool/Cluster Tables

De-pooling/De-clustering -- Coding relying on Depooling/Declustering: Search Action


default sorting SELECT for Pool/Cluster-Tables
w/o ORDER BY

De-pooling/De-clustering -- Coding relying on Search problematic statements Action


default sorting for result of SELECT/OPEN
CURSOR without ORDER BY
DELETE ADJACENT DUPLICATES FROM itab Action
COMPARING f1 f2fn.
Here itab is a standard table

READ TABLE itab. BINARY SEARCH. Action


Here itab is a standard table

Transparent tables-Sorting -- Binary Search on Action


Internal tables

Select inside loops / Action


Nested Selects, i.e., Select inside Select

SELECT inside a loop with Aggregations -- Using Action


FOR ALL ENTRIES is not possible in this case as
Aggregations are not supported.

Data Manipulation INSERT UPDATE DELETE Action

SELECT f1 f2. Fn with No


ORDER BY f1 f2fn-m action
INTO TABLE itab FROM DBTABLE
WHERE f1 = XXXXX
AND f3 = YYYYYY.
ENDSELECT.

SELECT f1 f2. Fn with No


ORDER BY f1 f2fn-m action
UP TO X ROWS
INTO TABLE itab FROM DBTABLE
WHERE f1 = XXXX
AND f2 = YYYYYYY.
ENDSELECT.

DELETE ADJACENT DUPLICATES FROM ixtab No


COMPARING f1 f2fn. action
Here ixtab can be hashed or sorted table.

READ TABLE ihtab. WITH BINARY SEARCH No


ihtab is a hashed / sorted table. action
Recommendations Type Developer
Check
SELECT * should be replaced with the fields used in Mandatory
program in the same sequence as in the internal table
and database table.

Note: If more than 80% of the fields from the table are
used in the program, then we can use Select * after
discussing with SME.

1. Remove the "CHECK" sattement and add it into Mandatory


where clause.
2. Use upto 1 rows if " */glb/rgtt_cg2prc" is like a work
area as in this example, this will hold only the last
matched record.

1. Remove the "CHECK" sattement and add it into Mandatory


where clause.
2. Use upto 1 rows if " */glb/rgtt_cg2prc" is like a work
area as in this example, this will hold only the last
matched record.

Avoid bypassing buffer Explictly. Care has to be taken in Mandatory


case of Implicit buffer bypassing ( eg JOINS, Aggregate
functions, etc) especially if the this select code is within
a loop.

All Native SQL statements to be removed after Mandatory


discussion with SME/TL.
Note: Recommended approach is to replace the Native
SQL with Open SQL . If that is not possible ( ie required
actions cannot be achieved through Open SQL) adopt
the Native SQL so that it works on HANA.

All Native SQL statements to be removed after Mandatory


discussion with SME/TL.
Note: Recommended approach is to replace the Native
SQL with Open SQL . If that is not possible ( ie required
actions cannot be achieved through Open SQL) adopt
the Native SQL so that it works on HANA.
All Native SQL statements to be removed after Mandatory
discussion with SME/TL.
Note: Recommended approach is to replace the Native
SQL with Open SQL . If that is not possible ( ie required
actions cannot be achieved through Open SQL) adopt
the Native SQL so that it works on HANA.

All Native SQL statements to be removed after Mandatory


discussion with SME/TL.
Note: Recommended approach is to replace the Native
SQL with Open SQL . If that is not possible ( ie required
actions cannot be achieved through Open SQL) adopt
the Native SQL so that it works on HANA.

Database Hints are to be avoided Mandatory

Database Hints are to be avoided Mandatory

Database Hints are to be avoided Mandatory


All cluster and some pooled tables are converted to Mandatory
transparent tables. Any customer coding which accesses
physical table cluster/pool have to be changed so that
the program reads from tables directly

Queries on Cluster/pooled tables returns results sorted Mandatory


by primary keys. After de-pooling/de-clustering this is
not guaranteed hence any custom code relying on such
implicit sorting have to be adjusted
-User ORDER BY clause in Select
-Explicitly sort
the intermediate results using SORT

Queries on Cluster/pooled tables returns results sorted Mandatory


by primary keys. After de-pooling/de-clustering this is
not guaranteed hence any custom code relying on such
implicit sorting have to be adjusted
-User ORDER BY clause in Select
-Explicitly sort
the intermediate results using SORT
Use ORDER BY on the SELECT where the original table Mandatory
was selected. OR, If no sorting then sort the internal
table "itab" with the fields which are in the comparing
field.

1. Check if itab is sorted. Mandatory


2. SORT itab if not sorted - BUT remember to check it
does not affects the functionality.
3. Check that you do not add the sort in a LOOP or DO
ENDO loop etc..

In case of transparent tables the order of results Mandatory


depends on query execution plan, use of Table
buffers,indexes if any. Because of this any coding relying
on default sorting mechanism is not robust and have to
be fixed

Change such scenario by using alternate approaches like Recommended


FOR ALL ENTRIES, JOIN or sub-query

In case the Driver table contails few rows convert it Recommended


into a range and add to the WHERE clause

Use Array oprations instead of Single record changes. Recommended


Use FROM TABLE variant
Hide if any errors. Not applicable

Hide if any errors. Not applicable

Check if the table key of the hashed internal table is Not applicable
same as that in the Comparing fields. If ok then hide if
any errors.

Hide if any errors. Not applicable


Developer Comment Revisit during If "No" provide Reviewer Reviewer Comment
optimization ? comments Check

Вам также может понравиться