Gesicherte Suchen teilen

Gesicherte Suchen als Lösung zum Bereitstellen von „Arbeitsvorräten“:

Im SAP Solution Manager 7.0 wurden mittels Varianten des Reports CRM_DNO_SERVICE_MONITOR (Transaktion CRM_DNO_MONITOR) verschiedene Arbeitsvorräte für Endanwender geschaffen. Es gibt mehrere Möglichkeiten, diese Arbeitsvorräte im SAP Web Client UI wieder bereit zu stellen:

  1. Normale Vorgangssuche nach komplexen Kriterien
  2. Gesicherte Suche
  3. MyMessageWidget
  4. Inbox
  5. Servicemonitor

Die Lösung der „Gesichterten Suchen“ entspricht am ehesten dem aus dem SAP GUI und Work Center gewohnten Arbeitsvorrat.

Folgende Suchkriterien sind i.R. zu verwenden:

  • Vorgangsart
  • Status
  • Zugeordnet zu „Ich“ (ggf. alternativ: Mit meiner Beteiligung)

Gesicherte Suchen strukturieren:

Gesicherte Suchen werden aktuell als Flache Liste angezeigt. Eine Verwaltung als Baumstruktur mit Zusatzinformationen (z.B. Anzahl der Treffer) ist möglich: 2468458 – Neues Tray für eigene gesicherte Suche auf Startseite.

Gesicherte Suchen teilen:

Das Teilen von Gesicherten Suchen für alle Anwender einer Benutzerrolle ist mit dem Central Sharing Tool möglich. Allerdings erfüllt das nicht unsere Zwecke, da der Endanwender aktiv werden muss um die geteilten Suchen zu importieren. Außerdem steht die Suche dann zwar als zentrale Suche zur Verfügung, wird aber nicht auf der Startseite als „Von mir gesicherte Suche“ angezeigt.

Aus diesem Grund nutzen wir die andere Lösung mittels Anpassung der Einträge in Tabelle CRMD_SHORTCUT und CRMD_SHORTCUT_T. Zur Automatisierung wurde Report ZWUI_SHARE_SAVED_SEARCHES entwickelt.

Ablauf:

  1. Suche alle gesicherten Suchen welche mit dem Namen „SHARE:“ beginnen. Schränke Suche ggf. auf Benutzerrolle (APPLICATION), Ersteller (OWNER KEY) oder Bezeichnung (DESCRIPTION) ein.
  2. Ändere AUDIENCE TYPE von USER zu ROLE. Trage in AUDIENCE KEY die Benutzerrolle (Wert aus Feld APPLICATION) ein. Pflege Bezeichnung in Tabelle CDMD_SHORTCUT_T (Bezeichnung ohne „SHARE:“).

Hinweise:

  • Anwender welche teilbare gesicherte Suchen erstellen wollen, müssen diese nur mit „SHARE:“ benennen und den Report ausführen. Der Zusatz „SHARE:“ wird hierbei entfernt.
  • Alternative zur Identifizierung mittels „SHARE:“: Alle gesicherte Suchen eines dedizierter User oder eine dedizierte Benutzerrolle.
  • Die so geteilten gesicherten Suchen lassen sich nach Ausführung ändern. Hier dürfen jedoch nur die Suchwerte nicht jedoch die Selektionskriterien geändert werden.
  • Ändern sich auch die Suchkriterien, so müssen neue gesicherte Suchen angelegt werden. Wird der exakt selbe Name gewählt (ohne SHARE:), so wird die Gesicherte Suche überschrieben und ist dann nicht mehr geteilt. Anschließend ist der Name zu ändern + zu speichern, die andere gesicherte Suche (ohne „SHARE:“) zu löschen und der Report auszuführen um eine erneute Teilung zu erwirken. Alternative kann die zu ändernde gesicherte Suche gelöscht werden. Dann wird eine neue gesicherte Suche inkl. Namenszusatz „SHARE:“ erstellt und der Report ausgeführt.
  • Das Überschreiben von geteilten gesicherten Suchen ist nur vom Eigentümer der gesicherten Suche erlaubt, ansonsten erscheint eine Fehlermeldung. Der Eigentümer (OWNER) kann mittels SE16 in Tabelle CRMD_SHORTCUT geändert werden.
  • Beim Speichern von Gesicherten Suchen im Web UI kann nur ein sehr kurzer Name gewählt werden. Tatsächlich kann der Name aber bis zu 80 Zeichen lang sein. Hierzu müssen mittels SE16 die Texte in den Tabellen CRMD_SHORTCUT und CRMD_SHORTCUT_T angepasst werden.
  • Verweise: http://sapuniversity.eu/saved-searches-publish-a-search-to-all-users-of-a-sap-crm-business-role/

Gesicherte Suchen transportieren:

Gesicherte Suchen sind Personalisierungen und damit nicht transportierbar. Wir wollen aber ausnahmsweise einmalig alle Gesicherten Suchen aus DEV nach PRD transportieren, um die GoLive-Aktivitäten maximal zu automatisieren. Hierzu können wir in den GoLive-Workbench-Transport R3TR-TABU-Einträge für CRMD_SHORTCUT, CRMD_SHORTCUT_T und CRMT_DYN_QUERY mit Schlüssel „*“ aufnehmen. Hierdurch werden alle Gesicherten Suchen zum Zeitpunkt der Freigabe transportiert. Es ist keine manuelle GoLive-Aktivität erforderlich.

Der Report ZWUI_SHARE_SAVED_SEARCHES führt aktuell keine Transporte durch. Sofern häufig Änderungen an den geteilten gesicherten Suchen vorgenommen werden und ein Transport benötigt wird, wäre dies eine sinnvolle Erweiterung. Aktuell wird jedoch von einem einmaligen Transport aufgegangen.

*&---------------------------------------------------------------------*
*& Report  ZWUI_SHARE_SAVED_SEARCHES
*&
*&---------------------------------------------------------------------*
*& Share saved search to all users of a business role.
*&---------------------------------------------------------------------*
REPORT zwui_share_saved_searches.

TABLES:
crmd_shortcut.

SELECT-OPTIONS:
s_appl FOR crmd_shortcut-application,
s_owner FOR crmd_shortcut-owner_key,
s_descr FOR crmd_shortcut-description.

PARAMETER:
p_prefix TYPE crmd_shortcut-description DEFAULT 'SHARE:',
p_test TYPE oax DEFAULT abap_true.

*-------------------------------------------------------------------------
START-OF-SELECTION.

DATA(lv_description) = p_prefix && '%'.
DATA(lv_start) = strlen( p_prefix ).

*Get datasets according to search criteria.
SELECT *
INTO TABLE @DATA(lt_shortcut)
FROM crmd_shortcut
WHERE application IN @s_appl AND
owner_type = 'USER' AND
owner_key IN @s_owner AND
description IN @s_descr AND
description LIKE @lv_description.

*-------------------------------------------------------------------------
END-OF-SELECTION.

DATA:
lt_shortcut_update   TYPE TABLE OF crmd_shortcut,
lt_shortcut_t_insert TYPE TABLE OF crmd_shortcut_t.

*process every found entry.
LOOP AT lt_shortcut ASSIGNING FIELD-SYMBOL(<fs_shortcut>).

WRITE: / <fs_shortcut>-description.

*Sharing already done.
IF <fs_shortcut>-audience_type = 'ROLE'.

*Inform end-user.
WRITE: '> Is already shared. Nothing to do.'.

*Share now!
ELSE.

*CRMD_SHORTCUT
<fs_shortcut>-audience_type = 'ROLE'.
<fs_shortcut>-audience_key = <fs_shortcut>-application.
APPEND <fs_shortcut> TO lt_shortcut_update.

*CRMD_SHORTCUT_T
APPEND INITIAL LINE TO lt_shortcut_t_insert ASSIGNING FIELD-SYMBOL(<fs_shortcut_t>).
MOVE-CORRESPONDING <fs_shortcut> TO <fs_shortcut_t>.
<fs_shortcut_t>-langu = sy-langu. "No multi language support.
<fs_shortcut_t>-description = <fs_shortcut>-description+lv_start.
SHIFT <fs_shortcut_t>-description LEFT DELETING LEADING space.

*Inform end-user.
WRITE: |> Is now shared to all users of business role { <fs_shortcut>-audience_key }.|.

ENDIF.

ENDLOOP.

*Perform database update to CRMD_SHORTCUT and CRMD_SHORTCUT_T.
*No update on CRMT_DYN_QUERY needed yet.
IF p_test = abap_false AND lt_shortcut_update IS NOT INITIAL.
UPDATE crmd_shortcut FROM TABLE lt_shortcut_update.
MODIFY crmd_shortcut_t FROM TABLE lt_shortcut_t_insert.

COMMIT WORK AND WAIT.
ENDIF.