🌍 SAP · subject
SAP SAP ABAP Syllabus
The SAP ABAP syllabus for SAP in full: 10 chapters, 23 topics and 69 sub-topics, every one listed below, plus 72 SAP ABAP flashcards with answers.
SAP ABAP syllabus: all 10 chapters
Expand any chapter to see its topics and sub-topics.
-
Introduction to SAP ABAP
2 topics- Overview of SAP
- What is SAP?
- SAP Modules
- Role of ABAP in SAP
- Introduction to ABAP
- History of ABAP
- ABAP Development Environment
- ABAP Data Types
- Overview of SAP
-
ABAP Programming Basics
3 topics- Basic Syntax and Structure
- ABAP Program Structure
- Statements and Keywords
- Comments
- Data Types and Variables
- Elementary Data Types
- Complex Data Types
- Constants and Literals
- Operators and Control Structures
- Arithmetic Operators
- Logical Operators
- Control Statements (IF, CASE, LOOP)
- Basic Syntax and Structure
-
Advanced ABAP Programming
3 topics- Modularization Techniques
- Subroutines
- Function Modules
- Methods
- Data Dictionary
- Tables
- Views
- Data Elements and Domains
- Internal Tables
- Defining Internal Tables
- Operations on Internal Tables
- Sorting and Filtering
- Modularization Techniques
-
ABAP Object-Oriented Programming (OOP)
2 topics- OOP Basics
- Classes and Objects
- Inheritance
- Polymorphism
- Advanced OOP Concepts
- Interfaces
- Abstract Classes
- Events and Exception Handling
- OOP Basics
-
ABAP Development Tools
2 topics- ABAP Workbench
- ABAP Editor
- Data Dictionary
- Function Builder
- ABAP Development Tools (ADT) in Eclipse
- Installation and Setup
- Basic Navigation
- Debugging and Testing
- ABAP Workbench
-
Database Access
2 topics- Open SQL
- SELECT Statements
- INSERT, UPDATE, DELETE
- Joins and Subqueries
- Native SQL
- When to Use Native SQL
- Syntax Differences
- Performance Considerations
- Open SQL
-
Enhancements and Modifications
3 topics- User Exits
- Types of User Exits
- Implementing User Exits
- Best Practices
- BADIs (Business Add-Ins)
- Definition and Implementation
- Filter BADIs
- Multiple Use BADIs
- Enhancement Framework
- Implicit and Explicit Enhancements
- Enhancement Spots
- Enhancement Implementations
- User Exits
-
Web Technologies in ABAP
2 topics- SAP Web Dynpro ABAP
- Introduction to Web Dynpro
- Components and Controllers
- Context and Data Binding
- SAP Fiori and OData
- Overview of SAP Fiori
- OData Services
- Creating and Consuming OData Services
- SAP Web Dynpro ABAP
-
Performance Tuning and Best Practices
2 topics- Performance Tuning
- Code Inspector
- Runtime Analysis
- SQL Trace
- Best Practices
- Efficient Coding Techniques
- Error Handling
- Code Reviews
- Performance Tuning
-
SAP ABAP Certification Preparation
2 topics- Certification Overview
- Types of Certifications
- Exam Structure
- Preparation Tips
- Sample Questions and Mock Tests
- Sample Questions
- Mock Tests
- Time Management
- Certification Overview
SAP SAP ABAP flashcards — 72 questions with answers
What is SAP, and what does the acronym stand for?
SAP stands for Systems, Applications, and Products in Data Processing. It is a German multinational company whose ERP software integrates core business processes (finance, HR, sales, logistics, procurement) into a single real-time system.
What is the three-tier client-server architecture used by SAP systems?
1) Presentation layer (SAP GUI / front-end), 2) Application layer (application servers running the business logic and ABAP work processes), and 3) Database layer (central database storing all data). The layers can run on separate hardware for scalability.
What is ABAP and what does the acronym stand for?
ABAP stands for Advanced Business Application Programming. It is SAP's proprietary, high-level, fourth-generation programming language used to develop and customize applications in the SAP ecosystem (originally 'Allgemeiner Berichts-Aufbereitungs-Prozessor').
What are the two main programming paradigms supported by ABAP?
Procedural programming (using subroutines, function modules) and Object-Oriented programming (using ABAP Objects: classes, methods, interfaces). Modern ABAP encourages the object-oriented approach.
In ABAP, what is a client (Mandant) and why is it important?
A client is a self-contained, logically separate business unit within an SAP system with its own master and transaction data, user records, and customizing. It is the highest organizational level; data belonging to one client is not accessible from another.
What character terminates every ABAP statement, and is ABAP case-sensitive?
Every ABAP statement ends with a period ( . ). ABAP keywords and identifiers are NOT case-sensitive (though string literal contents are).
How do you write comments in ABAP?
A full-line comment starts with an asterisk (*) in the first column. An inline (partial-line) comment starts with a double quotation mark (") after code on the same line.
What is the purpose of the ABAP chained statement using the colon operator?
The colon (:) lets you combine consecutive statements that share the same keyword, separating the differing parts with commas. Example: DATA: a TYPE i, b TYPE c, c TYPE string.
List the elementary predefined ABAP data types and their default lengths.
Numeric: I (integer, 4 bytes), F (float, 8 bytes), P (packed decimal), INT8, DECFLOAT16/34. Character: C (fixed char, default 1), N (numeric text), D (date, 8), T (time, 6), STRING. Byte: X (hex, default 1), XSTRING.
In ABAP, what is the difference between fixed-length and variable-length data types?
Fixed-length types (C, N, D, T, I, F, P, X) have a defined length reserved at declaration. Variable-length (dynamic) types STRING and XSTRING grow and shrink at runtime as needed; they cannot be used as flat components in some legacy structures.
What is the default initial value of the ABAP types C, N, I, P, and D?
C (character): spaces; N (numeric text): '0...0'; I (integer): 0; P (packed): 0; D (date): '00000000'. Generally, character-like fields initialize to spaces/zeros and numeric to 0.
What is the difference between DATA and CONSTANTS declarations in ABAP?
DATA declares a variable whose value can change at runtime. CONSTANTS declares a named literal whose value is fixed at declaration with the VALUE addition and cannot be changed during execution.
What does the TYPE addition versus the LIKE addition do in an ABAP DATA statement?
TYPE refers to a data type (built-in, Dictionary type, or a TYPES definition) to define the new variable. LIKE refers to an already existing data object, giving the new variable the same type as that object.
In ABAP, what is the difference between the assignment operators = , MOVE, and the arithmetic operators?
= (or the obsolete MOVE) copies a value from a source into a target with automatic type conversion. Arithmetic operators + - * / and the whole-division operators DIV (integer quotient) and MOD (remainder) perform calculations; ** is exponentiation.
What is the result of the ABAP expressions 17 DIV 5 and 17 MOD 5?
$17 \ \text{DIV} \ 5 = 3$ (integer quotient) and $17 \ \text{MOD} \ 5 = 2$ (remainder). DIV returns the integer part of the division; MOD returns the remainder.
Name the ABAP relational (comparison) operators including their word equivalents.
= (EQ), <> or >< (NE), < (LT), > (GT), <= (LE), >= (GE). Additional: BETWEEN, IN (value ranges), CO/CN/CA/NA/CS/NS/CP/NP for character-pattern comparisons.
What are the three main conditional control structures in ABAP?
1) IF ... ELSEIF ... ELSE ... ENDIF (for range/logical conditions), 2) CASE ... WHEN ... WHEN OTHERS ... ENDCASE (for comparing one field to discrete values), 3) COND/SWITCH constructor expressions (functional style).
List the loop constructs available in ABAP.
DO ... ENDDO (unconditional/fixed count with TIMES), WHILE ... ENDWHILE (condition-controlled), LOOP AT ... ENDLOOP (iterate an internal table), and SELECT ... ENDSELECT (loop over a result set). CONTINUE, CHECK, and EXIT control flow within loops.
What is the difference between EXIT, CONTINUE, and CHECK inside an ABAP loop?
EXIT terminates the loop entirely (leaves the loop). CONTINUE skips the rest of the current pass and proceeds to the next iteration. CHECK evaluates a condition: if false it behaves like CONTINUE (skips to next iteration).
What are the modularization techniques available in ABAP?
1) Subroutines (FORM/PERFORM), 2) Function modules (grouped in function groups), 3) Methods (in classes/interfaces), 4) Macros (DEFINE), and 5) Includes (source-code reuse). Methods and function modules are the modern, preferred reusable units.
Show the other 52 SAP ABAP flashcards
What is the difference between a subroutine (FORM) and a function module in ABAP?
A subroutine (FORM...ENDFORM, called with PERFORM) is a local, program-internal modularization unit—now obsolete. A function module is a globally reusable unit stored in a function group, has a defined interface with exceptions, and can be Remote-Enabled (RFC). Function modules are managed centrally via SE37.
What are the four parameter-passing categories in an ABAP function module interface?
IMPORTING (values passed into the module), EXPORTING (values returned to the caller), CHANGING (passed in and back out), and TABLES (internal tables, legacy). Function modules also declare EXCEPTIONS for error handling.
What is the difference between passing parameters BY VALUE and BY REFERENCE in ABAP?
BY REFERENCE passes the memory address (the actual object), so changes affect the original and it is efficient (default for many cases). BY VALUE passes a copy; the original is unchanged unless the value is written back on normal return (USING ... changes local copy only, or VALUE(param) in methods returns on success).
What is the ABAP Data Dictionary (DDIC) and what is its purpose?
The ABAP Data Dictionary is a central, redundancy-free repository of metadata that defines and manages all data definitions (tables, views, data types, domains) used in the SAP system. It ensures data consistency and integrity and is integrated with the ABAP runtime and database.
Explain the relationship between Domain, Data Element, and Table Field in the ABAP Dictionary.
A Domain defines the technical attributes (data type, length, value range). A Data Element builds on a domain and adds semantic meaning plus field labels/documentation. A Table Field is assigned a data element, thereby inheriting both technical and semantic properties. Hierarchy: Domain → Data Element → Field.
What are the three categories of database tables in the ABAP Dictionary based on delivery/maintenance?
By ABAP table category: Transparent tables (1:1 mapping to a physical DB table), Pooled tables (many logical tables in one table pool), and Cluster tables (related tables grouped in a table cluster). Pooled and cluster tables cannot be accessed with Native SQL directly.
What is a check table (foreign key) in the ABAP Dictionary?
A check table is the referenced table in a foreign key relationship. When a foreign key is defined on a field, the check table's key provides the allowed values, enforcing referential integrity and enabling automatic input value help (F4) and value checks.
What are the types of Views available in the ABAP Dictionary?
Classic views: Database view (inner join across tables at DB level), Projection view (subset of one table's fields), Maintenance view (edit related-table data together), and Help view (for search help). Modern: CDS views (Core Data Services). Maintenance/Help views are largely legacy.
What is an internal table in ABAP and how does it differ from a database table?
An internal table is a runtime, in-memory data object holding multiple rows of the same line type, existing only during program execution. A database table is persistent on disk. Internal tables are used to process data sets in memory.
What are the three types of internal tables in ABAP and their access characteristics?
STANDARD (non-unique, sequential/index access; linear search), SORTED (kept sorted by key, unique or non-unique, binary search by key/index), and HASHED (unique key only, hash access with constant response time, no index).
When should you use a HASHED internal table versus a SORTED internal table?
Use HASHED for large tables accessed exclusively via a fully specified unique key (constant-time single-record reads). Use SORTED when you need sorted output, access by key prefix or ranges, or index access with fast binary search, and possibly non-unique keys.
What is a work area (header line) versus a field symbol when processing internal tables?
A work area is a separate structure that receives a copy of a table row (READ ... INTO wa). A field symbol (<fs>) is a pointer assigned to a row (READ ... ASSIGNING <fs>), allowing direct modification of the table row without copying—more efficient.
What is the difference between APPEND, INSERT, and MODIFY on an ABAP internal table?
APPEND adds a row at the end (STANDARD tables). INSERT adds a row at a specified index or by sorted key. MODIFY changes existing row(s) matching a key/index or all rows meeting a WHERE condition. COLLECT sums numeric fields into rows with matching keys.
What is the purpose of the READ TABLE statement variants WITH KEY and INDEX?
READ TABLE ... WITH KEY finds the first row matching field values (WITH TABLE KEY for the defined key, enabling binary/hash search). READ TABLE ... INDEX n reads the row at position n. Both set sy-subrc (0 = found) and sy-tabix (row index).
What are the four fundamental principles of Object-Oriented Programming as applied in ABAP Objects?
1) Encapsulation (bundling data and methods, hiding internals via visibility sections), 2) Inheritance (deriving classes from a superclass), 3) Polymorphism (same method behaving differently per class), and 4) Abstraction (modeling essential features, e.g., abstract classes/interfaces).
What are the three visibility sections of an ABAP class and their access scope?
PUBLIC SECTION (accessible from anywhere), PROTECTED SECTION (accessible within the class and its subclasses), and PRIVATE SECTION (accessible only within the defining class itself).
What is the difference between an instance component and a static (class) component in ABAP OO?
Instance components (DATA, METHODS) exist per object and are accessed with the object reference (->). Static components (CLASS-DATA, CLASS-METHODS) belong to the class itself, exist once regardless of instances, and are accessed with the class name (=>).
What is the syntax difference between the object component selectors -> and => in ABAP?
-> accesses instance components (attributes/methods) via an object reference variable (e.g., oref->method( )). => accesses static components via the class name (e.g., class_name=>static_method( )).
What is the constructor in an ABAP class, and how is it called?
CONSTRUCTOR is a special instance method automatically called when an object is created with CREATE OBJECT or NEW. The static constructor CLASS_CONSTRUCTOR runs once, automatically, before the class is first accessed. Constructors initialize the object/class state.
How do you instantiate an object in modern ABAP?
Using the NEW operator with an object reference: DATA(oref) = NEW class_name( param = value ). This replaces the older CREATE OBJECT oref. NEW combines declaration, instantiation, and constructor call.
What is the difference between an interface and inheritance in ABAP Objects?
Inheritance (INHERITING FROM) creates an 'is-a' hierarchy with single inheritance—a subclass reuses/extends one superclass. An interface (INTERFACES) defines a set of method signatures with no implementation; a class implements it, enabling multiple interface implementation and polymorphism without a class hierarchy.
In advanced ABAP OO, what do the class options ABSTRACT and FINAL mean?
ABSTRACT: the class cannot be instantiated directly; it serves as a base with possibly unimplemented (abstract) methods. FINAL: the class cannot be inherited from (no subclasses). Methods can also be ABSTRACT (must be redefined) or FINAL (cannot be redefined).
What does REDEFINITION do in ABAP inheritance, and what keyword calls the parent's version?
REDEFINITION lets a subclass override an inherited (non-final) method with its own implementation (declared with METHODS meth REDEFINITION). Inside the redefined method, super->method( ) calls the superclass's original implementation. me->method( ) refers to the current object's method.
What are events in ABAP Objects and how are they linked to handlers?
An event (EVENTS/CLASS-EVENTS) is raised by a method with RAISE EVENT to signal an occurrence. A handler method (declared FOR EVENT ... OF class) is registered with SET HANDLER. This decouples the trigger from the responders (publish-subscribe).
What is a friend relationship (FRIENDS) in ABAP classes?
Declaring a class or interface as a FRIEND grants it access to the protected and private components (and instance-creation) of the befriending class, bypassing normal visibility rules. Friendship is granted, not taken, and is not inherited symmetrically by default.
What is the ABAP Workbench and name its key tools with transaction codes.
The ABAP Workbench is the classic integrated development environment in SAP GUI for building/maintaining ABAP objects. Key tools: SE38 (ABAP Editor), SE80 (Object Navigator), SE11 (Data Dictionary), SE37 (Function Builder), SE24 (Class Builder), SE41/SE51 (Menu/Screen Painter), SE30/SAT (runtime analysis).
What is a Transport Request (and the Transport Organizer, SE09) in the ABAP Workbench?
A Transport Request records development/customizing changes so they can be moved consistently between systems (DEV → QAS → PROD) along a transport landscape. The Transport Organizer (SE09/SE10) manages Workbench and Customizing requests and their tasks.
What are the ABAP Development Tools (ADT) and on what platform do they run?
ADT (also called 'ABAP in Eclipse') is a modern, Eclipse-based IDE for ABAP development. It runs on the Eclipse platform (desktop) and connects to the ABAP backend, offering source-based editing, code completion, refactoring, and support for newer artifacts like CDS views—features not available in SAP GUI.
Name two development artifacts that can ONLY be developed in ADT (Eclipse), not in the classic SAP GUI Workbench.
Core Data Services (CDS) views/entities and ABAP Restful Application Programming (RAP) objects. Other ADT-centric artifacts include behavior definitions, access controls, and service definitions/bindings used in modern ABAP on SAP HANA / S/4HANA and BTP.
What is Open SQL (ABAP SQL) and what advantage does it give over Native SQL?
Open SQL (now ABAP SQL) is a unified subset of SQL embedded in ABAP that works identically across all database systems SAP supports. It is database-independent, integrates with the ABAP Dictionary, and uses SAP buffering, so the same code runs on any DB platform without change.
What are the main Open SQL (ABAP SQL) statements?
SELECT (read), INSERT (add rows), UPDATE (change rows), MODIFY (insert-or-update), and DELETE (remove rows). SELECT supports INTO/APPENDING internal tables, WHERE, JOIN, GROUP BY, ORDER BY, aggregate functions, and the SINGLE / UP TO n ROWS additions.
What is Native SQL in ABAP, how is it delimited, and what are its trade-offs?
Native SQL sends database-specific SQL statements directly to the DB, written between EXEC SQL. ... ENDEXEC. (or via ADBC classes). It allows DB-specific features but is database-dependent, bypasses the ABAP Dictionary and SAP buffer, does not check syntax against DDIC, and reduces portability.
What is the difference between SELECT SINGLE and SELECT ... UP TO 1 ROWS in ABAP SQL?
SELECT SINGLE reads exactly one row identified by (ideally) the full primary key and does not sort. SELECT ... UP TO 1 ROWS returns the first row of a (possibly ordered) result set and can be combined with ORDER BY to get, e.g., the max/min record. SINGLE requires key uniqueness for a deterministic result.
In ABAP SQL, what does an INNER JOIN versus a LEFT OUTER JOIN return?
INNER JOIN returns only rows where the join condition matches in both tables. LEFT OUTER JOIN returns all rows of the left table plus matching right-table columns, filling non-matching right columns with null/initial values. This controls whether unmatched left rows are kept.
What is the fundamental difference between User Exits, BAdIs, and the Enhancement Framework in terms of enhancement technology generation?
They are successive generations of SAP enhancement technology: 1) User Exits/Customer Exits (oldest, procedural, predefined by SAP), 2) BAdIs (Business Add-Ins, object-oriented, multiple implementations), 3) Enhancement Framework (newest, explicit and implicit enhancement points/sections, source-code and BAdI enhancements unified).
What is a User Exit in ABAP, and how does it differ from a Customer Exit?
A User Exit is an enhancement realized as an empty subroutine (FORM) within SAP standard programs (common in SD), which the customer fills with code. A Customer Exit (managed via SMOD/CMOD) is a more structured SAP-provided exit implemented as a function-module exit, menu exit, or screen exit, activated through a project.
What transactions are used to manage classic Customer Exits (SAP enhancements)?
SMOD is used to view/display available SAP enhancements (collections of exits). CMOD is used to create a customer project, assign enhancements to it, implement the exits (function-module/menu/screen), and activate the project.
What is a BAdI (Business Add-In) and what is its key advantage over classic Customer Exits?
A BAdI is an object-oriented enhancement based on interfaces, allowing customers to implement predefined methods. Its key advantage is support for multiple, independent implementations (including filter-dependent ones), and it fits the OO model—unlike single-use classic exits.
What is the difference between a Classic BAdI and a Kernel-Based (new) BAdI?
Classic BAdIs (transaction SE18/SE19) predate the Enhancement Framework and use a manager class. Kernel-based (new) BAdIs are part of the Enhancement Framework, are called with GET BADI and CALL BADI statements, offer better performance, support default/fallback implementations, and are integrated with enhancement spots.
What ABAP statements are used to call a kernel-based (new) BAdI?
GET BADI creates a BAdI handle (reference) for the enhancement spot, then CALL BADI handle->method( ) invokes the implementation(s). Filters can be passed in GET BADI to select the appropriate filter-dependent implementation.
What is the SAP Enhancement Framework, and what are implicit versus explicit enhancement options?
The Enhancement Framework is the unified technology for enhancing SAP repository objects without modification. Explicit enhancements are predefined points/sections placed by SAP (ENHANCEMENT-POINT, ENHANCEMENT-SECTION) that developers fill. Implicit enhancement points exist automatically at standard positions (e.g., end of a FORM/method, end of a structure) where custom code can be inserted.
What is the difference between an enhancement point and an enhancement section in the ABAP Enhancement Framework?
At an ENHANCEMENT-POINT, the custom (enhancement implementation) code is executed IN ADDITION to the original code. At an ENHANCEMENT-SECTION, the enhancement implementation's code REPLACES the enclosed original code when active. Both are explicit, SAP-defined options.
What is an Enhancement Spot and Enhancement Implementation in the Enhancement Framework?
An Enhancement Spot is a container that manages enhancement options (declaring where enhancements are possible, e.g., BAdI definitions or enhancement points). An Enhancement Implementation contains the actual customer code that fills those options. Composite spots/implementations can group several together.
What is SAP Web Dynpro ABAP?
Web Dynpro ABAP is SAP's standard web-based UI programming model/technology for developing browser-based business applications on the ABAP application server. It follows a model-driven, declarative approach with a clear separation of UI (view) and logic, running the runtime on the ABAP stack.
What architectural pattern does Web Dynpro ABAP follow, and what are its three main parts?
Web Dynpro follows the Model-View-Controller (MVC) pattern. The three parts are the Model (business data/logic, often via BAPIs/function modules), the View (UI layout of screen elements), and the Controller (handles events and data flow between view and model).
What is a Context in Web Dynpro ABAP?
The Context is a hierarchical, tree-like data storage structure within a controller (component or view controller) consisting of nodes and attributes. It holds the data used by the UI; UI elements bind to context attributes, and data is transported between the view and model through context mapping and binding.
In Web Dynpro ABAP, what is the difference between context mapping and data binding?
Data binding connects UI elements in a view to attributes in that view's context node (driving what is displayed/entered). Context mapping links a view/component controller context node to a node in another (usually the component) controller, sharing data across controllers so multiple views can access the same data.
What is a Web Dynpro Component and what does a Window contain?
A Web Dynpro Component is the central, reusable development unit bundling views, windows, controllers, and context. A Window is a container that embeds one or more views and defines the navigation (plugs) between them, representing what is displayed to the user at runtime.
What are inbound and outbound plugs in Web Dynpro ABAP navigation?
Plugs define navigation between views within a window. An outbound plug is triggered (fired) by a view to leave it; it is wired to an inbound plug of the target view, which is entered when navigation occurs. The navigation link connects an outbound plug to an inbound plug.
What are the main phases of the Web Dynpro ABAP phase model (processing cycle)?
For each request the runtime executes roughly: handle the incoming request/event, transport data from the view into the context, run event handler methods (application logic), then the wdDoModifyView/rendering phase transports context data back to the view and generates the HTML response sent to the browser.
What is the ABAP system field sy-subrc and what does the value 0 typically indicate?
sy-subrc is a system return-code field set after many ABAP statements (SELECT, READ TABLE, function calls, etc.). A value of 0 conventionally indicates the operation was successful (row found, call succeeded); a non-zero value indicates an error or 'not found' condition. Always check it immediately after the relevant statement.
What is a LUW (Logical Unit of Work) in SAP and how does it relate to COMMIT WORK / ROLLBACK WORK?
A LUW is an inseparable sequence of database operations that must be executed entirely or not at all (atomicity). COMMIT WORK makes all changes since the last commit permanent and ends the LUW; ROLLBACK WORK undoes all changes since the last commit. SAP distinguishes the database LUW from the SAP LUW (which can span dialog steps via update function modules).
SAP SAP ABAP FAQ
What is in the SAP SAP ABAP syllabus?
SAP SAP ABAP is split into 10 chapters: Introduction to SAP ABAP, ABAP Programming Basics, Advanced ABAP Programming, ABAP Object-Oriented Programming (OOP), ABAP Development Tools, Database Access, Enhancements and Modifications, Web Technologies in ABAP, Performance Tuning and Best Practices and SAP ABAP Certification Preparation. Together they contain 23 topics and 69 sub-topics.
How many chapters are in SAP SAP ABAP?
10 chapters, containing 23 topics and 69 sub-topics. The largest chapter is ABAP Programming Basics, with 3 topics.
Are there flashcards for SAP SAP ABAP?
Yes — a 72-card SAP ABAP deck, printed in full in the flashcards section of this page and available in the Examius app with spaced repetition. The free plan covers one exam of your choice, including its flashcards; Examius Pro, a one-time purchase, unlocks every other exam and deck.