1. Service Consumption
    1. Events
    2. SAP Fiori UIs & Web APIs
    3. Fiori App Deployment
      1. Developing Fiori Apps with Fiori tools
      2. Deploying apps with Fiori Elements
  2. Business Service Exposure
    1. Service Definition & Binding. Used primarily to expose a RAP Business Object as an OData service for Fiori applications. V2 vs V4
      1. Defines which views (interface and consumption) are to be exposed
      2. Acts as a projection of the data model and related behavior
  3. Data Modeling & Behavior
    1. Business Object (BO)
      1. A business object as a digital representation of a real-world entity, like a customer or sales order. It encapsulates not only the data associated with that entity (attributes like customer name, product description, or order quantity) but also the behavior related to it.
        1. Attributes: Data points defining the entity, like customer name, product description, or order quantity
        2. Hierarchical relationships: BOs can interact with each other, forming a hierarchy (e.g., a sales order with multiple order items creates a parent-child relationship)
        3. Operations: These are actions we can perform on the data, encompassing the classic CRUD (Create, Read, Update, Delete) operations and potentially more complex, application-specific actions (e.g., approving a sales order).
        4. Entity Manipulation Language (EML): This extension of the ABAP language empowers developers to implement the behavior of business objects, essentially defining how operations are carried out
          1. EML serves as a standardized, type-safe API for interacting with RAP business objects. It allows developers to: READ and modify business object data Execute actions defined in the business object Manage transaction boundaries Trigger the save sequence for persisting changes
          2. READ ENTITIES: Retrieves data from RAP business objects MODIFY ENTITIES: Performs create, update, and delete operations on business object instances EXECUTE ACTION: Invokes custom actions defined in the business object COMMIT ENTITIES: Persists changes to the database GET PERMISSIONS: Retrieves information about RAP business object permissions
          3. Key Features
          4. Transactional Buffer: EML operations work with a transactional buffer, allowing for consistent data handling across multiple operations.
          5. Type Safety: uses BDEF (Behavior Definition) derived types, ensuring type-safe operations.
          6. Response Handling: structured ways to handle operation results, failures, and messages through MAPPED, FAILED, and REPORTED parameters.
          7. Local Mode: can be executed in local mode within behavior pools, bypassing certain checks for internal operation
      2. Has a root entity - The entry point of a BO: Defines the top node within the BO’s hierarchical structure.
        1. Identified using the ROOT keyword in CDS (Core Data Services) data definition: This keyword specifies that the entity is the root of a composition tree in SAP RAP
    2. Behaviour Definition
      1. What operations (CRUD) are possible for the entities defined
        1. Whether the operations are managed by SAP or not managed by SAP. Unmanaged operations are then required to be implemented in the associated class
        2. Read-only fields / Mandatory fields from the service
        3. Field Mapping
      2. Actions - Custom operations triggered by users
      3. Determinations - are automated logic executions
    3. Behaviour Implementation (ABAP)
      1. Implements the logic for the defined behavior using ABAP methods
      2. API Usage in RAP
        1. Tier 1 - use only use approved SAP APIs; you can find these in the system using their C1 contract.
          1. Cloudification Repository - Current (Private Cloud / On-Premise)
          2. Cloudification Repository - Current (Public Cloud)
        2. TIER 2 - you wrap standard SAP objects that you want to use in TIER-1. In most cases there is no official API yet,
        3. TIER 3 - Objects that will remain stable in the future e.g. the CL_GUI_ALV_GRID class, as it will remain stable but is not ABAP Cloud capable
    4. Core Data Services
      1. Main purpose
        1. CDS views are primarily for reading data and to do code push down using some of the in built sql functions and expressions.
      2. Modelling CDS
        1. Using CDS models you capture the data retrieval logic of your application in such a way that it can be executed directly in the database system
        2. CDS Annotations
      3. Exposing CDS Views
        1. Add Annotation to CDS view to publish as OData
        2. Use SEGW to expose as OData (older systems)
  4. Background
    1. ABAP Cloud - the cloud-optimised ABAP Language Version
    2. Build modern, cloud-ready, and upgrade-stable ABAP applications and extensions
      1. Only public SAP APIs and SAP extension points can be used
      2. No SAP modifications allowed
      3. Use Eclipse based, ABAP Development Tools (ADT) for development
      4. Build ABAP Restful application model (RAP) based Fiori apps and services
      5. Rules
    3. Rules are enforced by
      1. ABAP compiler and runtime checks
        1. Check that you use only released APIs and suggest CDS entities as replacements
      2. ABAP authorizations
    4. RAP programming model is core of extension projects, the main building blocks are:
      1. Core Data Services
      2. Modernized and extended ABAP language
      3. OData protocol for stateless communication
      4. Business Object (BO) is used for building transactional applications
      5. Business Service (BS) used to define services
        1. OData based services for building role-based SAP Fiori Apps
        2. OData services for exposure as Web APIs
        3. Business Events
    5. RAP vs traditional ABAP development
      1. Evolution of ABAP
    6. Identity and Access Management
      1. No direct access to the classical transaction for role maintenance (PFCG). Instead, a new cloud Identity and Access Management (IAM) which consists of:
        1. Fiori apps for user and role maintenance on top of IAM catalogs and role templates
        2. The IAM app, IAM business catalog, and IAM business role templates, for creating IAM content for their own applications and SAP applications
    7. Connectivity
      1. Cloud Communication Management
        1. Fiori apps for inbound and outbound communication
        2. Communication scenarios for CDS views can be created released views
        3. SAP S/4HANA Business APIs
          1. Relased apis can be determined in the api acceleration hub documentation (per release)
  5. Links & Tutorials
    1. Get an ABAP Trial account
    2. Fiori
      1. New to Fiori?
        1. UI5 From Scratch (Discover UI5)
        2. Tools you will need
          1. Easy ui5 generator
          2. UI5 tooling toolchain
          3. UI5 Linter
          4. Getting started with Fiori Tools
          5. Guided Answers - SAP Fiori Tools
          6. Github
          7. Git 101 - Scot Hanselman
        3. BestofUI5
      2. Build a Fiori Elements app with RAP
      3. Build Fiori Elements app based on RAP (eLearning)
      4. Fiori Elements showcase for RAP
    3. ABAP RAP
      1. RAP Developer Guide
      2. RAP100 Course
      3. Learning Hub - RAP Development
        1. All slides and code
      4. Start lean with RAP
      5. RAP Course Playlist (old but great presenter)
        1. Github Link to samples
      6. Steampunk overview deck (old but good)
      7. What is the eTag field in RAP?
      8. BAPI is Obsolete, Use BDEF Easily in S/4HANA
      9. Send RAP events to external systems
      10. EML Cheatsheet
      11. ABAP Restful Application Playlist (CodeinMins)
      12. Intro to RAP (old) (Integrtr)
      13. Create and Expose CDS Views (Unmanaged Scenario)
      14. Working with ABAP cross trace tools
      15. RAP Repository objects wizard
        1. Help link
      16. Three Tier Development Model for ABAP Cloud
      17. Naming Conventions
        1. Interface CDS Entity: I_
        2. Base CDS Entity: R_
        3. Projection CDS Entity: C_
        4. Service Binding for UI Service with OData V4: UI_ (prefix) and _O4 (suffix)
        5. Database Tables (Persistent): A_ (Draft): D_
    4. CDS Views
      1. CDS Views in SAP HANA
      2. Finding CDS Views
        1. Use ADT Tools
          1. Powerful search within eclipse using CTRL + H
          2. Use the dependency viewer in ADT
        2. Interrogate the dd021 table
          1. Custom ABAP to lookup by fieldname
        3. Search in SAP Help
        4. Find the root package of a CDS view
        5. Query Browser in SAP Fiori Launchpad
          1. Make suer this role is assigned to your user SAP_BR_EMPLOYEE
        6. Create an ABAP Query
        7. Use transaction SDDLAR (HANA Analysis and Repair tool)
        8. Where used in SE11 (DDL Source)
      3. Create business configuration - table maintenance
    5. Enhancement & Adaptions
      1. Tutorial - Create an wrapper for unreleased APIs
      2. UI Adaption video
      3. Clean ABAP
        1. ABAP Clean Code for S/4 HANA (Video)
        2. Guidelines
      4. Extend S/4HANA with ABAP based extension Guideline
      5. S/4HANA extensibility - Learning Journey
      6. Extending Fiori Elements Apps using adaption projects
  6. Warren Eiserman (VMG Labs March 2025)