SAP

The largest ERP ecosystem, the highest day rates, and the steepest learning curve. Roughly a third of all ERP developers work in this world.

The product family

Product What it is
S/4HANA The current flagship. Runs only on HANA. On-prem, private cloud (RISE), or public cloud
ECC 6.0 / R/3 The legacy workhorse. Mainstream maintenance ends 2027, extended to 2030
Business One (B1) SMB product, completely separate codebase. .NET/Java SDK, SQL Server or HANA
Business ByDesign Cloud SMB/mid-market
SuccessFactors HCM (acquired)
Ariba Procurement network (acquired)
Concur Travel and expense (acquired)
Fieldglass Contingent workforce (acquired)
IBP Integrated Business Planning — supply chain planning
BTP Business Technology Platform — the extension and integration platform

Module codes (the vocabulary)

You will hear these constantly:

Code Module
FI Financial Accounting
CO Controlling (management accounting)
AA / FI-AA Asset Accounting
TR / FSCM Treasury / Financial Supply Chain Management
MM Materials Management (procurement + inventory)
SD Sales and Distribution
PP Production Planning
PP-PI Production Planning for Process Industries
QM Quality Management
PM / EAM Plant Maintenance / Enterprise Asset Management
PS Project System
WM / EWM Warehouse Management / Extended WM
TM Transportation Management
HCM / HR Human Capital Management
CS Customer Service
GTS Global Trade Services
BW / BI Business Warehouse
Basis The technical/administration layer

The technology stack

ABAP

SAP’s proprietary language. Verbose, English-like, with an integrated development environment inside the system.

DATA(lo_order) = NEW zcl_sales_order( iv_order_id = '4711' ).

SELECT vbeln, posnr, matnr, kwmeng
  FROM vbap
  INTO TABLE @DATA(lt_items)
  WHERE vbeln = @lv_order
    AND matnr IN @lr_materials.

LOOP AT lt_items INTO DATA(ls_item).
  IF ls_item-kwmeng > 0.
    " process
  ENDIF.
ENDLOOP.

Modern ABAP (7.4+) is far better than its reputation: inline declarations, string templates, table expressions, FOR loops, REDUCE, CORRESPONDING, and ABAP Unit for testing. If you learned ABAP from a 2005 tutorial, look again.

ABAP Objects — the OO subset. Use it. Procedural ABAP with global data is the legacy style and is discouraged in all current guidance.

The Data Dictionary (DDIC)

The metadata layer: tables, data elements, domains, structures, table types, search helps, lock objects. Everything is defined here, not in raw DDL.

Key table names to recognise

Table Contents
BKPF / BSEG Accounting document header / line items (ECC)
ACDOCA The Universal Journal — S/4HANA’s single line-item table replacing dozens
MARA / MARC / MARD Material general / plant / storage location
MBEW Material valuation
KNA1 / KNB1 / KNVV Customer general / company code / sales area
LFA1 / LFB1 Vendor general / company code
VBAK / VBAP Sales order header / items
LIKP / LIPS Delivery header / items
VBRK / VBRP Billing header / items
EKKO / EKPO Purchase order header / items
MKPF / MSEG Material document header / items
AFKO / AFPO Production order header / items
T001 Company codes
TCURR Exchange rates

ACDOCA is the defining change in S/4HANA. One table holds FI, CO, asset, and material ledger line items together, eliminating reconciliation between them. If someone says “the universal journal”, this is what they mean.

CDS Views

Core Data Services — define semantic views in the database, annotated for OData exposure, analytics, and authorisation.

@AbapCatalog.sqlViewName: 'ZISALESORDER'
@OData.publish: true
@Analytics.dataCategory: #CUBE
define view ZI_SalesOrder as select from vbak
  association [0..*] to ZI_SalesOrderItem as _Item on $projection.SalesOrder = _Item.SalesOrder
{
  key vbeln as SalesOrder,
      kunnr as SoldToParty,
      netwr as NetValue,
      waerk as Currency,
      _Item
}

This is the code-pushdown philosophy: aggregate in the database, don’t drag rows to the application server.

RAP — ABAP RESTful Application Programming

The current framework for building transactional apps and OData services. Behaviour definitions, projections, draft handling. This is what you learn for new development on S/4HANA.

Fiori / UI5

The modern UI. SAPUI5 is a JavaScript framework (MVC, XML views, OData models). Fiori is the design system and app catalogue on top of it.

Fiori Launchpad → tiles → apps
  Transactional apps  (create/change)
  Analytical apps     (KPIs, drill-down)
  Fact sheets         (360° object views)

BTP — Business Technology Platform

Where side-by-side extensions live: Cloud Foundry or Kyma runtimes, CAP (Cloud Application Programming model, Node.js or Java), HANA Cloud, Integration Suite (CPI), Build (low-code), Event Mesh, Identity Services.

“Clean core” means: extend on BTP, not in the ABAP stack. That is the official direction.

Extension mechanisms

Mechanism Notes
BAdI Business Add-In — the standard, upgrade-safe object-oriented hook
Enhancement spots / implicit enhancements Insert code at defined points
User exits / customer exits Older mechanisms, still present
Custom fields (key user extensibility) No-code field addition in S/4HANA
CDS extensions Extend released views
Side-by-side on BTP The strategic path
Modification Changing SAP code. Requires an access key. Avoid

Transports

Changes move between systems as transport requests:

DEV ──▶ QAS ──▶ PRD
     transport of copies / change requests

A transport contains objects (programs, tables, config). Key concepts: task vs request, release, import queue, transport of copies, and transport dependencies — release them in the wrong order and the import fails. This is a common source of go-live incidents.

Client concept

System PRD
 ├── Client 100  Production
 ├── Client 200  Training
 └── Client 300  Sandbox

MANDT (client) is the first field of nearly every table and the first field of every index. It’s SAP’s multi-tenancy, invented in the 1990s and still the correct pattern. Cross-client objects (programs, DDIC definitions) are shared across all clients — which surprises people.

Learning path

1. Navigation and the transaction concept        (2 weeks)
2. One functional module end-to-end — pick SD or MM  (2 months)
3. ABAP fundamentals + Open SQL + internal tables (2 months)
4. ABAP Objects, ABAP Unit                        (1 month)
5. DDIC, CDS views                                (1 month)
6. Reports (ALV), forms, BAPIs, enhancements      (2 months)
7. OData, RAP, Fiori/UI5 basics                   (2 months)
8. BTP, CAP, Integration Suite                    (2 months)

Realistically 12–18 months to productive, 3+ years to senior. That barrier is exactly why the rates are high.

Free learning resources

  • openSAP — free MOOCs from SAP itself
  • SAP Learning Hub — some free tiers
  • SAP Community (community.sap.com) — blogs and Q&A; the blogs are genuinely good
  • SAP Help Portal — official documentation
  • SAP API Business Hub — the released API catalogue
  • BTP trial account — free tier with an ABAP environment
  • developers.sap.com — tutorials and mission-based learning

Certifications

  • C_TAW12 — ABAP with SAP NetWeaver (the classic developer cert)
  • C_S4HANA family — functional and technical, per area
  • C_CPE / C_CPI — BTP extension and integration
  • Fiori/UI5 development certifications

Certifications open doors in the SAP world more than in most of software, largely because partners need certified headcount for their partner status.

Reality check

Pros: highest rates, longest projects, huge install base, deep and durable domain knowledge, worldwide demand, and a massive migration wave (ECC → S/4HANA) running through 2030.

Cons: long ramp-up, proprietary skills that don’t transfer, tooling that lags mainstream software engineering, and licence costs that keep you in enterprise environments.

The migration wave is the opportunity. Thousands of ECC customers must move to S/4HANA before 2030, and there are not enough people to do it.

Next