ABAPBeginner
ABAP Core
Master the foundation of ABAP programming: program structure, variables, system fields, selection screens, validations, messages, exceptions and clean coding basics.
Overview
Master the foundation of ABAP programming: program structure, variables, system fields, selection screens, validations, messages, exceptions and clean coding basics.
Lessons in this topic
- ABAP Core Part 1: Your First ABAP Program and the Development ToolsStart ABAP the right way: what ABAP is, where programs run, the main program types, SE38/SE80 vs ADT, and your first executable program on the flight demo data — step by step.
- ABAP Core Part 2: DATA, TYPES, CONSTANTS, Work Areas and Internal TablesDeclare data the way real ECC/S/4 programs do: TYPES, DATA and CONSTANTS, dictionary types, structures (work areas) and internal tables, filling them with APPEND, CLEAR/REFRESH/FREE, and naming conventions — with the modern inline and VALUE syntax as a side note.
- ABAP Core Part 3: Data Types and LiteralsKnow ABAP's built-in types — character, numeric, date/time, string and packed — how literals work, where lengths and decimals matter, and which type to choose for business data.
- ABAP Core Part 4: Control Flow and Building Output TextsControl program logic with IF, CASE, loops (DO, WHILE, LOOP AT), CHECK/CONTINUE/EXIT, and build readable output texts with CONCATENATE, WRITE … TO, CONDENSE and conversion exits — with COND, SWITCH and string templates as a modern side note.
- ABAP Core Part 5: Selection Screens — PARAMETERS, SELECT-OPTIONS and ValidationBuild selection screens users understand: PARAMETERS, SELECT-OPTIONS and ranges, checkboxes and radio buttons, defaults, value helps and input validation in AT SELECTION-SCREEN.
- ABAP Core Part 6: System Fields — sy-subrc, sy-tabix, sy-datum and MoreUse the most important system fields correctly: sy-subrc after statements, sy-tabix and sy-index in loops, sy-datum/sy-uzeit/sy-uname, sy-ucomm for user actions — and know when they are overwritten.
- ABAP Core Part 7: Operators, Calculations and Type ConversionCalculate and convert correctly in classic ABAP: arithmetic with DIV and MOD, rounding rules, packed numbers for money, ROUND and CEIL/FLOOR functions, string statements (CONDENSE, TRANSLATE, SEARCH, SPLIT, REPLACE), MOVE conversions, conversion exits and catching conversion errors.
- ABAP Core Part 8: Messages and User-Friendly Error HandlingUse messages correctly: message classes and numbers, message types (S, I, W, E, A, X) and their behavior in different contexts, placeholders, MESSAGE … INTO for logging, and collecting messages instead of stopping at the first error.
- ABAP Core Part 9: TRY, CATCH and Exception Handling BasicsHandle errors with class-based exceptions: TRY/CATCH/CLEANUP, exception class hierarchy (static, dynamic, no-check), catching specific exceptions, getting texts, raising your own exceptions, and not swallowing errors.
- ABAP Core Part 10: Clean ABAP Basics for Maintainable CodeWrite ABAP others can maintain: meaningful names, small methods, classes over includes and FORMs, modern syntax, no magic values, clear error handling, unit tests and automated checks — with a before/after refactoring.
Interview questions covered
- You put a breakpoint in a custom program but it's never hit even though you're sure the code path is being executed. What are the possible reasons and how do you debug this systematically?
- What are the different types of internal tables in ABAP (Standard, Sorted, Hashed) and what access performance characteristics does each have?
- In a production support ticket, users report that a custom Z-program sometimes shows the wrong currency conversion for cross-company transactions, but it works fine most of the time. How would you approach troubleshooting this intermittent issue?
- You're told that a report gives correct output in the foreground (SE38, F8) but wrong output when scheduled as a background job. What categories of causes would you investigate?
- A background job processing 100,000 records dumps with a TIME_OUT or memory-related short dump after running for hours, but the same logic works fine for a smaller test file. How do you debug and fix this without being able to reproduce it interactively?
- You are asked to review a proposed technical design where a custom real-time interface calls an external REST API synchronously from inside a core SD sales order save user exit for every order, to fetch a fraud score before allowing save. As the architect, what concerns would you raise?
- You're reviewing a colleague's custom ALV report that dynamically builds a field catalog based on customizing settings, and it occasionally shows incorrect column headers or wrong data types for certain configurations. How would you approach root-causing this dynamic field catalog issue?
- What is the difference between a Function Module and a Method of a Class? When would you choose one over the other in a new development?
- A custom interface program uses a Z-table as a staging area and inserts millions of rows daily, purging old data periodically. Over time, the table's performance has degraded significantly even for simple SELECTs by key. What would you investigate and recommend?
- Your custom Z-report joins three large custom Z-tables using nested SELECTs and it's slow. The functional team says all three tables are needed together frequently across multiple reports. What performance and design options would you consider, including database-level options?
- What is the difference between a Data Dictionary structure, a TYPE created in ABAP program, and a database table? When would you use each in a real project?
- You are asked to build an interface that receives 50,000 material records daily from a third-party system and update material master data. What ABAP design considerations would you keep in mind to ensure this runs reliably every day?
- You are designing a custom module pool transaction that must handle both online (dialog) entry and a mass upload of thousands of records via a background program, using the same business validation logic. How would you architect this to avoid code duplication and ensure performance in both modes?
- Explain the difference between SELECT SINGLE, SELECT INTO TABLE, and SELECT ... ENDSELECT. Why is looping with SELECT...ENDSELECT generally discouraged in production code?
- A custom class-based exception is being raised deep inside a call stack (Class A calls Class B calls Class C), but the calling program only shows a generic 'exception occurred' message without the actual root cause detail. How would you debug and improve this?
- A background job that processes vendor payments occasionally fails with a lock table overflow (enqueue) error, especially during month-end. How would you diagnose and resolve this?
- Your team inherited a legacy custom program full of nested PERFORM subroutines with heavy use of global variables. The business now wants to add new functionality and unit test it. How would you approach refactoring this safely without breaking existing functionality?
- A new joiner on your team wrote a custom program using nested loops (LOOP inside LOOP) to match sales orders against delivery data, and it works fine in dev with 100 records but times out in production with 200,000 records. How do you explain the issue and guide them to a fix?
- A custom report that used to run in 2 minutes is now taking 45 minutes after go-live volume increased. The report reads material master data in a loop using SELECT SINGLE inside a loop over sales items. How would you approach diagnosing and fixing this?
- During debugging, you notice that a work area's value changes unexpectedly between two statements even though no explicit assignment happens between them in the code you're viewing. What could cause this and how would you find the actual culprit?