
EML besteht aus Anweisungen, mit denen Sie die Daten eines Business-Objekts manipulieren können. Zum Lesen von Daten verwenden Sie die Anweisung READ ENTITIES; für alle anderen Operationen verwenden Sie die MODIFY ENTITIES -Anweisung mit dem entsprechenden Zusatz UPDATE, CREATE oder DELETE.
Notiz
Sie können die Operationen CREATE, UPDATE und DELETE nur verwenden, wenn die Verhaltensdefinition des Business-Objekt-Interface die entsprechende use create, use update oder use delete -Direktive enthält. Der Versuch, eine verbotene Operation zu verwenden, verursacht einen Syntaxfehler.

Um Daten aus einem Business-Objekt zu lesen, verwenden Sie die Anweisung READ ENTITIES. Die Anweisung hat zwei wichtige Parameter: eine interne Tabelle mit den Schlüsseln der Daten, die Sie lesen möchten, und eine weitere Tabelle, die die Ergebnisse der Query enthält.
Diese internen Tabellen haben spezielle Datentypen, die als abgeleitete Verhaltensdefinitionstypen bezeichnet werden. Das System legt sie automatisch an, wenn ein Entwickler eine Verhaltensdefinition anlegt, und sie enthalten einige oder alle Felder des Business-Objekts zusammen mit weiteren Feldern, die steuern, wie das System eine bestimmte Anforderung verarbeitet. Sie deklarieren die internen Tabellen mit dem neuen Zusatz TYPE TABLE FOR <operation> in der DATA-Anweisung.

Der Typ TABLE FOR READ IMPORT enthält das oder die Schlüsselfelder des Business-Objekts. Die %control -Struktur ist eine generierte Struktur, die angibt, welche Felder des Business-Objekts tatsächlich in der aktuellen Operation verwendet werden. In unserem Beispiel füllt das System die Struktur automatisch und Sie müssen sich nicht darum kümmern.
Der TypTABLE FOR READ RESULT enthält alle Felder des Business-Objekts. Diese Tabelle enthält die Ergebnismenge nach Ausführung der Leseanweisung.

Die gelesene Importtabelle enthält eine Spalte für jedes Schlüsselfeld des Business-Objekts, in diesem Fall agencyID. Um eine bestimmte Agentur zu lesen, fügen Sie der internen Tabelle eine Zeile mit ihrem Schlüssel hinzu. Neben dem oder den Schlüsselfeldern enthält die Tabelle die Spalten %is_draft und %control. Mit %is_draft können Sie angeben, ob Sie Entwurfsdaten oder aktive Daten lesen möchten. Mit der %control -Struktur wird angegeben, welche Felder gelesen werden sollen.
Notiz
In unserem Beispiel lesen wir nur aktive Daten, und die %control -Struktur wird vom Framework gefüllt, basierend auf der Feldliste nach dem Zusatz FIELDS.

Wenn Sie ein Business-Objekt mit der Anweisung READ ENTITIES OF oder MODIFY ENTITIES OF bearbeiten, müssen Sie zuerst den Namen der Verhaltensdefinition angeben. Darauf folgt das Schlüsselwort ENTITY und der Name der Entität, mit der Sie arbeiten möchten. Wenn die Entität einen Aliasnamen hat, sollten Sie ihn hier verwenden.
Notiz
Der Aliasname kann nicht hinter dem Zusatz OF verwendet werden. Dies liegt daran, dass Sie an dieser Stelle technisch nicht den Namen der Entität, sondern den Namen der Verhaltensdefinition angeben.

Die READ ENTITIES -Anweisung liest Business-Objekt-Daten gemäß den Schlüsseln, die Sie im WITH -Zusatz übergeben. Sie gibt das Ergebnis im Zusatz RESULT in der internen Tabelle zurück. In der -Anweisung können Sie auch angeben, welche Felder des Business-Objekts Sie benötigen. In diesem Beispiel haben wir den Zusatz ALL FIELDS verwendet, um alle Felder zurückzugeben. Wenn Sie jedoch nur eine Teilmenge der Felder benötigen, können Sie die Variante FIELDS ( field1field2 … ) verwenden, um die Menge der gelesenen Daten einzuschränken.
Notiz
Anders als bei einer SELECT -Anweisung ist die Feldliste nicht kommasepariert.

Die Ergebnistabelle enthält alle Felder des Business-Objekts zusammen mit dem Steuerungsfeld %is_draft. Wenn Ihre READ ENTITIES -Anweisung die Variante ALL FIELDS enthält, stellt das System die Werte aller Felder bereit. Wenn Sie die Variante FIELDS ( f1 … fn ) verwenden, werden nur die Felder gefüllt, die Sie angefordert haben.
Notiz

Wenn Sie Daten aktualisieren möchten, deklarieren Sie eine interne Tabelle mit TYPE TABLE FOR UPDATE. Diese enthält alle Felder des Business-Objekts sowie die %control -Struktur. In unserer Variante der MODIFY ENTITIES -Anweisung wird die %control -Struktur automatisch gefüllt.


Die MODIFY ENTITIES -Anweisung aktualisiert Daten im Transaktionspuffer. Im Zusatz FIELDS legen Sie fest, welche Felder geändert werden sollen. Im Zusatz WITH übergeben Sie die interne Tabelle mit den Daten, die Sie aktualisieren möchten.
Wenn Sie EML außerhalb des Business-Objekts verwenden, müssen Sie die Anweisung COMMIT ENTITIES verwenden, um die Sicherungssequenz auszulösen und die Daten in der Datenbank zu persistieren.
Notiz
Später in diesem Kurs verwenden wir EML in der Verhaltensimplementierung des Business-Objekts. Innerhalb der Verhaltensimplementierung ist es weder erforderlich noch zulässig, den Commit mit COMMIT ENTITIES auszulösen.