RAP_CDS_ODATAadvanced
Unmanaged RAP
Understand unmanaged RAP for brownfield scenarios where existing BAPIs, function modules or custom save logic must remain authoritative. Learn how developers implement CRUD, buffering, locking, save sequencing, messages and transaction consistency.
Overview
Understand unmanaged RAP for brownfield scenarios where existing BAPIs, function modules or custom save logic must remain authoritative. Learn how developers implement CRUD, buffering, locking, save sequencing, messages and transaction consistency.
Lessons in this topic
- Unmanaged RAP Part 1: When to Use It — Locks, Numbering and MessagesUnderstand when unmanaged RAP is the right choice, exactly which responsibilities move from the framework to you, and implement the first three: locking, key numbering and translating legacy errors into RAP messages.
- Unmanaged RAP Part 2: Architecture — CDS, BDEF and Transactional BufferSet up the complete unmanaged RAP architecture for a brownfield application: CDS views for queries, the full unmanaged behavior definition, the behavior pool layout, and the transactional buffer class you own.
- Unmanaged RAP Part 3: Create, Update, Delete and Read HandlersImplement the unmanaged handler methods correctly: create into the buffer, partial updates with %control, delete including the create-then-delete case, a buffer-aware read method, and create-by-association for items.
- Unmanaged RAP Part 4: Save Sequence, Transaction Safety and Legacy APIsImplement the saver class that hands the transactional buffer to the legacy API: finalize, check_before_save, adjust_numbers, save and cleanup — and learn the rules that keep legacy BAPIs and function modules from breaking RAP's all-or-nothing transaction.
- Unmanaged RAP Part 5: Choosing the Implementation Type and Migrating BOPF/SEGWCompare the four RAP implementation types — managed, managed with additional save, managed with unmanaged save and unmanaged — choose correctly, and follow a safe step-by-step path for moving BOPF objects and SEGW services to RAP.
Interview questions covered
- When would you choose unmanaged RAP instead of managed RAP, and what do you have to implement yourself once you do?
- How do you implement locking in unmanaged RAP, and what should happen when another user already holds the lock?
- Explain the transactional buffer in unmanaged RAP. How do the query path and the transactional read path differ, and what goes wrong if your read method ignores the buffer?
- A 15-year-old custom purchase request transaction must get a Fiori app without losing its function-group logic. Walk through your RAP design.
- Users report that editing only the description of an asset in a new RAP app wipes its location and cost center. The BO is unmanaged. What is the bug and how do you fix it?
- In an unmanaged BO, a user changes a field and triggers an action in the same interaction. The action uses the old value, and the next save fails with 'data changed by another user'. What is the likely cause?
- Explain the RAP save sequence in an unmanaged business object: which saver methods run, in which order, and where is the point of no return?
- A legacy function module you must use in RAP ends with COMMIT WORK and also sends a synchronous RFC to a warehouse system. How do you integrate it safely?
- Compare managed, managed with additional save, managed with unmanaged save and unmanaged RAP. How do you decide?
- You must migrate a SEGW-based OData service and the BOPF object behind it to RAP. What is your plan?