Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

It is mandatory to develop ABAP Cloud Standard compliant code where ever possible the default ABAP language version assigned to the packages should be "ABAP Cloud".   But due If the development is pure classic ABAP, i.e. exits or classic Badis then choose Standard ABAP for the dev id package, Due to a lack of compliant standard objects, if a development requires both types then the main dev id package should be ABAP Cloud and a child package needs to be created of type Standard ABAP with the same name root and "_CL" at the end. That allows us to follow ABAP Cloud standard as a mandatory guideline but legacy objects or classic ABAP as well. 


Note the package prefix in bold illustrates the requirement for the child package to reflect the parent package name in its prefix.

...

Classic user exits are implemented in Z includes. The name is mandated by SAP. For these the package ZCUSTOM exists. The dev id package, to be created under it, naming stays as is except that /SYQ/ is being replaced with Z. Standard ABAP to be picked for the package.


Rule

The name of the package must follow the prescribed pattern. The package name will use a prefix which clearly identifies its parent.

...

  1. A namespace prefix that indicates the owner of the object. The SAP standards for this are:

    • Objects starting with a /SYQ/ are considered Customer Objects. Syensqo has its own custom namespace.

    • Objects starting with ZZ1 /SYQ/ have been created with key user extensibility tools.
    • Objects starting with a Y are considered local Customer Objects only to be used for temporary POCs.

    • Objects starting with /…/ other than /SYQ/  have been created using a prefix namespace registered to another specific organization. This may be SAP or a SAP Partner.

    • All other objects belong to SAP

  2. In specific circumstances the type of repository object is encoded in the prefix, for example CL for Class or T for Table. Most repository objects are only accessed from the Object Navigator or the Project Explorer where they are organized by object type making encoding redundant. Encoding becomes important if the repository object is referenced in the source code where it can’t be seen in the context of the repository.

  3. A descriptive name for the object. This may contain encoded information about the functional area or business process that the object belongs to. The name needs to ensure that the functional alignment to the process reference model is clear.

...

Object Type

Pattern

Characters

Example

Adobe Form (with Fragments)

[NS][NAME]

30

/SYQ/MAIL_REDIRECTION_NOTICE

Adobe Form Interface 

[NS][NAME]

30

/SYQ/PRODUCT_FACT_SHEET

Message Class

[NS][NAME]

20

/SYQ/FI_MASTER_DATA

ABAP Transformation

[NS][NAME]

40

/SYQ/COST_OBJECT_TO_JSON

Authorization Object

[NS][NAME]

10

/SYQ/COSTC

Shared Object Area Class

[NS][NAME]

30

/SYQ/PRODUCT_CACHE

Key User Extensibility Apps

Key user extensibility apps like the Custom Fields & Logic applications are used to create custom fields and Badi implementations in a clean core compliant way. The fields can be added/ published to CDS model, Service model, UI & Reports, Email & Form templates. Clean core compliant BAdIs are also being implemented using the apps. 

...

Key User Extensibility Object Naming

...

Syntax

...

Convention

...

Example

...

Label / Description

...

<Meaningful Label or Description>

...

Order No.

...

Identifier

...

<SAP Prefix>_<Label>_<SAP Suffix>

...

ZZ1_OrderNo_BDC

...

Tooltip

...

<Meaningful Description>

...

Purchase Order Document Number

Release Contracts

In ABAP Cloud, the "Release Contract" is the formal mechanism that turns a custom object into a stable repository object and determines how it can be used or extended. Without this, the object remains "internal" and restricted. 

Contract types are:

  • Contract C0: Extend: This contract ensures stability at dedicated extension points in APIs to allow extensibility.

  • Contract C1: Use System-Internally: This contract ensures a technically stable public interface for use in custom development objects created in the ABAP development tools for Eclipse, or using key user apps like Custom Business Objects or Custom CDS Views.

  • Contract C2: Use as Remote API: This contract ensures a technically stable public interface for use as remote API.

  • Contract C3: Manage Configuration Content: This contract ensures a stable persistence for own configuration content that can be exported, imported, displayed, and edited using dedicated APIs and editors.

  • Contract C4: Use in ABAP-Managed Database Procedures: This contract ensures a technically stable public interface for use in ABAP-Managed Database Procedures (AMDP).

Contract type C0 is not to be used.

Contract type C1 and C2 are the main contract types.

Contract type C3 is implicitly set by SAP for all configuration tables and does not need to be set.

Contract type C4 is only for AMDP and optional.


Rule

In ABAP Cloud developments assign release contract C1 for locally used CDS views and classes and C2 for APIs.

Key User Extensibility Apps

Key user extensibility apps like the Custom Fields & Logic applications are used to create custom fields and Badi implementations in a clean core compliant way. The fields can be added/ published to CDS model, Service model, UI & Reports, Email & Form templates. Clean core compliant BAdIs are also being implemented using the apps. 


Key User Extensibility Object Naming

Syntax

Convention

Example

Label / Description

<Meaningful Label or Description>

Order No.

Identifier

/SYQ/<Label>_<SAP Suffix>

/SYQ/OrderNo_BDC

Tooltip

<Meaningful Description>

Purchase Order Document Number


The Custom Fields & Logic apps support different scope to be activated to use the new custom fields. Activation of all backend related field integrations for available oData, SOAP and BAPI to be done by default. UIs and Reports, Email and Form Templates, Business Scenarios based on specification requirement only. Other Extensibility apps to maintain forms templates, logos and more exist.


Rule

Use the Custom Fields & Logic app whenever possible to follow SAP's roadmap to Clean Core.

Business Event Consumption
Anchor

The Custom Fields & Logic apps support different scope to be activated to use the new custom fields. Activation of all backend related field integrations for available oData, SOAP and BAPI to be done by default. UIs and Reports, Email and Form Templates, Business Scenarios based on specification requirement only. Other Extensibility apps to maintain forms templates, logos and more exist.

Since these custom objects are managed by SAP, we will not use the /SYQ/ namespace, except for the package having the /SYQ/ naming. By keeping the standard naming prefix of ZZ1_ the key user extensibility objects are easily identified.

...

Rule

...

Use the Custom Fields & Logic app whenever possible to follow SAP's roadmap to Clean Core.

Business Event Consumption
Anchor
BusinessEventConsumption
BusinessEventConsumption

...

Custom Workflows need to be built using the Classic Business Workflow or Flexible Workflow or BTP BPA. That complies with SAP’s clean core approach. The business objects and custom logic have to be done in ABAP OO and RAP. 

Transaction code SWDD_SCENARIO instead of SWDD is used for Flexible Workflows. Using Flexible Workflows allows for flow configurations via the app “Manage Workflow”, but has many limitations. For the agent determination the new “Responsibility Management” app .If the agent determination has parallel branches with separate agent groups it may be needed to build the Workflow using BTP’s Build Process Automation. But that should be the exception and design should not have such complexity requiredis used.


Guide

S/4HANA Custom Workflows to be built as Flexible Workflows.

Rule

Cross-system Custom Workflows to be built in BTP BPA.

ABAP Authorization Group

Custom ABAP code and tables will have a custom authorization group assigned to them to provide the mechanism to restrict access to them by users. 

For these custom developments the table below will be used depending on the relevant functional module.  The object BRGRU has a maximum of four characters to create a unique authorization group with.  The object(s) will be created using transaction SE54.  

To have a consistent naming convention for custom authorization groups, use the entries in the table for tables and programs. 

SAP supplied authorization group &NC& will not be used at Syensqo   

Classic Workflows where no standard flexible WF exists. 

Rule

Cross-system Custom Workflows to be built in BTP BPA.

MODULE 

CODE 

ABAP 

TABLE 

Financial Accounting 

FI 

ZFI 

ZFIT 

Controlling 

CO 

ZCO 

ZCOT 

Investment Management  

IM 

ZIM 

ZIMT 

Treasury 

TR 

ZTR 

ZTRT 

Enterprise Control 

EC 

ZEC 

ZECT 

Material Management 

MM 

ZMM 

ZMMT 

Sales & Distribution 

SD 

ZSD 

ZSDT 

Production, Planning & Control 

PP 

ZPP 

ZPPT 

Product Data Management  

PDM 

ZPDM 

ZPXT 

Quality Management 

QM 

ZQM 

ZQMT 

Plant Maintenance 

PM 

ZPM 

ZPMT 

Service Management 

SM 

ZSM 

ZSMT 

Project Systems 

PS 

ZPS 

ZPST 

Personnel Development 

PD 

ZPD 

ZPDT 

Payroll Accounting 

PA 

ZPA 

ZPAT 

Organizational Management 

OM 

ZOM 

ZOMT 

Time Management 

TM 

ZTM 

ZTMT 

Rule  

ABAP Authorization Check

Authorization checks are needed to limit access to data or to restrict who can create/update/delete data.

The ABAP keyword AUTHORITY-CHECK is deprecated in ABAP Cloud. Instead, the authorization checks need to be added to CDS view entities using DCLs (Data Control Language) to restrict access or inside the RAP Behavior handler class.

The authorization object tracker has to be updated to allow the security team to incorporate the objects in Syway roles.


DCL authorization

RAP authorization

...

Rule  

Custom code must always be executed in the context of an authorized user, i.e. after an authorization check has been performed by the system. For code directly invoked by a user, an explicit authorization check must be performed before business or data access logic is executed. Relying purely on Start authorization is not enough to meet these criteria.

Custom code executed within an already-authorized context (e.g. most BAdIs, user exits, enhancement spot implementations, etc), is exempt from this requirement because the check would have been performed by the standard SAP code.


Custom Authorization Objects

Custom authorization objects will be created in SU21 or ADT with namespace /SYQ/ and assigned to authorization class /SYQ. ABAP language needs to be ABAP Cloud and the release contract C1 should be set to allow future proofing. At least the default authorization field ACTIVITY needs to be maintained.

Once created it needs to be used in the code or DCL or assigned to the object it controls via SU24.

SAP Screen Personas

SAP Screen Personas can be used to turn existing ERP Webgui screens into a simplified application for desktop and mobile. Native Ui5 apps are always preferred, but some transaction codes (T-codes) are still required to be used and can benefit from SAP Screen Personas especially to enable use on mobile devices.

...