ABAP RAP

Entity Manipulation Language (EML)

(C) Brandeis Consulting📁

EML

Die EML ist vergleichbar mit der DML von SQL. Die ABAP Erweiterung EML wird in den RAP Objekten verwendet, um dort Aktionen zu implementieren. Es wird aber auch verwendet, um von Aussen auf RAP Objekte zuzugreifen.

EML kann in BOs verwendet werden, um die Daten aus dem Transaktionspuffer zu lesen.

(C) Brandeis Consulting📁

EML Anweisungen

  • READ
  • MODIFY
  • GET PERMISSONS
  • SET LOCKS
  • COMMIT ENTITIES
  • ROLLBACK ENTITIES
(C) Brandeis Consulting📁

Datentypen

Die RAP BOs erzeugen eine Menge von Datentypen, die in der EML verwendet werden. Sie bestehen aus den Feldern der CDS Views und aus generierten %-Feldern und %-Strukturen.

(C) Brandeis Consulting📁

Rückgabeparameter

Die EML Anweisungen verwenden die folgenden Parameter:

  • FAILED - Fehler, Schlüsselwerte der Instanzen die nicht fehlerfrei verarbeitet werden konnten.
  • MAPPED - Nur bei MODIFY ENTITY, Schlüsselmapping
  • REPORTED - (Fehler-)Meldungen
(C) Brandeis Consulting📁

SET LOCKS

Setzen der Sperren für eine oder mehrere BO-Instanzen. Falls die Objekte bereits gesperrt sind, erfolgt eine Ausgaben im Parameter FAILED und REPORTED.

Syntax

SET LOCKS ENTITY <BO-Typ> 
    FROM <Keytable>
   [FAILED <Failed-Table>]
   [REPORTED <Reported-Table>].
(C) Brandeis Consulting📁

COMMIT ENTRIES

Diese Anweisung wird bei der Verarbeitung mit Behaviors bzw. deren Implementierung implizit aufgerufen. Nur außerhalb davon wird sie explizit verwendet.

COMMIT ENTRIES startet die Speichersequenz

Syntax

COMMIT ENTITIES [IN SIMULATION MODE].
COMMIT ENTITIES [IN SIMULATION MODE] RESPONSE OF bdef1 response_param
                                    [RESPONSE OF bdef2 response_param]
                                    [...].
(C) Brandeis Consulting📁

COMMIT ENTRIES - Simulation Mode

Der Simulation Mode schreib die Daten nicht auf die Datenbank. Aber es werden die Methoden

  • FINALIZE
  • CHECK_BEFORE_SAVE
  • CLEANUP_FILALIZE

ausgeführt. Die Methoden

  • ADJUST_NUMBERS
  • SAVE
  • CLEANUP
    werden nicht ausgeführt. Damit ist der Simulation Mode interessant, wenn wir wissen wollen, ob eine Fehlersituation auftreten würde. Dazu können wir die RESPONSE abfragen.
(C) Brandeis Consulting📁

ROLLBACK ENTITIES

Zurückrollen der Änderungen aus dem Transaktionspuffer zu dem letzten persistierten Stand.

  *Reset transactional buffer
  ROLLBACK ENTITIES..
(C) Brandeis Consulting📁

READ ENTITY - wie SELECT SINGLE im ABAP

Abfrage in EML

    READ ENTITY zi_users    
    ALL FIELDS    
    WITH value #( ( userid = 'JBRANDEIS'  ) )    
    RESULT data(lt_result).

Abfrage in ABAP SQL

    SELECT SINGLE FROM zi_users    
    *    
    WHERE userid = 'JBRANDEIS' 
    INTO TABLE @data(lt_result).

Der Ergebnistyp

  lt_result type table for read result zi_users  
(C) Brandeis Consulting📁

Schlüsselkomponenten Gruppen

In den Strukturen tauchen immer wieder unterschiedliche, generierte Gruppen auf, die mit % beginnen.

%KEY

Alle Schlüsselelemente

%PKY

  • Alle Elemente von %KEY
  • ggf. noch**%PID** - die Preliminary ID ist eine vorläufige Id, nur bei neuen Instanzen und late numbering

%TKY

  • Alle Elemente von %PKEY
  • ggf. %IS_DRAFT, falls der DRAFT Modus verwendet wird.
(C) Brandeis Consulting📁

Übersicht Schlüsselkomponenten

(C) Brandeis Consulting📁

MODIFY ENTITY bzw. MODIFY ENTITIES

Ändern, Löschen oder Anlegen von BO Objekten. Darüber hinaus kann man mit der Anweisung auch Aktionen von BO-Instanzen ausführen.

Alle MODIFY Aufrufe sind Massenoperationen, d.h. es können mehrere Instanzen verändert/angelegt/gelöscht/Aktionen aufgerufen werden. Bei MODIFY ENTITIES können auch gleichzeitig Instanzen unterschiedlicher BO-Entitäten angelegt werden.

Bei allen Aufrufen muss die Liste der betroffenen Felder mitgegeben werden.

MODIFY ENTITY <BO-Entität>
  CREATE  

(C) Brandeis Consulting📁

EML Beispiel: Anlegen einer Aufgabe

  METHOD if_oo_adt_classrun~main.
    MODIFY ENTITY zi_jb5_tasks
        CREATE  FIELDS ( taskkey assignee author summary description status )
          WITH  VALUE #( ( taskkey = 'DMO-03'
                               %key-taskkey = 'DMO-03'
                               assignee     = sy-uname
                               author       = sy-uname
                               summary      = 'Create a new Task from ABAP'
                               description  = |Create a new Task using the \n MODIFRY ENTY Statement. \n test!|
                               status       = 'NEW' ) )
                             REPORTED DATA(create_rep)
                             FAILED DATA(create_fail) .
                             
    LOOP AT  create_rep-zi_jb5_tasks  INTO DATA(ls_create_rep).
      out->write( ls_create_rep-%msg->if_message~get_text( ) ).
    ENDLOOP.

    COMMIT ENTITIES RESPONSE OF zi_jb5_tasks REPORTED DATA(lt_reported)
                                             FAILED   DATA(lt_failed).
                                             
    LOOP AT  lt_reported-zi_jb5_tasks  INTO DATA(ls_data).
      out->write( ls_data-%msg->if_message~get_text( ) ).
    ENDLOOP.
  ENDMETHOD.
(C) Brandeis Consulting📁