...
- Define the principles and rules for SAP software development at Syensqo
- Provide an unambiguous set of technical guidelines reflecting modern development practices in an SAP environment.
- Set the expectations for code quality.
Development Practices
...
Behaviors and Expectations
It is the expectation at Syensqo that a level of software development professionalism is maintained by all development teams engaged in development activities, regardless of the size, scope or system. The following section will outline techniques and practices that all teams are expected to follow to ensure that development at Syensqo achieves a high level of quality, robustness and user acceptance.
...
All modern languages offer a code organisational organizational capability. Without a code organisational organizational structure in place code is added without thought to its purpose causing the code base to deteriorate quickly.
A well organised organized code base avoids this outcome by providing a level of architecture to guide development.
...
Layers apply dependencies from the top down. From the diagram above, the Presentation layer depends on all other layers, while the Domain Infrastructure layer has no immediate dependencies. The order of the layers shown above is what is commonly used.
...
When re-using existing code ensure the abstraction is right. If not, duplication appropriate to the context is the best approach – favor simplicity before generality if both options are equally feasible.
User Interface Framework
Syensqo has invested in a diverse SAP platform which spans both hosted ABAP based applications for delivering core business suite functionality and cloud-based applications such as Success Factors for HR, C4C for CRM and Concur for Travel Management. Delivery of these applications will be primarily via a Web Browser, and additional UX concerns such as responsive design for Mobile and Tablet users’ needs to be considered when developing custom user interfaces or extending existing applications.
To support the development and extension of these new applications SAP has delivered the UI Development Toolkit for HTML5 (SAPUI5) which is a UI framework based on Jquery, HTML5 and CSS3. This framework is designed to provide a modern web experience for consumer grade applications and casual enterprise users by enabling the development of highly interactive and focused applications that support responsive design. SAPUI5 applications can be targeted at desktop, tablet and mobile phone users.
SAPUI5 apps are compliant with the SAP UX Strategy and deliver on the Fiori UX experience. The Fiori Elements framework allows you to generate UI5 apps based on meta data additions in CDS views and RAP. If the required app is targeted to expert users, or has a higher complexity than Fiori Elements can handle, a Freestyle app needs to be developed. Freestyle apps start with a blank canvas. These apps can be built in SAPUI5 or React. All SAPUI5 apps can be deployed on either S/4Hana or BTP. React apps can only be deployed to BTP.
ABAP Dynpro is not allowed in custom development. If there is a legitimate requirement to transform an existing Dynpro application to conform to the Fiori UX experience, and a suitable standard SAPUI5 or Web Dynpro ABAP application cannot be used, and a custom development is not deemed appropriate, then SAP Screen Personas can be used to transform the Dynpro to a Fiori type User Interface.
SAP has positioned the Business Technology Platform (BTP) as the extension platform for all SAP Solutions. When building front end extensions using the BTP, the SAPUI5 framework or React JS is to be used.
The following table illustrates the preferred UI framework for custom developments for several possible use cases.
Use Case | Dynpro/ Floor Plan Manager WDA | Fiori Elements | Freestyle (SAP UI5/React JS) |
Single purpose focused application or casual use | |||
Transactional application targeted at an expert user | |||
Responsive Design; Support for tablet or mobile phone. |
Rule | Choose the appropriate UI framework based on the use case. |
Patterns
Software Patterns provide generic solutions to well-known problems in software development. A pattern provides an approach that can be contextualised to a specific implementation. Software patterns provide a common language for developers to use; there is no ambiguity, and new team members don’t require problem domain knowledge to understand what the pattern does.
Patterns, by applying a known approach, drive software architecture away from haphazard collections of classes and functions towards a structured, maintainable solution. For example, the Model View Controller pattern is used to ensure a clear Separation of Concerns in UI development while the Strategy pattern is used to allow application logic to be dynamically substituted at runtime.
Rule | Use patterns where appropriate. |
Dependency Inversion
Dependency inversion is a process used in software development to manage the coupling between components. The ability to test code using test doubles is contingent of components being loosely coupled; allowing the substitution of “fakes” during testing and the substitution of real components at runtime.
Loosely coupled software allows for dependencies to be upgraded as the system evolves without requiring cross system changes.
The key to loose-coupling through dependency inversion is using abstraction to represent what is needed from a dependency. From an implementation perspective, this generally means using an interface rather than a specific class or function but will vary from language to language. From an architectural perspective the interface belongs to the same layer as the caller, whereas the concrete implementation will be from any of the layers that can use the component.
Consider the following example:
This is a common dependency example for a 3-tier architecture; Class A, the User Interface uses Business Logic from Class B, which in turn accesses the Database using utilities in Class C. Each class is tightly coupled together resulting in a rigid architecture; a change in one class will likely force a change in the others. If a test for the Business Logic is written, the database must be used significantly impacting the testing approach.
If we apply the dependency inversion principle, adding interfaces as abstractions for the dependencies each tier requires, the class diagram can be redrawn as follows.
When dependency inversion is applied, dependencies oppose the flow of control. Each class now depends on the “_Needs” abstraction. This can be provided by the relevant architectural layer, or a test double created to support testing. At runtime, the dependency is provided to the class when it is constructed or passed to a function or method when it is needed.
Using dependency inversion also guides architectural layering. As discussed in Code Organisation, layers provide a technical separation of concerns. Layers also provide rules on dependencies by enforcing the rule that only upper layers can depend on lower layers, while lower layers have no knowledge of upper layers.
Time Zone Handling
Date and time values must be expressed in such a way that there is no ambiguity about the time zone of the date/time value. A format described in the ISO 8601 standard must be used to represent dates and times. Where specific technical limitations prevent this (e.g. SAP-standard database tables which store dates in the YYYYMMDD format).
Rule | Only use formats defined in ISO 8601 for representing date and time values, unless a specific technical limitation makes this impossible.
|
Development Tool Decision Trees
The following set of decision trees shows the decision path to take to find the right development tool and approach to deliver compliant objects in SAP.
Workflow
Analytics
Reporting
Metrics
Integration Process
APIM Management/CI/Event Mesh
System Interface
Enhancement
Rule | UI Adaptation and clean core enhancement points are preferred. |
Rule | Standard modification and implicit enhancements are not allowed by default and require specific DA approval. |
Standard Modification process
- Exact object(s) that require modification or implicit enhancement are identified and listed.
- DA forum to explicitly approve the modification through custom development request process.
- Critical Developer Role is updated with the requested SAP standard objects (exact name will be mentioned in S_DEVELOP object).
- Access will be provided to the assigned developer to complete the development.
- Implicit Enhancements are treated as standard modifications.
Form (Output)
User Interface
Rule | Fiori UI5 App is preferred for any enhancements of UI. |
Rule | Neptune’s DX platform to be used for mobile apps. |
...
Rule
...
Patterns
Software Patterns provide generic solutions to well-known problems in software development. A pattern provides an approach that can be contextualised to a specific implementation. Software patterns provide a common language for developers to use; there is no ambiguity, and new team members don’t require problem domain knowledge to understand what the pattern does.
Patterns, by applying a known approach, drive software architecture away from haphazard collections of classes and functions towards a structured, maintainable solution. For example, the Model View Controller pattern is used to ensure a clear Separation of Concerns in UI development while the Strategy pattern is used to allow application logic to be dynamically substituted at runtime.
Rule | Use patterns where appropriate. |
User Interface Framework
Syensqo has invested in a diverse SAP platform which spans both hosted ABAP based applications for delivering core business suite functionality and cloud-based applications such as Success Factors for HR, C4C for CRM and Concur for Travel Management. Delivery of these applications will be primarily via a Web Browser, and additional UX concerns such as responsive design for Mobile and Tablet users’ needs to be considered when developing custom user interfaces or extending existing applications.
To support the development and extension of these new applications SAP has delivered the UI Development Toolkit for HTML5 (SAPUI5) which is a UI framework based on Jquery, HTML5 and CSS3. This framework is designed to provide a modern web experience for consumer grade applications and casual enterprise users by enabling the development of highly interactive and focused applications that support responsive design. SAPUI5 applications can be targeted at desktop, tablet and mobile phone users.
SAPUI5 apps are compliant with the SAP UX Strategy and deliver on the Fiori UX experience. The Fiori Elements framework allows you to generate UI5 apps based on meta data additions in CDS views and RAP. If the required app is targeted to expert users, or has a higher complexity than Fiori Elements can handle, a Freestyle app needs to be developed. Freestyle apps start with a blank canvas. These apps can be built in SAPUI5 or React. All SAPUI5 apps can be deployed on either S/4Hana or BTP. React apps can only be deployed to BTP.
ABAP Dynpro is not allowed in custom development. If there is a legitimate requirement to transform an existing Dynpro application to conform to the Fiori UX experience, i.e. for a mobile device screen, or to simplify the UI and a suitable standard SAPUI5 cannot be used, then SAP Screen Personas can be used to transform the Dynpro to a Fiori type User Interface.
SAP has positioned the Business Technology Platform (BTP) as the extension platform for all SAP Solutions. When building front end extensions using the BTP, the SAPUI5 framework or React JS is to be used.
The following table illustrates the preferred UI framework for custom developments for several possible use cases.
Use Case | Dynpro/ Floor Plan Manager WDA | Fiori Elements | Freestyle (SAP UI5/React JS) |
Single purpose focused application or casual use | |||
Transactional application targeted at an expert user | |||
Responsive Design; Support for tablet or mobile phone. |
Rule | Choose the appropriate UI framework based on the use case. |
Reporting
Realtime analytics will be restricted to small data sets so as to not impact performance on the source system.
This is typical of generic analysis of financial data vs plan for say the current month for a company. The same could be applied to the material ledger.
In these scenarios, you would want to apply the restriction to the dataset via parameters or filters in the CDS view.
Besides small data sets, we also want to avoid cases where data sets are accessed frequently. The concept is to cater for ad-hoc requests rather than be a frequently recurring path to access data.
The CDS views are using associations, which means that master data is only accessed on demand. This does result in an efficient data access request.
Other SAP development tools to be considered where appropriate:
- Custom Analytical Queries (F1572) - however, this uses deprecated views rather than projections
- Manage KPI's and Reports (F2814)
Extraction of data to be acquired in Datasphere will require a delta scenario by way of Change Data Capture (CDC) being applied to the CDS view. In this case you would not want to have parameters or filters. If no fields available for a timestamp, then a pseudo-delta can be used where for example the current month can be extracted in full.
Rule | Realtime analytics only to be used for small data sets that are accessed on an ad-hoc basis. |
Development Tool Decision Trees
The following set of decision trees shows the decision path to take to find the right development tool and approach to deliver compliant objects in SAP.
BTP vs S/4HANA on stack vs Others
Workflow
Analytics
Integration Process
SCPI - Integration Development Process
APIM Management/CI/Event Mesh
System Interface
Enhancement
Form (Output)
User Interface
Link to the original file containing the drawings: SAP Development Approach drawings
Development Process
Every development requirement must go through four phases as shown in below picture. Failure to comply results in a “no-go” decision at go-live.
...
While onboarding new resources to the development team it is mandatory for them to read, understand and acknowledge the Development Approach document and relevant Standards.
This acknowledgement is a pre-requisite to approving the SAP user provisioning.
...
Standard and Guideline | Link |
SAP Development Neptune Standards | |
SAP Integration Development Standards mobile App Development | |
SAP Analytics and Reporting Development Standards | SAP Analytics and Reporting Standards |











