Enhancements
ABAP Developmentbeginner

Enhancements Part 1: SAP Enhancement Techniques Overview

Key takeaway

Understand how SAP standard behaviour is extended without modifying it: user exits, customer exits (SMOD/CMOD), Business Transaction Events, classic and new BAdIs, enhancement points — and why modifications are the last resort.

What this complete series covers

Learn how to choose and implement SAP enhancement techniques, including explicit/implicit enhancements, enhancement spots and clean-core alternatives.

Who it is for
Best for SAP consultants, developers, and learners who want a practical understanding of Enhancements.
Prerequisites
Basic SAP navigation and ABAP syntax help. For hands-on practice, use an ABAP system with ADT or the relevant ABAP development tools.
Final outcome
By the end, you should be able to choose the least risky extension technique, find the correct enhancement point and keep custom logic supportable.
  1. Part 1: Enhancements Part 1: SAP Enhancement Techniques Overview

    Choose SAP enhancement technology from business timing, released support and lifecycle risk: standard configuration first, then released BAdI or exit, explicit enhancement where ju

  2. Part 2: Enhancements Part 2: The Enhancement Framework Overview

    Understand SAP extensibility as a hierarchy of supported mechanisms—from configuration and released BAdIs to source-level enhancements—so new custom logic uses the least upgrade-sensitive option.

  3. Part 3: Enhancements Part 3: Implicit vs Explicit Enhancement Points

    Understand explicit enhancement points/sections versus implicit enhancement options, and prefer deliberate released extension contracts over opportunistic implicit enhancements in clean-core designs.

  4. Part 4: Enhancements Part 4: Finding Enhancements Using Debugging

    Find the correct SAP enhancement by tracing the exact business action, studying the call stack and data availability, then preferring documented exits or released BAdIs over arbitr

  5. Part 5: Enhancements Part 5: Implementing Explicit Enhancement Points and Sections

    Use explicit enhancement points and sections only where the source intentionally offers them, understanding that points add logic while sections can replace defined blocks and ther

  6. Part 6: Enhancements Part 6: Enhancement Spots and Implementations

    Understand enhancement spots as containers for enhancement options and BAdI definitions, and troubleshoot behavior by inspecting every active implementation, filter and activation

  7. Part 7: Enhancements Part 7: Implicit Enhancements — Power and Risk

    Use implicit enhancements only as a governed last resort because they depend on standard source structure and local implementation details that can change across upgrades even when

  8. Part 8: Enhancements Part 8: Switch-Controlled Enhancements (Switch Framework)

    Use configuration-driven switches to control enhancement rollout and emergency disablement without code transports, while keeping defaults, ownership and audit behavior explicit.

  9. Part 9: Enhancements Part 9: Performance and Safety in Enhancements

    Keep enhancement logic safe by minimizing work in standard transaction paths, using set-based reads, respecting the SAP LUW and avoiding remote calls or broad side effects that can

  10. Part 10: Enhancements Part 10: Enhancements in S/4HANA and Clean Core

    Apply a configuration-first, released-extension-first approach in S/4HANA: prefer key-user extensibility, released BAdIs and APIs before source-level enhancements, and govern unavo

System and release assumptions: Examples follow modern ABAP practices. Exact syntax, available APIs, and tools can vary by SAP release, so release-dependent points are called out where needed.

Explanation

📌 KEY POINTS
✅ An enhancement adds custom logic at a place SAP prepared (or allows); a modification changes SAP code itself.

✅ Techniques by age: user exits (FORMs in SAP includes) → customer exits (SMOD/CMOD function exits) → BTEs → classic BAdIs → Enhancement Framework (new BAdIs, enhancement points).

✅ Enhancements survive upgrades with little effort; modifications must be adjusted (SPAU) at every upgrade.

⚠️ Choose the technique SAP offers for the process — don't jump to implicit enhancements or modifications first.

━━━━━━━━━━━━━━━━━━━━
▶ WHAT THIS SERIES COVERS

  • Part 1 — enhancement techniques overview (this lesson)
  • Part 2 — Enhancement Framework overview
  • Part 3 — implicit vs explicit enhancement points
  • Part 4 — finding enhancements with debugging
  • Part 5 — explicit enhancement points and sections
  • Part 6 — enhancement spots and implementations
  • Part 7 — implicit enhancements: power and risk
  • Part 8 — switch-controlled enhancements
  • Part 9 — performance and safety
  • Part 10 — enhancements in S/4HANA and clean core

(BAdIs and SD user exits have their own series.)

━━━━━━━━━━━━━━━━━━━━
▶ 1. WHY ENHANCE

Every company has rules SAP does not ship: an extra validation on sales orders, a custom field on a document, a default value, a different output. You need a way to add them without breaking standard code.

━━━━━━━━━━━━━━━━━━━━
▶ 2. THE TECHNIQUES

  • User exits — empty FORM routines in SAP includes (MV45AFZZ, MV50AFZ1, RV60AFZZ in SD). Technically modifications, but SAP-reserved for customers; need an access key once.
  • Customer exits — SAP calls CALL CUSTOMER-FUNCTION '001', which executes function module EXIT_<program>_001. You write code in its Z include (ZX…), activated through a CMOD project. Enhancements are defined in SMOD (e.g. V45A0002). Also menu exits and screen exits.
  • Business Transaction Events (BTE) — FI/CO "open FI" (FIBF): publish-and-subscribe (P&S) or process interfaces; you assign your function module to an event.
  • Classic BAdIs — SE18/SE19, called via CL_EXITHANDLER.
  • Enhancement Framework (since NetWeaver 7.0) — new BAdIs (GET BADI / CALL BADI), explicit enhancement points/sections, implicit enhancement points, all grouped in enhancement spots.

━━━━━━━━━━━━━━━━━━━━
▶ 3. MODIFICATION

Changing SAP code directly (with an access key from SAP). Every upgrade/support package requires SPAU adjustment. Use only when no enhancement exists — and document it.

━━━━━━━━━━━━━━━━━━━━
▶ 4. HOW TO CHOOSE

  1. Is there configuration (customizing) for it? Use it.
  2. Is there a BAdI or BTE for the process? Use it.
  3. Customer exit or user exit? Use it (common in SD/MM).
  4. Explicit enhancement point? Use it.
  5. Implicit enhancement — carefully (Part 7).
  6. Modification — last resort.

━━━━━━━━━━━━━━━━━━━━
▶ STEP BY STEP

  1. In SMOD, display enhancement V45A0002 (SD default values) and its components.
  2. In SE38, open include MV45AFZZ and look at the USEREXIT_ FORMs.
  3. In SE18, display a BAdI (e.g. BADI_SD_SALES) and its methods.

✅ CHECKPOINT: you can name the enhancement techniques and choose the least invasive one.

Code example

ABAP Code
* ===== 1. User exit: FORM in SAP include MV45AFZZ (sales order) =====FORM userexit_save_document_prepare.* Runs before a sales order is saved; VBAK/XVBAP are available here  IF vbak-auart = 'ZOR' AND vbak-bstnk IS INITIAL.    MESSAGE e001(zsd).        " 'Customer PO number is required for ZOR orders'  ENDIF.ENDFORM. * ===== 2. Customer exit: SAP program calls =====*   CALL CUSTOMER-FUNCTION '001'*     EXPORTING ...*     IMPORTING ...* which runs function module EXIT_<program>_001.* You write code in its customer include ZX........ and activate the CMOD project.** Example: include ZXVVAU04 ... (depends on the enhancement found in SMOD)*   IF i_something = ...*     e_result = ...*   ENDIF. * ===== 3. Classic BAdI call inside SAP code =====*   CALL METHOD cl_exithandler=>get_instance*     CHANGING instance = l_badi.*   CALL METHOD l_badi->method_name ... * ===== 4. New BAdI call inside SAP code (Enhancement Framework) =====*   GET BADI lo_badi.*   CALL BADI lo_badi->method_name EXPORTING ... * ===== 5. Explicit enhancement point in SAP code =====*   ENHANCEMENT-POINT ep_name SPOTS es_spot_name. * ===== Which technique does SAP offer here? Check in this order =====*   Customizing -> BAdI/BTE -> customer/user exit -> explicit point -> implicit -> modification

Real project scenario

A company required a customer PO number for one sales order type. A developer first planned an implicit enhancement at the start of the save routine. A review showed that MV45AFZZ's USEREXIT_SAVE_DOCUMENT_PREPARE is the SAP-intended place, already used by the project for other checks.
The check was added there in a small FORM calling a validation class. At the next support package, no adjustment was needed, while two old modifications in the same system required SPAU work.

Common mistakes

  • Modifying SAP code when an exit or BAdI exists.
  • Using implicit enhancements as the first choice.
  • Not checking customizing before coding.
  • Forgetting to activate the CMOD project after coding a customer exit.
  • Scattering one business rule across several exits.

Best practices

  • Prefer customizing, then BAdIs/BTEs, then exits.
  • Document which enhancement contains which rule.
  • Keep exit code thin — call a class or FM.
  • Check existing implementations before adding new ones.
  • Treat modifications as last resort with approval.

Interview angle

Questions: "What enhancement techniques do you know?", "User exit vs customer exit?", "Enhancement vs modification?"
Strong answer: user exits are FORMs in SAP includes (MV45AFZZ); customer exits are function exits called via CALL CUSTOMER-FUNCTION, found in SMOD, implemented in ZX includes, activated in CMOD; BTEs for FI; classic and new BAdIs; enhancement points (explicit/implicit); modifications change SAP code and need SPAU adjustment — last resort.

Practice this lesson

Quick check

1. A PO number must be mandatory for sales order type ZOR. What should you check FIRST?

2. CMOD is used to:

3. Best practice for adding logic to SAP standard is:

Interview questions

1. What are field exits, and why should they generally be treated as legacy knowledge rather than a preferred enhancement technique?

Answer it in your own words first, then compare.

2. Differentiate a user exit from a customer exit. How would you choose the correct enhancement for a sales-order save requirement?

Answer it in your own words first, then compare.

Practice more with Interview AI →

Reference-verified: the steps are checked against official SAP documentation and tutorials, and object and field names in the sample code are checked for consistency. The code has not been compiled or run on an SAP system by ERPClimb. Syntax marked release-dependent varies by SAP release, so check it in your own system.

More lessons in this topic

Interview questions on this topic

Related SAP topics