Skip to content

Practical SAP Interview Questions

40 questions with answers. Hands-on questions where you write code, a query, a formula or concrete steps.

How to approach these questions

Talk while you work: say your approach first, write the simplest correct version, then improve it and mention edge cases.

Solved — practicalStart practicing
3 QUESTIONS FREESign up to unlock the full question bank and track your progress.Unlock every question and answer, then continue practising company-wise and package-wise.
3 questions free Unlock the rest in seconds
01

What is the role of a functional specification document?

Save to ▾
Show answer
A functional specification explains what a custom object must do in business terms: purpose, process flow, input and output fields, selection screens, validations, error handling, authorizations and test scenarios. It is written by the functional consultant and signed off by the business before the ABAP developer builds it. A clear FS reduces rework, because the developer knows exactly which tables, logic and outputs are expected.
02

What are the main test phases in an SAP project?

Save to ▾
Show answer
Unit testing checks each configuration or development object alone. System integration testing (SIT) runs end-to-end processes across modules such as procure to pay and order to cash, including interfaces. User acceptance testing (UAT) is done by business users to confirm the solution meets their needs. Regression testing checks existing processes after changes or upgrades. Performance and cutover rehearsals (mock runs) are also done before go-live.
03

What is cutover and what activities are part of a cutover plan?

Save to ▾
Show answer
Cutover is the move from the old system to the live SAP system. The plan lists every step with owner, timing and dependency: transport of final configuration, opening and closing posting periods, master data and open item loads with reconciliation, freeze of legacy transactions, user and role setup, interface switch-on, and a go or no-go checkpoint. Mock cutovers are rehearsed in advance and a rollback plan is kept ready.
04

How do you check the SAP release and component versions of a system?

Save to ▾
Show answer
In SAP GUI, go to System then Status, which shows the client, user, transaction, program and database, and the component information button shows software components with release and support package levels, such as S4CORE. In the Fiori launchpad, the About option in the user menu shows the frontend version. Transaction SPAM also lists installed support packages. Knowing the release helps when reading SAP Notes.
05

How do you find which transport request contains a particular change?

Save to ▾
Show answer
For a repository object, open it in SE80 or SE11 and use Utilities then Versions to see version history with request numbers, or search the object in SE03 'Search for Objects in Requests'. For customizing, open the table or view in SM30, use Utilities then Change Logs if logging is active, or search the table key in SE03. Transport history in STMS shows when requests were imported into each system.
06

What steps do you follow to release and move a transport request?

Save to ▾
Show answer
In SE09 or SE10, check the objects and documentation in the task and request, run consistency and ATC checks if required, release the task, then release the request. Basis or the change management tool imports it into quality following the transport route. After testing and approval, it is imported into production in the agreed window. I record the request number against the ticket or change document for traceability.
07

How do you look at a background job that failed?

Save to ▾
Show answer
Open SM37, enter the job name, user and date range, and select Cancelled status. Select the job and open the job log, which shows messages and the point of failure. The spool list may show partial output. I then check the program variant, authorizations of the step user, locks, and short dumps in ST22 at that time. After fixing, the job can be rescheduled or repeated with the same variant.
08

How would you plan a client strategy for a new S/4HANA development system?

Save to ▾
Show answer
I would create a golden configuration client (for example 100) where all customizing is done and recorded in transports, a unit test client (for example 200) refreshed by client copy or transports for testing with data, and a sandbox client for experiments that never transports. Development of repository objects is cross-client. I would lock automatic recording rules in SCC4, define who can open clients, and document refresh schedules.
09

How do you find the table and field name behind a screen field?

Save to ▾
Show answer
Place the cursor on the field and press F1, then click the Technical Information button. The pop-up shows the program, screen number, table or structure name, field name and data element. If it shows a structure, I use SE11 or the where-used list to find the database table, or run an SQL trace in ST05 while saving the document to see which tables are written.
10

How do you add frequently used transactions to favourites?

Save to ▾
Show answer
In the SAP Easy Access menu, right-click a transaction in the tree and choose Add to Favorites, or use Favorites then Insert Transaction and type the code. Favourites can be grouped into folders and can also include web links. In the Fiori launchpad, users personalise their page by adding apps from the app finder or search. This keeps daily work fast and organised.
11

How do you export an ALV report to Excel and save a layout?

Save to ▾
Show answer
In the ALV toolbar, choose Export then Spreadsheet, select the format such as XLSX, and save the file. To save a layout, change columns, sorting and filters, then click Save Layout, give a name, and tick user-specific or default as needed. Next time, choose the layout from the dropdown. A default layout opens automatically, which helps teams share a common view.
12

How do you find which Fiori app replaces a classic transaction?

Save to ▾
Show answer
Open the SAP Fiori Apps Reference Library and search with the transaction code, such as ME21N. The results show matching apps with app ID, type, roles, catalogs and required back-end services. In the system, the Fiori launchpad content manager and the app search help find what is already active. Many classic transactions run as SAP GUI for HTML tiles when no native app exists.
13

How do you schedule a report to run in the background every night?

Save to ▾
Show answer
Create and save a variant for the report. In SM36 define a job name and class, add a step with the program and variant and a user with correct authorizations, and set the start condition as a date and time with periodic value daily. Save the job, then monitor it in SM37. In Fiori, the Application Jobs app does the same for job templates.
14

How do you create a Business Partner as a customer?

Save to ▾
Show answer
Open transaction BP or the Manage Business Partner Master Data app and choose Person or Organization. Enter general data such as name, search term, address, language, PAN and tax numbers. Switch to the role FLCU00 (FI customer) and enter the company code with reconciliation account and payment terms. Add role FLCU01 (customer) for the sales area with order, shipping and billing data. Save, and the customer number is created.
15

How do you extend an existing material to a new plant?

Save to ▾
Show answer
Use MM01 with the existing material number, select the views needed such as MRP, Purchasing, Storage and Accounting, and enter the new plant (and storage location). Fill the required data such as MRP type, valuation class and price control, and save. For many materials, a mass tool such as the Migration Cockpit or a custom LSMW-style load is used. MM03 confirms the views are created.
16

How do you view the assignment of organizational units in the system?

Save to ▾
Show answer
In SPRO under Enterprise Structure, Assignment, I can see assignments such as plant to company code, sales organization to company code and purchasing organization to plant. Transaction EC02 lists company codes, OX18 shows plant to company code, and OX10 maintains plants. Some teams also use the structure display report or a simple diagram to explain the setup to new members.
17

How do you find who changed a field in master data?

Save to ▾
Show answer
For Business Partner and customer or supplier data, use the change documents in the BP transaction or reports such as S_ALR_87012182 for customer changes and S_ALR_87012089 for supplier changes. For materials, MM04 shows change documents. Change documents show the old value, new value, user, date and time. They are stored in tables CDHDR and CDPOS, which auditors often ask about.
18

How can you identify which module a transaction belongs to?

Save to ▾
Show answer
The transaction prefix often hints at the module: F for finance (FB60, F110), K for controlling (KS01), ME and MI for MM (ME21N, MIGO), V for SD (VA01, VL01N, VF01), C and CO for PP (CS01, CO01), Q for QM and I for PM (IW31). To confirm, check the SAP Easy Access menu path, or use System then Status to see the program and its application component.
19

What are some key tables in core SAP modules?

Save to ▾
Show answer
Finance: ACDOCA (Universal Journal), BKPF (document header), BSEG (entry view items), SKA1 and SKB1 (GL accounts). MM: MARA (material general), MARC (plant data), EKKO and EKPO (purchase orders), MATDOC (material documents). SD: VBAK and VBAP (sales orders), LIKP and LIPS (deliveries), VBRK and VBRP (billing). Business Partner: BUT000. Knowing them helps in debugging and reporting.
20

How do you read an SAP Note and decide if it applies?

Save to ▾
Show answer
An SAP Note describes a problem, solution, affected releases and support packages, and prerequisites. I search notes in SAP for Me using the error message, component and keywords, then check the validity section against our release and support pack level. If it applies, I use SNOTE to download and implement correction instructions in development, test it, and transport. For manual steps, I follow them exactly and document them.
21

What are the main transaction codes in procure to pay?

Save to ▾
Show answer
ME51N creates a purchase requisition, ME41 a request for quotation, ME21N a purchase order, MIGO posts goods receipt, MIRO enters the supplier invoice, MRBR releases blocked invoices, and F110 runs the automatic payment program. ME2N and ME2M are common purchase order reports. In Fiori there are equivalent apps such as Manage Purchase Orders, Post Goods Movement and Supplier Invoices.
22

What are the main transaction codes in order to cash?

Save to ▾
Show answer
VA11 or VA21 create an inquiry or quotation, VA01 creates a sales order, VL01N creates an outbound delivery, VL02N is used for picking and post goods issue, VF01 creates the billing document, and F-28 posts incoming payment. VA05 lists sales orders and VF04 processes the billing due list. In Fiori, Manage Sales Orders and Create Billing Documents apps cover the same.
23

How do you trace a sales invoice to its accounting document?

Save to ▾
Show answer
Open the billing document in VF03 and use the Accounting button, which shows the accounting document, profitability and other documents created. From the sales order, document flow in VA03 shows all subsequent documents. If accounting was not created, the billing has a posting status error, usually account determination; VFX3 lists billing documents not released to accounting so they can be checked and released.
24

How do you monitor interfaces in an S/4HANA landscape?

Save to ▾
Show answer
For IDocs I use WE02, WE05 and BD87, with filters by status and message type. For RFC queues I use SM58, SMQ1 and SMQ2. For web services, SRT_MONI and SRT_UTIL. In S/4HANA, the Message Monitoring app and Application Interface Framework (AIF) give business-friendly monitoring with error reprocessing. In SAP Integration Suite, message processing logs show each flow. Alerts reduce manual checking.
25

Write a simple ABAP report that reads purchase orders for a vendor and displays them in ALV.

Save to ▾
Show answer
Select header data with modern ABAP SQL into an inline table, then show it with the SALV class. REPORT zpo_list. PARAMETERS p_lifnr TYPE lifnr OBLIGATORY. START-OF-SELECTION. SELECT ebeln, bukrs, bedat, lifnr FROM ekko WHERE lifnr = @p_lifnr INTO TABLE @DATA(lt_po). TRY. cl_salv_table=>factory( IMPORTING r_salv_table = DATA(lo_alv) CHANGING t_table = lt_po ). lo_alv->display( ). CATCH cx_salv_msg. MESSAGE 'ALV error' TYPE 'E'. ENDTRY.
26

How do you read a single row from an internal table using modern ABAP syntax?

Save to ▾
Show answer
Use a table expression with a TRY block, or READ TABLE with a key. For sorted or hashed tables use the key for fast access. TRY. DATA(ls_po) = lt_po[ ebeln = '4500000010' ]. CATCH cx_sy_itab_line_not_found. " row not found ENDTRY. READ TABLE lt_po INTO DATA(ls_row) WITH KEY ebeln = '4500000010'. IF sy-subrc = 0. " found ENDIF.
27

Write a basic CDS view entity that shows sales order items with their header data.

Save to ▾
Show answer
A view entity joins header and item with an association and exposes fields with aliases. @AccessControl.authorizationCheck: #CHECK @EndUserText.label: 'Sales order items' define view entity ZI_SalesOrderItem as select from vbap as Item association [1..1] to vbak as _Header on $projection.SalesOrder = _Header.vbeln { key Item.vbeln as SalesOrder, key Item.posnr as SalesOrderItem, Item.matnr as Material, Item.kwmeng as OrderQuantity, _Header.kunnr as SoldToParty, _Header }
28

How do you avoid SELECT inside a LOOP in ABAP?

Save to ▾
Show answer
Read all needed rows once with a join or FOR ALL ENTRIES, then read from the internal table in the loop. SELECT ebeln, ebelp, matnr FROM ekpo WHERE ebeln IN @s_ebeln INTO TABLE @DATA(lt_items). IF lt_items IS NOT INITIAL. SELECT matnr, maktx FROM makt FOR ALL ENTRIES IN @lt_items WHERE matnr = @lt_items-matnr AND spras = @sy-langu INTO TABLE @DATA(lt_text). ENDIF. SORT lt_text BY matnr. Always check the driver table is not empty before FOR ALL ENTRIES.
29

How do you call a BAPI to create a document and commit it safely?

Save to ▾
Show answer
Call the BAPI, check the RETURN table for errors, then commit or roll back. CALL FUNCTION 'BAPI_PO_CREATE1' EXPORTING poheader = ls_head poheaderx = ls_headx IMPORTING exppurchaseorder = lv_ebeln TABLES poitem = lt_item poitemx = lt_itemx return = lt_return. IF line_exists( lt_return[ type = 'E' ] ) OR line_exists( lt_return[ type = 'A' ] ). CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = abap_true. ENDIF.
30

How do you debug an ABAP program?

Save to ▾
Show answer
Set a breakpoint in the code (session or external breakpoint for web and Fiori calls), or type /h before executing. In the debugger, use single step (F5), execute (F6), return (F7) and continue (F8), watch variables, change values for testing, and view internal tables. Watchpoints stop when a variable changes. In ADT, the Eclipse debugger offers the same. Never change values in production without approval.
31

How do you analyse a slow custom ABAP report?

Save to ▾
Show answer
I run a runtime trace with SAT or ST12 to see whether time goes to database or ABAP processing, and an SQL trace with ST05 to find expensive or repeated statements. Typical fixes are adding WHERE conditions on key or indexed fields, removing SELECT in loops, using sorted or hashed tables, reading only needed columns, and pushing aggregation to CDS or SQL. The SQL Monitor (SQLM) shows heavy statements in production.
32

Show a simple CDS annotation setup for a Fiori elements list report.

Save to ▾
Show answer
Annotations on a projection view define the table columns and filters. @UI.headerInfo: { typeName: 'Sales Order', typeNamePlural: 'Sales Orders' } define view entity ZC_SalesOrder as projection on ZI_SalesOrder { @UI.lineItem: [{ position: 10 }] @UI.selectionField: [{ position: 10 }] key SalesOrder, @UI.lineItem: [{ position: 20 }] @UI.selectionField: [{ position: 20 }] SoldToParty, @UI.lineItem: [{ position: 30 }] NetAmount, TransactionCurrency }
33

What steps are needed to activate a standard Fiori app in S/4HANA on-premise?

Save to ▾
Show answer
Check the app in the Fiori Apps Reference Library for required OData services, ICF nodes, catalogs and roles. Activate the OData service in /IWFND/MAINT_SERVICE or /IWFND/V4_ADMIN for V4, activate the UI5 ICF node in SICF, copy the SAP business role template in PFCG, add authorizations, assign it to users, and check spaces and pages. Rapid content activation in task list SAP_FIORI_CONTENT_ACTIVATION automates many steps.
34

How do you generate a Fiori elements app with SAP Fiori tools?

Save to ▾
Show answer
In Business Application Studio or VS Code, open the Fiori application generator, choose a floor plan such as List Report Page, select the data source by connecting to a system or BTP destination and picking the OData service, choose the main entity and navigation, enter project details, and generate. Then preview with live or mock data, add annotations with the guided development tool, and deploy to the ABAP repository.
35

How do you build a transactional Fiori app end to end with RAP?

Save to ▾
Show answer
Create database tables, then interface CDS view entities and projection views. Write a behavior definition with create, update, delete, validations, determinations and draft, implement the behavior class, and add UI annotations in metadata extensions. Create a service definition exposing the projections and a service binding as OData V4 UI, publish it, then preview the Fiori elements app or generate one in BAS and deploy it with a launchpad tile and role.
36

How do you deploy a custom Fiori app to the launchpad?

Save to ▾
Show answer
Build and deploy the app from BAS or VS Code to the ABAP repository as a BSP application with a transport. Create a launchpad app descriptor with semantic object and action, add it as a tile or target mapping in a custom business catalog using the Fiori launchpad app manager or designer, put the catalog in a business role in PFCG with the needed OData authorizations, assign spaces and pages, and test with a user.
37

How do you improve the performance of a slow Fiori app?

Save to ▾
Show answer
I check the browser network tab for large or repeated OData calls, and the back end with ST05, SAT and the gateway statistics. Fixes include paging with $top and $skip, selecting only needed fields, avoiding expensive calculated fields in CDS views, adding proper filters and indexes, batching requests, caching value helps, and enabling the UI5 cache buster and asynchronous loading. I measure before and after on realistic data.
38

How do you write an aggregation in ABAP SQL so the database does the work?

Save to ▾
Show answer
Use GROUP BY and aggregate functions in the SELECT instead of looping and summing in ABAP. SELECT bukrs, gjahr, SUM( hsl ) AS amount FROM acdoca WHERE rldnr = '0L' AND bukrs IN @s_bukrs AND gjahr = @p_gjahr GROUP BY bukrs, gjahr INTO TABLE @DATA(lt_totals). Only the totals travel to the application server, which is far faster than reading every line item of the Universal Journal.
39

How would you plan the migration of supplier master data for a greenfield S/4HANA project?

Save to ▾
Show answer
I would agree the target BP design with roles, number ranges, account groups (BP groupings) and mandatory fields, then extract and cleanse legacy data: remove duplicates and inactive suppliers, validate PAN, GSTIN and bank details. I map values to S/4HANA, load with the Migration Cockpit supplier object in mock loads, reconcile counts and key fields, get business sign-off, and repeat in the cutover with a freeze period.
40

How do you test end-to-end integration in an S/4HANA project?

Save to ▾
Show answer
I define end-to-end scenarios such as procure to pay and order to cash with variants, including interfaces and outputs, and list expected documents and accounting entries for each step. Testers run them in SIT with realistic master data, record evidence, and check document flow and GL postings at every step. Defects are logged by owner. Automated regression with tools such as SAP Cloud ALM test automation or third-party tools helps later releases.

Frequently asked questions

Why are practical questions important?

Most technical rounds include at least one live task. Practising the exact typing and reasoning makes you calm and fast in the real round.

How should I answer them?

Talk while you work: say your approach first, write the simplest correct version, then improve it and mention edge cases.