SlideShare ist ein Scribd-Unternehmen logo
1 von 57
AMDP
ABAP Managed Database Procedures
Webinar, 31.1.2020, 10:00 Uhr
AMDPFöß
Johann Fößleitner
Senior Consultant at Cadaxo
eMail: johann.foessleitner@cadaxo.com
Twitter: @foessleitnerj
Beratungsschwerpunkte
• Konzeption & Management von Entwicklungsprojekten
• Qualitymanagement & Performanceoptimierung
• Clean Code
• S/4HANA Custom Development
• SAP Champion
AMDPDomi
Domi Bigl
Senior Consultant at Cadaxo
eMail: dominik.bigl@cadaxo.com
Twitter: @DomiBiglSAP
Beratungsschwerpunkte
• Konzeption & Management von Entwicklungsprojekten
• Qualitymanagement & Performanceoptimierung
• ABAP Units
• SAP Fiori, SAP UI5
AMDPUnsere nächsten Webinare
https://www.eventbrite.com/e/mission-abap-
unser-sap-champion-erzahlt-von-seinen-
erfahrungen-aus-seinen-begegnungen-mit-
kunden-tickets-91581164729
https://www.eventbrite.com/e/webinar-abap-
753754-releaseabhangige-anderungen-tickets-
91580067447
http://www.cadaxo.com
AMDPCadaxo Workshops
AMDPABAP SQL vor 7.40
SQL 92 Standard
Advanced Open SQL
Seit 7.40 SP5/SP8
Open SQL
 Open SQL vor 7.40
◦ Kein UNION oder UNION ALL
◦ Eingeschränkte JOIN Möglichkeiten
◦ Keine Expressions
◦ Kein Casting
◦ …
AMDPCode-to-Data / Code Push Down
Applikations
Server / ABAP
Datenbank
Traditionelle
Datenbank
Datenintensive
Berechnungen erfolgen
am Applikationsserver
(Data-to-Code) SAP HANA
Datenintensive Be-
rechnungen erfolgen
in der Datenbank
(Code-to-Data bzw.
Code Pushdown )
AMDPCode-to-Data / Code Push Down
1. Cadaxo Webinar 29.1.2016
 Code-to-Data
◦ ABAP Open SQL Expressions
◦ ABAP Core Data Services
◦ ABAP Managed Database Procedures
AMDP
ABAP Managed Database Procedures
AMDPAMDP
 Volle Leistungsfähigkeit von HANA mit AMDP
◦ Beste Performance bei komplexen Berechnungen
◦ HANA bietet mehr Möglichkeiten im analytischen Bereich bzw.
spezielle Funktionen
◦ Wenn ABAP SQL und CDS nicht ausreichen
 Einschränkungen
◦ AMDPs sind datenbankspezifische Entwicklungen
◦ AMDPs sind derzeit nur für SAP HANA verfügbar
AMDPAMDP
 AMDP – ABAP Managed Database Procedures
◦ ABAP Klassen als Container für SQLScript
 Stored Procedures und Datenbankfunktionen
 Komplexe Logiken möglich (IF/ELSE)
◦ Vollständig in ABAP integriert
 Code Completion, Navigation, Entwicklung, Debugging, Enhancement,
Transport, …
◦ Einfacher Zugriff auf erweiterte SAP HANA Möglichkeiten
 Z.B. Fuzzy Suche, Linguistic Suche, …
◦ Verfügbar seit 7.40 SP05
 AMDP Funktionen seit 7.50
AMDPAMDP Prozedur, AMDP Tabellenfunktion
AMDP
Prozedur
AMDP/CDS
Tabellenfunktion
AMDPAMDP-Framework
AMDP Prozedur AMDP-Funktionen für CDS-
Tabellenfunktionen
Aufruf aus ABAP Class( )->method( ) SELECT * FROM …
Implementierung Public Instance Method Public Statische Method
Lesend/schreibend lesend und schreibend Nur lesend
Parameterdefinition In der Methode In der DDL Definition
Parameter IMPORT, EXPORT u. (CHANGING) IMPORT und ein RETURNING
Mandantenhandling Nicht automatisch Automatisch möglich (Annotation)
AMDP
AMDP Prozedur
AMDPAMDP Definition
class zcl_amdp_demo definition.
public section.
interfaces if_amdp_marker_hdb.
methods amdp_demo importing value(i_param1) type bu_type default ‘1‘
exporting value(e_param2) type typ_but000
changing value(c_param3) type bu_partner.
endclass.
 Marker-Interface
◦ IF_AMDP_MARKER_HDB muss angegeben werden
AMDPAMDP Definition
class zcl_amdp_demo definition.
public section.
interfaces if_amdp_marker_hdb.
methods amdp_demo importing value(i_param1) type bu_type default ‘1‘
exporting value(e_param2) type typ_but000
changing value(c_param3) type bu_partner.
endclass.
 Parameterübergabe
◦ Übergabe erfolgt als Werteparameter
◦ Nur IMPORTING, EXPORTING und CHANGING möglich
AMDPAMDP Definition
class zcl_amdp_demo definition.
public section.
interfaces if_amdp_marker_hdb.
methods amdp_demo importing value(i_param1) type bu_type default ‘1‘
exporting value(e_param2) type typ_but000
changing value(c_param3) type bu_partner.
endclass.
 Vorgschlagswerte
◦ Vorschlagswerte beim Importing-Parametern möglich
AMDPAMDP Implementierung
class zcl_amdp_demo implementation.
method amdp_demo by database procedure
for hdb language sqlscript
options read-only
using but000.
et_but000 = select distinct partner, name_last
from but000
where client = SESSION_CONTEXT('CLIENT')
and contains( name_last, :i_name_first, fuzzy( 0.7 ) );
endmethod.
endclass.
 Implementierung
◦ Implementierung als HANA SQLScript Prozedur
AMDPAMDP Implementierung
class zcl_amdp_demo implementation.
method amdp_demo by database procedure
for hdb language sqlscript
options read-only
using but000.
et_but000 = select distinct partner, name_last
from but000
where client = SESSION_CONTEXT('CLIENT')
and contains( name_last, :i_name_first, fuzzy( 0.7 ) );
endmethod.
endclass.
 Options
◦ Optional kann read-only vorgegeben werden
AMDPAMDP Implementierung
class zcl_amdp_demo implementation.
method amdp_demo by database procedure
for hdb language sqlscript
options read-only
using but000.
et_but000 = select distinct partner, name_last
from but000
where client = SESSION_CONTEXT('CLIENT')
and contains( name_last, :i_name_first, fuzzy( 0.7 ) );
endmethod.
endclass.
 Deklarationen
◦ ABAP Dictionary Objekte oder andere AMDP Methoden auf die
zugegriffen werden soll, müssen hier deklariert werden
AMDPAMDP Aufruf aus ABAP
class zcl_amdp_demo_call implemenation.
method call_from_abap.
new zcl_amdp_demo( )->amdp_demo( importing e_param2 = partners
changing c_param3 = first_partner ).
endmethod.
endclass.
 Aufruf aus ABAP
◦ Wie jede andere ABAP Methode
AMDP
Demo 1
AMDP Prozedur
AMDP
SQLScript
AMDPDeklarative vs. Imperative Programmierung
 Deklarative vs. Imperative Programmierung
◦ Deklarativ
 Spezifikation dessen, was ermittelt werden soll
 Für SQLScript bedeutet das:
◦ System legt den Lösungsweg fest und optimiert diesen
◦ Parallele Verarbeitung von unabhängigen Teilen
◦ Wiederholende Teile werden erkannt und nur einmal ausgeführt
◦ Eingeschränkte Anweisungen und Funktionen
◦ Imperativ
 Programmablauf wird selbst festgelegt
 IF/ELSE, WHILE, DDL, …
AMDP
Syntax: ABAP SQL vs. SQLScript
AMDPFeldliste - Alias
SELECT a~client, a~partner, a~name_last AS name
FROM but000 AS a
INNER JOIN but020 AS b
ON b~partner = a~partner
WHERE a~partner = @P_PARTN
AND a~type = '1’
ORDER BY name DESCENDING
INTO TABLE @DATA(result).
lt_result = SELECT DISTINCT a.client, a.partner, a.name_last AS name
from but000 as a
inner join but020 as b on a.partner = b.partner
WHERE a.partner = :p_in
and a.type = '1’
order by a.name_last desc;
ABAP
SQLScript
 Feldliste
◦ ABAP: Alias = ~
◦ SQLScript: Alias = .
AMDPLokale Variablen und Parameter
SELECT a~client, a~partner, a~name_last AS name
FROM but000 AS a
INNER JOIN but020 AS b
ON b~partner = a~partner
WHERE a~partner = @P_PARTN
AND a~type = '1’
ORDER BY name DESCENDING
INTO TABLE @DATA(result).
lt_result = SELECT DISTINCT a.client, a.partner, a.name_last AS name
from but000 as a
inner join but020 as b on a.partner = b.partner
WHERE a.partner = :p_in
and a.type = '1’
order by a.name_last desc;
ABAP
SQLScript
 Lokale Varialben und Parameter
◦ ABAP: Escaped/Prefixed mit @
◦ SQLScript: Escaped/Prefixed mit :
AMDPSortierung mit ORDER BY
SELECT a~client, a~partner, a~name_last AS name
FROM but000 AS a
INNER JOIN but020 AS b
ON b~partner = a~partner
WHERE a~partner = @P_PARTN
AND a~type = '1’
ORDER BY name DESCENDING
INTO TABLE @DATA(result).
lt_result = SELECT DISTINCT a.client, a.partner, a.name_last AS name
from but000 as a
inner join but020 as b on a.partner = b.partner
WHERE a.partner = :p_in
and a.type = '1’
order by a.name_last desc;
ABAP
SQLScript
 Sortierung
◦ ABAP: ORDER BY <feldliste> ASCENDING | DESCENDING
◦ SQLScript: order by <feldliste> asc | desc
AMDPZweisung der Ergebnisse
SELECT a~client, a~partner, a~name_last AS name
FROM but000 AS a
INNER JOIN but020 AS b
ON b~partner = a~partner
WHERE a~partner = @P_PARTN
AND a~type = '1’
ORDER BY name DESCENDING
INTO TABLE @DATA(result).
lt_result = SELECT DISTINCT a.client, a.partner, a.name_last AS name
from but000 as a
inner join but020 as b on a.partner = b.partner
WHERE a.partner = :p_in
and a.type = '1’
order by a.name_last desc;
ABAP
SQLScript
 Zweisung der Ergebnisse
◦ ABAP – INTO [ TABLE ] …
◦ SQLScript – Deklarativ: lt_result = …
AMDPZeilenende
SELECT a~client, a~partner, a~name_last AS name
FROM but000 AS a
INNER JOIN but020 AS b
ON b~partner = a~partner
WHERE a~partner = @P_PARTN
AND a~type = '1’
ORDER BY name DESCENDING
INTO TABLE @DATA(result).
lt_result = SELECT DISTINCT a.client, a.partner, a.name_last AS name
from but000 as a
inner join but020 as b on a.partner = b.partner
WHERE a.partner = :p_in
and a.type = '1’
order by a.name_last desc;
ABAP
SQLScript
 Zeilenende
◦ ABAP: Punkt
◦ SQLScript: Strichpunkt
AMDP
Demo 2
AMDP Prozeduren
AMDP
CDS Tabellenfunktion
AMDPCDS Tabellenfunktion
@EndUserText.label: 'Demo CDS Function'
define table function zdd_cds_amdp_function
with parameters p_in : bu_partner
returns {
client : abap.clnt;
partner : bu_partner;
name_last : bu_namep_l;
}
implemented by method zcl_amdp_demo=>amdp_demo_cds
 CDS Funktion
◦ Name der CDS Funktion
CDS Table Function
AMDP
@EndUserText.label: 'Demo CDS Function'
define table function zdd_cds_amdp_function
with parameters p_in : bu_partner
returns {
client : abap.clnt;
partner : bu_partner;
name_last : bu_namep_l;
}
implemented by method zcl_amdp_demo=>amdp_demo_cds
 Eingangsparameter
◦ Nur IMPORTING möglich
CDS Table Function
CDS Tabellenfunktion
AMDP
@EndUserText.label: 'Demo CDS Function'
define table function zdd_cds_amdp_function
with parameters p_in : bu_partner
returns {
client : abap.clnt;
partner : bu_partner;
name_last : bu_namep_l;
}
implemented by method zcl_amdp_demo=>amdp_demo_cds
 Rückgabeparameter
◦ Definition der Struktur der Rückgabetabelle
◦ Falls die Funktion mandantenabhängig ist, muss der Mandant
angegeben werden.
CDS Table Function
CDS Tabellenfunktion
AMDP
@EndUserText.label: 'Demo CDS Function'
define table function zdd_cds_amdp_function
with parameters p_in : bu_partner
returns {
client : abap.clnt;
partner : bu_partner;
name_last : bu_namep_l;
}
implemented by method zcl_amdp_demo=>amdp_demo_cds
 Implementierung
◦ Definition, in welcher AMDP-Methode die Implementierung
vorgenommen ist
◦ Die CDS Entität kann bereits aktiviert werden, wenn die Methode
noch nicht vorhanden ist
CDS Table Function
CDS Tabellenfunktion
AMDPAMDP Definition
class zcl_amdp_demo definition.
public section.
interface if_amdp_marker_hdb.
class-methods amdp_demo_cds for table function zdd_cds_amdp_function.
endclass.
 Statische Methode
◦ Methoden für CDS Tabellenfunktionen müssen statisch definiert
sein
AMDP
class zcl_amdp_demo definition.
public section.
interface if_amdp_marker_hdb.
class-methods amdp_demo_cds for table function zdd_cds_amdp_function.
endclass.
 Zusatz
◦ Über den Zusatz FOR wird die CDS Tabellenfunktion bekannt
gegeben.
CDS Tabellenfunktion
AMDP
class zcl_amdp_demo implementation.
method amdp_demo_cds by database function
for hdb language sqlscript
options read-only
using but000.
return select distinct partner, name_last
from but000
where client = SESSION_CONTEXT('CLIENT')
and contains( name_last, :i_name_first, fuzzy( 0.7 ) );
endmethod.
endclass.
 Implementierung
◦ Implementierung als HANA SQLScript Funktion
CDS Tabellenfunktion
AMDP
class zcl_amdp_demo implementation.
method amdp_demo_cds by database function
for hdb language sqlscript
options read-only
using but000.
return select distinct partner, name_last
from but000
where client = SESSION_CONTEXT('CLIENT')
and contains( name_last, :i_name_first, fuzzy( 0.7 ) );
endmethod.
endclass.
 Options
◦ Optional – ist aber immer read-only
CDS Tabellenfunktion
AMDP
class zcl_amdp_demo implementation.
method amdp_demo_cds by database function
for hdb language sqlscript
options read-only
using but000.
return select distinct partner, name_last
from but000
where client = SESSION_CONTEXT('CLIENT')
and contains( name_last, :i_name_first, fuzzy( 0.7 ) );
endmethod.
endclass.
 Deklarationen
◦ ABAP Dictionary Objekte oder andere AMDP Methoden auf die
zugegriffen werden soll, müssen hier deklariert werden
CDS Tabellenfunktion
AMDP
class zcl_amdp_demo implementation.
method amdp_demo_cds by database function
for hdb language sqlscript
options read-only
using but000.
return select distinct partner, name_last
from but000
where client = SESSION_CONTEXT('CLIENT')
and contains( name_last, :i_name_first, fuzzy( 0.7 ) );
endmethod.
endclass.
 Ergebnisrückgabe
◦ Tabellenartiges Ergebnis wird mit RETURN zurückgeliefert
CDS Tabellenfunktion
AMDP
class zcl_amdp_demo_call implementation.
method call_from_abap.
select * from zdd_cds_amdp_function( p_in = partner_id )
into table @data(partners).
endmethod.
endclass.
 Aufruf aus ABAP
◦ Ganz normal mit ABAP SQL
CDS Tabellenfunktion
AMDP
ABAP Managed Database Procedures
AMDPAlternativen zu AMDPs um SQLScript auszuführen
 AMDP/SQLScript Einschränkungen
◦ Keine DDL Statements erlaubt
 CREATE, DROP, …
◦ Keine Transaktionalen Kommandos erlaubt
 COMMIT, ROLLBACK
 Wäre z.B. über EXEC/ENDEXEC möglich (aber NICHT empfohlen)
◦ Zugriff nur auf DEFAULT Schema
◦ Gepufferte Tabellen können nicht geändert werden
◦ Kein automatisches Mandantenhandling
 SESSION_CONTEXT('CLIENT')
AMDPAMDP Debugging
 AMDP Debugging
◦ Nur mit ADT möglich
◦ Einige Einschränkungen gegenüber ABAP Debugging
 Keine Ersetzen von Werten, kein Sprung zur Zeile, …
AMDPAMDP BAdIs
 AMDP BAdIs
◦ Keine Filter verwendbar
◦ Es muss eine Fallback-Implementierung existieren
◦ Verfügbar seit 7.40 SP08
AMDPSekundäre DB Connections
 AMDP & Sekundäre DB Connections
◦ Sekundäre Datenbankverbindungen sind möglich
◦ Parametername: connection type DBCON_NAME
◦ Verfügbar seit 7.40 SP08
AMDP
ABAP
SQL
AMDP
Ja
Ja
Nein
Nein, dann ADBC
 ABAP SQL oder CDS Views
 SQL Expressions
 Common Table Expressions
 Global Temporary Tables
 …
 Datenbankunabhängig
 AMDP Prozedur
 AMDP Tablefunction (=CDS)
 Datenbankabhängig
 ADBC ABAP Database Connectivity
 Obsolet: EXEC SQL/ENDEXEC & CALL DATABASE …
 Datenbankabhängig
DB
Hints
Nein
 ABAP SQL: %_HINTS …
 CDS Views: Consumption.dbHints[ ]
 Datenbankabhängig
Ja
Entscheidungsbaum
AMDP
Ergänzende Materialien
AMDPThomas Jung – HANA Basics For Developers
https://www.youtube.com/playlist?list=PLoc6uc3ML1JR38-V46qhmGIKG07nXwO6X
AMDPDeveloper Tutorials
https://developers.sap.com/tutorials/abap-environment-amdp-profiling.html
AMDPSQLScript for SAP HANA – von Jörg Brandeis
ISBN 978-3-8362-6208-8
https://twitter.com/joerg_brandeis
AMDP
SAP Help Portal: ABAP Managed Database Procedures
(AMDP)
https://help.sap.com/viewer/6811c09434084fd1bc4f40e66913ce11/7.52.0/en-
US/3e7ce62892d243eca44499d3f5a54bff.html
ABAP Keyword Documentation: AMDP - ABAP Managed Database
Procedures
https://help.sap.com/doc/abapdocu_753_index_htm/7.53/en-US/index.htm?file=abenamdp.htm
Einführungs Blog auf developer.sap.com
https://blogs.sap.com/2014/01/22/abap-managed-database-procedures-introduction/
Weitere SAP Links
AMDPUnsere vergangenen Webinare
http://www.cadaxo.com/blog/
AMDPUnsere nächsten Webinare
https://www.eventbrite.com/e/mission-abap-
unser-sap-champion-erzahlt-von-seinen-
erfahrungen-aus-seinen-begegnungen-mit-
kunden-tickets-91581164729
https://www.eventbrite.com/e/webinar-abap-
753754-releaseabhangige-anderungen-tickets-
91580067447
http://www.cadaxo.com
AMDPIf you want to stay in touch …
https://twitter.com/domibiglsap
https://www.linkedin.com/in/dominik-bigl-9b98b68b
https://www.xing.com/profile/dominik_bigl
dominik.bigl@cadaxo.com
See you again!
Thank you for participating!
https://twitter.com/foessleitnerj
https://www.linkedin.com/in/johann-fößleitner-a9851b2a
https://www.xing.com/profile/johann_foessleitner
johann.foessleitner@cadaxo.com

Weitere ähnliche Inhalte

Was ist angesagt?

Kumbalangi Tourism Village in Kerala
 Kumbalangi Tourism Village in Kerala Kumbalangi Tourism Village in Kerala
Kumbalangi Tourism Village in KeralaGlobal Vision Tours
 
Disaster resistant structure
Disaster resistant structure Disaster resistant structure
Disaster resistant structure AlkaPrakash4
 
5 heritage preservation
5 heritage preservation5 heritage preservation
5 heritage preservationMinz Lee
 
TOWN PLANNING PORTFOLIO - Parimi Rama Krishna Sarma.pdf
TOWN PLANNING PORTFOLIO - Parimi Rama Krishna Sarma.pdfTOWN PLANNING PORTFOLIO - Parimi Rama Krishna Sarma.pdf
TOWN PLANNING PORTFOLIO - Parimi Rama Krishna Sarma.pdfParimi Rama Krishna Sarma
 
The idea of the City in the Social Housing experience throughout the past cen...
The idea of the City in the Social Housing experience throughout the past cen...The idea of the City in the Social Housing experience throughout the past cen...
The idea of the City in the Social Housing experience throughout the past cen...pedro fonseca jorge
 
Plotted development vs flatted development
Plotted development vs flatted developmentPlotted development vs flatted development
Plotted development vs flatted developmentJIT KUMAR GUPTA
 
Vocabulary of urban design
Vocabulary of urban designVocabulary of urban design
Vocabulary of urban designAishwerya Gulati
 
Vernaclar architecture of ladakh
Vernaclar architecture of ladakhVernaclar architecture of ladakh
Vernaclar architecture of ladakhRiya Saxena
 
Mangalavanam and old railway station ernakulam
Mangalavanam and old railway station ernakulamMangalavanam and old railway station ernakulam
Mangalavanam and old railway station ernakulamSurya Ramesh
 
Tourism in-bangladesh
Tourism in-bangladeshTourism in-bangladesh
Tourism in-bangladeshMahmudul Alam
 
Development Plan of Mehsana, Gujarat
Development Plan of Mehsana, GujaratDevelopment Plan of Mehsana, Gujarat
Development Plan of Mehsana, GujaratPratham Pincha
 
I am ECO (Amsterdam eco-city presentation)
I am ECO (Amsterdam eco-city presentation)I am ECO (Amsterdam eco-city presentation)
I am ECO (Amsterdam eco-city presentation)Aliaksey Narko
 
Wilderness & Wildlife Tourism
Wilderness & Wildlife TourismWilderness & Wildlife Tourism
Wilderness & Wildlife TourismZoltan Kun
 
Cultural and heritage tourism management; the value of cultural and heritage ...
Cultural and heritage tourism management; the value of cultural and heritage ...Cultural and heritage tourism management; the value of cultural and heritage ...
Cultural and heritage tourism management; the value of cultural and heritage ...Witsathit Somrak
 
Housing/ Apartment Case Study Nepal
Housing/ Apartment Case Study NepalHousing/ Apartment Case Study Nepal
Housing/ Apartment Case Study NepalSeasonShakya
 
Khatunganj Survey Report
Khatunganj Survey ReportKhatunganj Survey Report
Khatunganj Survey ReportAnik Gouala
 

Was ist angesagt? (20)

Kumbalangi Tourism Village in Kerala
 Kumbalangi Tourism Village in Kerala Kumbalangi Tourism Village in Kerala
Kumbalangi Tourism Village in Kerala
 
Disaster resistant structure
Disaster resistant structure Disaster resistant structure
Disaster resistant structure
 
5 heritage preservation
5 heritage preservation5 heritage preservation
5 heritage preservation
 
TOWN PLANNING PORTFOLIO - Parimi Rama Krishna Sarma.pdf
TOWN PLANNING PORTFOLIO - Parimi Rama Krishna Sarma.pdfTOWN PLANNING PORTFOLIO - Parimi Rama Krishna Sarma.pdf
TOWN PLANNING PORTFOLIO - Parimi Rama Krishna Sarma.pdf
 
Problems and prospects of village tourism case study of bhumlichok vdc gork...
Problems and prospects of village tourism case study of  bhumlichok vdc  gork...Problems and prospects of village tourism case study of  bhumlichok vdc  gork...
Problems and prospects of village tourism case study of bhumlichok vdc gork...
 
The idea of the City in the Social Housing experience throughout the past cen...
The idea of the City in the Social Housing experience throughout the past cen...The idea of the City in the Social Housing experience throughout the past cen...
The idea of the City in the Social Housing experience throughout the past cen...
 
Plotted development vs flatted development
Plotted development vs flatted developmentPlotted development vs flatted development
Plotted development vs flatted development
 
Vocabulary of urban design
Vocabulary of urban designVocabulary of urban design
Vocabulary of urban design
 
Calicut city profile
Calicut city profileCalicut city profile
Calicut city profile
 
Vernaclar architecture of ladakh
Vernaclar architecture of ladakhVernaclar architecture of ladakh
Vernaclar architecture of ladakh
 
bhonga-house.docx
bhonga-house.docxbhonga-house.docx
bhonga-house.docx
 
Mangalavanam and old railway station ernakulam
Mangalavanam and old railway station ernakulamMangalavanam and old railway station ernakulam
Mangalavanam and old railway station ernakulam
 
Tourism in-bangladesh
Tourism in-bangladeshTourism in-bangladesh
Tourism in-bangladesh
 
Development Plan of Mehsana, Gujarat
Development Plan of Mehsana, GujaratDevelopment Plan of Mehsana, Gujarat
Development Plan of Mehsana, Gujarat
 
I am ECO (Amsterdam eco-city presentation)
I am ECO (Amsterdam eco-city presentation)I am ECO (Amsterdam eco-city presentation)
I am ECO (Amsterdam eco-city presentation)
 
Bangalore
BangaloreBangalore
Bangalore
 
Wilderness & Wildlife Tourism
Wilderness & Wildlife TourismWilderness & Wildlife Tourism
Wilderness & Wildlife Tourism
 
Cultural and heritage tourism management; the value of cultural and heritage ...
Cultural and heritage tourism management; the value of cultural and heritage ...Cultural and heritage tourism management; the value of cultural and heritage ...
Cultural and heritage tourism management; the value of cultural and heritage ...
 
Housing/ Apartment Case Study Nepal
Housing/ Apartment Case Study NepalHousing/ Apartment Case Study Nepal
Housing/ Apartment Case Study Nepal
 
Khatunganj Survey Report
Khatunganj Survey ReportKhatunganj Survey Report
Khatunganj Survey Report
 

Ähnlich wie Webinar ABAP Managed Database Procedures

Webinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige ÄnderungenWebinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige ÄnderungenCadaxo GmbH
 
Webinar - ABAP Releasenotes 7.53/7.54
Webinar - ABAP Releasenotes 7.53/7.54Webinar - ABAP Releasenotes 7.53/7.54
Webinar - ABAP Releasenotes 7.53/7.54Cadaxo GmbH
 
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenWebinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenCadaxo GmbH
 
Five Finger Death Punch
Five Finger Death PunchFive Finger Death Punch
Five Finger Death PunchMT AG
 
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ulrike Schwinn
 
Webinar Modern ABAP
Webinar Modern ABAPWebinar Modern ABAP
Webinar Modern ABAPCadaxo GmbH
 
Webinar SAP/ABAP und Microsoft
Webinar  SAP/ABAP und MicrosoftWebinar  SAP/ABAP und Microsoft
Webinar SAP/ABAP und MicrosoftCadaxo GmbH
 
Webinar - Boost your ABAP
Webinar - Boost your ABAPWebinar - Boost your ABAP
Webinar - Boost your ABAPCadaxo GmbH
 
Webinar - ABAP CDS Views
Webinar - ABAP CDS ViewsWebinar - ABAP CDS Views
Webinar - ABAP CDS ViewsCadaxo GmbH
 
MySQL - New Features 5.6
MySQL - New Features 5.6MySQL - New Features 5.6
MySQL - New Features 5.6FromDual GmbH
 
Webinar - ABAP Development Tools
Webinar - ABAP Development ToolsWebinar - ABAP Development Tools
Webinar - ABAP Development ToolsCadaxo GmbH
 
Visuelle Gestaltung und Testdatenentwicklung mit BizDataX
Visuelle Gestaltung und Testdatenentwicklung mit BizDataXVisuelle Gestaltung und Testdatenentwicklung mit BizDataX
Visuelle Gestaltung und Testdatenentwicklung mit BizDataXDragan Kinkela
 
Clean code in ABAP
Clean code in ABAPClean code in ABAP
Clean code in ABAPCadaxo GmbH
 

Ähnlich wie Webinar ABAP Managed Database Procedures (16)

Webinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige ÄnderungenWebinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige Änderungen
 
Webinar - ABAP Releasenotes 7.53/7.54
Webinar - ABAP Releasenotes 7.53/7.54Webinar - ABAP Releasenotes 7.53/7.54
Webinar - ABAP Releasenotes 7.53/7.54
 
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenWebinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
 
Five Finger Death Punch
Five Finger Death PunchFive Finger Death Punch
Five Finger Death Punch
 
Ruby on Rails SS09 03
Ruby on Rails SS09 03Ruby on Rails SS09 03
Ruby on Rails SS09 03
 
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)
 
Renderscript in Android 3.x
Renderscript in Android 3.xRenderscript in Android 3.x
Renderscript in Android 3.x
 
Webinar Modern ABAP
Webinar Modern ABAPWebinar Modern ABAP
Webinar Modern ABAP
 
Webinar SAP/ABAP und Microsoft
Webinar  SAP/ABAP und MicrosoftWebinar  SAP/ABAP und Microsoft
Webinar SAP/ABAP und Microsoft
 
Webinar - Boost your ABAP
Webinar - Boost your ABAPWebinar - Boost your ABAP
Webinar - Boost your ABAP
 
Webinar - ABAP CDS Views
Webinar - ABAP CDS ViewsWebinar - ABAP CDS Views
Webinar - ABAP CDS Views
 
Performance-Analyse mit Bordmitteln
Performance-Analyse mit BordmittelnPerformance-Analyse mit Bordmitteln
Performance-Analyse mit Bordmitteln
 
MySQL - New Features 5.6
MySQL - New Features 5.6MySQL - New Features 5.6
MySQL - New Features 5.6
 
Webinar - ABAP Development Tools
Webinar - ABAP Development ToolsWebinar - ABAP Development Tools
Webinar - ABAP Development Tools
 
Visuelle Gestaltung und Testdatenentwicklung mit BizDataX
Visuelle Gestaltung und Testdatenentwicklung mit BizDataXVisuelle Gestaltung und Testdatenentwicklung mit BizDataX
Visuelle Gestaltung und Testdatenentwicklung mit BizDataX
 
Clean code in ABAP
Clean code in ABAPClean code in ABAP
Clean code in ABAP
 

Mehr von Cadaxo GmbH

Webinar - Entwurfsmuster in ABAP
Webinar - Entwurfsmuster in ABAPWebinar - Entwurfsmuster in ABAP
Webinar - Entwurfsmuster in ABAPCadaxo GmbH
 
Webinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 ReleaseinformationenWebinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 ReleaseinformationenCadaxo GmbH
 
Webinar - SAP Gateway
Webinar  - SAP GatewayWebinar  - SAP Gateway
Webinar - SAP GatewayCadaxo GmbH
 
ABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - RefactoringABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - RefactoringCadaxo GmbH
 
SQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - OverviewSQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - OverviewCadaxo GmbH
 
Webinar - SAP BOPF
Webinar - SAP BOPFWebinar - SAP BOPF
Webinar - SAP BOPFCadaxo GmbH
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP UnitsCadaxo GmbH
 
SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0Cadaxo GmbH
 
Prüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA Tauglichkeit
Prüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA TauglichkeitPrüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA Tauglichkeit
Prüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA TauglichkeitCadaxo GmbH
 
Cadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im DetailCadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im DetailCadaxo GmbH
 
Abap 7 02 new features - new string functions
Abap 7 02   new features - new string functionsAbap 7 02   new features - new string functions
Abap 7 02 new features - new string functionsCadaxo GmbH
 
Abap 7.02 new features - neue stringfunktionen
Abap 7.02   new features - neue stringfunktionenAbap 7.02   new features - neue stringfunktionen
Abap 7.02 new features - neue stringfunktionenCadaxo GmbH
 
Funktionstests in SAP
Funktionstests in SAPFunktionstests in SAP
Funktionstests in SAPCadaxo GmbH
 

Mehr von Cadaxo GmbH (13)

Webinar - Entwurfsmuster in ABAP
Webinar - Entwurfsmuster in ABAPWebinar - Entwurfsmuster in ABAP
Webinar - Entwurfsmuster in ABAP
 
Webinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 ReleaseinformationenWebinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 Releaseinformationen
 
Webinar - SAP Gateway
Webinar  - SAP GatewayWebinar  - SAP Gateway
Webinar - SAP Gateway
 
ABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - RefactoringABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - Refactoring
 
SQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - OverviewSQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - Overview
 
Webinar - SAP BOPF
Webinar - SAP BOPFWebinar - SAP BOPF
Webinar - SAP BOPF
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP Units
 
SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0
 
Prüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA Tauglichkeit
Prüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA TauglichkeitPrüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA Tauglichkeit
Prüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA Tauglichkeit
 
Cadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im DetailCadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im Detail
 
Abap 7 02 new features - new string functions
Abap 7 02   new features - new string functionsAbap 7 02   new features - new string functions
Abap 7 02 new features - new string functions
 
Abap 7.02 new features - neue stringfunktionen
Abap 7.02   new features - neue stringfunktionenAbap 7.02   new features - neue stringfunktionen
Abap 7.02 new features - neue stringfunktionen
 
Funktionstests in SAP
Funktionstests in SAPFunktionstests in SAP
Funktionstests in SAP
 

Webinar ABAP Managed Database Procedures

  • 1. AMDP ABAP Managed Database Procedures Webinar, 31.1.2020, 10:00 Uhr
  • 2. AMDPFöß Johann Fößleitner Senior Consultant at Cadaxo eMail: johann.foessleitner@cadaxo.com Twitter: @foessleitnerj Beratungsschwerpunkte • Konzeption & Management von Entwicklungsprojekten • Qualitymanagement & Performanceoptimierung • Clean Code • S/4HANA Custom Development • SAP Champion
  • 3. AMDPDomi Domi Bigl Senior Consultant at Cadaxo eMail: dominik.bigl@cadaxo.com Twitter: @DomiBiglSAP Beratungsschwerpunkte • Konzeption & Management von Entwicklungsprojekten • Qualitymanagement & Performanceoptimierung • ABAP Units • SAP Fiori, SAP UI5
  • 6. AMDPABAP SQL vor 7.40 SQL 92 Standard Advanced Open SQL Seit 7.40 SP5/SP8 Open SQL  Open SQL vor 7.40 ◦ Kein UNION oder UNION ALL ◦ Eingeschränkte JOIN Möglichkeiten ◦ Keine Expressions ◦ Kein Casting ◦ …
  • 7. AMDPCode-to-Data / Code Push Down Applikations Server / ABAP Datenbank Traditionelle Datenbank Datenintensive Berechnungen erfolgen am Applikationsserver (Data-to-Code) SAP HANA Datenintensive Be- rechnungen erfolgen in der Datenbank (Code-to-Data bzw. Code Pushdown )
  • 8. AMDPCode-to-Data / Code Push Down 1. Cadaxo Webinar 29.1.2016  Code-to-Data ◦ ABAP Open SQL Expressions ◦ ABAP Core Data Services ◦ ABAP Managed Database Procedures
  • 10. AMDPAMDP  Volle Leistungsfähigkeit von HANA mit AMDP ◦ Beste Performance bei komplexen Berechnungen ◦ HANA bietet mehr Möglichkeiten im analytischen Bereich bzw. spezielle Funktionen ◦ Wenn ABAP SQL und CDS nicht ausreichen  Einschränkungen ◦ AMDPs sind datenbankspezifische Entwicklungen ◦ AMDPs sind derzeit nur für SAP HANA verfügbar
  • 11. AMDPAMDP  AMDP – ABAP Managed Database Procedures ◦ ABAP Klassen als Container für SQLScript  Stored Procedures und Datenbankfunktionen  Komplexe Logiken möglich (IF/ELSE) ◦ Vollständig in ABAP integriert  Code Completion, Navigation, Entwicklung, Debugging, Enhancement, Transport, … ◦ Einfacher Zugriff auf erweiterte SAP HANA Möglichkeiten  Z.B. Fuzzy Suche, Linguistic Suche, … ◦ Verfügbar seit 7.40 SP05  AMDP Funktionen seit 7.50
  • 12. AMDPAMDP Prozedur, AMDP Tabellenfunktion AMDP Prozedur AMDP/CDS Tabellenfunktion
  • 13. AMDPAMDP-Framework AMDP Prozedur AMDP-Funktionen für CDS- Tabellenfunktionen Aufruf aus ABAP Class( )->method( ) SELECT * FROM … Implementierung Public Instance Method Public Statische Method Lesend/schreibend lesend und schreibend Nur lesend Parameterdefinition In der Methode In der DDL Definition Parameter IMPORT, EXPORT u. (CHANGING) IMPORT und ein RETURNING Mandantenhandling Nicht automatisch Automatisch möglich (Annotation)
  • 15. AMDPAMDP Definition class zcl_amdp_demo definition. public section. interfaces if_amdp_marker_hdb. methods amdp_demo importing value(i_param1) type bu_type default ‘1‘ exporting value(e_param2) type typ_but000 changing value(c_param3) type bu_partner. endclass.  Marker-Interface ◦ IF_AMDP_MARKER_HDB muss angegeben werden
  • 16. AMDPAMDP Definition class zcl_amdp_demo definition. public section. interfaces if_amdp_marker_hdb. methods amdp_demo importing value(i_param1) type bu_type default ‘1‘ exporting value(e_param2) type typ_but000 changing value(c_param3) type bu_partner. endclass.  Parameterübergabe ◦ Übergabe erfolgt als Werteparameter ◦ Nur IMPORTING, EXPORTING und CHANGING möglich
  • 17. AMDPAMDP Definition class zcl_amdp_demo definition. public section. interfaces if_amdp_marker_hdb. methods amdp_demo importing value(i_param1) type bu_type default ‘1‘ exporting value(e_param2) type typ_but000 changing value(c_param3) type bu_partner. endclass.  Vorgschlagswerte ◦ Vorschlagswerte beim Importing-Parametern möglich
  • 18. AMDPAMDP Implementierung class zcl_amdp_demo implementation. method amdp_demo by database procedure for hdb language sqlscript options read-only using but000. et_but000 = select distinct partner, name_last from but000 where client = SESSION_CONTEXT('CLIENT') and contains( name_last, :i_name_first, fuzzy( 0.7 ) ); endmethod. endclass.  Implementierung ◦ Implementierung als HANA SQLScript Prozedur
  • 19. AMDPAMDP Implementierung class zcl_amdp_demo implementation. method amdp_demo by database procedure for hdb language sqlscript options read-only using but000. et_but000 = select distinct partner, name_last from but000 where client = SESSION_CONTEXT('CLIENT') and contains( name_last, :i_name_first, fuzzy( 0.7 ) ); endmethod. endclass.  Options ◦ Optional kann read-only vorgegeben werden
  • 20. AMDPAMDP Implementierung class zcl_amdp_demo implementation. method amdp_demo by database procedure for hdb language sqlscript options read-only using but000. et_but000 = select distinct partner, name_last from but000 where client = SESSION_CONTEXT('CLIENT') and contains( name_last, :i_name_first, fuzzy( 0.7 ) ); endmethod. endclass.  Deklarationen ◦ ABAP Dictionary Objekte oder andere AMDP Methoden auf die zugegriffen werden soll, müssen hier deklariert werden
  • 21. AMDPAMDP Aufruf aus ABAP class zcl_amdp_demo_call implemenation. method call_from_abap. new zcl_amdp_demo( )->amdp_demo( importing e_param2 = partners changing c_param3 = first_partner ). endmethod. endclass.  Aufruf aus ABAP ◦ Wie jede andere ABAP Methode
  • 24. AMDPDeklarative vs. Imperative Programmierung  Deklarative vs. Imperative Programmierung ◦ Deklarativ  Spezifikation dessen, was ermittelt werden soll  Für SQLScript bedeutet das: ◦ System legt den Lösungsweg fest und optimiert diesen ◦ Parallele Verarbeitung von unabhängigen Teilen ◦ Wiederholende Teile werden erkannt und nur einmal ausgeführt ◦ Eingeschränkte Anweisungen und Funktionen ◦ Imperativ  Programmablauf wird selbst festgelegt  IF/ELSE, WHILE, DDL, …
  • 25. AMDP Syntax: ABAP SQL vs. SQLScript
  • 26. AMDPFeldliste - Alias SELECT a~client, a~partner, a~name_last AS name FROM but000 AS a INNER JOIN but020 AS b ON b~partner = a~partner WHERE a~partner = @P_PARTN AND a~type = '1’ ORDER BY name DESCENDING INTO TABLE @DATA(result). lt_result = SELECT DISTINCT a.client, a.partner, a.name_last AS name from but000 as a inner join but020 as b on a.partner = b.partner WHERE a.partner = :p_in and a.type = '1’ order by a.name_last desc; ABAP SQLScript  Feldliste ◦ ABAP: Alias = ~ ◦ SQLScript: Alias = .
  • 27. AMDPLokale Variablen und Parameter SELECT a~client, a~partner, a~name_last AS name FROM but000 AS a INNER JOIN but020 AS b ON b~partner = a~partner WHERE a~partner = @P_PARTN AND a~type = '1’ ORDER BY name DESCENDING INTO TABLE @DATA(result). lt_result = SELECT DISTINCT a.client, a.partner, a.name_last AS name from but000 as a inner join but020 as b on a.partner = b.partner WHERE a.partner = :p_in and a.type = '1’ order by a.name_last desc; ABAP SQLScript  Lokale Varialben und Parameter ◦ ABAP: Escaped/Prefixed mit @ ◦ SQLScript: Escaped/Prefixed mit :
  • 28. AMDPSortierung mit ORDER BY SELECT a~client, a~partner, a~name_last AS name FROM but000 AS a INNER JOIN but020 AS b ON b~partner = a~partner WHERE a~partner = @P_PARTN AND a~type = '1’ ORDER BY name DESCENDING INTO TABLE @DATA(result). lt_result = SELECT DISTINCT a.client, a.partner, a.name_last AS name from but000 as a inner join but020 as b on a.partner = b.partner WHERE a.partner = :p_in and a.type = '1’ order by a.name_last desc; ABAP SQLScript  Sortierung ◦ ABAP: ORDER BY <feldliste> ASCENDING | DESCENDING ◦ SQLScript: order by <feldliste> asc | desc
  • 29. AMDPZweisung der Ergebnisse SELECT a~client, a~partner, a~name_last AS name FROM but000 AS a INNER JOIN but020 AS b ON b~partner = a~partner WHERE a~partner = @P_PARTN AND a~type = '1’ ORDER BY name DESCENDING INTO TABLE @DATA(result). lt_result = SELECT DISTINCT a.client, a.partner, a.name_last AS name from but000 as a inner join but020 as b on a.partner = b.partner WHERE a.partner = :p_in and a.type = '1’ order by a.name_last desc; ABAP SQLScript  Zweisung der Ergebnisse ◦ ABAP – INTO [ TABLE ] … ◦ SQLScript – Deklarativ: lt_result = …
  • 30. AMDPZeilenende SELECT a~client, a~partner, a~name_last AS name FROM but000 AS a INNER JOIN but020 AS b ON b~partner = a~partner WHERE a~partner = @P_PARTN AND a~type = '1’ ORDER BY name DESCENDING INTO TABLE @DATA(result). lt_result = SELECT DISTINCT a.client, a.partner, a.name_last AS name from but000 as a inner join but020 as b on a.partner = b.partner WHERE a.partner = :p_in and a.type = '1’ order by a.name_last desc; ABAP SQLScript  Zeilenende ◦ ABAP: Punkt ◦ SQLScript: Strichpunkt
  • 33. AMDPCDS Tabellenfunktion @EndUserText.label: 'Demo CDS Function' define table function zdd_cds_amdp_function with parameters p_in : bu_partner returns { client : abap.clnt; partner : bu_partner; name_last : bu_namep_l; } implemented by method zcl_amdp_demo=>amdp_demo_cds  CDS Funktion ◦ Name der CDS Funktion CDS Table Function
  • 34. AMDP @EndUserText.label: 'Demo CDS Function' define table function zdd_cds_amdp_function with parameters p_in : bu_partner returns { client : abap.clnt; partner : bu_partner; name_last : bu_namep_l; } implemented by method zcl_amdp_demo=>amdp_demo_cds  Eingangsparameter ◦ Nur IMPORTING möglich CDS Table Function CDS Tabellenfunktion
  • 35. AMDP @EndUserText.label: 'Demo CDS Function' define table function zdd_cds_amdp_function with parameters p_in : bu_partner returns { client : abap.clnt; partner : bu_partner; name_last : bu_namep_l; } implemented by method zcl_amdp_demo=>amdp_demo_cds  Rückgabeparameter ◦ Definition der Struktur der Rückgabetabelle ◦ Falls die Funktion mandantenabhängig ist, muss der Mandant angegeben werden. CDS Table Function CDS Tabellenfunktion
  • 36. AMDP @EndUserText.label: 'Demo CDS Function' define table function zdd_cds_amdp_function with parameters p_in : bu_partner returns { client : abap.clnt; partner : bu_partner; name_last : bu_namep_l; } implemented by method zcl_amdp_demo=>amdp_demo_cds  Implementierung ◦ Definition, in welcher AMDP-Methode die Implementierung vorgenommen ist ◦ Die CDS Entität kann bereits aktiviert werden, wenn die Methode noch nicht vorhanden ist CDS Table Function CDS Tabellenfunktion
  • 37. AMDPAMDP Definition class zcl_amdp_demo definition. public section. interface if_amdp_marker_hdb. class-methods amdp_demo_cds for table function zdd_cds_amdp_function. endclass.  Statische Methode ◦ Methoden für CDS Tabellenfunktionen müssen statisch definiert sein
  • 38. AMDP class zcl_amdp_demo definition. public section. interface if_amdp_marker_hdb. class-methods amdp_demo_cds for table function zdd_cds_amdp_function. endclass.  Zusatz ◦ Über den Zusatz FOR wird die CDS Tabellenfunktion bekannt gegeben. CDS Tabellenfunktion
  • 39. AMDP class zcl_amdp_demo implementation. method amdp_demo_cds by database function for hdb language sqlscript options read-only using but000. return select distinct partner, name_last from but000 where client = SESSION_CONTEXT('CLIENT') and contains( name_last, :i_name_first, fuzzy( 0.7 ) ); endmethod. endclass.  Implementierung ◦ Implementierung als HANA SQLScript Funktion CDS Tabellenfunktion
  • 40. AMDP class zcl_amdp_demo implementation. method amdp_demo_cds by database function for hdb language sqlscript options read-only using but000. return select distinct partner, name_last from but000 where client = SESSION_CONTEXT('CLIENT') and contains( name_last, :i_name_first, fuzzy( 0.7 ) ); endmethod. endclass.  Options ◦ Optional – ist aber immer read-only CDS Tabellenfunktion
  • 41. AMDP class zcl_amdp_demo implementation. method amdp_demo_cds by database function for hdb language sqlscript options read-only using but000. return select distinct partner, name_last from but000 where client = SESSION_CONTEXT('CLIENT') and contains( name_last, :i_name_first, fuzzy( 0.7 ) ); endmethod. endclass.  Deklarationen ◦ ABAP Dictionary Objekte oder andere AMDP Methoden auf die zugegriffen werden soll, müssen hier deklariert werden CDS Tabellenfunktion
  • 42. AMDP class zcl_amdp_demo implementation. method amdp_demo_cds by database function for hdb language sqlscript options read-only using but000. return select distinct partner, name_last from but000 where client = SESSION_CONTEXT('CLIENT') and contains( name_last, :i_name_first, fuzzy( 0.7 ) ); endmethod. endclass.  Ergebnisrückgabe ◦ Tabellenartiges Ergebnis wird mit RETURN zurückgeliefert CDS Tabellenfunktion
  • 43. AMDP class zcl_amdp_demo_call implementation. method call_from_abap. select * from zdd_cds_amdp_function( p_in = partner_id ) into table @data(partners). endmethod. endclass.  Aufruf aus ABAP ◦ Ganz normal mit ABAP SQL CDS Tabellenfunktion
  • 45. AMDPAlternativen zu AMDPs um SQLScript auszuführen  AMDP/SQLScript Einschränkungen ◦ Keine DDL Statements erlaubt  CREATE, DROP, … ◦ Keine Transaktionalen Kommandos erlaubt  COMMIT, ROLLBACK  Wäre z.B. über EXEC/ENDEXEC möglich (aber NICHT empfohlen) ◦ Zugriff nur auf DEFAULT Schema ◦ Gepufferte Tabellen können nicht geändert werden ◦ Kein automatisches Mandantenhandling  SESSION_CONTEXT('CLIENT')
  • 46. AMDPAMDP Debugging  AMDP Debugging ◦ Nur mit ADT möglich ◦ Einige Einschränkungen gegenüber ABAP Debugging  Keine Ersetzen von Werten, kein Sprung zur Zeile, …
  • 47. AMDPAMDP BAdIs  AMDP BAdIs ◦ Keine Filter verwendbar ◦ Es muss eine Fallback-Implementierung existieren ◦ Verfügbar seit 7.40 SP08
  • 48. AMDPSekundäre DB Connections  AMDP & Sekundäre DB Connections ◦ Sekundäre Datenbankverbindungen sind möglich ◦ Parametername: connection type DBCON_NAME ◦ Verfügbar seit 7.40 SP08
  • 49. AMDP ABAP SQL AMDP Ja Ja Nein Nein, dann ADBC  ABAP SQL oder CDS Views  SQL Expressions  Common Table Expressions  Global Temporary Tables  …  Datenbankunabhängig  AMDP Prozedur  AMDP Tablefunction (=CDS)  Datenbankabhängig  ADBC ABAP Database Connectivity  Obsolet: EXEC SQL/ENDEXEC & CALL DATABASE …  Datenbankabhängig DB Hints Nein  ABAP SQL: %_HINTS …  CDS Views: Consumption.dbHints[ ]  Datenbankabhängig Ja Entscheidungsbaum
  • 51. AMDPThomas Jung – HANA Basics For Developers https://www.youtube.com/playlist?list=PLoc6uc3ML1JR38-V46qhmGIKG07nXwO6X
  • 53. AMDPSQLScript for SAP HANA – von Jörg Brandeis ISBN 978-3-8362-6208-8 https://twitter.com/joerg_brandeis
  • 54. AMDP SAP Help Portal: ABAP Managed Database Procedures (AMDP) https://help.sap.com/viewer/6811c09434084fd1bc4f40e66913ce11/7.52.0/en- US/3e7ce62892d243eca44499d3f5a54bff.html ABAP Keyword Documentation: AMDP - ABAP Managed Database Procedures https://help.sap.com/doc/abapdocu_753_index_htm/7.53/en-US/index.htm?file=abenamdp.htm Einführungs Blog auf developer.sap.com https://blogs.sap.com/2014/01/22/abap-managed-database-procedures-introduction/ Weitere SAP Links
  • 57. AMDPIf you want to stay in touch … https://twitter.com/domibiglsap https://www.linkedin.com/in/dominik-bigl-9b98b68b https://www.xing.com/profile/dominik_bigl dominik.bigl@cadaxo.com See you again! Thank you for participating! https://twitter.com/foessleitnerj https://www.linkedin.com/in/johann-fößleitner-a9851b2a https://www.xing.com/profile/johann_foessleitner johann.foessleitner@cadaxo.com

Hinweis der Redaktion

  1. Sybase ist eine Tochterfirma der SAP
  2. AMDP Prozeduren (Methoden) werden aus der ABAP Umgebung aufgerufen AMDP Tabellenfunktionen sind CDS Tabellenfunktionen und werden über SELECT als CDS View aufgerufen oder können direkz aus AMDP Prozeduren aufgerufen werden
  3. Mandantenhandling in den CDS Funktionen über Annotation einstellbar:  @ClientHandling.algorithm:#SESSION_VARIABLE 
  4. SQL ist ein typisches Beispiel für deklarative Programmierung. Weitere bekannte Sprachen wären Haskell, Lisp, Prolog, XAML Imperative Sprachen wären neben ABAP natürlich auch z.B. C, C++ oder JAVA
  5. Bei schreibenden Zugriffen wäre der : nicht notwendig, da keine Verwechslungsgefahr mit einem Datenobjekt besteht. Es gibt einige Systemsymbole. Diese werden mit :: angesprochen. Z.B. ::ROWCOUNT enthält die Anzahl der zuletzt geänderten Datensätze
  6. Bei SQLScript kann bei der ORDER BY noch angegeben werden, wie mit NULL Werten umgegangen werden soll. NULL FIRST oder NULL LAST Bei SQLScript können auch die Spaltennummern 2, 3, 4, …. angegeben werden
  7. Sybase ist eine Tochterfirma der SAP
  8. Sybase ist eine Tochterfirma der SAP
  9. Sybase ist eine Tochterfirma der SAP
  10. Sybase ist eine Tochterfirma der SAP
  11. Sybase ist eine Tochterfirma der SAP
  12. Sybase ist eine Tochterfirma der SAP
  13. Sybase ist eine Tochterfirma der SAP