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)

569

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.


RAP - Hybrid Pattern

Kategorie - ABAP

Werfen wir einen Blick auf das Hybrid Pattern in der Entwicklung von RAP Objekten. Für wen ist das Szenario gedacht, wie funktioniert es und welche Grundbestandteile sind nötig.

19.06.2026

BTP - Anbindung On-Premise (SQL Service)

Kategorie - ABAP

Wie können wir einen SQL Service On-Prem mit unserem ABAP Environment verbinden und welche Vorteile haben wir damit? Gehen wir einmal auf technischen Deep Dive.

29.05.2026

RAP - Änderungsbelege implementieren (Nativ)

Kategorie - ABAP

Hast du das passende Release, dann kannst du Änderungsbelege auch mittlerweile nativ in RAP implementieren, ohne viel mnauelle Implementierung. Schauen wir uns dazu die verschiedenen Schritte an.

24.04.2026

RAP - Auxiliary Class

Kategorie - ABAP

Wenn die Implementierung in der Verhaltensimplementierung eines RAP Objekts wächst, welche Möglichkeiten hast du dann noch für eine saubere Kapselung? Schauen wir uns das einmal im Detail an.

17.04.2026

RAP - Änderungsbelege implementieren (Manuell)

Kategorie - ABAP

In diesem Artikel steigen wir in die manuelle Implementierung der Änderungsbelege in unser RAP Objekt ein und schauen uns die verschiedenen Schritte der Integration an. Am Ende sollen Änderungsbelege automatisch erzeugt werden.

14.04.2026