Ansicht
Dokumentation
ABENBDL_FIELD_CHAR - BDL FIELD CHAR
PERFORM Short Reference SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3upDiese Dokumentation steht unter dem Copyright der SAP AG.
- field characteristics
... field(readonly) Field1, Field2, ...;
$| (mandatory) Field1, Field2, ...;
$| (suppress) Field1, Field2, ...;
$| (features:instance) Field1, Field2, ...;
$| (mandatory:create) Field1, Field2, ...;
$| (readonly:update) Field1, Field2, ...;
Varianten:
1. ... field(readonly) Field1, Field2, ...
2. ... field(mandatory) Field1, Field2, ...
3. ... field(suppress) Field1, Field2, ...
4. ... field(features:instance) Field1, Field2, ...
5. ... field(mandatory:create) Field1, Field2, ...
6. ... field(readonly:update) Field1, Field2, ...
Wirkung
In diesem Thema werden die Feldattribute für die Felder einer RAP-BO-Entität aufgeführt.
Um mehrere Felder auf die gleiche Weise zu klassifizieren, kann die Kommaschreibweise benutzt werden. Beispiel: field(readonly) Field1, Field2, Field3;
Ein Feld kann über mehrere Merkmale verfügen, die in den Klammern durch Kommata getrennt werden. Beispiel: field(mandatory:create, readonly:update) Field1, Field2, Field3;. Beim Kombinieren von Feldmerkmalen gelten bestimmte Einschränkungen. Eine Warnung von der Syntaxprüfung macht auf diese Einschränkungen aufmerksam.
Verfügbarkeit
- Bei Projektions-BOs kommt es zu einer automatischen Vererbung. Beim Neudefinieren von Feldmerkmalen in einer Projektions-BO gelten spezielle Regeln. Siehe CDS BDL - Feldmerkmale, Projektions-BDEF.
- Bei abstrakten BDEFs steht nur ein Feldmerkmal zur Verfügung (siehe diesen Abschnitt).
- Bei Interface-BDEFs steht nur ein Feldmerkmal zur Verfügung (siehe diesen Abschnitt).
- Entwicklungsleitfaden für das ABAP-RESTful-Anwendungsprogrammiermodell, Abschnitt Feature Control Definition: Fields
Hinweis
In UI-Szenarien werden Feldmerkmale als RAP-Consumer-Hinweis dargestellt.
Variante 1
... field(readonly) Field1, Field2, ...
Wirkung
- Hiermit wird definiert, dass die Werte der angegebenen Felder vom RAP-BO-Consumer nicht angelegt oder aktualisiert werden dürfen.
- Es ist keine Implementierung im ABAP-Behavior-Pool erforderlich.
- Wenn ein RAP-BO-Consumer
versucht, ein als readonly definiertes Feld in der BDEF über
ABAP EML CREATE
oder UPDATE zu ändern, tritt ein
Laufzeitfehler auf.
Variante 2
... field(mandatory) Field1, Field2, ...
Wirkung
- Hiermit wird definiert, dass Werte in die angegebenen Felder eingegeben werden müssen, bevor sie auf der Datenbank persistiert werden. Diese Felder werden in einem OData-Szenario auf der Benutzungsoberfläche als Mussfelder gekennzeichnet. Es kommt jedoch zu keiner Laufzeitprüfung für Mussfelder und keinem Laufzeitfehler, wenn ein Mussfeld nicht gefüllt ist. Wenn eine Laufzeitprüfung erforderlich ist, sollte der Anwendungsentwickler sie über eine on save-Validierung implementieren.
- Es ist keine Implementierung im ABAP-Behavior-Pool erforderlich.
Beispiel
Das folgende Beispiel zeigt eine verwaltete BDEF, die das Feld char_field1 als Mussfeld definiert.
Das ABAP-Programm DEMO_RAP_MANAGED_MANDATORY verwendet EML, um auf das RAP-Business-Objekt zuzugreifen: Es legt drei Entitätsinstanzen durch Angabe eines Werts für das Primärschlüsselfeld key_field an. Für das Mussfeld char_field1 wird kein Wert eingegeben. Es werden die drei neuen Entitätsinstanzen auf der Datenbank festgeschrieben. Unter Verwendung der SELECT-Anweisung zeigt es den Inhalt der zugrunde liegenden Datenbanktabelle an.
Quelltextausschnitt:
Ergebnis: Das Mussfeld char_field1 enthält den Initialwert und es kommt zu keiner Warnung und keinem Fehler in der Syntaxprüfung.
IMAGE @@ABDOC_MANDATORY.png@@353@@104@@Variante 3
... field(suppress) Field1, Field2, ...
Wirkung
- Mit field(suppress) kann ein Feld aus den abgeleiteten BDEF-Typen, OData und allen RAP APIs entfernt werden. Dies ist für alle Felder möglich außer Schlüsselfelder, Fremdschlüsselfelder und von der aktuellen BDEF verwendeter Felder, wie ETag-Felder.
- Währungsschlüsselfelder vom Datentyp CUKY können nur dann unterdrückt werden, wenn alle Betragsfelder, die dieses spezifische CUKY-Feld referenzieren auch unterdrückt werden.
- Es ist keine Implementierung im ABAP-Behavior-Pool erforderlich.
- Bei Versuch eines RAP-BO-Verwenders ein unterdrücktes Feld zu modifizieren, kommt es zu einer Fehlermeldung über die Nichtexistenz dieses Feldes.
Beispiel
Im folgenden Beispiel wird eine Interface-BDEF gezeigt, die das Feld DataFieldRoot unterdrückt.
Mit dem ABAP-Programm DEMO_RAP_INTERFACE_DRAFT wird eine mit dem abgeleiteten BDEF-Typ des BO DEMO_RAP_INTERFACE_DRAFT typisierte Variable angelegt und deren Struktur angezeigt.
Quelltextausschnitt:
Ergebnis: Das unterdrückte Feld DataFieldRoot gehört nicht zu structure.
IMAGE @@field_suppress.png@@375@@268@@Variante 4
... field(features:instance) Field1, Field2,...
Wirkung
- Dynamisches Feldattribut, das Zugriffseinschränkungen für Felder in Abhängigkeit vom Zustand der BO-Entitätsinstanz definiert.
- Muss im ABAP-Behavior-Pool in der RAP-Behandlermethode FOR INSTANCE FEATURES implementiert werden. Im ABAP-Behavior-Pool kann angegeben werden, dass ein Feld dynamisch obligatorisch, schreibgeschützt, uneingeschränkt oder obligatorisch und schreibgeschützt ist.
- Wenn ein RAP-BO-Consumer versucht, gegen die dynamischen Zugriffseinschränkungen zu verstoßen, wird er ignoriert. Es wird keine Fehler- oder Warnmeldung ausgegeben. In einem verwalteten RAP-BO kommt es zudem zu keinem Eintrag in den Antwortstrukturen. In einem nicht verwalteten RAP-BO kann die reported-Strukturen je nach BO-Implementierung gefüllt werden.
Beispiel
Im folgenden Beispiel wird eine verwaltete BDEF gezeigt, die ein dynamisches Feature-Control für das Feld int_field2 definiert.
Im ABAP-Behavior-Pool gibt sie die folgende Bedingung an: Wenn das Feld int_field1 den Wert '1' enthält, ist int_field2 schreibgeschützt.
Quelltextausschnitt:
... %field-int_field2 = COND #(
WHEN ls_variable-int_field1 = '1'
THEN if_abap_behv=>fc-f-read_only
ELSE if_abap_behv=>fc-f-unrestricted
) ) ).
Das ABAP-Programm DEMO_RAP_INSTANCE_FEATURES verwendet EML, um auf das RAP-Business-Objekt zuzugreifen:
- Zunächst fügt es mit INSERT eine Entitätsinstanz direkt auf der Datenbank ein. Diese Entitätsinstanz hat den Wert '1' für das Feld int_field1. Damit erfüllt es die Bedingung, die das Feature-Control auslöst: Wenn diese Instanz aktualisiert wird, soll das Feld int_field2 schreibgeschützt sein.
- Eine EML-UPDATE-Operation wird für die gleiche Instanz ausgeführt. Diese Update-Operation versucht, einen Wert in das Feld int_field2 einzugeben.
- Die aktualisierte Entitätsinstanz wird auf der Datenbank festgeschrieben. Mit der -SELECT-Anweisung wird der Inhalt der zugrunde liegenden Datenbanktabelle angezeigt.
Ergebnis: Die Update-Operation wird vom dynamischen Feature-Control unterbunden. Das Feld int_field2 enthält den Initialwert. Es wird keine Warnung und kein Fehler von der Syntaxprüfung ausgegeben.
IMAGE @@ABDOC_INSTANCE_FEATURES.png@@415@@64@@Variante 5
... field(mandatory:create) Field1, Field2, ...
Wirkung
- Dynamisches Feldattribut, mit dem definiert wird, dass die Eingabe eines Werts beim Anlegen einer Instanz obligatorisch ist.
- Es ist keine Implementierung im ABAP-Behavior-Pool erforderlich.
- Wenn ein RAP-BO-Consumer versucht, eine neue Entitätsinstanz ohne Eingabe eines Werts in das mit mandatory:create definierte Feld anzulegen, kommt es zu einem Laufzeitfehler.
Hinweis
Ein typischer Anwendungsfall ist das Kombinieren von
mandatory:create mit readonly:update für Schlüsselfelder (externe Nummernvergabe durch den RAP-BO-Consumer).
Variante 6
... field(readonly:update) Field1, Field2, ...
Wirkung
- Dynamisches Feldattribut, mit dem ein Feld als schreibgeschützt bei update-Operationen definiert wird, was bedeutet, dass das Feld nach der create-Operation nicht mehr änderbar ist.
- Es ist keine Implementierung im ABAP-Behavior-Pool erforderlich.
- Wenn ein RAP-BO-Consumer versucht, ein mit readonly:update definiertes Feld zu aktualisieren, tritt ein Laufzeitfehler auf.
ABAP Short Reference CL_GUI_FRONTEND_SERVICES - Frontend Services
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 18366 Date: 20240523 Time: 155440 sap01-206 ( 211 ms )