SAP Extensibility Guide
1. In-App Extensibility
Scenario: Add a custom field 'Priority Level' to Sales Order header in SAP S/4HANA.
Steps:
1. Open Fiori App: Custom Fields and Logic. 2. Create a new field: - Business Context: Sales:
Sales Document - Field Name: ZZ_PRIORITY - Data Type: Code List 3. Enable for UI and OData
Service. 4. Implement custom logic using BAdI.
ABAP Code:
METHOD if_ex_sales_order~check_before_save.
IF sales_order-zz_priority IS INITIAL.
sales_order-zz_priority = 'MEDIUM'.
ENDIF.
ENDMETHOD.
2. Side-by-Side Extensibility
Scenario: Build a CAP-based app on SAP BTP to manage customer complaints.
Steps:
1. Create CAP project in SAP Business Application Studio: cds init complaint-app cds add hana cds
add fiori 2. Define data model in db/[Link]. 3. Implement service logic in srv/[Link] and
srv/[Link]. 4. Connect to S/4HANA via Destination & Cloud Connector using OData APIs. 5.
Deploy to SAP BTP Cloud Foundry.
CAP Data Model Example:
entity Complaints {
key ID : UUID;
CustomerID : String;
Description : String;
Status : String;
}
3. Classic Extensibility
Scenario: Add custom validation in Purchase Order using a BAdI.
Steps:
1. Go to SE18 → Find enhancement spot ME_PROCESS_PO_CUST. 2. Create implementation in
SE19. 3. Add ABAP logic. 4. Activate and test in transaction ME21N.
ABAP Code:
METHOD if_ex_me_process_po_cust~check.
LOOP AT im_item INTO DATA(ls_item).
IF ls_item-net_price > 10000.
MESSAGE 'Price exceeds limit' TYPE 'E'.
ENDIF.
ENDLOOP.
ENDMETHOD.
Flow Diagram: When to Choose Which
Extensibility