Ansicht
Dokumentation

ABENBDL_FIELD_CHAR - BDL FIELD CHAR

ABENBDL_FIELD_CHAR - BDL FIELD CHAR

PERFORM Short Reference   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- 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

  • 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.

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

  • 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.
  • 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.
  • 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@@

ABAP EML - RAP Calculator



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 )