This is a test message to test the length of the message box.
Login
|
BTP Business Configuration
Erstellt von Software-Heroes

BTP - Business Configuration (Release 2511)

153

Schauen wir einmal auf die Änderungen in der Business Configuration Erstellung und was sich technisch in ABAP geändert hat. Dabei ist nicht alles beim alten Stand geblieben, sondern wurde weiter optimiert.

Werbung


Neue Features werden immer recht groß gefeiert, veröffentlicht, erklärt und hervorgehoben. Doch wie sieht es eigentlich mit Änderungen von bestehenden Features aus?

 

Einleitung

Das Thema Business Configuration ist nicht mehr so neu und die "neue Tabellenpflege" sollte jedem Entwickler ein Begriff sein, der in der BTP arbeitet oder schon ein Clean Core Projekt mit ABAP Cloud macht. Damit erstellen wir unsere Pflegeviews für Fiori und nehmen einige Vorteile für uns mit:

  • Automatische Generierung der Pflege über Wizard in ADT
  • Keine Fiori Generierung und Deployment nötig
  • Steuerung über Berechtigungen
  • Anpassbarkeit über das Entwicklungsmodell RAP
  • Anschluss ans Transportwesen

 

Mit dem Release 2511 gab es nun ein paar größere Änderungen im Wizard, dem Aufbau des Objekts und der Funktionsweise der verschiedenen Bausteine. Daher schauen wir uns einmal das aktuelle Delta an.

 

Wizard

Beginnen wir im ersten Schritt mit dem Wizard und den zur Verfügung stehenden Optionen. Dazu legen wir im ersten Schritt eine neue Tabelle im System an, da diese Grundlage für die Generierung ist. Dabei sollten wir die grundlegenden Eigenschaften berücksichtigen, wie die Auslieferungsklasse C (Customizing) und die Pflege erlauben. Zusätzlich müssen alle Schlüsselfelder, die auf CHAR basieren, als Datenelement und Domäne zur Verfügung stehen. Erst dann kann der Wizard gestartet werden.

@EndUserText.label : 'BC Changes'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zbs_dmo_pocbc {
  key client            : abap.clnt not null;
  key configuration_key : zbs_demo_poc_configuration not null;
  integer_value         : abap.int4;
  character_value       : abap.char(60);
}

 

Im nächsten Schritt müssen wir beim Wizard das Paket für die Generierung angeben. Hier hätte ich mir gewünscht, dass das gleiche Paket wie die Tabelle verwendet wird, da in größer als 90% der Fälle der Pflegeview im gleichen Paket liegt.

 

Kommen wir nun zur Einstellung des Generators. Die größte Änderung gibt es hier direkt zu Beginn in der Szenario Auswahl. Wir können nun entscheiden, ob wir den Projection Layer mit generieren lassen oder nur das eigentliche Business Objekt für die Pflege. Ebenfalls können wir nun die Transport Selection einstellen und den Transport Selection Strip deaktivieren.

 

Der Rest bleibt soweit gleich und wir befüllen die Informationen, wie wir die Objekte generieren wollen. Sind wir mit den Einstellungen fertig, dann erhalten wir eine Übersicht der Objekte. Dann startet die Generierung der verschiedenen Objekte im System.

 

Aktivierung

Sind wir mit der Generierung der Objekte fertig, dann wird nicht das Service Binding geöffnet, sondern wir landen direkt im "Business Configuration Maintenance Object". Die erste Auffälligkeit hier ist, dass nur noch die Service Configuration offen ist und alle anderen Konfigurationen geschlossen sind. Die Einstellungen sind aber soweit erst einmal gleich.

 

Schauen wir im Bereich "Hiding draft related features" vorbei, dann gibt es in diesem Bereich einiges an neuen Einstellungen. Da das Verständnis für das Draft Konzept für einen Endendwender vielleicht ein wenig fremd ist oder schwer zu verstehen ist, können viele der Features in der Oberfläche versteckt werden.

 

Was passiert eigentlich nun genau, wenn die Features aktiviert werden?

  • Hide all features related to draft handling - Versteckt Features wie die Nachricht in der Leiste, dass der Draft gespeichert wurde oder der Button heißt anstatt "Discard draft" nun "Cancel".
  • Stay on current page after save/cancel - Damit wird die Navigation nach den Aktionen deaktiviert und du bleibst auf der aktuellen Seite.
  • Hide create next button - Auf der Object Page wird normalerweise ein "Create next" Button angezeigt, damit kannst du einen weiteren Datensatz anlegen, ohne die Seite zu verlassen. Praktisch, wenn du mehrere Datensätze konfigurieren möchtest.

 

Aktuell ist der OData Service nicht aktiv, daher müssen wir noch dahin navigieren und den Publish des Services starten. Über das Objekt musst du einfach nur auf den Link drücken und die Navigation dahin startet. Nach der Aktivierung können wir uns das UI anschauen.

 

Transport

Zum Zeitpunkt als dieser Artikel geschrieben wird, wir trotz deaktiviertem Transport und Transportstrip die Funktion mit in das Business Objekt generiert. Wir denken aber, dass dieser Bug spätestens zum nächsten Release dann entfernt wird und das Verhalten nur bei Wunsch implementiert wird.

 

Coding und Objekte

Schauen wir uns einmal die generierten Objekte im Detail an.

 

API

In der Verhaltensimplementierung wird nun nicht mehr der Code direkt implementiert, sondern es wird eine wiederverwendbare API verwendet, die zentral geändert werden kann und nicht immer den gleichen Code über alle Objekte verteilt. Dafür ist nun die Logik erst einmal nicht mehr so einfach einsehbar.

METHOD get_instance_features.
  mbc_cp_api=>rap_bc_api( )->get_instance_features( transport_object   = co_transport_object
                                                    entity             = co_entity
                                                    keys               = REF #( keys )
                                                    requested_features = REF #( requested_features )
                                                    result             = REF #( result )
                                                    failed             = REF #( failed )
                                                    reported           = REF #( reported ) ).
ENDMETHOD.


METHOD get_global_authorizations.
  mbc_cp_api=>rap_bc_api( )->get_global_authorizations( entity                   = co_authorization_entity
                                                        requested_authorizations = REF #( requested_authorizations )
                                                        result                   = REF #( result )
                                                        reported                 = REF #( reported ) ).
ENDMETHOD.

 

Möchtest du gezielt Prüfungen deaktivieren, kann im Moment nur die komplette API-Methode deaktiviert werden. Damit hat die neue Lösung erst einmal Vor- aber auch Nachteile.

 

Admin Felder

Wahrscheinlich wird dir bereits bei der Definition der Tabelle aufgefallen sein, dass wir keine Admin Felder angegeben haben, die zuvor eigentlich immer Pflicht waren. Geben wir die Felder nicht an, dann wird ein Join über den Core Data Service "I_CstmBizConfignLastChgd" erstellt, der ein Feld für die letzte Änderung hinzufügt. Dieses Feld wird dann im BO ETag verwendet, um sich um die Sperre zu kümmern. Damit können wir für die Tabelle die Felder weglassen.

 

Metadata Extension

Für den Singleton werden nun die UI Annotation im Core Data Service generiert und es wird nicht mehr extra eine Metadata Extension generiert. Falls du bestimmte Funktionen aus dem UI nun suchst, dann solltest du hier schauen, wenn du zum Beispiel den Transportbutton wieder entfernen willst. Macht aber insgesamt das Objekt etwas schlanker und setzt den Fokus auf die eigentlichen Pflegeobjekte.

 

Berechtigungen

Geht es dann wieder um die Erstellung einer IAM App und die Zuordnung der Berechtigungen zum Anwender, dann befinden wir uns im "alten" Standard. Du musst eine IAM App anlegen, den Service zuordnen und die Berechtigungen für S_TABU_NAM erteilen. Hast du dann die Berechtigungen einem Business Catalog zugeordnet und dem User zugewiesen, dann sollte er das Objekt in der App "Custom Business Configurations" sehen.

 

Fazit

Äußerlich fallen die Änderungen nun nicht allzu stark auf, doch die Überarbeitung des Generators zeigt sich an verschiedenen Stellen. Grundsätzlich nimmt er dir viel Arbeit bei einfachen Pflegedialogen ab, so wie es bereits der Tabellenpflegegenerator gemacht hat. Aktuell gibt es aber keine Nachgenerierung der Pflege.


Enthaltene Themen:
BTPABAP EnvironmentBusiness ConfigurationBC
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


BTP - Dynamic Tile Service (Teil 2)

Kategorie - ABAP

In diesem Artikel möchten wir ein Update zum Tile Service geben und wie du den Service noch leichter integrieren kannst. Dabei spielt die Custom Entity eine entscheidende Rolle.

12.12.2025

RAP - CDS Pattern

Kategorie - ABAP

Wie geht eigentlich das CDS Pattern und was hat CDS-only damit zu tun? In diesem Artikel schauen wir auf die Architektur und Nutzung des Patterns.

28.11.2025

Recycling Heroes - Kontakt App

Kategorie - ABAP

In diesem Tutorial modellieren wir eine RAP Anwendung von der Datenbank, über das Modell und das UI, bis zum Deployment und Bereitstellung im System. Damit solltest du den vollen Entwicklungszyklus für modernen ABAP Cloud Anwendungen lernen.

25.11.2025

BTP - Dynamic Tile Service

Kategorie - ABAP

Wie kannst du dein Dynamic Tile mit weiteren Informationen anreichern und auch nicht übersetzbare Bestandteile trotzdem übersetzen? Gehen wir mit einem Beispiel in die Analyse und wie du mehr daraus machen kannst.

31.10.2025

BTP - Testen mit Swagger

Kategorie - ABAP

Du hast gerade dein Service Binding in ABAP vom Typ Web API erstellt und willst nicht mit dem Postman testen? Hast du dir schon Swagger angeschaut, was nun Out-of-the-Box funktioniert?

30.09.2025