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)

488

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


ADT - RAP Extension Assistent [MIA]

Kategorie - ABAP

Du möchtest ein RAP Objekt erweitern und weißt nicht genau wo du starten sollst? Vielleicht hilft dir die Idee des Extension Assistant weiter und leitet dich Schritt für Schritt durch den Prozess.

06.03.2026

ADT - RAP Analyzer [MIA]

Kategorie - ABAP

Die Einarbeitung und Übersicht in bestehende RAP Objekte kann nicht immer einfach sein, vor allem wenn es sich um komplexe Objekte handelt. Fragen wie das verwendete Pattern und wichtige Objekte müssen sich meist erarbeitet werden.

24.02.2026

RAP - Position der Buttons

Kategorie - ABAP

In diesem Artikel schauen wir uns die verschiedenen Positionen der Buttons an. Wo können wir in RAP die verschiedenen Actions platzieren und wie nutzen wir diese.

17.02.2026

RAP - Analytical Table

Kategorie - ABAP

Schauen wir uns einmal in RAP das letzten fehlende Puzzlestück zur Ablösung des ALVs an und wie wir die Analytical Table mit wenig Aufwand einrichten können.

13.02.2026

RAP - Mixed Content

Kategorie - ABAP

Wie bekommen wir eigentlich unterschiedlichen Content in die gleiche Spalte im List Report? Schauen wir uns dazu einmal ein praktisches Beispiel für unsere Sales App an.

10.02.2026