• Keine Ergebnisse gefunden

PUBLIC (ÖFFENTLICH) Fehlerbehebung SAP SE oder ein SAP-Konzernunternehmen Alle Rechte vorbehalten. THE BEST RUN

N/A
N/A
Protected

Academic year: 2022

Aktie "PUBLIC (ÖFFENTLICH) Fehlerbehebung SAP SE oder ein SAP-Konzernunternehmen Alle Rechte vorbehalten. THE BEST RUN"

Copied!
66
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

PUBLIC (ÖFFENTLICH) 2021-12-21

Fehlerbehebung

AP-Konzernunternehmen Alle Rechte vorbehalten.

(2)

Inhalt

1 Fehlerbehebung und Support. . . .3

1.1 Desktop Agent. . . .3

Fehlermeldungen des Desktop Agents. . . .4

Leerer Desktop-Agent-Systray. . . 6

Verwendung des PCs während der Ausführung eines Bots. . . .7

Systemneustart im unbeaufsichtigten Modus. . . .8

1.2 Desktop Studio. . . 9

Bewährte Geschäftsverfahren für die Bildschirmsperre und nicht verbundene Virtual Desktop Infrastructure. . . .9

Bewährte Geschäftsverfahren für PDF-Bibliothek. . . .20

Bewährte Geschäftsverfahren für Web-Service-Aufrufe. . . 21

Best Practices für den Umgang mit erheblichen Datenmengen bei der Scenario-Ausführung . . . 31

Best Practices für CAPTCHAs. . . 31

Best Practices für die Automatisierung von SAP-GUI-Bildern mit niedrigen Hierarchien. . . 32

Best Practices für die Verwaltung von Dateien. . . 34

Best Practices für Chrome-Erweiterung. . . .36

Best Practices für die Verwaltung des Popups „Server ausgelastet“. . . 39

Asynchrone Events in For-Schleifen. . . .45

1.3 Cloud-Factory. . . 49

Insufficient Scope. . . 49

1.4 Cloud Studio. . . 52

Zuordnung von Cloud-Studio- und Desktop-Studio-Funktionen. . . 52

Steuerelement „Für jede“ für Elemente ohne Boundingboxen setzen. . . 53

Gesperrte Sitzung während der Automatisierungsausführung entsperren. . . .55

SAP Logon im unbeaufsichtigten Modus starten. . . .56

Best Practices für die Optimierung eines Elements. . . .62

(3)

1 Fehlerbehebung und Support

Herzlich willkommen beim Thema „Fehlerbehebung und Support“. In diesem Thema sind mehrere

Wissensdatenbankhinweise aufgelistet, die unter https://support.sap.com/ oder durch direktes Festlegen der Komponente verfügbar sind.

Nach Komponente

● Desktop-Agent-bezogene Hinweise [Seite 3]

● Desktop-Studio-bezogene Hinweise [Seite 9]

● Cloud-Factory-bezogene Hinweise [Seite 49]

Komponentenübergreifend und andere Probleme

● Warum wird das Produkt SAP Intelligent Robotic Process Automation auf dem SAP Service Marketplace nicht angezeigt? 2824501

● Web Browsers Configuration Checks - 2796986

● Wo finde ich vorkonfigurierte Inhalte für S/4HANA? - Inhalt ist verfügbar auf rapid.sap.com. Siehe Hinweis 2788986 bezüglich Release-Strategie.

Installation und Einrichtung

● Technische Voraussetzungen und Systemanforderungen

● SAP Intelligent Robotic Process Automation Factory – Konfiguration

● Einrichtung der On-Premise-Komponenten

● Aktualisierung Ihrer SAP Intelligent RPA-1.0-Landschaft durchführen (Desktop Agent und Studio)

● Web-Browser konfigurieren

1.1 Desktop Agent

● Agent XXX already connected" error when attempting to login to the Desktop Agent – 2796483

● Nothing happens when launching an unattended scenario using SAP Intelligent RPA Desktop Agent – 2796491

● Desktop Agent icon does not appear in the Windows system tray – 2796377

● When downloading a Package from the Factory an error occurs "CCtxtRun2Dlg::OnGoToSocket : SetIpaSocket failed“ – 2798996

● No Registry key or bad value & Can't find a json file – 2796396

● Problem beim Neustart des Agent (neue Fenstersitzung, Projektwechsel oder neues Projekt aus Factory).

Um den Agent neu starten zu können, muss der Service "SAP Intelligent RPA Service" (CxAgent.exe) einsatzbereit sein.

● Agent- und Factory-Verbindung muss untersucht werden: Laden Sie die Ereignishistorie zu einem Agent in der SAP Intelligent RPA Factory herunter. Weitere Informationen finden Sie unter Overview of Agents.

● Beheben von Agent-Verbindungsproblemen währen des Cloud-Factory-Updates: 2981018

(4)

● Ausblenden von Rechner- oder Anmeldeinformationen: 3056143

1.1.1 Fehlermeldungen des Desktop Agents

Im Bild „Info“ innerhalb der Desktop-Agent-Taskleiste werden Status, Fehler und Warnungen gemeldet. Das Warnsymbol (orange) erfordert keine Benutzerinteraktion, da der Agent einen erneuten Versuch unternimmt.

Das Fehlersymbol (rot) erfordert häufig eine Benutzerinteraktion.

Im Folgenden sind häufige Fehler, die auftreten können, aufgeführt:

● Health Check fehlgeschlagen (HEALTHCHECK_FAILURE) – Tenant-URL ist vorhanden, es wurde jedoch ein Fehler vom Server zurückgegeben

○ Ursache: Die URL existiert, der Agent kann jedoch keine Verbindung herstellen.

○ Lösung:

○ Prüfen Sie die URL mit einem Web-Browser.

○ Wenden Sie sich an Ihren Administrator, um die richtige URL zu erhalten.

○ Prüfen Sie die Verbindung

Wenn Sie ein VPN verwenden, kann dieses Problem dadurch entstehen, dass Ihr VPN keine

WebSockets zulässt. Weitere Informationen finden Sie im Abschnitt Informationen zum WebSockets- Protokoll unten auf dieser Seite: Technische Voraussetzungen und Systemanforderungen.

● Tenant-URL-Server ist nicht erreichbar (RETRY_HEALTHCHECK_ON_FAILURE)

○ Ursache: Die URL ist nicht mehr verfügbar

○ Lösung:

○ Die Konnektivität ist unterbrochen: Starten Sie die Netzwerkschnittstelle neu, und prüfen Sie IP und DNS.

○ Falsche URL: Wenden Sie sich an Ihren Administrator, um die richtige URL zu erhalten.

● Authentifizierung nicht abgeschlossen (AUTHENTICATION_NOT_COMPLETED)

○ Ursache: Die Authentifizierung wurde nicht vollständig abgeschlossen

○ Lösung: Starten Sie den Agent neu, um die Authentifizierung erneut zu starten.

● Verbindung wurde unterbrochen (NEED_SENDING_CLIENT_INFO)

(5)

○ Ursache: Kabel ausstecken, WiFi abschalten ...

○ Lösung: Prüfen Sie Ihre Verbindung, wenn Sie hergestellt ist, verbindet sich der Agent automatisch wieder.

● Agent in Agent-Gruppe nicht gefunden ( INVALID_SEND_CLIENT_INFO_ANSWER)

○ Ursache: Ihr Agent ist in der Cloud Factory nicht deklariert.

○ Lösung: Wenden Sie sich an den Administrator, um Ihren Agent in einer Agent-Gruppe (Agents >

Agent-Gruppen) hinzuzufügen.

Zusätzliche Informationen finden Sie unter Agent-Gruppe anlegen.

● Verbindung ist endgültig geschlossen

○ Ursache: Kommunikationsfehler zwischen Desktop Agent and der Factory

○ Lösung: Desktop Agent muss aktualisiert werden. Die Mindestversion, die zum Beheben dieses Problems erforderlich ist, ist Version 2.0.6 2011. Weitere Informationen finden Sie im SAP-Hinweis 2997097 .

● Paket in der Taskleiste nicht gefunden

○ Ursache: Ihr Paket wird nicht in der Taskleiste angezeigt

○ Lösung: Gehen Sie zu Scripts, und suchen Sie nach: GLOBAL.events.START.on(function (ev)) Wenn Sie ein Snippet wie das folgende sehen, kommentieren Sie die If-Bedingung:

Beispielcode

GLOBAL.events.START.on(function (ev){

if(ctx.options.isDebug){

//Add item in systray menu.

....

} });

● Warten auf Eingabe der Credentials durch Benutzer

○ Ursache: Der Desktop Agent wartet, bis der Benutzer seine Credentials eingegeben hat

○ Lösung: Fahren Sie den Desktop Agent herunter, und starten Sie ihn erneut. Sie werden aufgefordert, sich anzumelden. Falls die Probleme weiterhin bestehen:

1. Öffnen Sie die Tenant-URL im Internet Explorer, melden Sie sich an, und sichern Sie die Benutzer- ID und das Kennwort.

2. Wählen Sie Extras > Internetoptionen > Sicherheit.

3. Klicken Sie auf Internet > Stufe anpassen....

4. Setzen Sie unter Einstellungen > Skripting das Active Scripting auf Aktivieren.

5. Gehen Sie zurück zu Internetoptionen > Sicherheit. Klicken Sie auf Vertrauenswürdige Sites und dann auf Sites.

6. Geben Sie die Tenant-URL ein, und klicken Sie auf Hinzufügen, um sie in die Liste der vertrauenswürdigen Sites aufzunehmen.

Nun sollten Sie das Popup sehen, das anzeigt, dass der Desktop Agent mit den gespeicherten Anmeldeinformationen angemeldet wird. Er kann nun online gehen.

● Registrierung fehlgeschlagen

○ Ursache: Registrierung fehlgeschlagen

○ Lösung: Stellen Sie sicher, dass Sie die richtige URL verwenden, indem Sie die Tenant- Registrierungsschritte überprüfen.

Weitere Informationen finden Sie unter Registrierung des Desktop-Agent-Tenants.

(6)

1.1.2 Leerer Desktop-Agent-Systray

Sie haben alle technischen Voraussetzungen geprüft und Ihren Browser konfiguriert, aber der Agent-Systray wird leer angezeigt.

Ursache

Internet Explorer ist instabil.

Lösung

1. Setzen Sie die Internet-Explorer-Einstellungen zurück.

(7)

2. Konfigurieren Sie die Internet-Explorer-Einstellungen erneut. Weitere Details finden Sie unter Web-Browser konfigurieren.

1.1.3 Verwendung des PCs während der Ausführung eines Bots

Möglicherweise möchten Sie Ihren PC verwenden, während ein Bot ausgeführt wird.

Hinweis

Wenn Ihr Bot kein menschliches Eingreifen erfordert, sollten Sie während der Ausführung des Bots Ihren PC nicht verwenden.

Das Ausführen eines Bots im Hintergrund ist möglich, Sie sollten jedoch die folgenden Informationen bezüglich Ihres Bot-Designs berücksichtigen:

● Er sollte keine Mausklick-Activitys, Doppelklick-Activitys und andere Funktionen enthalten, die Mausinteraktionen erfordern (normale Klick-Activitys funktionieren).

(8)

● Er sollte keine Tasten-Activitys enthalten.

● Sie können Ihren PC verwenden, wenn Ihr Workflow keine Activitys enthält, die das Öffnen einer Application oder eines Fensters erfordern.

● Je nach Technologie können Sie die zu automatisierende Application minimieren.

● Wenn Sie mit derselben Application wie der Bot interagieren, besteht ein erhebliches Risiko von Konflikten (auch wenn die Application minimiert wird).

Hinweis

Falls Sie Ihren PC verwenden möchten, während ein Bot ausgeführt wird, sollten Sie am besten einige Tests durchführen. Tatsächlich hängt das Verhalten des Bots stark vom Anwendungsfall ab.

1.1.4 Systemneustart im unbeaufsichtigten Modus

Das System wird unter Umständen neu gestartet, während sich der Desktop Agent im unbeaufsichtigten Modus befindet.

Kontext

Wenn ein Desktop Agent auf einem System im unbeaufsichtigten Modus ausgeführt wird, kann es vorkommen, dass das System neu gestartet wird. Vielleicht möchten Sie dann den Agent automatisch starten.

So starten Sie den Desktop Agent sofort nach dem Systemneustart

Um den Desktop Agent sofort nach diesem Neustart zu starten, müssen Ihre Windows-Credentials im Desktop Agent gespeichert sein. Außerdem müssen Sie in der Taskleiste das Desktop Agent Ankreuzfeld Automatisch starten bei Windows-Anmeldung markiert haben. Um diese Option zu aktivieren, klicken Sie auf die Drucktaste Weitere Aktionen und dann auf Einstellungen.

Die Sitzung wird im nicht interaktiven Modus geöffnet, nachdem das System neu gestartet wurde.

Anschließend startet der Agent automatisch.

Weitere Informationen dazu, wie Sie Windows-Credentials zum Starten von SAP Intelligent RPADesktop Agent im unbeaufsichtigten Modus speichern, finden Sie unter Windows-Kennwort in Desktop Agent festlegen.

Entfernen der Credentials

Die Credentials können mit folgendem Befehl entfernt werden:

CxStoreCred.exe /forget

Mit diesem Befehl wird der Neustart des Desktop Agent nach dem Systemneustart automatisch gestoppt.

(9)

Weitere Informationen dazu, wie Sie den Desktop Agent bei einem Neustart des Servers starten, finden Sie im folgenden SAP-Hinweis: 3010368 .

1.2 Desktop Studio

Die folgenden Wissensdatenbankhinweise zu Desktop Studio sind verfügbar:

● Long waiting time when capturing a page using UI Automation – 2788781

● Unable to create Process Debug Manager component – 2781601

● „System.InvalidOperationException“ error when debugging a project in the Desktop Studio – 2833621

● Black screen when capturing a page using Intelligent RPA Desktop Studio with Chrome – 2842523

● Datei [...] form.pscm konnte nicht gefunden werden – 2849305 Schritte in Desktop Studio

● Schritte zum Abrufen einer Variable (Text) aus Factory – 2822776 (siehe dieses Thema auch im Entwicklerhandbuch)

● Schritte zum Abrufen einer Variablen (Anmeldeinformationen) aus Factory –2822500 (siehe dieses Thema auch im Entwicklerhandbuch)

● How to insert a picture in an email - 2864114

● How to use another Diff/Merge tool – 2867241

● Umbenennen eines Projekts – 2956757 Bewährte Geschäftsverfahren

● Bewährte Geschäftsverfahren für die Bildschirmsperre und nicht verbundene Virtual Desktop Infrastructure [Seite 9]

● Bewährte Geschäftsverfahren für PDF-Bibliothek [Seite 20]

● Bewährte Geschäftsverfahren für Web-Service-Aufrufe [Seite 21]

● Best Practices für den Umgang mit erheblichen Datenmengen bei der Scenario-Ausführung [Seite 31]

● Best Practices für CAPTCHAs [Seite 31]

● Best Practices für die Automatisierung von SAP-GUI-Bildern mit niedrigen Hierarchien [Seite 32]

● Best Practices für die Verwaltung von Dateien [Seite 34]

● Best Practices für die Verwaltung des Popups „Server ausgelastet“ [Seite 39]

1.2.1 Bewährte Geschäftsverfahren für die Bildschirmsperre und nicht verbundene Virtual Desktop Infrastructure

Das SAP Intelligent RPA-Tool erfordert in manchen Fällen, dass der Benutzer Applications mit untergeordneten Aktionen wie Mausklicks oder direkten Tastenanschlägen umgehen muss. Unter bestimmten Umständen können diese untergeordneten Aktionen zu Einschränkungen führen.

Dieses Verhalten beschränkt sich nicht auf die unbeaufsichtigte Ausführung, da vom Benutzer erwartet werden kann, dass er beaufsichtigte Scenarios auf seinem Rechner startet und sie arbeiten lässt, während der

Bildschirm gesperrt ist.

(10)

Context

Der Benutzer bestätigt, dass ein Job während der Implementierungs- und Testphasen ordnungsgemäß ausgeführt wird:

● Mit Debugger- und Testertool

● Durch Überwachung der Jobausführung in Echtzeit auf ihrem Rechner

Sobald sich der Agent jedoch in einer Virtual Desktop Infrastructure mit gesperrtem Bildschirm befindet, wird der Job nicht ordnungsgemäß ausgeführt und während einiger technischer Aktionen mitten in der

Automatisierung angehalten.

Dieses Problem tritt in folgenden Fällen auf:

● Der Bildschirm ist während der Ausführung eines Jobs auf dem Rechner des Benutzers gesperrt.

● In der Virtual Desktop Infrastructure ist eine Sitzung geöffnet, aber vom Benutzer geht keine Aktivität aus.

● Die Virtual Desktop Infrastructure wird nach ein paar Dutzend Minuten minimiert.

Ursache

Um bestimmte Automatisierungsaktionen wie Mausklicks und Abfolgen von Tastenanschlägen zu verarbeiten, benötigt der Benutzer eine geöffnete Sitzung, die verhindert, dass der Bildschirm während der Ausführung einer Automatisierung gesperrt wird. Die Verwendung einer physischen oder virtuellen Tastatur ist jedoch nicht erforderlich.

Dieses Verhalten ist charakteristisch für die Technologien und Applications, die innerhalb der Automatisierung manipuliert werden.

Diese Art von Problem lässt sich meistens auf Simulationen der Verwendung der Maus und Tastatur zurückzuführen:

● application.page.item.mouseClick();

● application.page.item.keystroke("text");

1.2.1.1 Ursachen

In folgenden Themen werden die Hauptursachen für die Bildschirmsperre und Einschränkungen der Virtual Desktop Infrastructure erläutert.

1.2.1.1.1 Mausklicks

Die Verwendung folgender simulierter Mausklickaktionen führt zu Einschränkungen:

● application.page.item.click(true)

(11)

● application.page.item.clickMouse(

● Alle ctx.mouse-Methoden

Um diese Art von Aktion zu identifizieren, prüfen Sie, ob der Cursor beim Ausführen der Klickaktion zur gewünschten Position geht.

1.2.1.1.2 Tastenanschläge

Die Verwendung folgender Tastenaktionen führt zu Einschränkungen:

● application.page.item.keyStroke(e.key.xxx)

● application.page.item.keyStroke("Test")

● ctx.keyStroke("Test")

Um zu prüfen, ob die Aktion mit einem gesperrten Bildschirm oder einer nicht verbundenen Virtual Desktop Infrastructure ausgeführt werden kann, können Sie folgende Abfolge von Tastenanschlägen senden:

ctx.wait(function(ev){

application.page.item.keystroke(“text”);

},10000);

Diese Abfolge von Tastenanschlägen erzeugt eine Verzögerung, während der Sie den Bildschirm manuell sperren oder die Sitzung trennen können.

1.2.1.1.3 UI-Automatisierung

Mit dem UIAutomation-Connector kann eine beliebige Desktop-Anwendung mit UIAutomation-Schnittstelle automatisiert werden. Wenn eine automatisierte Component auf eine übergeordnete Aktionsanforderung nicht reagiert, sendet der UIAutomation-Connector Mausklicks oder Tastenanschläge. In diesem Fall können simulierte Aktionen wie click() oder set() zu Einschränkungen führen.

Beispiel: Wenn Sie in Adobe Acrobat Reader mit der Abfolge application.page.item.click() anstelle der Abfolge application.page.item.clickMouse() auf das Menü Datei klicken, schlägt die Aktion fehl, wenn der Bildschirm gesperrt ist.

Dasselbe Verhalten kann auftreten, wenn Sie den Windows-Dateibrowser mit dem UIAutomation-Connector verwalten.

Gehen Sie wie folgt vor, um diese Art von Aktion zu identifizieren:

● Prüfen Sie, ob der Cursor beim Ausführen der Klickaktion zur gewünschten Position geht.

● Kombinieren Sie die Aktion mit einer Verzögerung, während der Sie den Bildschirm manuell sperren oder die Sitzung trennen können:

ctx.wait(function(ev){

application.page.item.click();

},10000);

(12)

1.2.1.1.4 Oberflächenautomatisierung mit OCR

Die Oberflächenautomatisierung ist auf Mausklicks und Tastenanschläge angewiesen, die einen Desktop mit nicht gesperrtem Bildschirm erfordern.

1.2.1.2 Problemlösung

In folgenden Themen werden bewährte Geschäftsverfahren vorgeschlagen, um die Bildschirmsperre und Einschränkungen der Virtual Desktop Infrastructure zu umgehen.

Activity „Entsperren“ verwenden [Seite 12]

Mausklick- und Tastenanschlagsaktionen verfolgen [Seite 13]

Automatisierung von Web-Applications [Seite 13]

Win32-Connector verwenden [Seite 17]

Bildschirm entsperrt lassen [Seite 19]

Verbindung zur Virtual Desktop Infrastructure aufrechterhalten [Seite 19]

Weitere funktionale Lösungen identifizieren [Seite 20]

1.2.1.2.1 Activity „Entsperren“ verwenden

Wenn Ihr Bot im unbeaufsichtigten Modus ausgeführt wird, können Sie die Activity Entsperren verwenden, um Probleme mit Mausklicks und Tastenfolgen zu lösen.

Hinweis

Für die SAP-GUI-Technologie ist die Activity (oder Funktion) Entsperren ensureUnlocked

für Abfolgen von Tastenanschlägen nicht erforderlich.

Sie können die Activity Entsperren in Desktop Studio hinzufügen oder die folgende Funktion verwenden:

ctx.workstation.ensureUnlocked();

Die Activity Entsperren entsperrt eine gesperrte Session und ermöglicht es Ihnen, während der Ausführung einer Automatisierung Mausklicks oder Tastenfolgen durchzuführen. Diese Activity sperrt die Sitzung zehn Sekunden nach der Aktion automatisch erneut.

Sie müssen das Kennwort der Sitzung wie folgt konfigurieren, um:

● die Sitzung automatisch und ohne Benutzereingriff zu öffnen, wenn Ihr Rechner startet.

● Entsperren Sie die Sitzung in wenigen Sekunden, wenn der Bot eine Automatisierung ausführt.

(13)

Sie können Ihre Anmeldeinformationen für Windows in Desktop Agent direkt sichern. Weitere Informationen über das Festlegen von Windows-Anmeldeinformationen in Desktop Agent erhalten Sie unter Windows- Kennwort in Desktop Agent festlegen.

Weitere Informationen dazu, wie Sie Windows-Anmeldeinformationen zum Starten eines Desktop Agent im unbeaufsichtigten Modus speichern, finden Sie im SAP-Hinweis 3010368 .

1.2.1.2.2 Mausklick- und Tastenanschlagsaktionen verfolgen

Um Probleme mit Mausklick- und Tastenanschlagsaktionen zu beheben, müssen Sie diese Aktionen verfolgen und identifizieren. Diese Aktionen wurden möglicherweise so in das Projekt implementiert, um komplizierten Quelltext oder eine falsche Item-Behandlung durch das Werkzeug zu vermeiden.

Wenn Sie folgende Tastenanschlagsaktion finden:

● ctx.keystroke / application.page.item.keystroke

können Sie sie durch ein simuliertes Ereignis ersetzen:

● application.page.item.set()

Wenn Sie folgende Klickaktion finden:

● ctx.mouse.click / application.page.item.clickMouse / click(true)

können Sie sie durch ein simuliertes Ereignis ersetzen:

● application.page.item.click()

1.2.1.2.3 Automatisierung von Web-Applications

Das Festlegen eines Werts mit der Standardmethode funktioniert möglicherweise nicht auf jeder Website, insbesondere nicht auf einer Website mit umfangreichem Framework (z.B. Bootstrap, Angular…).

Dieses Verhalten steht mit Folgendem im Zusammenhang:

● JavaScript-Events, die mit Items auf der Web-Page verknüpft sind

● Oberflächensteuerungen

● Eine komplexe Page-Struktur

Das folgende Beispiel zeigt einen Standardfall für eine Website mit umfangreichem Framework.

1. Wenn Sie einen Wert festlegen, erhält der Benutzer eine Tooltip-Liste als Eingabe in der Suchleiste

„Component Search“.

(14)

Auf der Page wird eine neue Meldung angezeigt, die angibt, welche Art von Suche durchgeführt und ob ein unbekannter Wert festgelegt wurde.

2. Der Benutzer legt folgendes simuliertes Event zum Festlegen fest:

IRPAComponent.pMain.oSearchBox.set("IRPA");

(15)

Dieses Event funktioniert aus folgenden Gründen nicht:

○ Es wird kein Tooltip angezeigt.

○ Es wird keine neue Meldung angezeigt.

3. Der Benutzer legt folgende simulierte Tastenanschläge fest:

IRPAComponent.pMain.activate();

IRPAComponent.pMain.activate();

IRPAComponent.pMain.oSearchBox.setFocus();

ctx.keyStroke("IRPA");

Hinweis

In einem Webbrowser wie Chrome ist eine doppelte Aktivierung und dann die Festlegung des Fokus auf das Item erforderlich, an welches eine Abfolge von Tastenanschlägen gesendet werden soll.

Um eine simulierte Abfolge von Tastenanschlägen zu vermeiden, sollte diese nicht direkt an das Item gesendet werden.

(16)

In der Folge wird ein Tooltip und eine Meldung angezeigt.

Diese Lösung kann auf entsperrte Bildschirme angewendet werden, aber nicht auf Rechner mit gesperrtem Bildschirm und einer nicht verbundenen Virtual Desktop Infrastructure. Bei einem gesperrten Bildschirm wird ctx.keystroke blockiert.

Eine weitere Möglichkeit, dieses Verhalten zu beheben, ist die Verwendung von Events, die mit dem Item verknüpft wurden:

IRPAComponent.pMain.oSearchBox.set("IRPA");

IRPAComponent.pMain.oSearchBox.trigger("input");

(17)

In der Folge wird der Tooltip und eine entsprechende Meldung angezeigt. Diese Lösung kann auf Rechnern mit gesperrtem Bildschirm und nicht verbundener Virtual Desktop Infrastructure angewendet werden, solange die Sitzung aktiv ist.

Für eine komplexere Web-Page kann es erforderlich sein, dass der Benutzer direkt im Browser arbeitet, indem er den Entwicklermodus verwendet, um eine Lösung zu finden.

Es ist beispielsweise möglich, ein bestimmtes Maus-Event auf der Page zu simulieren:

application.page.item.scriptItem( "dispatchEvent( new MouseEvent( 'mouseover', {'bubbles': true, 'cancelable': true}))");

Dies kann auch für ein Tastatur-Event durchgeführt werden, und zwar für Eingaben, die nur eine bestimmte Tasteneingabe erfordern.

1.2.1.2.4 Win32-Connector verwenden

Wenn Sie eine Application als Win32-Application erkennen, können Sie auch mit einem gesperrten Bildschirm und einer nicht verbundenen Virtual Desktop Infrastructure simulierte Aktionen senden.

Da der Win32-Connector die Architektur einer Application nicht vollständig exponiert, sind nicht alle Objekte zugänglich.

Beispiel zu Adobe Acrobat Reader:

• Zur Manipulation des Dateimenüs und Untermenüs werden Mausklicks mit der Methode click() verwendet.

• Mit derselben Application, die über den Win32-Connector erfasst wurde, können Sie dasselbe Menü auch mit einem gesperrten Bildschirm manipulieren.

(18)

Wenn der UIAutomation-Connector die einzige Option ist (z.B. 64-Bit-Application), ist die Option zur

Verwendung der Win32-Automatisierung für die UIAutomation-Objekte ab Version 1.0.8 von Desktop Studio verfügbar.

Diese Option ist nur für Items mit folgenden Klassennamen verfügbar:

• Button

application.page.item.click()

• Edit

application.page.item.set()

Im Abschnitt „Aufgenommene Daten“ muss jedes dieser Items auch die Aufnahmeeigenschaft hWnd haben, die sich von 0x0 unterscheidet.

(19)

1.2.1.2.5 Bildschirm entsperrt lassen

Ein gängiges bewährtes Geschäftsverfahren besteht darin, Ihre Umgebung so zu konfigurieren, dass der Bildschirm nicht gesperrt wird.

Dadurch können Mausklicks und Tastenanschläge an die Anwendung gesendet werden, ohne dass die Bildschirmsperre aktiviert wird.

1.2.1.2.6 Verbindung zur Virtual Desktop Infrastructure

aufrechterhalten

(20)

Wenn Sie eine Virtual Desktop Infrastructure verwenden und Mausklicks und Tastenanschläge erforderlich sind, haben Sie folgende Möglichkeiten:

● Konfigurieren Sie die Virtual Desktop Infrastructure, um zu verhindern, dass der Bildschirm gesperrt wird.

● Stellen Sie eine direkte Verbindung zu einer Virtual Desktop Infrastructure von einem lokalen Rechner aus her.

Möglicherweise verfügen Sie über ein Projekt, das diese Verbindung von einem lokalen Rechner aus startet.

1.2.1.2.7 Weitere funktionale Lösungen identifizieren

Wenn keine der zuvor vorgeschlagenen Lösungen Abhilfe schafft, versuchen Sie, eine funktionale

Behelfslösung zu finden. Eine andere Bildabfolge, ein anderer Button, auf den geklickt werden muss, oder eine andere Art, Ihr Formular zu validieren, kann auch funktionieren, ohne dass ein Mausklick oder ein

Tastenanschlag erforderlich ist.

Wenn keine der Behelfslösungen verwendet werden kann, kann dies möglicherweise für Ihr Projekt hinderlich sein.

Es ist wichtig, diese Einschränkungen frühzeitig in Ihrem PoC, Ihrem Design oder Ihrer Implementierung festzustellen. Dazu haben Sie folgende Möglichkeiten:

● Aktion verwenden + Verzögerung + manuelle Bildschirmsperre

● Regelmäßige Tests für eine nicht verbundene Virtual Desktop Infrastructure oder auf einem Rechner mit gesperrtem Bildschirm ausführen

1.2.2 Bewährte Geschäftsverfahren für PDF-Bibliothek

Die PDF-Bibliothek ermöglicht die Extraktion von Daten aus PDF-Dokumenten, deren Text durchsucht werden kann.

In einigen Fällen kann die PDF-Bibliothek den gesuchten Text in einem Dokument nicht finden. Die Reihenfolge der zurückgegebenen Textelements entspricht möglicherweise nicht den visuellen Koordinaten, die Sie zum Rendern verwenden.

Um solche Herausforderungen zu bewältigen, empfehlen wir Folgendes:

1. Verwenden Sie die getText-Methode, um den vollständigen Text des PDF-Dokuments abzurufen.

2. Analysieren Sie die Struktur des extrahierten Index, um die Textelements zu lokalisieren, die Sie abrufen möchten.

3. Verwenden Sie basierend auf der Struktur des Index eine entsprechende Methode oder Aktivität, um das Textelement (getWordAfter oder getWordBefore für Instanz) abzurufen.

Hinweis

Sie können hier keine eindeutige Behelfslösung anwenden. In einigen Fällen kann der Wechsel von getWordAfter zu getWordBefore (oder umgekehrt) funktionieren. In komplexeren Fällen müssen Sie die Indexstruktur näher untersuchen und eine Indexstruktur finden, die stabil bleibt.

(21)

1.2.3 Bewährte Geschäftsverfahren für Web-Service-Aufrufe

Kontext

Wenn Sie die Funktion ajax.call verwenden, um mit einem Web-Service zu kommunizieren, erhalten Sie einen Status vom Server, beispielsweise einen der folgenden:

● 200

● 300

● Usw.

Manchmal funktioniert der Aufruf nicht, und Sie erhalten eine allgemeine Fehlermeldung. Das kann Folgendes sein:

● Nur der Status

● Eine allgemeine Meldung

Die Feststellung der Ursache des Problems kann sich schwierig gestalten.

Gründe

Web-Services können viele verschiedene Einstellungen kombinieren:

● Zertifikate auf Server-/Client-Seite

● SSL-Zertifikate, die Informationen verschlüsseln, Authentifizierung bereitstellen usw. Sie sind für die Authentifizierung auf dem Server erforderlich.

● Tokens

Es gibt verschiedene Arten von Web-Services:

● SOAP

● ODATA

● REST

Wenn Sie all diese Web-Services und Einstellungen kombinieren, kann dies zu vielen verschiedenen Möglichkeiten führen. Es gibt also nicht nur einen Weg, um die Methode ajax.call zu konfigurieren.

Außerdem kann es zu einer Fehlkonfiguration der Server oder Zertifikate kommen, die zu bestimmten Problemen führen kann.

1.2.3.1 Ursachen und Lösungen

In diesem Teil erhalten Sie Informationen zu den Hauptursachen und möglichen Lösungen von Problemen.

In den Themen dieses Abschnitts erfahren Sie mehr über Folgendes:

(22)

● Client-Zertifikate

● Serverzertifikate

● Cookies

● Tokens

1.2.3.1.1 Client-Zertifikate

Sie verwenden Client-Zertifikate für die Authentifizierung auf einem Server. Manchmal können Sie keine Verbindung zu einem Server mit einem Zertifikat herstellen.

Sie können die Option ignoreClientCertificate verwenden, um die Zertifikatauthentifizierung zu vermeiden.

Diese Option verwendet eine C++-Implementierung des Aufrufs.

Beispiel:

ctx.ajax.call({

url: url, method: 'GET',

contentType: "application/json", headers: headers,

ignoreClientCertificate: true,

success: function(res, status, xhr) {

rootData.xCSRF = xhr.headers["x-csrf-token"];

var value = xhr.headers["Set-Cookie"];

rootData.Cookies = value.split('; ')[0] + "; ";

sc.endStep();

},

error: function(xhr, status, statusText) { ctx.log('error get')

sc.endStep();

} });

1.2.3.1.2 Serverzertifikate

Das API benötigt möglicherweise solche Zertifikate. Sie sind in der Regel obligatorisch.

ctx.ajax.call kann den Aufruf ohne diese Zertifikate nicht erzwingen.

Außerdem können Sie nicht angeben, welche Zertifikate verwendet werden sollen, da Sie sich nicht in einer Browserumgebung befinden.

Weitere Informationen zur Behelfslösung für dieses Problem erhalten Sie hier: Behandlung von Ajax- Aufrufproblemen in Ajax-Aufruf [Seite 27]

(23)

1.2.3.1.3 Cookies

Cookies ermöglichen es Ihnen, Client-Anfragen zu authentifizieren und alle Sitzungsinformationen beizubehalten.

Wenn Sie Cookies in Ihren Aufrufen verwenden müssen, ist das Festlegen eines Cookies erforderlich, um diese Informationen beizubehalten. Dann können Sie diese Informationen in einem anderen Aufruf verwenden.

Beispiel:

ctx.ajax.call({ //First call, get the cookies information url: "[url]",

method: e.ajax.method.get,

contentType: e.ajax.content.json, usePassport: true,

ignoreClientCertificate:true,

headers : {

'Authorization': 'Basic [base 64 login:password]', 'X-CSRF-Token': 'Fetch'

},

success: function(res, status, xhr) {

ctx.wait(function(ev) { try {

var csrf = xhr.headers['x-csrf-token'];

var cookie = xhr.headers['Set-Cookie'];

var myUrl = "https://domainName/sap/opu/odata/sap/xxx";

ctx.wait(function(ev) {

ctx.ajax.call({ //Second call, use the cookies in the headers object url: myUrl,

method: e.ajax.method.post,

ignoreClientCertificate:true,

contentType: 'application/json;charset=utf-8', headers : {

'Content-type': 'application/json;charset=utf-8', 'X-CSRF-TOKEN': csrf,

'Cookie': cookie },

success: function(res, status, xhr) {

},

error: function(xhr,res,status) { }

});

}, 0);

} catch (ex) { }

}, 0);

}, });

(24)

1.2.3.1.4 Tokens

Als Token werden Daten bezeichnet, die durch einen Server erzeugt werden und Informationen zur

Identifizierung eines Benutzers und der Token-Gültigkeit enthalten. Wenn Sie das Token im Ajax-Aufruf falsch verwenden, kann dies zu einem Problem führen. Wie die Cookies benötigt das Token zwei Aufrufe.

Beispiel: Sie führen einen API-Aufruf in der Factory durch. Sie verwenden den ersten Aufruf, um das Token aufzurufen. Der zweite Aufruf löst den API-Aufruf aus und legt einen Job in der Jobwarteschlange an. In diesem Fall werden die Aufrufe verknüpft. Der zweite Aufruf erfolgt, wenn der erste erfolgreich war.

Beispiel:

ctx.ajax.call({ //First call, get the token

url: serviceAccount.urls.accessTokenURL, //Url got from the service key “url parameter + /oauth/token?grant_type=client_credentials”

method: e.ajax.method.get,

contentType: e.ajax.content.json, header:{

Accept: e.ajax.content.json,

Authorization: 'Basic ' +

ctx.base64.encode(serviceAccount.credentials.clientID + ':' +

serviceAccount.credentials.clientSecret, false) // clientID and clientSecret got from the service key

},

success: function(res, status, xhr) {

ctx.log('Token generated');

sc.localData.Token = 'Bearer ' + ctx.get(res, 'access_token');

ctx.ajax.call({ // Second call

url: serviceAccount.urls.apiTriggerURL, //Url from the API trigger (end with “/run”)

method: e.ajax.method.post,

contentType: e.ajax.content.json,

header:{

Accept: e.ajax.content.json,

'irpa-trigger-token':

serviceAccount.urls.irpaTriggerToken, //Token get from the API trigger

Authorization: sc.localData.Token

},

data:{

//Payload of your API Trigger

},

(25)

success: function(res, status, xhr) {

ctx.log('success');

sc.endStep();

return;

},

error: function(xhr, status, statusText) {

//web service failed

sc.setError(e.error.Fail, 'Web service failed: [' + status + ']' + statusText + ' - ' + xhr.responseText);

sc.endScenario();

return;

} });

},

error: function(xhr, status, statusText) {

//web service failed

sc.setError(e.error.Fail, 'Web service failed: [' + status + ']' + statusText + ' - ' + xhr.responseText);

sc.endScenario();

return;

} });

1.2.3.2 Beispiele für bewährte Geschäftsverfahren

Hier sind einige Beispiele für bewährte Geschäftsverfahren für Web-Service-Aufrufe aufgeführt.

Wie bereits erwähnt, kann es aufgrund der Komplexität des Ajax-Aufrufs zu unterschiedlichen Problemen kommen.

Um diese Probleme mit dem Ajax-Aufruf zu bewerten, können Sie mehrere Tools verwenden:

● Postman

● cURL

● Terminal-Befehle

● Ajax-Aufruf

(26)

1.2.3.2.1 Postman

Postman ist ein Tool, mit dem Sie Web-Services und API-Aufrufe abfragen und testen können.

Dieses Tool verfügt über mehrere Funktionen und ist benutzerfreundlich.

1.2.3.2.2 cURL

cURL ist ein Befehlszeilentool, mit dem Sie Daten abrufen oder senden können, auch Dateien, die URL-Syntax verwenden.

Mit dem Build 17063 von Windows 10 ist cURL standardmäßig enthalten.

1.2.3.2.3 Terminal-Befehle

In der Eingabeaufforderung können Sie den cURL-Befehl während der Bewertung testen.

Wenn der Test erfolgreich ausgeführt wurde, ruft der Agent den cURL-Befehl über das Terminal auf.

(27)

1.2.3.2.4 Ajax-Aufruf

Konfigurieren Ihrer Ajax-Aufruffunktion

Wenn Sie nicht wissen, wie Sie die Ajax-Aufruffunktion konfigurieren sollen, gehen Sie wie folgt vor:

1. Stellen Sie fest, ob die Anforderung über Postman funktioniert.

Hinweis

Wenn sie nicht über Postman funktioniert, bedeutet dies, dass sie in Verbindung mit der Ajax- Aufruffunktion auch nicht funktioniert.

1. Wenn sie jedoch funktioniert, klicken Sie auf den Button Code.

2. Wählen Sie die Programmiersprache, mit der Sie arbeiten.

Hinweis

Im roten Feld auf der linken Seite werden verschiedene Sprachen angezeigt. Hier wird die JavaScript-jQuery-Sprache gewählt, da die Ajax-Aufruffunktion mit der Methode jQuery.ajax() entwickelt wurde. Im grünen Feld sehen Sie den von Postman generierten Code.

(28)

2. Verwenden Sie diesen Code in der Ajax-Aufruffunktion.

Kopieren Sie diesen Code, fügen Sie ihn in Desktop Studio ein, und passen Sie ihn bei Bedarf an. Weitere Informationen finden Sie unter call.

function getCall(success, error, localData){

var result;

var url = localData.fetchAPI = "";

//API call to get csrf token and cookies ctx.ajax.call({

method: e.ajax.method.get, url: url,

contentType: e.ajax.content.json, headers: {

'Authorization': localData.auth, 'x-csrf-token' : 'fetch',

'Cookie' : 'fetch',

'Accept' : 'application/json' },

ignoreClientCertificate: localData.clientCert, success: function(res, status, xhr) {

if(res.d){

result = xhr;

success(result);

} else {

result = res;

error(result);

} },

error: function(xhr, error, statusText) {

result = res;

error(result);

}

});

Behandlung von Ajax-Aufrufproblemen

Wenn Sie immer noch Probleme mit dem Aufruf haben (Probleme in Verbindung mit dem xhr-Objekt), nachdem Sie den Test im vorigen Prozess ausgeführt haben, versuchen Sie es mit folgenden Tests:

1. Versuchen Sie es mit ctx.ajax.call mit der auf „true“ gesetzten Option ignoreClientCertificate.

Hinweis

Wenn es immer noch nicht funktioniert, stellen Sie im Fehlercode die Ursache des Fehlers fest.

.

2. Ändern Sie die Einstellungen in Postman.

(29)

Die SSL-Zertifikatverifizierung ist in Postman standardmäßig deaktiviert. Dies bedeutet, dass der Aufruf erzwungen wird, auch wenn das Zertifikat nicht verfügbar ist.

Wenn nach Deaktivierung dieser Option der Aufruf über Postman nicht funktioniert, bedeutet dies, dass dieses Zertifikat für den Aufruf obligatorisch ist. Wie bereits erwähnt, hat der Ajax-Aufruf diese Option nicht.

Eine Lösung könnte die Verwendung von cURL sein.

3. Verwenden Sie den von Postman angegebenen cURL-Code.

○ Folgen Sie dem obigen Prozess Konfigurieren Ihrer Ajax-Aufruffunktion (Schritt 1.a. bis Schritt 1.b.), um den entsprechenden cURL-Code abzurufen.

(30)

○ Entfernen Sie in diesem Code sämtliche Vorkommen des Zeichens \, und ersetzen Sie alle einfachen Anführungszeichen durch doppelte Anführungszeichen.

○ Führen Sie den cURL-Code in der Eingabeaufforderung aus.

Beispiel:

curl --location --request GET "http://XXXX"

Wenn eine Fehlermeldung mit dem cURL-Code angezeigt wird, führen Sie eine Suche im Internet durch. Die Fehlermeldungen sind in der Regel sehr explizit. Wenn der Code erfolgreich ausgeführt wurde, können Sie ihn in einen SAP Intelligent RPA-Aufruf integrieren.

○ Implementieren Sie diesen Code in Desktop Studio.

var cmdCurl = 'curl -k --location --request GET "http://XXXX"

ctx.exec(cmdCurl, 60, function(reqres) {

var reqdata = ctx.json.parse(reqres.output);

(31)

});

Hinweis

Die Option -k wird verwendet, um die Client-Zertifikate zu ignorieren.

1.2.4 Best Practices für den Umgang mit erheblichen Datenmengen bei der Scenario-Ausführung

Es liegt in der Verantwortung des Entwicklers sicherzustellen, dass große Datenmengen während der Scenario- Ausführung nicht in das sc.data-Objekt aufgenommen werden, da das sc.data-Objekt an die Cloud Factory zurückgesendet wird.

Als Behelfslösung können Sie wie folgt vorgehen: Wenn bei der Scenario-Ausführung eine große Datenmenge generiert und bearbeitet wird, können Sie diese im letzten Scenario-Schritt (teilweise oder vollständig) leeren.

Beispiel:

...

// during scenario execution

sc.data.bigData = ctx.fso.file.open(theBigFile);

...

// last step before ending the scenario

sc.data.bigData = undefined;

sc.endStep();

1.2.5 Best Practices für CAPTCHAs

Manchmal werden Sie mit CAPTCHAs konfrontiert, wenn Sie eine Website automatisieren möchten.

CAPTCHAs können Sie auf zwei Weisen behandeln:

● Sie können versuchen, CAPTCHAs zu lösen, indem Sie z.B. eine externe Bilderkennungsbibliothek verwenden (dies kann eine schwierige Prozessentwicklung sein).

● Sie können auch versuchen zu erkennen, wann ein CAPTCHA angezeigt wird, und dieses Verhalten vermeiden. Beispielsweise kann ein CAPTCHA angezeigt werden, wenn die Felder eines Formulars zu schnell ausgefüllt werden. In diesem Fall empfiehlt es sich, zwischen jedem Schritt Ihrer Automatisierung beispielsweise eine Verzögerung von drei Sekunden hinzuzufügen.

(32)

1.2.6 Best Practices für die Automatisierung von SAP-GUI- Bildern mit niedrigen Hierarchien

Wenn Sie in Desktop Studio eine Tabelle mit niedrigen Hierarchien aufnehmen, werden viele Elemente auf dem Anwendungstester angezeigt.

Um alle Elemente auf dem Bild zu erkennen, sind viele Tests erforderlich, was zu einer schlechten Performance während der Bot-Ausführung führen kann.

Um dies zu verhindern, können Sie das Lesen der Tabelle in Desktop Studio vermeiden und stattdessen die Tabelle in Excel lesen. Um die Tabelle in eine Excel-Datei zu exportieren, müssen Sie UMSCHALT + 4 drücken und zwei Popup-Fenster aufnehmen.

Nachdem Sie die beiden Popup-Fenster aufgenommen haben, können Sie die aufgenommenen Bilder mit der folgenden Vorgehensweise automatisieren.

Vorgehensweise

1. Führen Sie die Tastenanschluss-Aktion auf dem Bild aus, das Sie mit der Tabelle aufgenommen haben.

Das erste Popup-Fenster wird geöffnet.

(33)

2. Wählen Sie Weiter.

Das zweite Popup-Fenster wird geöffnet.

3. Klicken Sie auf Ersetzen.

Ergebnis

Die Tabelle wird geöffnet und in der Excel-Datei gesichert.

(34)

1.2.7 Best Practices für die Verwaltung von Dateien

In diesem Abschnitt finden Sie Best Practices für die Verwaltung von Dateien.

Konfigurationsdatei, die für verschiedene Benutzer und Rechner funktioniert

Ein typisches Beispiel ist der Fall, dass Sie eine Datei oder einen Ordner lokal ablegen müssen. Endbenutzer zur manuellen Erstellung eines Ordners für den Bot aufzufordern, ist nicht sehr benutzerfreundlich. Außerdem ist es schwierig, einen herkömmlichen Pfadnamen zu finden, der für alle Benutzer in Ihrer Organisation

funktioniert.

Sie können dies vermeiden, indem Sie Ihren Bot so einrichten, dass diese Ordner standardmäßig angelegt werden. Wenn der Bot also den erforderlichen Ordner auf dem Rechner nicht finden kann, legt er ihn an. Sie können es noch bequemer gestalten, indem Sie eine Bedingung hinzufügen, um das Vorhandensein des Ordners zu prüfen.

Beispielcode

// this will create a folder 'Config' under 'Desktop

\Automation\ProjetName' only if this folder does not exist

var configFile

=ctx.fso.folder.getSpecialFolder(e.shell.specialFolder.Desktop) + "\

\Automations\\"+ ctx.options.projectName + "\\config";

if (!configFile.exist){

ctx.fso.folder.create(configFile);

}

Arbeitsdateien

Für temporäre Dateien, die vom Bot verwendet werden, benötigen Windows-Benutzer möglicherweise

bestimmte Berechtigungen. Es wird empfohlen, diese Dateien im Protokollordner des Projekts anzulegen. Dies ist die bequemere Art zur Verwaltung der Arbeitsdateien.

Beispielcode

//this will create a file 'TempFiles' in your project folder ctx.fso.folder.create(ctx.options.path.log+"\\TempFiles\\")

(35)

Ordnerpfad mithilfe von Factory-Variablen verwalten

Für die Verwaltung einer gemeinsamen Datei oder eines gemeinsamen Ordners für eine Gruppe von Benutzern, die alle Zugriff auf ein freigegebenes Repository haben. Sie können die Cloud-Factory-Textvariable verwenden, um den Pfad zu speichern. Rufen Sie ihn dann wie im folgenden Beispiel in Ihrem Skript ab.

Weitere Details zu Cloud-Factory-Variablen finden Sie im Abschnitt Declaring Environment Variables from SAP Intelligent RPA Factory.

Beispielcode

var mypath;

//

--- // Step: get_path_var

//

--- GLOBAL.step({ get_path_var: function(ev, sc, st) { var rootData = sc.data;

ctx.workflow('Custom_getPathVar', 'c514ca1b-3d9d-445b- a2e3-069c9a7b9397') ;

// Describe functionality to be implemented in JavaSript later in the project.

// Declare setting path ctx.setting({ MyPath: {

comment: "sc.localData.mytenant", server: true

}});

// Get setting

ctx.settings.MyPath.get(function(code, label, setting) { if (code == e.error.OK) {

// get value from setting.value mypath = setting.value;

ctx.log(mypath);

} else{

ctx.log('Error during setting retrieval');

sc.endStep(); // pSapGlobalCloud8L_man return;

}

sc.endStep(); // code_

return;

});

}});

(36)

Ausgabedateien

Wenn Ihr Szenario eine oder mehrere Ausgabedateien erfordert, empfiehlt es sich, den Ausgabeordner lokal anzulegen.

Beispielcode

//this will create a folder 'output' under the path 'Desktop

\Automations\ProjectName'

ctx.fso.folder.create(ctx.fso.folder.getSpecialFolder(e.shell.specialFolder.De sktop) + "\\Automations\\"+ ctx.options.projectName + "\\output")

1.2.8 Best Practices für Chrome-Erweiterung

Manchmal tritt ein Problem auf, wenn Sie die Erweiterung für SAP Intelligent Robotic Process Automation für Chrome zweimal aktiviert haben.

Context

Weitere Informationen zur Aktivierung der Webbrowser-Erweiterung für Chrome erhalten Sie unter Web- Browser konfigurieren.

Wenn Sie die Erweiterung für SAP Intelligent Robotic Process Automation für Chrome zweimal aktiviert haben, können folgende Probleme auftreten:

● Wenn Sie eine Application aufnehmen möchten, sehen Sie, dass die Application zweimal im Bereich Application aufnehmen angezeigt wird. Das Problem tritt auch dann auf, wenn eine dieser Applications im Chrome-Browser gestartet wird.

(37)

● Wenn Sie Pages von einer Application aufnehmen möchten, sehen Sie, dass die Page im Bereich Page aufnehmen zweimal angezeigt wird.

● Wenn Sie die Web-Application im Chrome-Browser starten, werden die Page und die Application nicht erkannt.

(38)

● Um dieses Problem zu beheben, können Sie die Page manuell aktualisieren. Wenn die Page erkannt wird, sehen Sie, dass dieselbe Page zweimal angezeigt wird.

Deaktivieren einer der Erweiterungen

1. Geben Sie chrome://extensions/ in die Google-Suchleiste ein.

Ihnen werden dann zwei Kacheln zu Chrome-Erweiterungen für SAP Intelligent Robotic Process Automation angezeigt.

(39)

2. Prüfen Sie die Versionen der Erweiterungen, und deaktivieren Sie die ältere Version.

Weitere Informationen

Web-Browser konfigurieren

1.2.9 Best Practices für die Verwaltung des Popups „Server ausgelastet“

Dieser Abschnitt beschreibt Best Practices für die Verwaltung eines Popups „Server ausgelastet“ während der Ausführung einer Automatisierung.

Symptom

● Workflow friert ein. Der Prozess bleibt hängen, und danach wird nichts verarbeitet.

(40)

● Das Popup Server ausgelastet kann häufig nicht geschlossen werden.

● Meistens reagiert die Agent-Taskleiste nicht mehr.

● Um den Agent zu stoppen, müssen Sie den Prozess abbrechen.

● Manchmal verschwindet das Popup Server ausgelastet nach einer Weile, und der Prozess wird fortgesetzt.

Ursprung

Das Popup Server ausgelastet wird wie folgt ausgelöst:

● Die Zielanwendung ist voll belegt und kann nicht auf Agent-Anfragen antworten.

○ Auf einer Webseite wird ein langes JavaScript ausgeführt

○ Die Seite lädt große Datenmengen herunter oder hoch (Herunterladen einer Datei, Suchen von Daten im Backend und vieles mehr).

○ Die Anwendung ist langsam oder befindet sich in einer zu kleinen Umgebung

● Der Agent versucht, eine Aktion für dieselbe Anwendung in derselben Zeit auszuführen (click() oder refresh() oder …)

Die Lösung hängt vom technischen Konnektor ab, aber im Grunde müssen wir sicherstellen, dass die Anwendung verfügbar ist, bevor eine andere Aktion ausgeführt wird.

In einigen Fällen stammt sie vollständig aus der Zielanwendung. Das bedeutet, dass dieses Popup durch eine einfache manuelle Aktion ohne laufenden Agent ausgelöst werden kann.

In diesem Fall müssen Sie selbst bestimmen, wann dies geschehen kann und wie Sie dies manuell vermeiden.

Das müssen Sie dann in Ihrem Workflow nachahmen.

Erfahrungsgemäß wird das Popup jedoch meistens vom Agent (ctxtrun.exe) selbst ausgelöst, auch wenn es sich auf die Nichtverfügbarkeit Ihrer Anwendung bezieht.

Das Popup „Server ausgelastet“ sollte nach dem Stoppen des Agents nicht mehr angezeigt werden.

Wenn es vom Agent stammt, müssen zwei mögliche technische Ursprünge identifiziert werden.

● SDK

○ Das SDK fordert den technischen Konnektor auf, Aktionen durchzuführen, und fordert Feedback an.

○ Benutzerdefiniertes Polling und Polling für Element (item.wait())

○ Klicken auf das Element

○ Ausführungsskript

○ Technischer Konnektor

○ Der Konnektor fordert neben der Ausführung von Anforderungen aus dem SDK (siehe oben) meist den Status der verarbeiteten Anwendung an

○ LOAD, Warten auf Seiten

○ Polling für Seiten

○ Starten der Anwendung

Erinnerung

In jedem Fall ist es wichtig, dass Sie die Aktionen identifizieren, die zu diesem Popup führen können. In den meisten Fällen wird dieses Popup ständig in denselben Workflow-Schritten angezeigt.

Auch wenn Sie um Hilfe bitten, werden wir Sie bitten, solche Informationen bereitzustellen.

(41)

Wir empfehlen Ihnen dringend, dazu Projekt-Traces zu verwenden, siehe SAP-Wissensdatenbankartikel 2776434 .

Prüfen, ob das Popup Server ausgelastet vom Konnektor stammt

● Identifizieren Sie das Ereignis, das in Ihrem Workflow zum Popup führt, und alle umgebenden Aktionen, gegebenenfalls mithilfe von Projekt-Traces. Weitere Informationen finden Sie im SAP-

Wissensdatenbankartikel 2776434 .

○ Ein Klick auf einen Button

○ Die Aktion LOAD einer bestimmten Seite

○ Aufruf eines Skripts auf einer Seite

○ Download einer Datei

○ …

● Starten Sie den Debugger, ohne einen Workflow zu starten

● Replizieren Sie manuell die Aktion, die vom Workflow direkt vor diesem Popup ausgeführt worden wäre

● Wenn nichts angezeigt wird, wird dieses Problem nicht vom Konnektor selbst ausgelöst.

○ Das bedeutet, dass die Aktivitäten zum Warten oder Laden für Seiten nicht die Aktivitäten sind, die dieses Popup auslösen.

○ Es ist sicher, auf diese Seiten zu warten, und die wahrscheinliche Ursache des Problems sollte mit den vom Agent angeforderten Aktionen zusammenhängen.

● Wenn das Popup Server ausgelastet angezeigt wird:

○ Wenn die Anwendung mit UIAutomation-Technologie aufgenommen wird, lesen Sie den Unterabschnitt Aus Konnektorsicht des Abschnitts Lösung und Behelfslösung.

○ Andernfalls melden Sie den Vorfall unter der Komponente CA-ML-IPA. Es handelt sich möglicherweise um eine Blockierung.

Prüfen, ob das Popup Server ausgelastet vom SDK stammt

● Identifizieren Sie das Ereignis, das in Ihrem Workflow zum Popup führt, und alle umgebenden Aktionen, gegebenenfalls mithilfe von Projekt-Traces. Weitere Informationen finden Sie im SAP-

Wissensdatenbankartikel 2776434 .

○ Ein Klick auf einen Button

○ Die Aktion LOAD einer bestimmten Seite

○ Aufruf eines Skripts auf einer Seite

○ Download einer Datei

○ …

● Starten Sie den Debugger, ohne einen Workflow zu starten

● Kopieren Sie Aktionen (bestimmte Aktionen und umgebende Aktionen) aus dem Workflow, die anscheinend zu diesem Problem führen, und fügen Sie sie ein

○ Entfernen Sie alle Szenarioaktivitäten (endStep, endScenario, return, Datenmanagement, …)

○ Oft sieht es wie ein Klick auf ein Element aus, das zum Warten auf eine Seite oder zu einem LOAD- Handler führt, der eine bestimmte Aktion ausführt, z.B. ein anderer Klick, ein Element-Polling oder eine benutzerdefinierte Skriptausführung.

Im Fall des Popups „Server ausgelastet“ wurden mehrere mögliche Aktivitäten identifiziert, die dazu führen.

Diese sind jedoch nicht vollständig. Es handelt sich um SDK-Aktivitäten. Das SDK erwartet ein Feedback vom technischen Konnektor, der möglicherweise hängen geblieben ist und auf ein Feedback von der nicht verfügbaren Anwendung wartet:

● Benutzerdefiniertes Polling für eine Seite (ctx.polling)

(42)

● Element-Polling (app.page.myElement.wait)

● UIAutomation-Befehl refresh()

● Webausführungsskript

Es gibt Aktivitäten, bei denen kein solches Feedback angefordert wird und die helfen sollten, eine Lösung/

Behelfslösung zu finden:

● Verwenden Sie das Warten auf eine Seite so oft wie möglich

○ Eine lange Wartezeit muss für ein Element bestehen, um das Polling von Elementen zu vermeiden (item.wait).

● UIAutomation-Befehle lockRefresh/unlockRefresh, um Anwendungsüberflutungen durch den Konnektor zu vermeiden

Lösung und Behelfslösung

Eine optimierte Anwendung [Seite 62] ist in diesem Fall sehr wichtig. Durch die Optimierung einer Anwendung werden die Kosten für die Anforderung von Anwendungs-, Seiten- und Elementstatus reduziert.

Dadurch wird der Druck auf eine potenziell komplexe Anwendung begrenzt.

Hinweis

Best Practices für die Erkennung mit UIAutomation bestehen darin, nach Möglichkeit „Muss existieren“/

„Muss nicht existieren“ zu vermeiden. In diesem Fall müssen wir sie möglicherweise verwenden, weil es notwendig ist, das Polling für Elemente zu vermeiden. (ctx.polling / app.page.element.wait)

Aus SDK-Sicht

UIAutomation/Web-Technologie

Die Aktion LOAD für Ihre Seite bzw. das Herunter- oder Hochladen von Daten dauert sehr lange, und dieses Problem tritt auf, wenn Sie eine Aktion an die Seite senden. Diese Seite ist möglicherweise noch nicht vollständig verfügbar oder wurde nicht mit vollständigen Daten geladen.

● Suchen Sie nach einem Element, das sicher darauf hinweist, dass die Aktion LOAD für Ihre Seite vollständig abgeschlossen ist

○ Titelaktualisierung

○ Paginierungs-Update

○ Element vollständig geladen

○ Element nicht mehr ausgegraut

○ Ladesymbol verschwunden

○ …

● Deklarieren Sie es auf dieser Seite als MustExist, mit entsprechenden Kriterien, die den erwarteten Elementstatus (nicht ausgegraut, nicht angezeigt, ...) angeben

● Beim Warten auf die zugehörige Seite wird auch ohne SDK-Polling auf dieses Element gewartet.

○ Das Ausführen von „item.wait“ ist eine SDK-Anforderung

○ Ein „Muss existieren“ für dasselbe Element ist nur eine Konnektoraufgabe (dann wird vom SDK kein Feedback angefordert > kein Popup „Server ausgelastet“)

GUI-Technologie

(43)

Unterseiten

Eine Unterseite kann dieses Problem verursachen. Sie müssen vermeiden, GUI-Unterseiten zu verwenden.

Wenn eine GUI-Unterseite nicht erkannt wird, friert SAPGUI ein, was dann zu einem Popup „Server ausgelastet“ führt.

Muss existieren (passive Optimierung)

Wenn zu viele Elemente „Muss existieren“/„Muss nicht existieren“ vorhanden sind, erhöhen sich die Kosten für die Seitenerkennung. Sie wirkt sich direkt auf die Anwendungsverfügbarkeit und das Anzeigen des Popups aus.

Es wird dann empfohlen, ihre Anzahl so weit wie möglich zu begrenzen.

Aktive GUI-Optimierung

Obwohl Unterseiten entfernt wurden und nur eine begrenzte Anzahl von „Muss existieren“/„Muss nicht existieren“ vorhanden sind, tritt das Problem möglicherweise weiterhin auf. In diesem Fall müssen Sie eine aktive Optimierung anwenden. Dies geschieht durch die Verwendung einer bestimmten Aktivität und Methode im Workflow: setBusyWaitTime, resetBusyWaitTime, lockRefresh und unlockRefresh.

● „setBusyWaitTime“ und „resetBusyWaitTime“

Die SAPGUI-Transaktion kann beim Laden von Seiten oder beim Ausführen bestimmter Aufgaben belegt sein. Es ist wichtig, die Ausführung einer Aktion zu vermeiden, während eine Transaktion ausgelastet ist.

Der Agent versucht immer, eine Aktion auszuführen, wenn die Transaktion nicht ausgelastet ist. Wenn die Sitzung auch nach einem deklarierten Timer ausgelastet ist, wird eine Meldung „Sitzung ausgelastet“

angezeigt.

Die beiden Methoden werden wie folgt verwendet: Extend the Wait Period When the SAP Session is Busy Die Methode „setBusyWaitTime“ sollte im ersten Schritt eines Workflows aufgerufen werden. In der Regel wird sie auf der Seite verwendet, wenn die Easy-Access-Seite bearbeitet wird.

SAPLOGON.pEasyAccess.setBusyWaitTime(//Zeit in Millisekunden);

Standardmäßig beträgt die Wartezeit bei Auslastung 1 Sekunde (1000 ms) und kann geändert werden. Alle während Ihres Prozesses geöffneten Sitzungen verwenden diese Zeit, um jede an den SAP-GUI-Seiten vorgenommene Aktion abzuwickeln.

Jede vom Konnektor ausgeführte Aktion prüft regelmäßig bis zum Timer, ob SAP GUI ausgelastet ist oder nicht.

(44)

Verwenden Sie als Best Practice immer „resetBusyWaitTime“, wenn Sie Ihren Workflow abschließen.

● „lockRefresh“ und „unlockRefresh“

UIAutomation und der technische Konnektor von SAPGUI arbeiten mit dem Polling-Mechanismus. Sie aktualisieren regelmäßig den Status der behandelten Anwendung aus Sicht des Agents sowie für ihren Inhalt. Die Aktualisierung erfolgt, indem diese Status direkt bei der Anwendung angefordert werden (und sie möglicherweise belasten).

Diese Aktualisierungen können einige Zeit in Anspruch nehmen, und der Polling-Mechanismus kann die Anwendung überfluten.

Wenn Sie während eines Polls eine Aktion ausführen, wird möglicherweise ein Popup „Server ausgelastet“

angezeigt.

Es gibt keine Möglichkeit, den Polling-Mechanismus (im Gegensatz zu UIAutomation) mit GUI-Technologie zu verlangsamen.

Mit diesen beiden Funktionen wird verhindert, dass der Konnektor den Inhalt der Seite aus Sicht des Agents aktualisiert. Dadurch wird Zeit zum Ausführen von Aktionen zur Verfügung gestellt, während eine Überflutung der behandelten Anwendung vermieden wird.

Verwenden Sie sie in einem Warte-Listener, wenn Sie wissen, dass die Seite ordnungsgemäß geladen wurde

app.page.wait(function(ev) { app.page.lockRefresh();

// >>> Aktionen ausführen <<<

app.page.unlockRefresh();

});

Vergessen Sie nicht „unlockRefresh“ am Ende des Schritts, da der Konnektor die nächsten Ereignisse nicht als Eingang einer neuen Seite berücksichtigt.

Hinweis

Automatisches Polling kann jede Aktion auf einer Seite verlangsamen, insbesondere wenn diese Seite nicht optimiert werden kann oder viele Elemente, eine große Tiefe und viele Elemente „Muss

existieren“/„Muss nicht existieren“ hat

Aus Konnektorsicht UIAutomation

● Wenn das Popup nicht vom SDK ausgelöst wird:

○ Versuchen Sie, die Seite zwischen den Funktionen „lockRefresh“ und „unlockRefresh“ einzuschließen.

Prüfen Sie, ob der Fehler „Server ausgelastet“ nicht auftritt. (Vorgehensweise siehe oben unter

„„lockRefresh“ und „unlockRefresh““)

○ Wenn das Popup „Server ausgelastet“ angezeigt wird, warten Sie einige Sekunden, um zu sehen, ob das Popup automatisch verschwindet und die Bot-Ausführung fortgesetzt wird. In diesem Fall handelt es sich möglicherweise nicht um eine Blockierung.

○ Automatisches Polling deaktivieren

○ Navigieren Sie im Studio zur Seite „Parameter > set refreshmode = no“.

(45)

● Dieser Modus verhindert die automatische Aktualisierung der Seite. Auch wenn die Seite geändert wird (neuer Inhalt, neue Elemente), werden diese Aktualisierungen nicht automatisch angezeigt.

● Rufen Sie „mainpage.refresh“ oder „page.refresh“ im Codeaktualisierungsstatus der Anwendung aus Agentsicht auf, wenn Sie eine Aktualisierung von der Seite erwarten.

1.2.10 Asynchrone Events in For-Schleifen

Manchmal müssen Sie einige Aktionen im Workflow Ihrer Automatisierung mehrmals ausführen. Meistens verwenden Sie hierzu eine For-Schleife direkt im Code. Diese Methode funktioniert gut, wenn Sie einfache Aktionen durchführen, beispielsweise Werte in eine Excel-Datei eingeben oder Werte aus einem Array abrufen.

Wenn Sie jedoch asynchrone Aufgaben wie API-Aufrufe ausführen oder auf Elemente warten, wartet die For- Schleife nicht, bis die asynchronen Aktionen abgeschlossen sind, um die nächste Iteration auszuführen. Daher funktioniert sie nicht wie erwartet. Die nächste Iteration wird ausgeführt, sobald die asynchrone Aktion ausgeführt wird. Dadurch kann der Step nach der For-Schleife vor dem Ende aller asynchronen Aktionen ausgeführt werden. Wenn der nächste Step Daten aus früheren asynchronen Events benötigt, können diese Daten nicht rechtzeitig festgelegt werden.

API-Aufrufe in einer For-Schleife

Das folgende Beispiel zeigt das Verhalten der Ausführung von API-Aufrufen in einer For-Schleife:

Manchmal müssen Sie einen API-Aufruf mehrmals ausführen. Legen Sie zu diesem Zweck zunächst Ihren API- Aufruf an, umschließen Sie ihn mit einer For-Schleife, und fügen Sie dann den nächsten Step hinzu (z.B. die einfache Activity Protokoll ).

Im folgenden Code können Sie erwarten, dass der Bot das API dreimal aufruft und das Ergebnis dreimal ausdruckt und dann die Protokollmeldung „Workflow beendet“ ausgibt.

(46)

Im Debugger können Sie sehen, dass die letzte Protokollnachricht vor den Ergebnissen aller API-Aufrufe gedruckt wird. Dieses Verhalten geht auf die Verwendung der For-Schleife zurück. Die For-Schleife wartet nicht, bis die Ausführung des asynchronen Events beendet ist, um die nächste Iteration durchzuführen. Nach allen Iterationen wird die Methode sc.endStep() aufgerufen, damit der nächste Step ausgeführt wird. Dieser letzte Step wird jedoch ausgeführt, bevor alle API-Aufrufe ihre Ausführung abgeschlossen haben. Aus diesem Grund ist die Reihenfolge aller Protokolle im Debugger nicht wie erwartet.

API-Aufrufe mit Schleifen-Activitys

Um dieses Verhalten während der Ausführung Ihres Bots zu vermeiden, müssen Sie Schleifen-Activitys einsetzen, die in Desktop Studio verfügbar sind. Diese Activitys gewährleisten, dass der nächste Step nach dem Ende eines asynchronen Events ausgeführt wird.

(47)

Sie können diese Schleifen-Activitys direkt im Workflow-Editor von Desktop Studio hinzufügen. Das vorhergehende Beispiel kann wie folgt geändert werden:

Wie bereits erwähnt, wird jeder Step aufgerufen, nachdem der vorherige ausgeführt wurde. Infolgedessen wird die Activity Schleife beenden ausgeführt, sobald die Ausführung der Activity Web-Service aufrufen

abgeschlossen und das Ergebnis vom API abgerufen wurde.

Im Debugger können Sie sehen, dass die Reihenfolge aller Protokolle wie erwartet der richtigen Reihenfolge entspricht.

Somit gewährleistet die Implementierung von Schleifen-Activitys, dass alle Steps in der richtigen Reihenfolge ausgeführt werden.

Activity „Warten“ in einer Schleife

Das folgende Beispiel zeigt das Verhalten der Ausführung der Activity „Warten“ in einer Schleife:

Manchmal müssen Sie einige Zeit abwarten, bevor Sie die nächste Activity ausführen und dasselbe Verhalten auftritt, das oben im Abschnitt API-Aufrufe in einer For-Schleife beschrieben wird.

Im folgenden Code können Sie sehen, dass derselbe Fehler auftritt, der im Abschnitt API-Aufrufe in einer For- Schleife beschrieben wird.

(48)

Activity „Warten“ mit Schleifen-Activitys

Um alle Steps in der richtigen Reihenfolge auszuführen, müssen Sie den vorherigen Code ändern und Schleifen-Activitys wie folgt verwenden:

Die Implementierung von Schleifen-Activitys gewährleistet daher, dass alle Indexprotokolle vor dem Endprotokoll gedruckt werden.

(49)

1.3 Cloud-Factory

Folgenden Wissensdatenbankhinweise sind für die Cloud Factory verfügbar:

● "Unable to create package. Package version already existing for 'ProjectName'" Error when trying to import a project into the Factory – 2792210

● "Factory could not be loaded insufficient_scope: Insufficient scope for this resource" – 2802932

● Nothing happens when launching an unattended scenario using Desktop Agent – 2796491

● Ausblenden von Rechner- oder Anmeldeinformationen: 3056143

1.3.1 Insufficient Scope

Die Fehlermeldung „Insufficient Scope“ wird angezeigt, nachdem der SAP Intelligent RPA-Factory-Service aufgerufen wurde.

Kontext

Diese Fehlermeldung weist darauf hin, dass der Onboarding-Prozess für SAP Intelligent RPA nicht komplett abgeschlossen wurde. Die korrekten Rollen wurden nicht konfiguriert und zugeordnet.

Um dieses Problem zu lösen, müssen Sie diesen Rollen Benutzer und Rollen hinzufügen.

Rollen konfigurieren

1. Gehen Sie auf der Registerkarte Security Ihres Unterkontos zu Role Collections.

Hinweis

Sie müssen über die Rolle Sicherheitsadministrator verfügen, um im SAP-BTP-Cockpit die Registerkarte Security aufzurufen.

(50)

2. Legen Sie eine New Role Collection an.

3. Klicken Sie auf die Rollensammlung, die Sie gerade angelegt haben, und wählen Sie Add Role aus.

4. Wählen Sie aus der Dropdown-Liste Application Identifier die Rolle IRPAOfficer aus, um den Administrator des Tenants anzulegen.

5. Melden Sie sich ab und wieder an, damit Ihre neuen Rollen berücksichtigt werden.

(51)

Benutzern Rollen zuordnen

Hinweis

Wiederholen Sie diese Schritte für sämtliche Benutzer, die folgende Vorgänge durchführen möchten.

● Benutzer, die Bots in der Cloud-Factory konfigurieren möchten: Fügen Sie die Rolle IRPAOfficer diesen Benutzern hinzu.

● Benutzer, die Bots ausführen möchten: Fügen Sie die Rolle IRPAAgentUser hinzu (stellen Sie sicher, dass diese Rolle in der Rollensammlung konfiguriert wurde).

1. Rufen Sie Trust Configuration auf, und klicken Sie auf den SAP ID Service.

2. Geben Sie die E-Mail-Adresse Ihres Benutzers ein, und klicken Sie auf Show Assignment. Klicken Sie bei Bedarf auf Add User.

3. Klicken Sie auf Assign Role Collection, und wählen Sie die erforderliche Rolle aus.

Referenzen

ÄHNLICHE DOKUMENTE

Als Trainer kannst du eine spezielle Fähigkeitsbeurteilung für einen Spieler anlegen oder die Leistung eines Spielers in einer Trainingseinheit oder in einem Spiel bewerten.

Wenn Sie darüber hinaus den Hauptvertrag in der Schemaansicht öffnen und Änderungen wie Hinzufügen oder Löschen eines Abschnitts oder einer Klausel daran vornehmen, werden

Wenn Sie Microsoft-Word-Lesezeichen gemäß den SAP Ariba-Anforderungen zu einem Dokument hinzufügen, erstellt SAP Ariba Contracts Abschnitte und Klauseln für Sie, wenn Sie ein

● Beim Heraufladen von privaten Katalogen in Ariba Network können Sie Kunden mit aktivierter CMS-Funktion wählen oder Kunden, die diese Funktion noch nicht aktiviert haben..

Die Seite Länderabhängige Einstellungen für Benachrichtigungen wird geöffnet, auf der Sie für das jeweilige Land dokumentspezifische und Standardeinstellungen für

Wenn Sie alle Personen löschen möchten, die einem Unternehmen zugeordnet sind, können Sie hierzu auch einfach das gesamte Unternehmen über die App Unternehmen löschen Beim

Wenn Ihrem Desktop Agent mehrere Tenants zugeordnet sind, können Sie in diesem Fenster Tenants aktivieren, hinzufügen, bearbeiten oder

Ab SAP ECC 6.0, Enterprise Extension Public Sector Management (EA-PS 604), Enhancement Package 4, Business Function PSM, zusätzliche Funktionen für SAP SRM und PPS, können