ABAP On HANA
ABAP On HANA
ABAP On HANA
Training with
ABAP on HANA
CDS Views, HANA Views, AMDP, HANA,
SQL Script, Fiori Apps, OData and more
Anubhav Oberoy
www.anubhavtrainings.com
End-to-end real
scenarios for more http://www.anubhavtrainings.com
for more http://www.anubhavtrainings.com
What You will Learn in this course?
Innovate Performance
Innovate new Analyze and Boost
dimension applications performance of existing
with UX applications
13:55
• Developers
• Architects
• Solution Experts
• BW Consultants
• Technical Consultants
13:55
03
Build an App
02
Create OData
create an end to end app
Expose data over http
01
Create first View
protocol
Create your first CDS view
on demo data
01 02 03
Application Layer
Application Layer
7.5x
OData – Open Data Protocol, it is used to expose data over http using REST principles.
Eclipse
WebIDE
ADT
1. Just add an annotation called @Odata.publish
2. Create the registration of the service
(/n/IWFND/MAINT_SERVICE)
for more http://www.anubhavtrainings.com
Schedule
Weekend 7 -9 PM India time
2 Hrs+2 Hrs = 4 Hours
40 Hours / 4 Hours = 10 Weekend = 2.5 Months
Minakshi
[email protected]
OS / Kernels
8084 – 8bit 16bit
1 ins per sec
MOV A,B, ADD A
64 bit
Software Innovation
OS are now capable of submitting high no of instructions to CPU, CPU can process them in parallel
Higher Compression of data
The way we store = Row Store, with HANA the default store is Column Store
Calculate Aggregations on fly
OR 0001 X MAT1 10 560 USD OR 0001 X MAT2 10 800 USD OR 0001 Y MAT1 10 950 USD
OR 0001 Z MATD 20 1750 USD OR 0001 Z MAT2 10 780 USD OR 0001 D MATX 10 1800 USD
TOTAL SALES
Row Store – traversing all the records and cells
Give me all records and all columns
Good
Was there any program you have ever written which needed all records and all columns = MARA
10 560 USD
X 10 800 USD
OR – Y – 2,3 10 950 USD
0001 – 1,2,3,4,5,6
1,2,3,4,5,6 Z – 4,5 20 1750 USD
D 10 780 USD
10 1800 USD
1. It is possible to aggregate the data much faster because we don’t have to traverse through all columns.
2. Column store every tiny column is itself an index – Significantly reduce memory footprint I am gonna
3. No need to store these aggregates in another table, it is possible to calculate the aggregate (SUM, MIN, MAX, delete 5
COUNT) on-fly. Which means you can give real-time picture.
4. Compression – Less memory requirement,
Much faster rather comparing chars
5. Parallel processing – Each column can be processed by one core of CPU
6. Insert only approach
Buy Hardware from SAP Certified vendors – IBM, HP, AWS, GCP, Azure
In-memory Computing Engine - HANA
for more http://www.anubhavtrainings.com
What are guidelines to choose Row v/s Column
Row Store Column Store
ABAP System
NYC LA
Data provisioning
ETL – Extraction Transformation and Loading
SLT, BODS, DXC…
BW System
SAP BOBJ
Read - OLAP
2025
HYBRID DATABASE
https://www.cbronline.com/opinion/saps-2025-deadline
BW
XS Engine (eXtended Server) – Light weight application server which is embedded inside of HANA
HTML5 –Fiori Apps JRE – Java Apps V8 Engine – Node JS Bring your own
Name Server – in case of distributed system for scaling, this component is the coordinator
Doc Store
Auth.
Session
Manager Connection and Session Manager Component
Manager
XSUAA
Store Procedure
SQL Processor Planning Calculation Analytic Engine
MDX Engine Engine
(DML) (SQLScript) Engine Engine (OLAP)
Walmart
Accenture
Colgate
TCS
SAP Product Company
Entire market
Delloite ONGC
HANA Studio is a modified version of eclipse. Eclipse IDE is a development tool like any other tools like SAPGUI. We can do
HANA development + ABAP development both on Eclipse also and HANA Studio also.
1. You can install the Eclipse in your local computer – Connect to ABAP system
2. You can connect to RDP – This system has HANA Studio and SAPGUI pre-installed for you.
*You can connect to HANA Box using RDP only but ABAP system you can connect from your local computer eclipse
What is ADT
How can I run abap on eclipse
How to setup eclipse and tools for abap development
SAPGUI
ABAP Layer
Main Course
Eclipse – https://tools.hana.ondemand.com/#abap
ADT – ABAP development tools on eclipse
https://www.youtube.com/watch?v=cnHZeQ_5uJ0
ADT
Onion,
Capsicum,
Dough – Base
Eclipse
HANA Sp06
Funda Fox
( ) - parenthesis itab 1,2,3,4,5…
{ } – braces, curly braces
[ ] – bracket
Object
5. New way to process data of an internal table using object traversal
6. Value Expression – now you can create structures and tables at runtime, w/o separate declarations. – value #
7. Reading an internal table made easy using table expression
8. String Expression – allows us to avoid using concatenate, printing a single quote ‘’’’
Native SQL
Database
Oracle DB2 MaxDB
Funda fox:
Whenever we use aggregation functions, the columns which are not participating in agg. Functions must be added at the end
of query as GROUP BY clause.
P P P
2025
DB HANA HANA
ABAP on Any DB – ABAP Changed data models – They
ABAP on HANA – An ABAP
system running on DBMS have introduced new table,
system running on HANA DB as
system removed tables.
a primary DB
ECC – MM, PP, FICO, SD,.. Simplification – S
Suite on HANA (product –AoH )
ABAP 4th generation Suite
– ECC+CRM+PLM+SRM+HCM
S/4HANA - Solution
for more http://www.anubhavtrainings.com https://www.cbronline.com/opinion/saps-2025-deadline
A B – Just Changing the Database from RDBMS HANA DB
What will happen to my custom code when we migrate to HANA DB, How do you prove that nothing will be affected.
It is just like any other DB migration.
1. Any Native SQL queries written in ABAP will not work EXEC SQL…END EXEC, OPEN CURSOR, DB Interfaces to fire Native
SQL, these things will not work. Oracle
Select ROWNO from DBTAB Every table has a predefined HANA
column ROWNO
2. If you query data from db, in unsorted form, and later we are doing operations like binary search or delete adjacent
duplicates, these operations will produce bad results.
Price
10 10 10
12 12 12
30 30 15
15 15 15
18 18 18
45 45 30
15 15 40
40 40 45
50 50 50
for more http://www.anubhavtrainings.com
What else is affected – [email protected]
3. DB specific hints wont work HINTS ‘%_HINT_USE_INDEX’ idx_0
4. Direct access to pool and cluster table will not work
In your company in last 20 years, about 40 developers build 7.62 Mn lines of custom code,
can you guarantee that everything will work and none of above is applicable for you.
SAP Has provided 2 tools since many years, SAP have enhanced these tools to support you
and help you to plan and decide that your move to HANA DB is smooth by ensuring that
none of above case arise in your custom code.
SCI – SAP Code Inspector
ATC – ABAP Test Cockpit
We will not perform an analysis to check our DB migration stability in terms of our code.
Can be performed
@Individual object level (just for one program)
@Package Level (Home of all objects)
By Using 1. SAPGUI 2. ADT
for more http://www.anubhavtrainings.com
www.anubhavtrainings.com
www.anubhavtrainings.com
S4HANA_READINESS
https://blogs.sap.com/2016/02/02/sap-s4hana-custom-code-migration-worklist/
www.anubhavtrainings.com
SAP Providing a FREE Service if you know in the system
S/4HANA Readiness Check 2.0 Note 2758146
www.anubhavtrainings.com
Guidelines for an robust programming in ABAP w/r/t performance
Discard the lines using WHERE and HAVING conditions
Keep Result Set Small Avoid using Selects which gets you large no. of records
Try to use aggregations with GROUP BY clause
Minimize the amount of data We care about number of columns, Avoid SELECT *
transfer Use aggregate functions
Calculate the total sales of products in category Laptop. Calculate the total sales of products in category Laptop.
Read Product – inside an itab where category = laptop Read Product – inside an itab where category = laptop
Loop at itab into wa Select From orders FOR ALL ENTRIES IN itab
Select from orders where product = wa-product WHERE product = itab-product.
sum *CAUTION: IT WILL READ ALL THE RECORDS OF ORDER TABL
endloop IF itab IS EMPTY, Make sure you check if itab is NOT INITIAL
for more http://www.anubhavtrainings.com
S/4HANA
We sat on one weekend with whole of my team and did performance_db check on entire package. We have got 14,399
findings which can cause potential performance issues.
We have go live next week, my manager asked me, which of them you would like to fix first, give me a feasible plan with
details.
What you should focus? – critical ones? – How do you present a feasible ideal plan(worklist) to your manager?
WHAT USED THE MOST IS WHAT WE SHOULD FIX THE FIRST
Production system is where users are using your sol. You will get
Real statistics when you do in production.
6000 concurrent users at a time
50k requests per min
130k ABAP statems executed every min
140B records are modified every week
Problem Statement
We want to use a tool which cause no/min system overhead and I can run the same in production system.
Goal
1. Finding the most expensive Request Entry point (Transaction Code, Report, FM,) in terms of DB cost
2. In these entry points which SQL query dominates the SQL profile
Most expensive or used SQL query in whole of my system
App Layer
SQLM- SQL Monitor Tool
DB
for more http://www.anubhavtrainings.com
SWLT – SQL Performance Worklist Monitor
A >= B
Sales order Purchase Order
Order Items POrder Items
A 20 Laptops 50 Laptops
10 iPhones 10 pendrive
3 HDD 20 HDD
Customers Suppliers
ITeIO
Invoice
Invoice Items
B 10 lap
10 iphone
1 HDD
10 lap
10 iphone
1 HDD
for more http://www.anubhavtrainings.com
Database Tables – NW 7.4 - Training
Master Data
Suppliers and Customers – snwd_bpa
Addresses of business partners – snwd_ad
Products – snwd_pd
Product description (language specific – text table) – snwd_texts
Transaction tables
Sales orders – snwd_so
Sales order items = snwd_so_i
Invoices – snwd_so_inv_head
Invoice items – snwd_so_inv_items
Po – snwd_po
Po items – snwd_po_i
1 * SNWD_TEXTS
SNWD_PD
PK NODE_KEY
PK NODE_KEY
FK PARENT_KEY
COLLECT STATEMENT in ABAP – in abap is used to add records to the internal table, unlike append it will not create new line
in internal table but it will add the numbers while creating lines by comparing non-numeric columns.
A 01.01.2019
B 01.02.2019
B 01.02.2019 2
When we create a program in abap/ create a table in ABAP where do we store it?
Package – collection of your artifacts, folder where all our development objects are stored. – DESIGN TIME OBJECT
Grouping, Transport
SE11
App Def. App Def. App
CREATE TABLE tab PK…. CREATE TABLE tab PK…. CREATE TABLE tab PK….
DB A DB
DB
dA
for more http://www.anubhavtrainings.com
A
Content and Catalog
Content in HANA is a collection of all the packages. Each package will contain the design time object (definition), when we
activate a runtime object will be created.
Schema is a container of All the DB objects (runtime object), it is the ultimate home of all the DB objects like tables,
structures, procedures , function. Schema it self is a db object which is MANDATORY. On this planet if there is a DB, it is
impossible that will not have atleast one schema. In HANA, we can see all the schemas in Catalog section.
Database is collection of schema.
https://help.sap.com/viewer/product/SAP_HANA_PLATFORM/2.0.04/en-US
Funda Fox
• When we create a new User in HANA, a schema with same name as user name will be created for that user in HANA,
and all the authorizations will be automatically granted to the user itself.
• A package in HANA is a collection of design time object, it serves 3 purpose
1. Grouping of development content
2. Control who can develop in a particular package – security
3. Package provides a namespace for the artifacts, suppose we create a view with name called V_MARA, your friend in
SAP HANA can also create a view with same name as V_MARA provided he/she developing in other package. When
the runtime object is created, the name of runtime object contains PACKAGE_NAME/OBJECTNAME
• Now we can create a table MARA though sap also ship mara provided its part of our package, sap deliver their objects
in their package.
for more http://www.anubhavtrainings.com
Data Model / Information Model / HANA Views
Data of an ERP system is distributed across multiple tables, In order to takeout some meaningful results from HANA, we need
to combine these tables together. As a technical consultants, you can write ABAP reports with complex SQL but it has
following dis-advantages
• Since we are writing ABAP queries, these queries are submitted to the DB and then results are obtained, this leads to
traffic between ABAP and HANA layer.
• It becomes so complex to write such queries and needs High technical knowledge
• A person with Domain knowledge with out SQL knowledge should be able to also model data
Concepts of Modeling
Allows us to develop data models using tables and other models and produce desired data out of HANA system, The best part
is we can develop these models w/o any technical SQL knowledge. These models are created, stored and transported in
HANA system so we get naturally code-to-data paradigm.
Deprecated – There is NO NEW DEVELOPMENT
Attribute Views
FROM SAP SIDE. IF YOU GET PROBLEMS WHICH
YOU THINK STANDARD SAP ISSUE, SAP WILL NOT
Types of IMs Analytic Views FIX THE BUG. MAINTENANCE IS NOT GARUNTEED.
HANA 2.0 onwards
Calculation Views
for more http://www.anubhavtrainings.com
Types of Data in ERP systems
Org Data – Never changes… e.g. co codes, cost Center, profit center, sales org, porg
Master Data – changes rarely – data used to create transactions – e.g. products, materials, vendors, suppliers, customers
Transaction data – Changes very frequently – SO, PO, Billing, INV, Ledger entries, ….
Measures, They are all Numbers (Numeric) – KPI – Key Performance Indicator
Which category of data is KPI and which tables are they store?
Stored in Transaction Tables, These are known as Fact Table
Product (Dimension)
X Laptop
Time
Y iPhone
Z Printers
What is my total sales in the co
2000+2500+1000+1500+1800+2200
Which co. gave me max sales, which is my top customer.
for more http://www.anubhavtrainings.com
View?
1. Hiding the complexity of query
2. Security
Attribute View
The purpose of att. View is to expose master data. Because its processed by the
Join Engine in HANA. Typically to obtain master data we would do a join between
tables.
• It is mandatory to have at least one key column defined to attr. View
• Left Outer Join – It is the output of inner join and records from the left side table even the corresponding records not
existing in right side table.
• Right Outer Join - It is the output of inner join and records from the right side table even the corresponding records not
existing in left side table.
for more http://www.anubhavtrainings.com
• Temporal Join – join which is applied when we are joining tables with time dimension (M* tables).
• Spatial Join – Used to join coordinates.
• Star Join – Used to join 2 star schemas, this join can only be used in calculation views.
Case 1: If the join is INNER JOIN Case 2: If the join is REFERNTIAL JOIN
1.1 Q1 : SELECT SHIPMENTNO, AIRLINE from AT_MY_VIEW 1.1 Q1 : SELECT SHIPMENTNO, AIRLINE from AT_MY_VIEW
100 Fedex ; 300 First Flight 100 Fedex ; 300 First Flight -- Same as INNER JOIN
1.2 Q2 : SELECT SHIPMENTNO from AT_MY_VIEW 1.2 Q2 : SELECT SHIPMENTNO from AT_MY_VIEW
100 ; 300 100,200,300,400
50 pc 5 mn
1mn USB 100 Pc.
package
Delivery Unit
Delivery Unit
Delivery Unit
for more http://www.anubhavtrainings.com
Exercise
Create the OIA scenario using Calculation view.
Cl_sql_connection
Bottom-up
Bottom-up
HANA DB Top-down approach HANA DB
approach Approach
Proc Proc
HANA
HANA View
View IM View
Proc IM View (must)
(must)
Delivery Unit
SQL Script
One of the best technique to achieve code-to-data paradigm, allows developers to write more complicated logic which is not
possible with simple views in HANA. This helps us to squeeze the best performance out of HANA DB, This is DB programming
language.
SQL script is a collection of extensions to SQL (DDL, DML, DQL, DCL). The purpose of SQL Script is to provide the procedural
capabilities to SQL. It allows developers to write data intensive logic inside the heart of DB.
https://help.sap.com/viewer/de2486ee947e43e684d39702027f8a94/2.0.04/en-US
Code gets converted to a Data flow graph HANA will never process this logic in parallel
There is a strong chance that HANA will process this type of
logic in parallel
Procedure
Stores your code in DB and never
Anonymous Block need compilation after stored in Function
DB, Reusability – STORED
PROCEDURE
SAP HANA 2.0> have parameters CREATE PROCEDURE proc_name ( CREATE FUNCTION proc_name (
DO BEGIN IN pin type, OUT opname type, pin type)
--SQL Script Code INOUT pname type RETURNS stype/TABLE tt_type
) LANGUAGE SQLSCRIPT/R DEFAULT LANGUAGE SQLSCRIPT/R DEFAULT
END; SCHEMA saphanadb READS SQL DATA SCHEMA schemaname
BEGIN AS BEGIN AS
This is used to write logic which you never --SQL Script Code
need again. Because DB never stores it. --SQL Script Code ALWAYS RETURNS ONE VALUE
Testing. Means they are always compiled. ----You want to access ABAP tables END;
SELECT …. TABLE; Scalar Table
END; Function Function
SUDF TUDF
for more http://www.anubhavtrainings.com
Funda Fox
1. SQL Script is not case-sensitive like ABAP
2. Every statement in SQL Script ends with semi-column (;)
3. When we declare a variable and want to use that variable in our code we use column symbol before the same (:) but when
we want to assign a value to our variable we don’t need to use the column. E.g.
Declare x integer; declare y integer; declare z integer;
X = 10;
Y=20;
Z = :x + :y ;
4. If we want to output data from sql script code, everything evolves around sql. We can use a table called dummy to show
output on console from variables.
5. When we are working with SQL console, system will set the default schema (session schema) to your user’s schema.
Whenever we create any object system will perform the activation on session schema. We can check session schema using
below statement
Select CURRENT_SCHEMA from dummy;
We can change the session schema for that session using SET SCHEMA command
So that we can access the objects of other schema during SQL console is open. Remember when we close the session and
open an another one the session schema will be reset to the user’s schema again.
5. If you not assign value to a variable, the value will be assigned as NULL
Types of variables:
Numeric: TINYINT, SMALLINT, INT, BIGINT, INTEGER, DOUBLE, DECIMAL()
Char: VARCHAR, NVARCHAR, ALPHANUM
Date : TIMESTAMP, DATETIME, DATE
Binary: VARBINARY
Large object: CLOB, BLOB, NLOB Types OF variables
Implicit Explic
Using Tables
for more http://www.anubhavtrainings.com
Exercise:
If the table exist, insert 10 more records using procedure, if the table not exist, create the table and insert 10 records.
Enhance the same procedure to do same.
WHILE condition DO
----condition
END WHILE;
FOR I IN start..end DO
----fixed count
END FOR;
Arrayname[index]
Cursors:
Cursors are handler for DB memory. They are actually named queries. Whenever a
1
cursor is created, it is always bound to a query. It is also possible to pass parameter
to cursors.
Declare Open Fetch Close
Example:
Read data from abap table snwd_pd based on product category.
Using a single cursor does not make sense until used with PK, It is a good idea to use
cursor with Array for multiple record processing. Benefit of using cursor with array is
we don’t need to open cursor and fetch again and again. It will be managed by a FOR
loop.
https://www.youtube.com/watch?v=KLgTI1J5d3E
for more http://www.anubhavtrainings.com
For dumps
HANA View
Types Of Views
BOPF Framework –
Transactional Apps
CDS Views @Semantics
Analytics
@DefaultAggregation
@Analytics
Join
Item
CDS views
Fiori App OData
Remember this is one of the way to create odata service. There are other ways
• Using SEGW manually
• SADL
• API way using RESTful ABAP programming paradigm
o e
What is the difference between auth rization and auth ntication?
E comes before O
IS user allowed to enter inside system - authentication
Once he/she enters, what is that all he/she can do – authorization – PFCG
https://www.youtube.com/watch?v=gM5fl22iRZo&list=PLcxqFaocb9WIeYOzOx0cH3fvblA5LvDrx
@VDM.viewType
Private views : you can use these views Will have odata enabled so that
as part of your views but SAP Does not they can directly be used for
Basic Composite
guarantee that these views will not external consumption via fiori,
change in future in a destructive way. SAC,….
Master data and Master data +
dimensions Transaction Data
#CUBE #COMPOSITE
for more http://www.anubhavtrainings.com
Analytic Scenario using CDS - + gold Standard VDM
Use Case: Design an analytics on top of sales data to see which products are selling the most, which customers are giving us
max data.
Use the data in analytic tool called RSRTS
Use the CDS View as Odata In Fiori App
Used by S4 Embedded Analytic
S/4HANA Embedded
Analytics Consumption Views RSRTS , S/4HANA
#CONSUMPTION query Embedded
Analytics
• If we want to consume a Composite view in an analytic tool, we must mark it as Analytic category as #CUBE
• Do not expose all the properties from dimension, only expose the properties we need
• All the properties except KPI has to be marked as key
• To make sure that we inform SAP CDS engine about the measure we need to properly mark the same as well using
@Semantics annotation
Wang, Yang
Language field which had used to pass to the CDS view, we have hard code it. Is it possible that I can pass this language field
as a input parameter to the CDS. Moreover I would like to know is it also possible to pass current login language
automatically to the CDS
We can also pass some range of values for example, we want to see the analytics only for certain customers.
User when open the report must have a default report presented with CompanyName, CurrencyCode and Gross Amount
Additional Learning:
https://youtu.be/xcwXtn_5LBA
Table UDF
Can CDS Views CREATE, UPDATE and DELETE Data?
BOPF – Business Object processing Framework - CRUD
for more http://www.anubhavtrainings.com
Challenges of Classical ERP (ECC system)
UX Experience
UX Experience
SAPGUI Server Stickiness Fiori UX
Collaboration
Device Switch (draft
functionality)
Server Stickiness
Collaboration
Device Switch (draft functionality)
CDS + BOPF Temp …
DB Transient M
You need to make sure that the logically related objects are also moved to same package (hopefully), essentially
to SAME TRANSPORT.
T B
B
A
P
Screens
Screens
Screenflow
Jack – Finance (ABAP) Stephanie – HR ABAP Screenflow
Header
Items
Co Code
Co Code
Funda Fox
1. If the data resides in same table, we need to create a join/self reference of table by itself.
2. Association for hierarchy, association cardinality comes as [1..*]
c1 C2
CDS View
Fiori App
OData
Annotation file will be
created in WebIDE
View Ourself
Processing
Controller
IO Data
View Data binding
Model
Steps to create tile for this fiori app once deployment is complete (available as a TILE in Fiori launchpad)
Fiori Launchpad is the single access point of all the fiori app. - /n/ui2/flp
7. Create a tile in launchpad designer /n/ui2/flpd_conf
8. Create a catalog (home of all tiles)
9. Create a tile assigned to a sem object – action and create a target mapping for the same
10. Create a group
11. Create a role (include the catalog and group)
12. Assign the role to end user so that they can access your
https://help.sap.com/viewer/cc0c305d2fab47bd808adcad3ca7ee9d/7.5.9/en-US/f8af07bb0770414bb38a25cae29a12e9.html
https://sapui5.hana.ondemand.com/#/topic/68e62adedfd44cd48cb6ebc418c8d95a
All CDS Annotations
https://help.sap.com/viewer/cc0c305d2fab47bd808adcad3ca7ee9d/7.5.9/en-US/630ce9b386b84e80bfade96779fbaeec.html
v1 = Standard PO
v2 = 4500000007
S/4HANA