ABAP state-of-the-art –
Do’s and Don’ts and How to be
Successful when going beyond
Simple Prototypes
Martin Fischer BridgingIT GmbH
Tobias Trapp AOK Systems GmbH
Motivation
Using new tools and frameworks is sometimes like a first ascent in
mountaineering: the challenges are quite high and the way to the
summit is not always clear and straight forward. But it’s also much
more interesting then hiking a well paved trail.
But the feeling on the summit must be beyond words!
Modern Application Architecture
• Domain Driven Development
• Digitization
• Expose Business Functions as (Micro) Services
• Beautiful User Interfaces
• Principle of One
Domain Driven Development
• Do’s:
• focus on the core domain and domain logic
• design business objects processes based on conceptual model
• think in term of resources: RESTful thinking
• avoid abstraction
• develop business processes and not frameworks
Digitization
• Do’s:
• three layer architecture
• support full automatic and mass processing as well as beautiful user
interfaces
• identify services that are corner stones of your digitization strategy (f.e. SAP
Hybris Commerce)
• learn API design: services should be small & fine-grained to perform a single
function
Beautiful Use Interfaces
• Do’s:
• follow Fiori Design Principles
• use Fiori Elements whenever possible
• Dont’s:
• don’t use Fiori Elements when using Design Thinking methodology
• don’t think that beautiful freestyle apps come for free
Principle of One
• Do’s:
• use strategic Frameworks: BOPF, BRFplus…
• apply the new ABAP programming model:
data model-> CDS -> BOPF -> Gateway -> Fiori
• look at SAP Partner Guides for S/4HANA
• Benefits:
• standardization & good maintainability
• high productivity (after training period)
• you are close to SAP’s technology strategy & tool support
The New Programming Model
SAP UI5 and Fiori Smart Elements
SAPNetWeaverASABAPUI
Core Data Services
SAP Gateway Service
Business Object Processing
With Smart Elements it is possible to
create SAP Fiori Apps without coding
• SAP Fiori Apps as Frontend
• SAP Gateway Services
• Data and Application Modelling: CDS
• Implement Business Logic with BOPF
The back-end integration is done via
OData-based SAP Gateway Services
CDS is used for modelling data and the
BOPF application
The whole business logic is
implemented in ABAP using the BOP
Framework
SAP introduces with S/4 HANA the new
Fiori Programming Model. This can also
be used for custom development!
Start the Climb now!
Even if the implementation of S/4
HANA is not on the horizon yet, start to
use the tools and frameworks
whenever possible!
Make your development team familiar
with new concepts in order to be ready
for the S/4 HANA climb!
BOPF, Gateway and BRF+ are there
since ages!
CDS can be used also with anyDB!
Further advantages:
• the development time will get
reduced due to efficient frameworks
• Maintenance efforts get reduced due
to more uniform code base
… be aware of pitfalls!
Attention:
• BOPF changed over time:
Dynpro based tooling vs.
ADT vs. modelling with CDS
=> SAP offers no migration
path for applications
• CDS with anyDB: the
performance can differ a lot
between different DBs
• CDS on releases below 7.5
may cause problems during
transports
Architecture Patterns
• spend effort on the data model based on
domain model
• create business objects
• identify services as cornerstone for
digitization:
• how can they outshine competitors?
• use user journeys for validation
• create internal & external APIs
• use ABAP package concept
• apply TDD & develop Unit Tests
• usage of ABAP OO & modern ABAP syntax
is evident so we don’t mention it in the
rest of this lecture
Architecture Nightmares
• application design as generic
frameworks that can work
with any business object
• generic persistence esp. XML
• batch-driven architecture
• reuse without use case
• don’t start developing
frameworks – they have the
tendency to constrict yourself
What may
cause problems?
• ABAP CDS on anyDB
• CDS lifecycle problems
• Fiori UIs with more than 1 business object
• limitations of OData V2
• missing Gateway features
• missing features of Fiori Smart Elements in
NW 7.5
• wishful thinking: “this feature is necessary and
should be there – so I base my design on it
without doing a prototype”
• missing skills within development team
How to go Directly
to Hell when Using CDS
• ignore warnings during activation
• fix activation errors with the debugger
• reuse between different software
components & transport layers
• mixing analytical & transactional models
• reuse between applications unless you
don’t have a good plan (I confess I don’t
have - so I don’t do it)
• too complex code pushdown to
S/4HANA with CDS: try analytical CDS
and use ADMP when necessary
Avoid cyclic CDS models
whenever possible
• they make it complex
• they have lifecycle problems:
https://help.sap.com/doc/abapd
ocu_750_index_htm/7.50/de-
DE/abenddic_cds_cycle_problem
s.htm
• use them only in BOPF models -
you can’t avoid them
• transport early
• apply OSS notes when transport
problems occur
Best Practices for CDS
Models
• start with NW 7.5
• get latest version of ADT tools
• use DCL
• follow SAP Guidelines for anyDB:
https://tinyurl.com/SAP-ABAP-CDS-on-anyDB
• check whether your DB platform supports
the features you use
• do performance testing – even on HANA
• governance of CDS models
• get SQL skills in your team – f.e. SAP BW
experts can help you
• check DB versions and get DB admins on
board
Apply CDS Patterns &
Conventions of S/4HANA
Consumption Views
different views for transactional UIs
(RDS, transient data), Analytics
Interface Views
public & stable – foundation für BOPF object
Basic Views
Projection of DB table used for Draft
Database
Best Practices for Backend
Development of UIs
• study CDS UI annotations
• be prepared that there are no
annotations for domain values
• complex search helps are a
challenge
• follow NW roadmap: complex
types for function imports are
supported not till NW 7.51 f.e.
Best Practices for Fiori
Development
• keep high UI5 level
• apply Fiori Design Principles:
https://experience.sap.com/
• use Smart Elements – but be
aware of missing features
(read the documentation)
• use Drafts (NW 7.51 and
higher)
What to do without
Drafts?
• use optimistic locking concept
• follow SAP floorplan:
• save data when moving from
master to detail and back
• SAP Web IDE will help you when
there is no ACTIVATE function
• if you don’t follow that advice
trouble will occur when
temporal GUIDs remain
because of failing validations
Be Aware of Limitations
of Auto Exposure
• auto exposure replaces Gateway programming
• you cannot navigate from one
#TO_COMPOSITION_ROOT view to another BO‘s
associated objects
Picture taken from SAP Library
https://help.sap.com/viewer/cc0c305d2fab47bd80
8adcad3ca7ee9d/7.5.9/en-
US/79cb3bf4eafd4af9b39bc6842e5be8bd.html
Use Referenced Data Sources
• use OData Service Based on a
Referenced Data Source (RDS) –
NW 7.5ff
• read Documentation in SAP
Library & André Fischer’s blogs
about RDS:
https://blogs.sap.com/2016/06/
02/odata-service-development-
with-sap-gateway-using-cds-via-
referenced-data-sources-how-to-
implement-updates/
BOPF model
RDS based on
Consumption view
on top of BOPF
model +
SEGW programming
for updates
Transient Data
for Fiori Apps
• BOPF exposed as CDS doesn’t supports virtual
elements in NW 7.51
• IMHO there are some missing features – so I
recommend prototyping
Picture taken from SAP Library
https://help.sap.com/viewer/cc0c305d2fab47bd808adcad3ca7ee9d/1709.001/en-
US/a7fc007921d44263b09ccc092392b05f.html

ABAP State of the Art

  • 1.
    ABAP state-of-the-art – Do’sand Don’ts and How to be Successful when going beyond Simple Prototypes Martin Fischer BridgingIT GmbH Tobias Trapp AOK Systems GmbH
  • 2.
    Motivation Using new toolsand frameworks is sometimes like a first ascent in mountaineering: the challenges are quite high and the way to the summit is not always clear and straight forward. But it’s also much more interesting then hiking a well paved trail. But the feeling on the summit must be beyond words!
  • 3.
    Modern Application Architecture •Domain Driven Development • Digitization • Expose Business Functions as (Micro) Services • Beautiful User Interfaces • Principle of One
  • 4.
    Domain Driven Development •Do’s: • focus on the core domain and domain logic • design business objects processes based on conceptual model • think in term of resources: RESTful thinking • avoid abstraction • develop business processes and not frameworks
  • 5.
    Digitization • Do’s: • threelayer architecture • support full automatic and mass processing as well as beautiful user interfaces • identify services that are corner stones of your digitization strategy (f.e. SAP Hybris Commerce) • learn API design: services should be small & fine-grained to perform a single function
  • 6.
    Beautiful Use Interfaces •Do’s: • follow Fiori Design Principles • use Fiori Elements whenever possible • Dont’s: • don’t use Fiori Elements when using Design Thinking methodology • don’t think that beautiful freestyle apps come for free
  • 7.
    Principle of One •Do’s: • use strategic Frameworks: BOPF, BRFplus… • apply the new ABAP programming model: data model-> CDS -> BOPF -> Gateway -> Fiori • look at SAP Partner Guides for S/4HANA • Benefits: • standardization & good maintainability • high productivity (after training period) • you are close to SAP’s technology strategy & tool support
  • 8.
    The New ProgrammingModel SAP UI5 and Fiori Smart Elements SAPNetWeaverASABAPUI Core Data Services SAP Gateway Service Business Object Processing With Smart Elements it is possible to create SAP Fiori Apps without coding • SAP Fiori Apps as Frontend • SAP Gateway Services • Data and Application Modelling: CDS • Implement Business Logic with BOPF The back-end integration is done via OData-based SAP Gateway Services CDS is used for modelling data and the BOPF application The whole business logic is implemented in ABAP using the BOP Framework SAP introduces with S/4 HANA the new Fiori Programming Model. This can also be used for custom development!
  • 9.
    Start the Climbnow! Even if the implementation of S/4 HANA is not on the horizon yet, start to use the tools and frameworks whenever possible! Make your development team familiar with new concepts in order to be ready for the S/4 HANA climb! BOPF, Gateway and BRF+ are there since ages! CDS can be used also with anyDB! Further advantages: • the development time will get reduced due to efficient frameworks • Maintenance efforts get reduced due to more uniform code base
  • 10.
    … be awareof pitfalls! Attention: • BOPF changed over time: Dynpro based tooling vs. ADT vs. modelling with CDS => SAP offers no migration path for applications • CDS with anyDB: the performance can differ a lot between different DBs • CDS on releases below 7.5 may cause problems during transports
  • 11.
    Architecture Patterns • spendeffort on the data model based on domain model • create business objects • identify services as cornerstone for digitization: • how can they outshine competitors? • use user journeys for validation • create internal & external APIs • use ABAP package concept • apply TDD & develop Unit Tests • usage of ABAP OO & modern ABAP syntax is evident so we don’t mention it in the rest of this lecture
  • 12.
    Architecture Nightmares • applicationdesign as generic frameworks that can work with any business object • generic persistence esp. XML • batch-driven architecture • reuse without use case • don’t start developing frameworks – they have the tendency to constrict yourself
  • 13.
    What may cause problems? •ABAP CDS on anyDB • CDS lifecycle problems • Fiori UIs with more than 1 business object • limitations of OData V2 • missing Gateway features • missing features of Fiori Smart Elements in NW 7.5 • wishful thinking: “this feature is necessary and should be there – so I base my design on it without doing a prototype” • missing skills within development team
  • 14.
    How to goDirectly to Hell when Using CDS • ignore warnings during activation • fix activation errors with the debugger • reuse between different software components & transport layers • mixing analytical & transactional models • reuse between applications unless you don’t have a good plan (I confess I don’t have - so I don’t do it) • too complex code pushdown to S/4HANA with CDS: try analytical CDS and use ADMP when necessary
  • 15.
    Avoid cyclic CDSmodels whenever possible • they make it complex • they have lifecycle problems: https://help.sap.com/doc/abapd ocu_750_index_htm/7.50/de- DE/abenddic_cds_cycle_problem s.htm • use them only in BOPF models - you can’t avoid them • transport early • apply OSS notes when transport problems occur
  • 16.
    Best Practices forCDS Models • start with NW 7.5 • get latest version of ADT tools • use DCL • follow SAP Guidelines for anyDB: https://tinyurl.com/SAP-ABAP-CDS-on-anyDB • check whether your DB platform supports the features you use • do performance testing – even on HANA • governance of CDS models • get SQL skills in your team – f.e. SAP BW experts can help you • check DB versions and get DB admins on board
  • 17.
    Apply CDS Patterns& Conventions of S/4HANA Consumption Views different views for transactional UIs (RDS, transient data), Analytics Interface Views public & stable – foundation für BOPF object Basic Views Projection of DB table used for Draft Database
  • 18.
    Best Practices forBackend Development of UIs • study CDS UI annotations • be prepared that there are no annotations for domain values • complex search helps are a challenge • follow NW roadmap: complex types for function imports are supported not till NW 7.51 f.e.
  • 19.
    Best Practices forFiori Development • keep high UI5 level • apply Fiori Design Principles: https://experience.sap.com/ • use Smart Elements – but be aware of missing features (read the documentation) • use Drafts (NW 7.51 and higher)
  • 20.
    What to dowithout Drafts? • use optimistic locking concept • follow SAP floorplan: • save data when moving from master to detail and back • SAP Web IDE will help you when there is no ACTIVATE function • if you don’t follow that advice trouble will occur when temporal GUIDs remain because of failing validations
  • 21.
    Be Aware ofLimitations of Auto Exposure • auto exposure replaces Gateway programming • you cannot navigate from one #TO_COMPOSITION_ROOT view to another BO‘s associated objects Picture taken from SAP Library https://help.sap.com/viewer/cc0c305d2fab47bd80 8adcad3ca7ee9d/7.5.9/en- US/79cb3bf4eafd4af9b39bc6842e5be8bd.html
  • 22.
    Use Referenced DataSources • use OData Service Based on a Referenced Data Source (RDS) – NW 7.5ff • read Documentation in SAP Library & André Fischer’s blogs about RDS: https://blogs.sap.com/2016/06/ 02/odata-service-development- with-sap-gateway-using-cds-via- referenced-data-sources-how-to- implement-updates/ BOPF model RDS based on Consumption view on top of BOPF model + SEGW programming for updates
  • 23.
    Transient Data for FioriApps • BOPF exposed as CDS doesn’t supports virtual elements in NW 7.51 • IMHO there are some missing features – so I recommend prototyping Picture taken from SAP Library https://help.sap.com/viewer/cc0c305d2fab47bd808adcad3ca7ee9d/1709.001/en- US/a7fc007921d44263b09ccc092392b05f.html