This is a test message to test the length of the message box.
Login
ABAP RAP Draft
Erstellt von Software-Heroes

RAP - Draft (Teil 2)

236

Im zweiten Teil zum Thema Draft Handling in RAP Objekten geht es um die bessere Darstellung des Draft Zustands an den einzelnen Positionen der Liste.

Werbung


Im letzten Artikel haben wir das Draft Handling in unsere App eingefügt. Dir sollte allerdings auch aufgefallen sein, dass die Anzeige des aktuellen Drafts in der Liste nicht ganz gut gelungen war, da der Status des Satzes nicht erkennbar war. In diesem Aritkel zeigen wir dir, wie die Darstellung noch etwas besser und detaillierter geht.

 

Einleitung

Nachdem wir das Draft Handling aktiviert und zur Verfügung gestellt haben, konnten wir die erste Version des List-Reports bewundern:

 

Leider fehlt in dieser Version noch die Darstellung des Draft Status und nur über den Filter finden wir Positionen, die geändert wurden, aber noch nicht gesichert wurden. Dies wollen wir mit diesem Artikel ändern und die nötigen Bestandteile übernehmen. Im letzten Artikel haben wir das Minimum für das Draft Handling implementiert.

 

Tabellen

Zuerst einmal muss die Partner Tabelle noch einmal angepasst werden. Dabei ergänzen wir am Ende weitere Informationen zum Änderer, aber auch zum Ersteller des Datensatzes. Die Tabelle ZBS_DMO_PARTNER sieht nun wie folgt aus:

define table zbs_dmo_partner {
  key client       : abap.clnt not null;
  key partner      : abap.char(10) not null;
  name             : abap.char(60);
  street           : abap.char(80);
  city             : abap.char(60);
  country          : land1;
  payment_currency : abap.cuky;
  last_changed_at  : abp_locinst_lastchange_tstmpl;
  last_changed_by  : abp_locinst_lastchange_user;
  created_at       : abp_creation_tstmpl;
  created_by       : abp_creation_user;
}

 

Für eine saubere Verwaltung des Status empfiehlt sich die Implementierung aller 5 Felder. Im nächsten Schritt muss auch die Draft Tabelle angepasst werden um die neuen Informationen, dabei solltest du darauf achten, dass die Feldnamen den Namen im Interface View entsprechen und damit von den Tabellenfeldern abweichen:

define table zbs_dmo_dpartner {
  key mandt         : mandt not null;
  key partnernumber : abap.char(10) not null;
  key draftuuid     : sdraft_uuid not null;
  partnername       : abap.char(60);
  street            : abap.char(80);
  city              : abap.char(60);
  country           : land1;
  paymentcurrency   : abap.cuky;
  lastchangedat     : abp_locinst_lastchange_tstmpl;
  lastchangedby     : abp_locinst_lastchange_user;
  createdat         : abp_creation_tstmpl;
  createdby         : abp_creation_user;
  "%admin"          : include sych_bdl_draft_admin_inc;
}

 

Core Data Service

Als nächster Schritt muss nun der Aufrufstack der Core Data Services erweitert werden, dazu werden die Felder der Tabelle übernommen. Für jedes Feld gibt es eine entsprechende Annotation, die wir nun vergeben, damit die Metainformationen in der App ordentlich abgeleitet werden können.

@Semantics.systemDateTime.lastChangedAt: true
last_changed_at  as LastChangedAt,
@Semantics.user.lastChangedBy: true
last_changed_by  as LastChangedBy,
@Semantics.systemDateTime.createdAt: true
created_at       as CreatedAt,
@Semantics.user.createdBy: true
created_by       as CreatedBy

 

Weiterhin müssen noch die folgenden Objekte angepasst werden, auf die wir hier nicht weiter im Detail eingehen, da es sich um kleine Anpassungen handelt. Mehr Informationen findest du beim Commit im Git Repository:

  • Projection View - Übernahme der neuen Felder in die Projektionsschicht und damit in der App verfügbar machen.
  • Verhaltensdefintion - Erweiterung des Mappings in der Verhaltensdefinition, um die neuen Felder.

 

Metadata Extension

Nach den Anpassungen ist allerdings die Information für den Draft immer noch nicht an den Positionen ersichtlich. Dazu müssen die Metadaten, konkret die Kopfinformationen, erweitert werden. Dazu fügen wir die folgende UI Annotation im Header ein:

@UI.headerInfo.title: { type: #STANDARD, value: 'PartnerName' }

 

Was ist nun genau in der App geschehen? Erst einmal wurde auf dem Detailbild, wenn ein Eintrag gewählt wird, eine zusätzliche Information im Kopfbereich angezeigt:

 

Desweiteren wird nun der Draft Status in der Liste von Einträgen angezeigt. Wenn auf den Eintrag geklickt wird, erhältst du Informationen zur letzten Änderung. Bist du selbst der Änderer, dann wird nur "Draft" angezeigt, ist jemand anderes der Änderer, dann werden auch Informationen zum User angezeigt:

 

Fazit

Neben einer besseren Darstellung der Draft Informationen, hat deine App nun auch eine automatische Verwaltung der technischen Informationen. Dazu sind nicht einmal viele Änderungen nötig, um einen gewissen Standard in den Apps zu implementieren.


Enthaltene Themen:
RAPBTPDraftDraft Handling
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden 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.


RAP - Mehrere Filter und Einstellungen

Kategorie - ABAP

Wie sieht es eigentlich aus, wenn wir in RAP mehrere Filter und Felder als Standard setzen wollen und dazu noch eine standardmäßige Sortierung benötigen?

16.05.2025

RAP - Länge von Meldungen

Kategorie - ABAP

Deine Meldung wird bei der Ausgabe mit RAP abgeschnitten? Lass uns das Problem und eine Lösung anschauen.

13.05.2025

RAP - Suchhilfe und Schlüssel optimieren

Kategorie - ABAP

In diesem Artikel optimieren wir unsere Suchhilfen im Custom Pattern, verwenden das Additional Binding und machen unsere RAP Anwendung fit für den Endanwender.

06.05.2025

RAP - Festwert-Filter

Kategorie - ABAP

Wie verwendest du Festwerte aus einer Domäne für einen Filter und passt diesen nach deinen Bedüfnissen in RAP an? Mehr dazu hier.

02.05.2025

RAP - Custom Pattern (Verhalten)

Kategorie - ABAP

In diesem Artikel erweitern wir das Custom Pattern in RAP um zusätzliche Daten und Verhalten. Damit können wir Mehrwerte in der Implementierung schaffen.

29.04.2025