This is a test message to test the length of the message box.
Login
ABAP RAP Unmanaged
Erstellt von Software-Heroes

RAP - Unmanaged Szenario

411

In diesem Artikel werden wir einmal auf die Theorie des Unmanaged Ansatzes eingehen und wie dieser im ABAP RESTful Programming Model umgesetzt wird.

Werbung


In diesem Artikel werden wir uns einmal die Theorie zum unmanaged Szenario anschauen und in den beiden Folgeartikeln auf Beispiele eingehen, wie dieser mit lokalen APIs und im Remote Ansatz funktionieren kann. Dazu aber erst einmal etwas Theorie, wie das Szenario funktioniert.

 

Einleitung

Alles, was du bisher auf unserem Blog gelernt hast, beschreibt vor allem die Umsetzung im Managed Ansatz. Dabei übernimmt das RAP Framework die gesamte Arbeit der Datenverwaltung. Die Bereitstellung der Daten, die Aktualisierung, das Löschen, die Nummernvergabe, Draft-Handling und das Speichern wird vom Framework übernommen und muss nicht entwickelt werden. Möchtest du ein Objekt "Unmanaged" entwickeln, dann entscheidest du dich dafür, alles selbst zu entwickeln.

Dies ist für bestimmte Prozesse auch sehr sinnvoll, vor allem wenn es um Migration von bestehendem Coding und Funktionen ist. Alles war nach dem MVC (Model View Control) bereits sauber in ABAP entwickelt wurde, lässt sich zum Großteil wiederverwenden und einem unmanaged RAP Objekt wiederverwenden, um so Zeit und Kosten zu sparen.

 

Funktionsweise

Schauen wir uns einmal die verschiedenen Schritte an, bevor die Daten aus dem Frontend überhaupt auf der Datenbank landen. Dazu gibt es eine Übersicht von SAP, die wir dir hier im Detail noch einmal erklären. Bei RAP handelt es sich um eine "Stateless" Anwendung, jeder Zugriff auf das Backend erfolgt ohne eine offene Session, der User wird angemeldet, führt seine Aktion aus, erhält das Ergebnis und die Session wird im Backend wieder beendet. Die Kommunikation übernimmt der Browser, der immer dann eine Session Richtung Backend öffnet, wenn es zu Aktionen oder Datenabfragen kommt.

 

 

Insgesamt unterscheidet man in zwei Phasen:

  • Interaktionsphase - In dieser Phase bedient der Anwender die Fiori Applikation, liest die Daten, filtert diese und fängt sie an zu verändern. Diese Änderungen werden im Transaktionalen Puffer gehalten, eine Art Zwischenspeicher im SAP-System. Die Änderungen befinden sich aber noch nicht auf der Datenbank.
  • Speichersequenz - Der User klickt in der Anwendung auf Speichern, die Speichersequenz wird durchlaufen und die Daten aus dem Transaktionalen Puffer werden auf die Datenbank übernommen. Dabei werden Schlüssel vergeben, die Daten geprüft und zum Abschluss persistiert.

 

Unterschiede

Im Managed RAP Objekt übernimmt die beiden Phasen das RAP Framework und wir als Entwickler müssen nichts dazu entwickeln. Das spart eine Menge Zeit, Aufwand und Quellcode. Beim Unmanaged Ansatz übernehmen wir alles, was auf dem Schaubild zu sehen ist. Wir kümmern uns um die einzelnen Aktionen, den Transaktionalen Puffer und die Speichersequenz, um die Daten schließlich auf der Datenbank zu persistieren.

Der Vollständigkeit halber muss man aber noch sagen, dass es für das Managed RAP Objekt auch die Möglichkeit gibt, die Speichersequenz selbst zu implementieren, dies heißt dann "Unmanaged Save". Diese Methodik würden wir uns aber in einem späteren Artikel anschauen.

 

Beispiel

Wie sehen also nun die Unterschiede bei der Implementierung aus? Die Erstellung des Modells und der CDS Views muss erst einmal nicht abweichen, die erste große Änderung geschieht bei der Anlage der Verhaltensdefinition:

 

Der Implementation Type wird auf Unmanaged gesetzt, entsprechend sieht dann auch die Definition aus, auf Zeile 1 erkennt man den Typ der Definition:

 

Es wird auch die entsprechende Verhaltensimplementierung angelegt, diese ist allerdings leer und muss durch uns erst noch entwickelt werden:

CLASS lhc_Unmanaged DEFINITION INHERITING FROM cl_abap_behavior_handler.
  PRIVATE SECTION.
    METHODS get_instance_authorizations FOR INSTANCE AUTHORIZATION
      IMPORTING keys REQUEST requested_authorizations FOR Unmanaged RESULT result.

    METHODS create FOR MODIFY
      IMPORTING entities FOR CREATE Unmanaged.

    METHODS update FOR MODIFY
      IMPORTING entities FOR UPDATE Unmanaged.

    METHODS delete FOR MODIFY
      IMPORTING keys FOR DELETE Unmanaged.

    METHODS read FOR READ
      IMPORTING keys FOR READ Unmanaged RESULT result.

    METHODS lock FOR LOCK
      IMPORTING keys FOR LOCK Unmanaged.

ENDCLASS.


CLASS lhc_Unmanaged IMPLEMENTATION.
  METHOD get_instance_authorizations.
  ENDMETHOD.


  METHOD create.
  ENDMETHOD.


  METHOD update.
  ENDMETHOD.


  METHOD delete.
  ENDMETHOD.


  METHOD read.
  ENDMETHOD.


  METHOD lock.
  ENDMETHOD.
ENDCLASS.


CLASS lsc_ZBS_R_DMOUNMANAGED DEFINITION INHERITING FROM cl_abap_behavior_saver.
  PROTECTED SECTION.
    METHODS
      finalize REDEFINITION.

    METHODS
      check_before_save REDEFINITION.

    METHODS
      save REDEFINITION.

    METHODS
      cleanup REDEFINITION.

    METHODS
      cleanup_finalize REDEFINITION.

ENDCLASS.


CLASS lsc_ZBS_R_DMOUNMANAGED IMPLEMENTATION.
  METHOD finalize.
  ENDMETHOD.


  METHOD check_before_save.
  ENDMETHOD.


  METHOD save.
  ENDMETHOD.


  METHOD cleanup.
  ENDMETHOD.


  METHOD cleanup_finalize.
  ENDMETHOD.
ENDCLASS.

 

Es werden zwei lokale Klassen implementiert, die von entsprechenden Standardklassen erben:

  • CL_ABAP_BEHAVIOR_HANDLER - Entspricht der Implementierung für die Interaktionsphase.
  • CL_ABAP_BEHAVIOR_SAVER - Definiert die Implementierung der Speichersequenz, die passenden Methoden stehen zur Verfügung.

 

Fazit

Anhand der heutigen Theorie sollte dir die Implementierung nächste Woche recht einfach fallen. Unmanaged bedeutet im Endeffekt mehr Implementierungsaufwand für dich, aber auch mehr Freiheiten bei der Gestaltung des Objekts und beim Aufbau der API. Grundsätzlich werden damit die Szenarien für Brownfield (bestehende Anwendung) und Remote-Szenarien abgebildet.


Enthaltene Themen:
RAPBTPUnmanaged
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


RAP - Excel Datei laden

Kategorie - ABAP

In diesem praktischen Beispiel schauen wir uns die Verarbeitung von Excel in ABAP mit den neuen XCO Klassen an und wie wir die Datei in unser RAP Objekt bekommen.

20.12.2024

RAP - Semantischer Schlüssel

Kategorie - ABAP

Wofür benötigst du den semantischen Schlüssel und wie wird er im ABAP RESTful Programming Model dargestellt? Hier gibt es mehr dazu.

13.12.2024

RAP - Upload von Dateien (Stream)

Kategorie - ABAP

Wie kannst du einfach Dateien in deine RAP Entität laden und diese in ABAP zur Verfügung stellen? Hier schauen wir uns einmal die Details an.

10.12.2024

RAP - Report Pattern

Kategorie - ABAP

Wie ist das Report Pattern in RAP aufgebaut und was kannst du damit machen? Mehr dazu in diesem ABAP Artikel.

06.12.2024

RAP - Übersetzungs-App (Beispiel)

Kategorie - ABAP

Schauen wir uns einmal ein praktisches Beispiel für die Entwicklung einer RAP Anwendung im ABAP Environment an und wie du mit wenig Aufwand eine App erstellst.

02.08.2024