BTP - Application Job (v2)
Der Application Job hat im ABAP Environment eine neue Version und damit neue Funktionen erhalten. In diesem Artikel schauen wir uns die Unterschiede an.
Inhaltsverzeichnis
In diesem Artikel werden wir uns den neuen Application Job im ABAP Environment anschauen, welche Unterschiede es gibt und wie du den neuen Typ für dich nutzen kannst.
Einleitung
Der Application Job ist der neue Job für die Erstellung von Hintergrundverarbeitungen in ABAP Cloud. Mit dem Release 2411 für das ABAP Environment, wurde nun eine neue Version ausgerollt, die die Integration im System einfacher macht. Und andere Vorteile mit sich bringt, die wir uns hier im Artikel genauer anschauen wollen.
Anlage
Bevor wir den Job Catalog erzeugen, müssen wir im ersten Schritt eine Klasse definieren. Dazu definieren wir eine normale Klasse mit dem neuen Interface IF_APJ_RT_RUN.
CLASS zcl_bs_demo_job_execute_v2 DEFINITION
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES if_apj_rt_run.
ENDCLASS.
CLASS zcl_bs_demo_job_execute_v2 IMPLEMENTATION.
METHOD if_apj_rt_run~execute.
ENDMETHOD.
ENDCLASS.
Das neue Interface hat die Methode EXECUTE, die bei Ausführung des Jobs gestartet wird. Um nun im nächsten Schritt Attribute für das Selektionsbild anzulegen, definieren wir nicht eine Struktur im Job, sondern öffentliche Attribute in der Klasse. Dazu legen wir uns verschiedene Attribute an, die wir im Nachgang testen wollen.
CLASS zcl_bs_demo_job_execute_v2 DEFINITION
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES if_apj_rt_run.
TYPES tt_r_range TYPE RANGE OF zbs_demo_job_system.
DATA md_user TYPE c LENGTH 10.
DATA mt_system TYPE tt_r_range.
DATA md_test TYPE abap_boolean.
DATA md_edate TYPE d.
DATA md_etime TYPE t.
DATA md_radio_de TYPE abap_boolean.
DATA md_radio_en TYPE abap_boolean.
DATA md_radio_fr TYPE abap_boolean.
ENDCLASS.
CLASS zcl_bs_demo_job_execute_v2 IMPLEMENTATION.
METHOD if_apj_rt_run~execute.
ENDMETHOD.
ENDCLASS.
Nun können wir den neuen "Application Job Catalog Entry" erzeugen. Dies kannst du einfach über den Project Explorer über das Kontextmenü auf dem Paket anlegen
Im nächsten Schritt geben wir dem Eintrag noch einen Namen und geben unsere Jobklasse an, die wir im Schritt zuvor angelegt haben.
Als Ergebnis erhalten wir eine neue Eingabemaske, wo unsere Attribute dargestellt werden, die wir in der Klasse definiert haben und weitere Klassen hinterlegt werden können. Der obere Teil sollte dir daher bekannt vorkommen, neu ist vor allem der untere Teil der Konfiguration.
Im letzten Schritt legen wir noch ein Application Job Template an, dieses wird vor allem genutzt, um Defaultwerte zu hinterlegen und wird in der "Application Job" App verwendet, um den Job zu starten.
Über die Eingabe kannst du die Defaultwerte für die Parameter oder Mehrfachselektionen definieren und speichern.
Schauen wir uns in der App den aktuellen Stand der Selektion an, erhalten wir bereits Eingabehilfen für Datum und Uhrzeit. Sonst fehlen aktuell noch Texte und auch die speziellen Felder sind nicht definiert.
Design
Über den Job Katalog haben wir nun die Möglichkeit die Felder zu definieren und das Aussehen, sowie das Verhalten zu ändern. Wir verwenden in einem Fall auch ein Datenelement, die Texte werden allerdings nicht automatisch herangezogen.
Felder
Wenn wir die einzelnen Felder editieren, dann stehen uns zahlreiche Möglichkeiten für Einstellungen zur Verfügung. So können wir den Text für das Element pflegen, die Eigenschaften des Felds ändern, eine Werthilfe hinterlegen oder es Gruppen zuordnen. Weitere Informationen findest du in der unten verlinkten SAP Help Dokumentation, wo die einzelnen Felder und Eigenschaften beschrieben sind.
Sektionen und Gruppen
Über Sektionen und Gruppen kannst du die Felder auf dem Bild anordnen. Verwendest du keine Sektionen oder Gruppen, werden alle Parameter einer allgemeinen Gruppe zugeordnet. Eine Gruppe bildet eine Überschrift ab, ähnlich einer Fieldgroup. Du kannst mehrere Gruppen einer Sektion zuordnen.
Aussehen
Im letzten Bild hatten wir die aktuellen Eigenschaften und Bereiche aufgeführt, dass finale Ergebnis der Selektion sieht, nun wie folgt aus.
Wertehilfen
Mit den neuen Jobkatalogen stehen nun auch endlich richtige Eingabehilfen zur Verfügung. Im Standard kannst du Festwerte aus Domänen verwenden oder Core Data Services zuordnen.
Domäne
Für unser Beispiel hatten wir ein eigenes Datenelement und eine Domäne mit Festwerten definiert. Wenn wir diese in der Konfiguration des Feldes MD_SYSTEM hinterlegen, dann erhalten wir diese in der App.
Der Aufruf der Suchhilfe sieht nun wie folgt aus, die Werte werden entsprechend angezeigt.
Core Data Service
Für das Beispiel definieren wir einen Core Data Service, der für unsere Suche zur Verfügung stehen soll. Hier solltest du dir die Dokumentation (unten verlinkt) anschauen, welche Annotationen für die Suchhilfe benötigt werden.
@EndUserText.label: 'Business Partner (Value Help)'
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.dataCategory: #VALUE_HELP
@Search.searchable: true
define view entity ZBS_I_DMOPartnerVH
as select from I_BusinessPartnerVH
{
@Search.defaultSearchElement : true
@ObjectModel.text.element: [ 'FirstName' ]
key BusinessPartner,
BusinessPartnerName,
@Search.defaultSearchElement : true
FirstName,
@Search.defaultSearchElement : true
LastName
}
Wir hinterlegen die Suchhilfe in der Konfiguration des Feldes MD_USER. Zusätzlich stellen wir die Ausgabe auf "List Box". Dies solltest du normalerweise machen, wenn du weniger als 500 Werte hast, da nur die ersten 500 geladen werden.
Die Ausgabe des Feldes sieht nun wie folgt aus, dabei können wir auch nach dem Namen eingrenzen. Der Schlüssel wird in dieser Einstellung ausgeblendet und nur der Text angezeigt.
Debugging
Über das Jobtemplate steht nun die Möglichkeit zur Verfügung, den Application Job zu starten und zu Debuggen. Dabei werden die Defaultwerte des Templates verwendet, wenn der Job gestartet wird. Du findest den "Ausführen" Button im Template in der Aktionsleiste.
Dazu solltest du in der Klasse auch einen Breakpoint setzen. Sollte der Breakpoint nicht durchlaufen werden und der Debugger nicht starten, dann solltest du die Systemeinstellung fürs Debugging prüfen. Hier muss das Flag bei "Allow debugging of tool requests" gesetzt sein.
Grundsätzlich werden vor dem Start auch die Pflichtfelder geprüft, falls diese in deiner Variante nicht gesetzt sind.
Übersetzung
Texte können über den Jobkatalog angelegt werden, ein hinterlegtes Datenelement in den Attributen der Klasse wird aktuell ignoriert. Nachdem wir nun ein Übersetzungsprojekt im System angelegt haben und uns die Texte heruntergeladen haben, mussten wir allerdings feststellen, dass der Jobkatalog nicht zur Übersetzung angeboten wird. Damit ist eine Mehrsprachigkeit im Selektionsbild des Jobs aktuell nicht möglich.
Vollständiges Beispiel
Das vollständige Beispiel aus diesem Artikel findest du in diesem GitHub Repository, dort sind alle Objekte synchronisiert und können noch einmal eingesehen werden. Der passende Commit enthält die aktuellen Änderungen.
Übersicht
Hier noch einmal die Unterschiede zum alten Application Job in einer kurzen Liste zusammengefasst:
- Neues Interface für die Jobanlage IF_APJ_RT_RUN
- Anlage des Selektionsbilds über öffentliche Attribute der Klasse
- Das Design kann freier gestaltet werden
- Es stehen Wertehilfen für die Eingabe zur Verfügung
- Jobs können debuggt werden
Fazit
Der neue Application Job bringt viele Vorteile mit und ist einfacher zu bedienen. Neue Jobs im ABAP Environment werden automatisch über diesen Weg angelegt. Möchtest du die Funktionen im alten Job haben, musst du hier allerdings die Objekte erst migrieren.
Quelle:
Customer & Partner Roundtable #18
SAP Help - Editing Application Job Catalog
SAP Help - CDS Value Help