What Senior SAP Employers Actually Ask ABAP Developers With 5 Years of Experience

What Senior SAP Employers Actually Ask ABAP Developers With 5 Years of Experience

You’ve spent five years building reports, writing BAPIs, handling BADIs, and surviving production incidents. You know the transaction codes and the table names. Then the interviewer asks, “Walk me through a performance problem you hit in a real project and how you solved it in ABAP code.” Most 5-year candidates freeze here, not from lack of experience but because they prepped from question lists instead of scenario frameworks.

This guide covers ABAP interview questions for 5 years of experience in the structure senior SAP employers actually use: technical depth first, then scenario judgment, then ECC-vs.-S/4HAN awareness. Every section includes what the interviewer hears in a strong answer versus a weak one.

What Interviewers Expect vs. What Candidates Prepare 

Most candidates preparing for SAP ABAP interviews with 5 years of experience focus on definitions. Interviewers at the senior level don’t want definitions; they want judgment. They want to hear why you chose a BAPI over a direct INSERT, why you used a hashed table instead of a sorted one, and what broke the first time you deployed something to production.

The gap between a mid-level and a senior ABAP candidate isn’t knowledge breadth. It’s the ability to explain trade-offs under constrained performance vs. maintainability, OOP encapsulation vs. RFC compatibility, and legacy ECC patterns vs. Clean ABAP guidelines in S/4HANA.

Three things interviewers test at the 5-year mark that they don’t test at 2 years:

Performance ownership not just “I used FOR ALL ENTRIES,” but “I ran ST05, found 4,000 unnecessary reads, and replaced the loop with a JOIN.” Enhancement architecture not just “I know BADIs,” but “I chose an explicit BADI over a user exit because the project was on EHP6 and we needed multiple active implementations.” ECC-to-S/4HANA transition awareness the ability to name what changes, what breaks, and what disappears when a system moves to HANA.

How the Senior Interview Is Structured Internally 

Most senior ABAP interviews run in three layers. Understanding the structure lets you calibrate answer depth instead of over-explaining basics.

Layer 1 — Technical foundations (first 15 minutes): The interviewer confirms you actually know the language. Expect questions on internal table types, Open SQL vs. native SQL, modularization options, and visibility sections in OOP. These are screening questions answer them concisely, don’t pad.

Layer 2 — Applied judgment (middle 20–30 minutes): This is where most candidates lose points. Questions become scenario-based: “Given this requirement, what would you build and why?” Correct answers name the tool, justify the choice against alternatives, and mention at least one risk or limitation. Weak answers just name the tool.

Layer 3 — S/4HANA and modern ABAP awareness (last 10–15 minutes): For any role touching S/4HANA, the interviewer checks whether you understand what changed. CDS views replacing classic aggregation, AMDP for code pushdown, the deprecation of SELECT * on large HANA tables, Clean ABAP guidelines. You don’t need to be an expert — you need to demonstrate awareness and direction.

Q1. When do you use a HASHED table vs. a SORTED table?

This question tests whether you actually understand how ABAP internal tables are stored in memory — not just the names.

Table TypeAccess MethodKey ConstraintBest For
STANDARDLinear scan or indexDuplicates allowedSmall tables: insertion order matters
SORTEDBinary search (index access)Duplicates allowed by defaultRange reads, partial key access
HASHEDHash function (key only)A unique key mandatorySingle-record lookups on large volumes

” ── HASHED table: fastest for single-key READ TABLE ──────────

DATA: lt_customers TYPE HASHED TABLE OF kna1

                   WITH UNIQUE KEY kunnr.     ” Unique key required

READ TABLE lt_customers

  WITH TABLE KEY kunnr = ‘1000001’  ” O(1) hash lookup — no BINARY SEARCH needed

  ASSIGNING FIELD-SYMBOL(<ls_customer>).

” ── SORTED table: correct for range-based reads ──────────────

DATA: lt_items TYPE SORTED TABLE OF vbap

               WITH NON-UNIQUE KEY vbeln posnr.

LOOP AT lt_items

  WHERE vbeln = ‘4500001234’         ” Uses binary search on sorted key

  ASSIGNING FIELD-SYMBOL(<ls_item>).

  WRITE: / <ls_item>-matnr.

ENDLOOP.

What to say: “I use HASHED when I need single-record READ TABLE on a large dataset and the key is always fully specified. I use SORTED when I need range-based LOOP AT WHERE on a partial key. Using READ TABLE … BINARY SEARCH on a STANDARD table is what I’d flag in a code review as a performance risk.”

Q2. How do you call a BAPI and handle its return messages correctly?

Interviewers ask this because most junior developers ignore the RETURN table until something breaks in production.

DATA: lt_return  TYPE TABLE OF bapiret2,   ” BAPI return messages

      ls_header  TYPE bapisdh1,            ” Sales order header

      lt_items   TYPE TABLE OF bapisditm,  ” Line items

      lv_order   TYPE bapivbeln-vbeln.     ” Created order number

” ── Populate header and items before the call

ls_header-doc_type   = ‘TA’.

ls_header-sales_org  = ‘1000’.

ls_header-distr_chan = ’10’.

ls_header-division   = ’00’.

” Call the BAPI

CALL FUNCTION ‘BAPI_SALESORDER_CREATEFROMDAT2’

  EXPORTING

    order_header_in = ls_header

  IMPORTING

    salesdocument   = lv_order     ” Order number if creation succeeds

  TABLES

    return          = lt_return    ” Always check this — don’t skip

    order_items_in  = lt_items.

” ── Check for errors before committing

IF line_exists( lt_return[ type = ‘E’ ] ) OR

   line_exists( lt_return[ type = ‘A’ ] ).

  ROLLBACK WORK.                   ” Undo everything — BAPI doesn’t do this automatically

  ” Log errors or raise exception

ELSE.

  COMMIT WORK AND WAIT.            ” AND WAIT ensures commit is synchronous

ENDIF.

What interviewers watch for: Whether you check the RETURN table before calling COMMIT WORK, and whether you know that BAPIs don’t auto-commit—the caller owns the commit/rollback decision enhancement framework,

Q3. What is the enhancement framework, and how do you choose between a user exit, customer exit, and BADI?

” ── BAdI: the modern choice (ECC EHP4+ and all S/4HANA) ──────

” Use GET BADI to retrieve the active implementation

DATA: lo_badi TYPE REF TO badi_sd_sales_order_change.

GET BADI lo_badi.

” Call a method defined in the BAdI interface

CALL BADI lo_badi->check_sales_order

  EXPORTING

    is_header = ls_vbak.           ” Pass header data for validation

The decision table interviewers expect you to know:

Enhancement TypeWhen to UseS/4HANA Compatible
User Exit (FORM routines)Legacy ECC, no alternativesDeprecated pattern
Customer ExitECC systems, limited extensibilityNo new ones in S/4HANA
Classic BAdIECC EHP1–EHP3Works but superseded
Kernel BAdI / Enhancement SpotECC EHP4+ and all S/4HANAPreferred

What to say: “On any S/4HANA project,, I go straight to the Enhancement Spot / Kernel BAdI combination. On ECC, I check what version we’re on if EHP4 or above, BAdIs. Below that I look for existing customer exits before touching user exits because user exits are form-based and can’t have multiple active implementations.”

Q4. A background job running SELECT on VBRP is taking 45 minutes. How do you diagnose and fix it?

Strong answer structure:

  1. Run ST05 (SQL Trace) — not SE30 first — to identify the exact SELECT statements hitting the database and their read counts.
  2. Check for missing secondary indexes using SE11 on VBRP. VBRP’s primary key is MANDT-VBELN-POSNR. If you’re selecting by FKART or ERDAT, you need a secondary index.
  3. Check whether the SELECT uses SELECT * instead of a field list. On S/4HANA, SELECT * on a wide table like VBRP transfers unnecessary columns from HANA to the application server.
  4. Replace an OPEN CURSOR loop with a JOIN or a CDS view in S/4HANA to push the aggregation to the database layer.

” ── BEFORE: reading full table, looping in ABAP

SELECT * FROM vbrp INTO TABLE lt_vbrp

  WHERE fkdat BETWEEN ‘20240101’ AND ‘20240131’.  ” No index on FKDAT by default

” ── AFTER: select only required fields, use index-aware WHERE ─

SELECT vbeln posnr matnr netwr fkdat  ” Named fields only

  FROM vbrp

  INTO TABLE @DATA(lt_vbrp_optimized)

  WHERE fkdat BETWEEN ‘20240101’ AND ‘20240131’

    AND vkorg = ‘1000’.              ” Add org field if secondary index covers it

Q5. How do you write a testable ABAP class that external callers can mock?

This tests whether you understand dependency injection — the Clean ABAP principle that lets you swap real implementations for test doubles in ABAP Unit.

” ── Interface — the seam that makes mocking possible

INTERFACE zif_billing_reader.

  METHODS: get_invoices

    IMPORTING iv_customer     TYPE kunnr

    RETURNING VALUE(rt_bills) TYPE ztt_billing.

ENDINTERFACE.

” ── Real implementation

CLASS zcl_billing_db_reader DEFINITION.

  PUBLIC SECTION.

    INTERFACES zif_billing_reader.

ENDCLASS.

” ── Consumer class receives the dependency via constructor

CLASS zcl_billing_processor DEFINITION.

  PUBLIC SECTION.

    METHODS: constructor

      IMPORTING io_reader TYPE REF TO zif_billing_reader.

    METHODS: process_invoices

      IMPORTING iv_customer TYPE kunnr.

  PRIVATE SECTION.

    DATA: mo_reader TYPE REF TO zif_billing_reader.

ENDCLASS.

CLASS zcl_billing_processor IMPLEMENTATION.

  METHOD constructor.

    mo_reader = io_reader.           ” Injected — not hardcoded to DB class

  ENDMETHOD.

  METHOD process_invoices.

    DATA(lt_bills) = mo_reader->get_invoices( iv_customer = iv_customer ).

    ” Process lt_bills…

  ENDMETHOD.

ENDCLASS.

In the ABAP Unit test, you pass a mock implementation of zif_billing_reader that returns controlled data no database hit, no transport dependency. This is what Clean ABAP-compliant code looks like at the senior level.

ECC vs S/4HANA 

Every senior role in 2025–2026 touches S/4HANA migration in some form. Interviewers use this section to find developers who’ve actually worked on migrations versus those who’ve only read about them.

TopicECC BehaviorS/4HANA Change
Aggregation tables (BSEG, BSID)Full tables, direct SELECTReplaced by Universal Journal (ACDOCA) — direct BSEG queries return zero rows
SELECT * on wide tablesFunctionally fine, just slowAgainst Clean ABAP guidelines; HANA transfers all columns to AS even when unused
FOR ALL ENTRIESCommon pattern, worksStill works but CDS JOIN is preferred for pushdown
Classic ALV (REUSE_ALV_GRID_DISPLAY)Standard patternWorks but deprecated; use CL_SALV_TABLE or Fiori
User exitsAvailableNo new user exits; use enhancement spots.
Pooled/cluster tablesDirect SELECTMigrated to transparent queries mostly unchanged, but T-code behaviour differs

The question interviewers actually ask: “Your report SELECTS from BSEG directly with a WHERE on BUKRS and BELNR. What happens after migration to S/4HANA?”

The correct answer: BSEG still exists as a compatibility view in S/4HANA, but its data source is ACDOCA (the Universal Journal). Direct SELECTs work, but performance differs because the view has overhead. For new development, query ACDOCA directly or use the standard CDS views like I_JournalEntry. OOP-specific questions senior interviews cover

When to Use Which Tool — What Interviewers Want to 

No competitor page answers the “when NOT to” question. Interviewers value candidates who know tool limits.

RequirementRight ToolWhat to Avoid
Expose logic to external system synchronouslyRFC-enabled Function ModuleClasses they can’t be RFCs
Asynchronous data exchange between SAP systemsIDoc + Message TypeBAPI for async BAPIs are synchronous
Custom field validation in standard SD transactionKernel BAdI / Enhancement SpotModifying standard SAP code directly
High-volume report on S/4HANACDS View + SALV or FioriSELECT * loops with ABAP-side aggregation
Unit-testable business logic componentOO class with injected interface dependencyFORM routines — can’t be test-doubled
Mass data load from legacy systemBAPI with batch commitDirect INSERT into SAP tables bypasses business logic
ALV output with sortable columns and layout variantsCL_SALV_TABLE (S/4HANA)REUSE_ALV_GRID_DISPLAY — legacy, no Fiori compatibility

Conclusion 

ABAP interview questions for 5 years of experience test one thing above everything else: whether you make decisions or just execute them. Any developer at this level can write a SELECT statement. What separates senior candidates is explaining why you used ST05 before SE30, why you chose a BAdI over a user exit on that specific project, and what changed in your code when the system moved to S/4HANA. Prepare each technical concept with a real scenario attached to it. That’s the answer that closes offers.

Also you can read more for 3 years of experience Ace ABAP Interview Questions for 3 Years of Experience Like a Pro

Frequently Asked Questions

Q1. What ABAP topics do interviewers focus on for 5 years of experience? 

Interviewers focus on performance tuning, enhancement framework selection, OOP design, and ECC-vs-S/4HANA differences. At 5 years, you’re expected to justify design choices not just name them. Prepare scenario answers covering SELECT optimization, BADI selection, and at least one migration-related code change you’ve made.

Q2. Is ALV still asked about in senior ABAP interviews in 2025? 

Yes — both classic and OO ALV come up regularly. Know REUSE_ALV_GRID_DISPLAY for ECC and CL_SALV_TABLE for S/4HANA. Interviewers asking SAP ABAP interview questions for 5 years of of experience expect you to explain the difference, handle layout variants, and attach user command events. 

Q3. How should I explain ECC-to-S/4HANA differences in an interview? 

Lead with a concrete example, not a definition. Say which table changed (BSEG → ACDOCA), which pattern was deprecated (FOR ALL ENTRIES → CDS JOIN), and what you did differently. Interviewers want evidence you’ve lived through a migration, not that you’ve read a migration guide.

Q4. Are RFC and IDoc questions still common in senior ABAP interviews? 

Yes, especially integration-heavy roles. Know the difference between synchronous RFC, asynchronous RFC, and transactional RFC (tRFC). For IDocs, understand the partner profile (WE20), message type, and inbound/outbound process codes. At the senior level, expect scenario questions: “Your tRFC failed — how do you diagnose and reprocess it?”

Q5. What performance tools does a senior ABAP developer need to demonstrate? 

(Stack Overflow [abap] tag) ST05 (SQL Trace) for database-level query analysis, SE30/SAT (ABAP Runtime Analysis) for application-server-level profiling, and the ABAP SQL Monitor (transaction SQLM, S/4HANA only) for aggregated query statistics across all users. Knowing which tool to reach for first — ST05 for slow reports, SAT for CPU-heavy loops — is itself a senior-level signal.

Q6. Should I prepare OOP ABAP for a 5-year experience interview? (Google autosuggest) Absolutely — OOP ABAP is no longer optional at the senior level. BAdI implementations, CL_SALV_TABLE, RAP behavior classes, and ABAP Unit test classes are all OOP constructs. Prepare inheritance, interfaces, polymorphism, and constructor constraints. For S/4HANA roles, also prepare dependency injection via a constructor. Interviewers increasingly ask candidates to demonstrate testable code design.

References & Further Reading 

Share:

Facebook
Pinterest
LinkedIn
WhatsApp
Picture of Laeeq Siddique - SAP Technical Consultant

Laeeq Siddique - SAP Technical Consultant

I'm a technical and development consultant focused on S/4HANA and BTP, SAP Consultant specializing in developing innovative solutions for Manufacturing, Energy more.

Table of Contents