SlideShare ist ein Scribd-Unternehmen logo
ABAP 7.40 SP5/SP8 Releaseabhängige Änderungen
Webinar, 29.1.2016
Johann Fößleitner
Senior Consultant
Ich bin ABAP
SAP Entwickler seit 25 Jahren
Danke, dass ihr dabei seid!
Wir starten in ein paar Minuten
Domik Bigl
Senior Consultant
Geht nicht gibt’s nicht
Unterwegs in SAP seit 2001
 ABAP New Open SQL
 Neue Syntax, SQL Expressions
 ABAP Core Data Services
 CDS Views
 ABAP Messaging Channels
 ABAP Push Channels
 Ausdrücke und Funktionen
 Sonstiges
Agenda
SQL 92 Standard
Advanced Open SQL
 SQL Einschränkungen in ABAP vor 7.40
◦ Jahrelanger Stillstand
◦ Kein UNION bzw. UNION ALL
◦ Einschränkungen betr. JOIN Typen
◦ Keine Expressions
◦ …
Open SQL vor 7.40
Open SQL
 Code Pushdown to the Database
◦ ABAP Open SQL Expressions
◦ ABAP Core Data Services (CDS Views)
◦ ABAP Managed Database Procedures (AMDP)
Code Pushdown
 Neue Open SQL Syntax
◦ Escaping von Hostvariablen mit @
◦ Separierung von Elemente mit Kommas
SQL Syntax
DATA: L_HUGO TYPE C LENGTH 10.
SELECT mc_name1,
@l_hugo AS hugo,
@sy-uname AS userid,
'X' AS true
FROM TABLE BUT000
INTO @ls_result.
ABAP Code
Open SQL Expressions
SQL Expressions
* Case Expression
select mc_name1,
case when type = '1' then 'Person‘
when type = '2' then 'Unternehmen‘
else ‘Unbekannt‘
end as type_desc
from but000
…
 SQL Expressions – Beispiel CASE
ABAP Code
 SQL Expressions
◦ Fallunterscheidung mit CASE
◦ Arithmetic Expressions
 +, -, *, /, ABS, CEIL, FLOOR, DIV, MOD, …
◦ Verketten von Spalten mit &&
◦ Typanpassung mit CAST für FLTP Dictionary Typen
◦ COALESCE-Funktion
◦ Festwerte
SQL Expressions
 SQL Expressions können kombiniert werden
◦ Priorisierung mit Klammern
SQL Expressions
* Case Expression
select type,
case when type = '1' then ( 'Person' && '/' && type )
when type = '2' then ( 'Unternehmen' && '/' && type )
end as type_desc,
mc_name1
from but000
…
ABAP Code
CDS Views
 CDS Core Data Services
◦ Next Generation Data/View Definition
◦ CDS beinhaltet
 Data Definition Language (DDL)
 (ab 7.50 Data Control Language (DCL) )
◦ 100% in ABAP integriert
 ABAP Dictionary
 Transportmanagement
 Modifikationsfrei erweiterbar
◦ Pflege über ABAP in Eclipse
◦ Zugriff via Open SQL
CDS Views
CDS Views
SE11 – traditioneller Datenbankview  Einschränkungen
◦ Keine Outer Joins
◦ Keine komplexen Joins
◦ Keine Kommentare
◦ Kein UNION
◦ Kein View -> View
◦ …
CDS Views
◦ Definition in DDL
 Syntax ist sehr ähnlich zu Open SQL
◦ CDS View Entity: ZCDSVIEW_ENT
◦ CDS View DB: ZCDSVIEW_DB
@AbapCatalog.sqlViewName: 'ZCDSVIEW_DB'
/* Demo */
define view ZCDSVIEW_ENT
as select from but000
{
partner,
mc_name1,
mc_name2,
}
CDS View
 CDS Views
◦ Code Pushdown durch erweiterte View Funktionalitäten
 Mehr Möglichkeiten als bei Open SQL Expressions
◦ Volle Integration in die ABAP Welt (z.B. Transportmanagment)
◦ Pflege (derzeit?) ausschließlich über ABAP in Eclipse
◦ Open SQL Zugriff auf die Views natürlich möglich
◦ CDS Views sind erweiterbar
◦ View on View möglich
CDS Views
 CDS Build-in Expressions
CDS Views - Associations & Annotations
Konvertierungs-
funktionen
CURRENCY_CONV
UNIT_CONV
DECIMAL_SHIFT
Zeichenketten-
funktionen
CONCAT
LPAD
REPLACE
SUBSTRING
Numerische
Funktionen
ABS
CEIL
DIV
DIVISION
FLOOR
MOD
ROUND
Zeit/Datum
Funktionen
DATS_IS_VALID
TIMS_IS_VALID
DATS_ADD_DAYS
…
Coalesce-
Funktion
COALESCE
Neu ab
7.50
Viele neue Funktionen ab 7.50
 CDS Views - Annotations
◦ Ermöglicht das Anreichern von
Metadaten direkt im View
◦ Beispiele
 SAP Pufferung aktiv
 Mandantenhandling
 Label bzw. Quickinfo
 …
CDS Views - Annotations
CDS
BI Tools
OData
AnalyticsPlanning
…
CDS Views - Annotations
@AbapCatalog.sqlViewName: 'zcdsview_foe2_db'
@AbapCatalog.compiler.CompareFilter: true
@AccessControl.authorizationCheck: #CHECK
define view Zcdsview_Foe2
with parameters exc_date: abap.dats,
to_curr: abap.cuky(5)
as select from zdatentypen {
zdatentypen.curr as original,
@EndUserText.label: Currency‘
zdatentypen.cuky as currency,
…
Core Annotations
Element Annotations
 CDS Views Ausblick
◦ CDS Zugriffskontrolle ab 7.40 SP10
 Der Zugriff auf CDS Views kann mit der neuen Datenkontrollsprache (DCL)
geschützt werden
 Verknüpfung mit PFCG Rollen möglich
◦ Neue SQL Funktionen ab 7.50
 CONCAT, LEFT, LENGTH, LTRIM, …
 Eingebaute Datumsfunktionen (DATS_DAYS_BETWEEN, DATS_IS_VALID … )
◦ Vertreterobjekte ab 7.50
 Mit einigen Einschränkungen (und großer Vorsicht) können CDS Views als
Vertreterobjekte für Datenbanktabellen definiert werden
◦ …
CDS Views
 Open SQL Ausblick ab 7.50
◦ UNION/UNION ALL
◦ SQL Expression können auch in WHERE, HAVING, …
◦ Neue SQL Expressions
 CONCAT, LPAD, LENGTH, …
◦ Subqueries als Source für INSERTS
◦ GTT Global Temporary Tables
◦ …
CDS Views
CDS Views vs. Open SQL Expressions
• Re-Use Scenarien
• Views können verschachtelt
werden!!
• CDS Features
• ASSOCIATION, UNION, UNION
ALL, Mengen bzw. Währungs
Umrechnungen
CDS Views Open SQL
• Einmalverwendungen
• FOR ALL ENTRIES
ABAP Channels
 Bildschrimdaten aktualisieren bisher
◦ Useraktion (PAI oder Control-Events)
◦ „Polling“ CL_GUI_TIMER
◦ ( JavaScript )
ABAP Channels
 Datenaustausch Sessions/Benutzer bisher
◦ SAP-Memory (SET/GET Parameter)
◦ ABAP-Memory ( EXPORT/IMPORT)
◦ Shared Objects
◦ Datenbank
ABAP Channels
 ABAP Push Channels - APC
◦ Kommunikation zwischen Client und Server
◦ Bi-direktional: Server und Client
◦ WebSocket Protocol
 ABAP Message Channels - AMC
◦ Kommunikation zwischen Benutzersessions
◦ Publish–Subscribe Model
◦ AppServer übergreifend
ABAP Channels
SAP System
App Server 2
User 2
Session 1
App Server 1
User 1
Session 1
User 2
Session 2
ABAP
Messaging Channel
Framework
ABAP Channels - Überblick
APC Send/Receive
AMC Receive
AMC Send
AMC Subscribe
 LIVE DEMO - Szenario
◦ Benutzer erstellt Fehlerticket
◦ Supportmitarbeiter erhält Ticket
◦ Monitor im SAP GUI
ABAP Channels
 LIVE DEMO
◦ Benutzer erstellt Fehlerticket
◦ Supportmitarbeiter erhält Ticket
◦ Monitor im SAP GUI
ABAP Channels – Live Demo
Ausdrücke, Funktionen und
interne Tabellen
SP02
SP05
SP08
 Konstruktorausdrücken / Inline-Deklarationen
◦ VALUE
◦ NEW
◦ CONV
◦ COND/SWITCH
◦ DATA()
◦ FIELD-SYMBOL()
Konstruktorausdrücken / Inline-Deklarationen
DATA(lt_but000) = VALUE bup_but000_t( ). " TYPE STANDARD TABLE OF BUT000
DATA(ltr_but000) = NEW bup_but000_t( ).
"bisher
DATA lt_but000 TYPE bup_but000_t.
DATA ltr_but000 TYPE REF TO bup_but000_t.
Konstruktorausdrücken / Inline-Deklarationen
LOOP AT lt_but000 ASSIGNING FIELD-SYMBOL(<lwa_but000>).
...
ENDLOOP.
LOOP AT lt_but000 INTO DATA(lwa_but000).
...
ENDLOOP.
"bisher
DATA lwa_but000 LIKE LINE OF lt_but000.
LOOP AT lt_but000 INTO lwa_but000.
...
ENDLOOP.
Konstruktorausdrücken / Inline-Deklarationen
 Aufbau Rangetable
"wfdst_partner_ranges_tab = TYPE RANGE TABLE FOR BU_PARTNER
DATA(lrt_partner) = VALUE wfdst_partner_ranges_tab( sign = 'I'
option = 'EQ'
( low = 1 )
( low = 2 )
( low = 3 ) ).
* "bisher
DATA lrt_partner TYPE wfdst_partner_ranges_tab.
DATA: lrwa_partner LIKE LINE OF lrt_partner.
lrwa_partner-sign = 'I'.
lrwa_partner-option = 'EQ'.
lrwa_partner-low = 1.
APPEND lrwa_partner TO lrt_partner.
lrwa_partner-low = 2.
APPEND lrwa_partner TO lrt_partner.
Konstruktorausdrücken / Inline-Deklarationen
 Tabellenausdrücke – „READ TABLE“
◦ ITab[ 2 ]
 READ TABLE ITab INDEX 2 …
◦ ITab[ feld_a = `3` ]
 READ TABLE Itab WITH KEY feld_a = `3` …
Tabellenausdrücke / Schreibbare Ausdrücke
 Lesender Zugriff
DATA(lt_but000) = VALUE bup_but000_t( ( partner = 1
mc_name1 = 'DOMI'
mc_name2 = 'BIGL' )
( partner = 2
mc_name1 = 'JOHANN'
mc_name2 = 'FOESSLEITNER' ) ).
DATA(l_fullname) = |{ lt_but000[ 2 ]-mc_name1 } { lt_but000[ 2 ]-mc_name2 }|.
" l_fullname = 'JOHANN FOESSLEITNER'
"bisher
FIELD-SYMBOLS: <lwa_but000> TYPE but000.
READ TABLE lt_but000 ASSIGNING <lwa_but000> INDEX 2.
CONCATENATE <lwa_but000>-mc_name1
<lwa_but000>-mc_name2 INTO l_fullname
SEPARATED BY space.
Tabellenausdrücke / Schreibbare Ausdrücke
 Schreibender Zugriff
lt_but000[ 2 ]-mc_name2 = 'Föß'.
Tabellenausdrücke / Schreibbare Ausdrücke
 Parameterübergabe
Tabellenausdrücke
DATA(lr_msg_srv) = cl_bsp_wd_message_service=>get_instance( ).
IF lt_but000 IS NOT INITIAL.
lr_msg_srv->add_message(
EXPORTING
iv_msg_type = 'E'
iv_msg_id = '00'
iv_msg_number = '000'
iv_msg_v1 = lt_but000[ 1 ]-partner ).
ENDIF.
 MOVE-CORRESPONDING ITabs
MOVE-CORRESPONDING für interne Tabellen
DATA(lt_but000) = VALUE bup_but000_t( ( partner = 1
mc_name1 = 'DOMI'
mc_name2 = 'BIGL' )
( partner = 2
mc_name1 = 'JOHANN'
mc_name2 = 'FOESSLEITNER' ) ).
DATA lt_but020 TYPE TABLE OF but020.
MOVE-CORRESPONDING lt_but000 TO lt_but020.
"bisher
DATA: lwa_but020 TYPE but020.
FIELD-SYMBOLS: <lwa_but000> LIKE LINE OF lt_but000.
LOOP AT lt_but000 ASSIGNING <lwa_but000>.
MOVE-CORRESPONDING <lwa_but000> TO lwa_but020.
APPEND lwa_but020 TO lt_but020.
ENDLOOP.
 Konstruktorausdruck: CORRESPONDING
DATA(lrt_partner) = VALUE wfdst_partner_ranges_tab( sign = 'I'
option = 'EQ'
( low = 1 )
( low = 2 )
( low = 3 ) ).
TYPES: ltt_but000 TYPE TABLE OF but000.
DATA lt_but000 TYPE ltt_but000.
lt_but000 = CORRESPONDING #( lrt_partner MAPPING partner = low ).
"bisher
DATA: lwa_but000 TYPE but000.
FIELD-SYMBOLS: <lrwa_partner> LIKE LINE OF lrt_partner.
LOOP AT lrt_partner ASSIGNING <lrwa_partner>.
MOVE-CORRESPONDING <lrwa_partner> TO lwa_but000.
lwa_but000-partner = <lrwa_partner>-low.
APPEND lwa_but020 TO lt_but020.
ENDLOOP.
CORRESPONDING
Pro
◦ Weniger Hilfsvariablen
◦ Weniger LOOPs und READ TABLE
◦ Als Methodenparameter verwendbar
◦ Übersichtlicher
◦ Modernerer Programmierstil
Contra
◦ Zunächst weniger übersichtlich/verständlich
◦ Komplexer Aufbau
 Datenobjekte
 Methodenaufrufen
 Debugger
Weitere Begriffe
 WHILE/UNTIL
 LET – Ausdrücke
 boolesche Funktion
 Tabellenfilterungen – Constructor FILTER
 Gruppierung interner Tabellen - FOR
 Constructor REDUCE
 Prädikative Methodenaufrufe
 OPTIONAL und DEFAULT bei Tableexpressions
Ausblick 750
 Klasse cl_abap_corresponding
 IS INSTANCE OF und CASE TYPE OF
 it_ref[ 3 ]->the_method( )
Sonstiges
 Sonstige interessante ABAP Neuerungen in SP5/SP8
◦ MOVE-CORRESPONDING für interne Tabellen (SP5)
◦ WAIT UP TO – Angabe ab nun in Millisekunden möglich (SP8)
◦ Outer Joins – On-Condition nun auch <, <=, >, >=, <>, between
und Literale verwendbar.
◦ Meshes
 Spezielle Strukturen die als Komponenten interne Tabellen haben
welche über Assoziationen verknüpft sind.
 Der Zugriff erfolgt über Mesh-Pfade
◦ …
Sonstiges
https://twitter.com/domibiglsap
https://www.linkedin.com/in/dominik-bigl-9b98b68b
https://www.xing.com/profile/dominik_bigl
dominik.bigl@cadaxo.com
https://twitter.com/foessleitnerj
https://www.linkedin.com/in/johann-fößleitner-a9851b2a
https://www.xing.com/profile/johann_foessleitner
johann.foessleitner@cadaxo.com
Danke!

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (9)

Webinar - Entwurfsmuster in ABAP
Webinar - Entwurfsmuster in ABAPWebinar - Entwurfsmuster in ABAP
Webinar - Entwurfsmuster in ABAP
 
Webinar - ABAP CDS Views
Webinar - ABAP CDS ViewsWebinar - ABAP CDS Views
Webinar - ABAP CDS Views
 
Spring 2.0
Spring 2.0Spring 2.0
Spring 2.0
 
Webinar SAP/ABAP und Microsoft
Webinar  SAP/ABAP und MicrosoftWebinar  SAP/ABAP und Microsoft
Webinar SAP/ABAP und Microsoft
 
Spring 2.0
Spring 2.0Spring 2.0
Spring 2.0
 
Webinar - SAP BOPF
Webinar - SAP BOPFWebinar - SAP BOPF
Webinar - SAP BOPF
 
Webinar - SAP Gateway
Webinar  - SAP GatewayWebinar  - SAP Gateway
Webinar - SAP Gateway
 
FMK2012: Mit SQL-Kommandos FileMaker Daten lesen - und schreiben von Nico Busch
FMK2012: Mit SQL-Kommandos FileMaker Daten lesen - und schreiben von Nico BuschFMK2012: Mit SQL-Kommandos FileMaker Daten lesen - und schreiben von Nico Busch
FMK2012: Mit SQL-Kommandos FileMaker Daten lesen - und schreiben von Nico Busch
 
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico BuschFMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
 

Andere mochten auch

Abap query
Abap queryAbap query
Abap query
brtkow
 
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
Cadaxo GmbH
 
Comandos e funções em abap
Comandos e funções em abapComandos e funções em abap
Comandos e funções em abap
alienscorporation
 
Abap coding standards
Abap coding standardsAbap coding standards
Abap coding standards
surendra1579
 
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.docManikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
manikanta sai kumar karri
 
Lecture01 abap on line
Lecture01 abap on lineLecture01 abap on line
Lecture01 abap on line
Milind Patil
 
Abap course chapter 6 specialities for erp software
Abap course   chapter 6 specialities for erp softwareAbap course   chapter 6 specialities for erp software
Abap course chapter 6 specialities for erp software
Milind Patil
 

Andere mochten auch (20)

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
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP Units
 
All your SAP passwords belong to us
All your SAP passwords belong to usAll your SAP passwords belong to us
All your SAP passwords belong to us
 
ABAP Test & Troubleshooting @SITMuc 2013
ABAP Test & Troubleshooting @SITMuc 2013ABAP Test & Troubleshooting @SITMuc 2013
ABAP Test & Troubleshooting @SITMuc 2013
 
Web dynpro for abap
Web dynpro for abapWeb dynpro for abap
Web dynpro for abap
 
Analista programador SAP ABAP IV
Analista programador SAP ABAP IVAnalista programador SAP ABAP IV
Analista programador SAP ABAP IV
 
Qué es abap
Qué es abapQué es abap
Qué es abap
 
ITSS Trainning | Curso de SAP ABAP Foundations
ITSS Trainning | Curso de SAP ABAP FoundationsITSS Trainning | Curso de SAP ABAP Foundations
ITSS Trainning | Curso de SAP ABAP Foundations
 
Abap query
Abap queryAbap query
Abap query
 
View - Tutorial ABAP
View - Tutorial ABAPView - Tutorial ABAP
View - Tutorial ABAP
 
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
 
Icones - ABAP
Icones - ABAPIcones - ABAP
Icones - ABAP
 
Comandos e funções em abap
Comandos e funções em abapComandos e funções em abap
Comandos e funções em abap
 
Sap abap Q&A
Sap abap Q&A Sap abap Q&A
Sap abap Q&A
 
Funções - Tutorial ABAP
Funções - Tutorial ABAPFunções - Tutorial ABAP
Funções - Tutorial ABAP
 
Abap coding standards
Abap coding standardsAbap coding standards
Abap coding standards
 
Basic abap oo
Basic abap ooBasic abap oo
Basic abap oo
 
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.docManikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
 
Lecture01 abap on line
Lecture01 abap on lineLecture01 abap on line
Lecture01 abap on line
 
Abap course chapter 6 specialities for erp software
Abap course   chapter 6 specialities for erp softwareAbap course   chapter 6 specialities for erp software
Abap course chapter 6 specialities for erp software
 

Ähnlich wie Webinar ABAP 7.40 sp5/sp8 Releaseinformationen

MySQL - New Features 5.6
MySQL - New Features 5.6MySQL - New Features 5.6
MySQL - New Features 5.6
FromDual GmbH
 

Ähnlich wie Webinar ABAP 7.40 sp5/sp8 Releaseinformationen (20)

Datenbank-Hausputz für Einsteiger
Datenbank-Hausputz für EinsteigerDatenbank-Hausputz für Einsteiger
Datenbank-Hausputz für Einsteiger
 
01 sqlplus
01 sqlplus01 sqlplus
01 sqlplus
 
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)
 
Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)
 
PureSQL APEX Connect
PureSQL APEX ConnectPureSQL APEX Connect
PureSQL APEX Connect
 
Pure SQL for batch processing
Pure SQL for batch processingPure SQL for batch processing
Pure SQL for batch processing
 
Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anp...
Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anp...Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anp...
Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anp...
 
Renderscript in Android 3.x
Renderscript in Android 3.xRenderscript in Android 3.x
Renderscript in Android 3.x
 
Ausgewählte PL/SQL Packages (3)
Ausgewählte PL/SQL Packages (3)Ausgewählte PL/SQL Packages (3)
Ausgewählte PL/SQL Packages (3)
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickler
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickler
 
MySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerMySQL Performance Tuning für Entwickler
MySQL Performance Tuning für Entwickler
 
Webinar DynamoDB deutsch
Webinar DynamoDB deutschWebinar DynamoDB deutsch
Webinar DynamoDB deutsch
 
Sql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint AdministratorenSql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint Administratoren
 
Sql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point Admins
 
MySQL - New Features 5.6
MySQL - New Features 5.6MySQL - New Features 5.6
MySQL - New Features 5.6
 
SCA und SDO: Konzepte und Design - OPITZ CONSULTING - Maier - Winterberg
SCA und SDO: Konzepte und Design - OPITZ CONSULTING - Maier - WinterbergSCA und SDO: Konzepte und Design - OPITZ CONSULTING - Maier - Winterberg
SCA und SDO: Konzepte und Design - OPITZ CONSULTING - Maier - Winterberg
 
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Roadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & FeaturesRoadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & Features
 

Mehr von Cadaxo GmbH (6)

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
 
Clean code in ABAP
Clean code in ABAPClean code in ABAP
Clean code in ABAP
 
SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0
 
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
 
Funktionstests in SAP
Funktionstests in SAPFunktionstests in SAP
Funktionstests in SAP
 

Webinar ABAP 7.40 sp5/sp8 Releaseinformationen

  • 1. ABAP 7.40 SP5/SP8 Releaseabhängige Änderungen Webinar, 29.1.2016
  • 2. Johann Fößleitner Senior Consultant Ich bin ABAP SAP Entwickler seit 25 Jahren Danke, dass ihr dabei seid! Wir starten in ein paar Minuten Domik Bigl Senior Consultant Geht nicht gibt’s nicht Unterwegs in SAP seit 2001
  • 3.  ABAP New Open SQL  Neue Syntax, SQL Expressions  ABAP Core Data Services  CDS Views  ABAP Messaging Channels  ABAP Push Channels  Ausdrücke und Funktionen  Sonstiges Agenda
  • 4. SQL 92 Standard Advanced Open SQL  SQL Einschränkungen in ABAP vor 7.40 ◦ Jahrelanger Stillstand ◦ Kein UNION bzw. UNION ALL ◦ Einschränkungen betr. JOIN Typen ◦ Keine Expressions ◦ … Open SQL vor 7.40 Open SQL
  • 5.  Code Pushdown to the Database ◦ ABAP Open SQL Expressions ◦ ABAP Core Data Services (CDS Views) ◦ ABAP Managed Database Procedures (AMDP) Code Pushdown
  • 6.  Neue Open SQL Syntax ◦ Escaping von Hostvariablen mit @ ◦ Separierung von Elemente mit Kommas SQL Syntax DATA: L_HUGO TYPE C LENGTH 10. SELECT mc_name1, @l_hugo AS hugo, @sy-uname AS userid, 'X' AS true FROM TABLE BUT000 INTO @ls_result. ABAP Code
  • 8. SQL Expressions * Case Expression select mc_name1, case when type = '1' then 'Person‘ when type = '2' then 'Unternehmen‘ else ‘Unbekannt‘ end as type_desc from but000 …  SQL Expressions – Beispiel CASE ABAP Code
  • 9.  SQL Expressions ◦ Fallunterscheidung mit CASE ◦ Arithmetic Expressions  +, -, *, /, ABS, CEIL, FLOOR, DIV, MOD, … ◦ Verketten von Spalten mit && ◦ Typanpassung mit CAST für FLTP Dictionary Typen ◦ COALESCE-Funktion ◦ Festwerte SQL Expressions
  • 10.  SQL Expressions können kombiniert werden ◦ Priorisierung mit Klammern SQL Expressions * Case Expression select type, case when type = '1' then ( 'Person' && '/' && type ) when type = '2' then ( 'Unternehmen' && '/' && type ) end as type_desc, mc_name1 from but000 … ABAP Code
  • 12.  CDS Core Data Services ◦ Next Generation Data/View Definition ◦ CDS beinhaltet  Data Definition Language (DDL)  (ab 7.50 Data Control Language (DCL) ) ◦ 100% in ABAP integriert  ABAP Dictionary  Transportmanagement  Modifikationsfrei erweiterbar ◦ Pflege über ABAP in Eclipse ◦ Zugriff via Open SQL CDS Views
  • 13. CDS Views SE11 – traditioneller Datenbankview  Einschränkungen ◦ Keine Outer Joins ◦ Keine komplexen Joins ◦ Keine Kommentare ◦ Kein UNION ◦ Kein View -> View ◦ …
  • 14. CDS Views ◦ Definition in DDL  Syntax ist sehr ähnlich zu Open SQL ◦ CDS View Entity: ZCDSVIEW_ENT ◦ CDS View DB: ZCDSVIEW_DB @AbapCatalog.sqlViewName: 'ZCDSVIEW_DB' /* Demo */ define view ZCDSVIEW_ENT as select from but000 { partner, mc_name1, mc_name2, } CDS View
  • 15.  CDS Views ◦ Code Pushdown durch erweiterte View Funktionalitäten  Mehr Möglichkeiten als bei Open SQL Expressions ◦ Volle Integration in die ABAP Welt (z.B. Transportmanagment) ◦ Pflege (derzeit?) ausschließlich über ABAP in Eclipse ◦ Open SQL Zugriff auf die Views natürlich möglich ◦ CDS Views sind erweiterbar ◦ View on View möglich CDS Views
  • 16.  CDS Build-in Expressions CDS Views - Associations & Annotations Konvertierungs- funktionen CURRENCY_CONV UNIT_CONV DECIMAL_SHIFT Zeichenketten- funktionen CONCAT LPAD REPLACE SUBSTRING Numerische Funktionen ABS CEIL DIV DIVISION FLOOR MOD ROUND Zeit/Datum Funktionen DATS_IS_VALID TIMS_IS_VALID DATS_ADD_DAYS … Coalesce- Funktion COALESCE Neu ab 7.50 Viele neue Funktionen ab 7.50
  • 17.  CDS Views - Annotations ◦ Ermöglicht das Anreichern von Metadaten direkt im View ◦ Beispiele  SAP Pufferung aktiv  Mandantenhandling  Label bzw. Quickinfo  … CDS Views - Annotations CDS BI Tools OData AnalyticsPlanning …
  • 18. CDS Views - Annotations @AbapCatalog.sqlViewName: 'zcdsview_foe2_db' @AbapCatalog.compiler.CompareFilter: true @AccessControl.authorizationCheck: #CHECK define view Zcdsview_Foe2 with parameters exc_date: abap.dats, to_curr: abap.cuky(5) as select from zdatentypen { zdatentypen.curr as original, @EndUserText.label: Currency‘ zdatentypen.cuky as currency, … Core Annotations Element Annotations
  • 19.  CDS Views Ausblick ◦ CDS Zugriffskontrolle ab 7.40 SP10  Der Zugriff auf CDS Views kann mit der neuen Datenkontrollsprache (DCL) geschützt werden  Verknüpfung mit PFCG Rollen möglich ◦ Neue SQL Funktionen ab 7.50  CONCAT, LEFT, LENGTH, LTRIM, …  Eingebaute Datumsfunktionen (DATS_DAYS_BETWEEN, DATS_IS_VALID … ) ◦ Vertreterobjekte ab 7.50  Mit einigen Einschränkungen (und großer Vorsicht) können CDS Views als Vertreterobjekte für Datenbanktabellen definiert werden ◦ … CDS Views
  • 20.  Open SQL Ausblick ab 7.50 ◦ UNION/UNION ALL ◦ SQL Expression können auch in WHERE, HAVING, … ◦ Neue SQL Expressions  CONCAT, LPAD, LENGTH, … ◦ Subqueries als Source für INSERTS ◦ GTT Global Temporary Tables ◦ … CDS Views
  • 21. CDS Views vs. Open SQL Expressions • Re-Use Scenarien • Views können verschachtelt werden!! • CDS Features • ASSOCIATION, UNION, UNION ALL, Mengen bzw. Währungs Umrechnungen CDS Views Open SQL • Einmalverwendungen • FOR ALL ENTRIES
  • 23.  Bildschrimdaten aktualisieren bisher ◦ Useraktion (PAI oder Control-Events) ◦ „Polling“ CL_GUI_TIMER ◦ ( JavaScript ) ABAP Channels
  • 24.  Datenaustausch Sessions/Benutzer bisher ◦ SAP-Memory (SET/GET Parameter) ◦ ABAP-Memory ( EXPORT/IMPORT) ◦ Shared Objects ◦ Datenbank ABAP Channels
  • 25.  ABAP Push Channels - APC ◦ Kommunikation zwischen Client und Server ◦ Bi-direktional: Server und Client ◦ WebSocket Protocol  ABAP Message Channels - AMC ◦ Kommunikation zwischen Benutzersessions ◦ Publish–Subscribe Model ◦ AppServer übergreifend ABAP Channels
  • 26. SAP System App Server 2 User 2 Session 1 App Server 1 User 1 Session 1 User 2 Session 2 ABAP Messaging Channel Framework ABAP Channels - Überblick APC Send/Receive AMC Receive AMC Send AMC Subscribe
  • 27.  LIVE DEMO - Szenario ◦ Benutzer erstellt Fehlerticket ◦ Supportmitarbeiter erhält Ticket ◦ Monitor im SAP GUI ABAP Channels
  • 28.  LIVE DEMO ◦ Benutzer erstellt Fehlerticket ◦ Supportmitarbeiter erhält Ticket ◦ Monitor im SAP GUI ABAP Channels – Live Demo
  • 29. Ausdrücke, Funktionen und interne Tabellen SP02 SP05 SP08
  • 30.  Konstruktorausdrücken / Inline-Deklarationen ◦ VALUE ◦ NEW ◦ CONV ◦ COND/SWITCH ◦ DATA() ◦ FIELD-SYMBOL() Konstruktorausdrücken / Inline-Deklarationen
  • 31. DATA(lt_but000) = VALUE bup_but000_t( ). " TYPE STANDARD TABLE OF BUT000 DATA(ltr_but000) = NEW bup_but000_t( ). "bisher DATA lt_but000 TYPE bup_but000_t. DATA ltr_but000 TYPE REF TO bup_but000_t. Konstruktorausdrücken / Inline-Deklarationen
  • 32. LOOP AT lt_but000 ASSIGNING FIELD-SYMBOL(<lwa_but000>). ... ENDLOOP. LOOP AT lt_but000 INTO DATA(lwa_but000). ... ENDLOOP. "bisher DATA lwa_but000 LIKE LINE OF lt_but000. LOOP AT lt_but000 INTO lwa_but000. ... ENDLOOP. Konstruktorausdrücken / Inline-Deklarationen
  • 33.  Aufbau Rangetable "wfdst_partner_ranges_tab = TYPE RANGE TABLE FOR BU_PARTNER DATA(lrt_partner) = VALUE wfdst_partner_ranges_tab( sign = 'I' option = 'EQ' ( low = 1 ) ( low = 2 ) ( low = 3 ) ). * "bisher DATA lrt_partner TYPE wfdst_partner_ranges_tab. DATA: lrwa_partner LIKE LINE OF lrt_partner. lrwa_partner-sign = 'I'. lrwa_partner-option = 'EQ'. lrwa_partner-low = 1. APPEND lrwa_partner TO lrt_partner. lrwa_partner-low = 2. APPEND lrwa_partner TO lrt_partner. Konstruktorausdrücken / Inline-Deklarationen
  • 34.  Tabellenausdrücke – „READ TABLE“ ◦ ITab[ 2 ]  READ TABLE ITab INDEX 2 … ◦ ITab[ feld_a = `3` ]  READ TABLE Itab WITH KEY feld_a = `3` … Tabellenausdrücke / Schreibbare Ausdrücke
  • 35.  Lesender Zugriff DATA(lt_but000) = VALUE bup_but000_t( ( partner = 1 mc_name1 = 'DOMI' mc_name2 = 'BIGL' ) ( partner = 2 mc_name1 = 'JOHANN' mc_name2 = 'FOESSLEITNER' ) ). DATA(l_fullname) = |{ lt_but000[ 2 ]-mc_name1 } { lt_but000[ 2 ]-mc_name2 }|. " l_fullname = 'JOHANN FOESSLEITNER' "bisher FIELD-SYMBOLS: <lwa_but000> TYPE but000. READ TABLE lt_but000 ASSIGNING <lwa_but000> INDEX 2. CONCATENATE <lwa_but000>-mc_name1 <lwa_but000>-mc_name2 INTO l_fullname SEPARATED BY space. Tabellenausdrücke / Schreibbare Ausdrücke
  • 36.  Schreibender Zugriff lt_but000[ 2 ]-mc_name2 = 'Föß'. Tabellenausdrücke / Schreibbare Ausdrücke
  • 37.  Parameterübergabe Tabellenausdrücke DATA(lr_msg_srv) = cl_bsp_wd_message_service=>get_instance( ). IF lt_but000 IS NOT INITIAL. lr_msg_srv->add_message( EXPORTING iv_msg_type = 'E' iv_msg_id = '00' iv_msg_number = '000' iv_msg_v1 = lt_but000[ 1 ]-partner ). ENDIF.
  • 38.  MOVE-CORRESPONDING ITabs MOVE-CORRESPONDING für interne Tabellen DATA(lt_but000) = VALUE bup_but000_t( ( partner = 1 mc_name1 = 'DOMI' mc_name2 = 'BIGL' ) ( partner = 2 mc_name1 = 'JOHANN' mc_name2 = 'FOESSLEITNER' ) ). DATA lt_but020 TYPE TABLE OF but020. MOVE-CORRESPONDING lt_but000 TO lt_but020. "bisher DATA: lwa_but020 TYPE but020. FIELD-SYMBOLS: <lwa_but000> LIKE LINE OF lt_but000. LOOP AT lt_but000 ASSIGNING <lwa_but000>. MOVE-CORRESPONDING <lwa_but000> TO lwa_but020. APPEND lwa_but020 TO lt_but020. ENDLOOP.
  • 39.  Konstruktorausdruck: CORRESPONDING DATA(lrt_partner) = VALUE wfdst_partner_ranges_tab( sign = 'I' option = 'EQ' ( low = 1 ) ( low = 2 ) ( low = 3 ) ). TYPES: ltt_but000 TYPE TABLE OF but000. DATA lt_but000 TYPE ltt_but000. lt_but000 = CORRESPONDING #( lrt_partner MAPPING partner = low ). "bisher DATA: lwa_but000 TYPE but000. FIELD-SYMBOLS: <lrwa_partner> LIKE LINE OF lrt_partner. LOOP AT lrt_partner ASSIGNING <lrwa_partner>. MOVE-CORRESPONDING <lrwa_partner> TO lwa_but000. lwa_but000-partner = <lrwa_partner>-low. APPEND lwa_but020 TO lt_but020. ENDLOOP. CORRESPONDING
  • 40. Pro ◦ Weniger Hilfsvariablen ◦ Weniger LOOPs und READ TABLE ◦ Als Methodenparameter verwendbar ◦ Übersichtlicher ◦ Modernerer Programmierstil
  • 41. Contra ◦ Zunächst weniger übersichtlich/verständlich ◦ Komplexer Aufbau  Datenobjekte  Methodenaufrufen  Debugger
  • 42. Weitere Begriffe  WHILE/UNTIL  LET – Ausdrücke  boolesche Funktion  Tabellenfilterungen – Constructor FILTER  Gruppierung interner Tabellen - FOR  Constructor REDUCE  Prädikative Methodenaufrufe  OPTIONAL und DEFAULT bei Tableexpressions
  • 43. Ausblick 750  Klasse cl_abap_corresponding  IS INSTANCE OF und CASE TYPE OF  it_ref[ 3 ]->the_method( )
  • 45.  Sonstige interessante ABAP Neuerungen in SP5/SP8 ◦ MOVE-CORRESPONDING für interne Tabellen (SP5) ◦ WAIT UP TO – Angabe ab nun in Millisekunden möglich (SP8) ◦ Outer Joins – On-Condition nun auch <, <=, >, >=, <>, between und Literale verwendbar. ◦ Meshes  Spezielle Strukturen die als Komponenten interne Tabellen haben welche über Assoziationen verknüpft sind.  Der Zugriff erfolgt über Mesh-Pfade ◦ … Sonstiges