ABAP RAP

Entity Manipulation Language (EML)

(C) Brandeis Consulting📁

EML

Die EML ist vergleichbar mit der DML von SQL. Damit werden Daten angelegt, gelesen, verändert und gelöscht. Alle Anweisungen beziehen sich auf den Transaktionspuffer.

EML Anweisungen

  • READ
  • MODIFY
  • GET PERMISSONS
  • SET LOCKS
  • COMMIT ENTITIES
  • ROLLBACK ENTITIES
(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📁