After discussing side-by-side extensions for S/4HANA in the second blog in this series, we will focus on in-app extensions in this blog. Over time, SAP has accumulated a variety of technologies that allow custom code to be executed in the context of a standard SAP process: customer includes (e.g. MV45AFZZ), SMOD/CMOD user exits, BTEs, BAdIs (new and old) etc. For the purpose of this discussion we will use the term “user exit” for all technologies combined. The evolution of user exit technologies from the early days of SAP R/3 to today is instructive to understand the motivation behind the approach SAP took with S/4HANA. In the earliest days, user exits allowed for any kind of change inside the process (i.e. all variables were available for change). This puts the responsibility to keep the solution stable on the developer of the user exit, adding risk. Each subsequent user exit technology SAP rolled out (SMOD/CMOD, BTEs, BAdIs) added safeguards by restricting the scope of what could be changed in a user exit. This resulted in generally more stable solutions as the potential for a user exit to have unintended consequences was limited. This was undermined by the fact that no user exit technology was ever discontinued by SAP. (In fact, MV45AFZZ, one of the oldest and most intrusive user exits in SAP, is still widely used.)
In S/4HANA, SAP has changed this strategy. Depending on the edition, some older user exit technologies are no longer available. Especially in cloud solutions much tighter restrictions for user exits are necessary to ensure a stable solution. The new extension framework is broken into three layers: classic extensibility, managed extensibility and key user extensibility. These are described in principle in the first blog in this series.
Classic extensibility is limited to the on-premise edition of S/4HANA and provides full access to ABAP, HANA and development tools. This means it relates closely to the existing framework in SAP ERP. Managed extensibility provides a limited set of APIs and is expected to be used mostly in the cloud editions of S/4HANA. The solution offers a limited-scope set of ABAP and is limited to use a ‘public model,’ including APIs, BAdIs, CDS views etc. This separation of concerns ensures a lifecycle-stable solution as the public model will be stable across innovation cycles.
Key user extensibility is a new, powerful technology that we will discuss in more detail in the next blog in this series.