In diesem Beispiel werden in Echtzeit die Daten eines SAP-ERP- bzw. R/3-Systems
mit Fremddatengruppen in ein Intrexx-CRM integriert. Dafür wird mindestens eine
View Only-Lizenz des Connectors für SAP
Business Suite benötigt. Schreibende Szenarien benötigen die Lizenzen
View & Write (z.B. funktionale Aufrufe) oder
Developer API (vollständige Datengruppenfunktionen wie
Anlegen, Ändern, Löschen). Das hier vorgestellte ERP-Mini-CRM wird folgende Funktionen
enthalten:
Recherche im SAP-Kundenstamm
Detailinformationen zum Kunden
Angebote zum Kunden
Ansprechpartner zum Kunden
Korrespondenzverwaltung
2. Applikation erstellen
Erstellen Sie eine
neue Applikation auf Basis
der Applikationsvorlage Dokumente.
Der Applikationstitel kann mit einem Doppelklick auf den
Applikationsknoten in
Demo SAP Mini CRM abgeändert werden. Speichern Sie die Applikation.
Die Anwendung kann dann in der Menüstruktur des Portals eingeordnet werden.
Nun wird eine neue Fremddatengruppe
angelegt. Im Eigenschaftendialog der Fremddatengruppe
wird die Datenbankverbindung saperp, die in unserem Beispiel bereits
konfiguriert ist, ausgewählt.
Da hier lediglich Daten aus SAP gelesen und nicht geschrieben werden, kann die SAP-Tabelle
KNA1 über den Datahandler Generic View eingebunden werden.
Auf dem Reiter Datenfelder können jetzt die gewünschten Datenfelder
aus SAP ausgewählt werden.
Mit Klick auf Hinzufügen
wird ein Dialog geöffnet, in dem die folgenden Datenfelder ausgewählt werden:
LID
KUNNR
NAME
ORT
Das Datenfeld LID ist ein generiertes Hilfsfeld, das den kompletten
SAP-Schlüssel des Datensatzes (ohne Mandant) enthält. Dieses Feld sollte immer
ausgewählt werden. Mit Klick auf OK
werden die Datenfelder verbunden. Das Hinzufügen weiterer Felder ist jederzeit möglich.
Die Texte für alle im Intrexx-Portal konfigurierten
Sprachen
werden in diesem Schritt in SAP ermittelt und die Titel entsprechend übernommen.
Mit Klick auf OK ist die SAP-Fremddatengruppe erstellt.
Der Name wird mit einem Doppelklick auf die Datengruppe noch in
SAP geändert.
Mit Klick auf OK ist die neue Ansichtsseite
fertig gestellt. Nun wird eine Ansichtstabelle auf dieser Seite angelegt und im
Eigenschaftendialog
die SAP-Fremddatengruppe ausgewählt.
Mit Klick auf
Spalte hinzufügen können Datenfelder ausgewählt werden, deren Werte
jeweils in einer Spalte in der Tabelle aufgelistet werden.
Mit Klick auf
Sortierung kann die Sortierung der Tabelle nach Name eingestellt werden.
Mit Klick auf OK wird die Einstellung übernommen.
Der Eigenschaftendialog wird ebenfalls mit einem Klick auf
OK geschlosssen. Die Tabelle ist nun erstellt.
Die neue Ansichtsseite soll im Browser über das Applikationsmenü erreichbar sein.
Mit einem Doppelklick auf den Applikationsknoten
wird der Eigenschaftendialog der Applikation geöffnet. Auf dem Reiter Applikationsmenü
kann die Seite Kunden ausgewählt und angeordnet werden. Mit Klick auf
OK ist die neue Einstellung gespeichert. Nun kann auch die Applikation
gespeichert und veröffentlicht werden. Nach dem Speichern der Applikation ist der SAP Kundenstamm im
Portal verfügbar.
3.3. Recherche im Kundenstamm
Mit Dynamischen Filtern wird die Suche
nach Kundennummer und Anfangsbuchstaben des Namens eingerichtet.
3.3.1. Filter Operator - Suche nach der Kundennummer
Oberhalb der Tabelle auf der Ansichtsseite Kunden
wird ein dynamischer Filter (Typ Operator) angelegt. Im Eigenschaftendialog
auf dem Reiter Vergleich wird der Operator
Beginnt mit ausgewählt. Außerdem wird die
Datengruppe SAP und das Datenfeld
Debitor ausgewählt.
Auf dem Reiter Vergleich kann die Einstellung
Liste mit Operatoren anzeigen deaktiviert werden.
Mit Klick auf OK ist der Filter erstellt. Nun
muss noch die Abhängigkeit in
der Tabelle definiert werden. Dazu wird der
Eigenschaftendialog der Tabelle
geöffnet und der Reiter Abhängigkeiten gewählt.
Ein Klick auf
Abhängigkeit hinzufügen öffnet einen weiteren Dialog.
Mit Klick auf
Ereignis hinzufügen kann die Kontrolle definiert werden, auf die
der Filter reagieren soll.
Hier wird der Operator-Filter und das Ereignis onchange
ausgewählt. Mit Klick auf OK ist die neue
Einstellung übernommen.
Nun muss noch mit Klick auf
Neuen Filterausdruck hinzufügen
der Filterausdruck formuliert werden.
Hier wird das Feld Debitor, die Operation
Ist enthalten in, die Kontrolle
Operator, die als Suchfeld dient, und das Vergleichsfeld
Debitor. Mit Klick auf OK
werden die neuen Einstellungen übernommen.
Die Abhängigkeit ist nun erstellt. Mit Klick auf OK
wird der Dialog geschlossen.
Auch dieser Dialog kann mit Klick auf OK wieder geschlossen werden.
Der Filter ist nun angelegt.
3.3.2. Filter Alphaindex - Suche nach dem Anfangsbuchstaben des Kunden
Nun wird der zweite Filter für die Suche nach dem Anfangsbuchstaben
des Kunden eingerichtet. Dazu wird der Filter Alphaindex
verwendet.
Die Einstellungen hier können so, wie sie sind, mit Klick auf
OK übernommen werden.
Der zusätzliche Filterausdruck kann mit einem Doppelklick auf die Ansichtstabelle
erstellt werden.
Klicken Sie hier auf
Abhängigkeit bearbeiten.
Als auslösende Kontrolle wird hier der Alphaindex-Filter aufgenommen.
Der neue Filterausdruck lautet: Name beginnt mit
Alphaindex. Hier sehen Sie die Eigenschaften
des Filterausdrucks im Detail:
Die neuen Einstellungen können mit Klick auf OK übernommen
und die Anwendung gespeichert werden.
Im Browser kann nun auch nach einer Kombination aus Kundennummer und Kundenname
gesucht werden, wie hier z.B. nach Kundennummern, die mit "0000" beginnen und
Kundennamen von A bis D. Natürlich gibt es für die Filterung nach Kundennamen auch
andere Möglichkeiten. Sie könnten sie z.B. auch so konfigurieren wie die Filterung
nach Kundennummer, um alle Kundennamen zu finden, die z.B. mit einer bestimmten
Zeichenfolge beginnen.
4. Detailsicht Kundenstammblatt
4.1. Detailsicht erstellen
Im nächsten Schritt wird eine Detailsicht zum Kunden erstellt, die von der
Ansichtstabelle auf der Kunden-Seite aus geöffnet werden kann. Übrigens:
die Kunden-Seite kann über das
HauptmenüBearbeiten / Startseite als
Startseite der Applikation eingestellt werden, wenn sie gerade in der
Applikationsstruktur
markiert ist.
Mit dem Kontextmenü Neu / Ansichtsseite mit Elementen
kann eine Ansichtsseite erzeugt werden, die alle eingebundenen Datenfelder der
SAP-Fremddatengruppe anlegt. Der Titel wird hier in
Kundenstammblatt abgeändert.
Nicht benötigte Ansichtselemente können gelöscht werden.
Wenn Sie weitere Daten auf der Seite anzeigen möchten, wie z.B.
Postleitzahl und Ort, so müssen zuerst die entsprechenden Datenfelder in
der SAP-Fremddatengruppe aufgenommen werden.
In den Eigenschaften der Ansichtstabelle auf der Seite Kunden
wird mit Klick auf
Spalte hinzufügen eine Schaltfläche aufgenommen, die
die Detailseite lädt. Das Sprungziel Kundenstammblatt
ist hier bereits richtig ausgewählt. Klicken Sie auf
Spalte bearbeiten, während die Schaltflächen-Spalte markiert ist.
Hier kann auf dem Reiter Aktionen
eingestellt werden, dass das Kundenstammblatt im Tooltip geladen wird, wenn ein
Anwender auf die Schaltfläche in der Tabelle klickt. Schließen Sie alle offenen
Dialoge mit Klick auf OK und speichern Sie die Anwendung.
Im Browser wird das Kundenstammblatt nun bei Klick auf die Schaltlfäche
im Tooltip eingeblendet.
4.2. Aufträge im Kundenstammblatt anzeigen
Um die Aufträge von Kunden im Kundenstammblatt anzuzeigen, wird eine weitere
Fremddatengruppe angelegt, die die SAP-Tabelle VBAK (SAP Auftragsinformationen)
einbindet.
Wechseln Sie auf den Reiter Datenfelder.
Hier können die gewünschten Datenfelder des Auftragkopfes ausgewählt werden.
Übernehmen Sie alle neuen Einstellungen mit Klick auf OK.
Die Fremddatengruppe SAP Aufträge ist erstellt.
Nun soll eine eine gefilterte Ansichtstabelle auf die Kundenaufträge im
Kundenstammblatt erstellt werden.
In den Eigenschaften der Ansichtstabelle wird die Fremddatengruppe
SAP Aufträge ausgewählt. Wählen Sie dann
die gewünschten Datenfelder für die Tabellenspalten mit Klick auf
Spalte
hinzufügen aus und ordnen Sie sie mit Hilfe der
Pfeilschaltflächen an. Anschließend kann der Filter-Dialog mit Klick auf
Filter
eingerichtet werden.
Klicken Sie hier auf
Neuen Filterausdruck hinzufügen. Das Datenfeld
Auftraggeber wird hier mit dem Operator
Gleich mit dem aktuell auf der Seite geladenen Wert
des Datenfeldes Debitor verglichen. Stimmt der
Wert überein, zeigt die Tabelle die Aufträge an, bei denen im Feld
Auftragggeber die Kundennummer des aktuell
angezeigten Kundendatensatzes gespeichert ist.
Klicken Sie auf OK.
Der erste Teil des Filterausdrucks ist erstellt. Nun soll die Sicht noch auf den
Vertriebsbelegstyp C eingeschränkt werden. Dieser Typ wird für Aufträge verwendet.
Ohne Einschränkung würden im Moment noch alle Belege angezeigt werden, bei denen
der Kunde als Auftraggeber eingetragen ist. Klicken Sie dazu auf
Neuen Filterausdruck
hinzufügen.
Der zweite Teil des Filterausdrucks muss mit einer Und-Verknüpfung erstellt werden. Eine
Oder-Verknüpfung würde alle Belegtypen des Auftraggebers ODER alle Belegtypen C
anzeigen. Bei der UND-Verknüpfung werden beide Bedingungen kombiniert auf die
vorhandenen Daten angewendet, also nur alle Belege angezeigt, bei denen der
Kunde als Auftraggeber eingetragen UND der Belegtyp C ist. Das Datenfeld
Belegtyp wird hier mit dem Operator
Gleich mit dem Zeichen C - als benutzerdefinierte Option - eingetragen.
Klicken Sie auf OK.
Der Filterausdruck ist nun fertig gestellt.
Bestätigen Sie alle neuen Einstellungen mit Klick auf
OK und speichern Sie die Anwendung.
Die Aufträge werden jetzt im Kundenstammblatt angezeigt.
5. Ansprechpartner anzeigen
5.1. SAP-Fremddatengruppe für Customizingtabelle
Über den Applikationsknoten
wird eine neue SAP-Fremddatengruppe, die die Customizingtabelle für das Feld
Abteilung des Ansprechpartners enthält, angelegt.
Auch hier ist wieder die SAP-Datenbank-Verbindung ausgewählt. Als Tabelle wird die
Customizingtabelle TSAB eingebunden.
Das SAP Portal Plugin löst Customizingtabellen sofort in die verbundenen
Texttabellen auf. Informationen dazu, wie dieses Verhalten vermieden werden
kann, finden Sie im
SAP API Entwicklerhandbuch.
Auf dem Reiter Datenfelder können wie gewohnt die
gewünschten Datenfelder ausgewählt werden.
5.2. SAP-Fremddatengruppe für Ansprechpartner mit Referenz
Nun wird die Stammdatentabelle KNVK, die die
SAP-Ansprechpartner-Daten enthält, in die Applikation eingebunden.
Auf dem Reiter Datenfelder können die
gewünschten Datenfelder ausgewählt werden.
Klicken Sie auf OK.
Das Feld ABTNR bzw. Abteilung
wird jetzt als Referenz auf die zuvor erzeugte Datengruppe SAP Abteilungen
angelegt. Öffnen Sie dazu die Eigenschaften der neuen Datengruppe
SAP Ansprechpartner mit einem Doppelklick und
wechseln Sie auf den Reiter Referenzen.
Mit einem Klick auf
Referenz hinzufügen kann die Referenz angelegt werden.
Der Titel der Referenz lautet Abteilung. Mit einem Klick auf
Mehrsprachigkeit
kann dieser auch in den weiteren Portalsprachen eingetragen werden.
Referenziert wird die Datengruppe SAP Abteilungen (entspricht der SAP Customizingtabelle).
Klicken Sie Weiter.
Klicken Sie hier auf
Zuordnung treffen.
Anschließend kann das Datenfeld ABTNR,
das die SAP-Kodierung enthält, ausgewählt werden.
Klicken Sie OK.
Die Zuordnung ist nun erstellt.
Klicken Sie Weiter.
Hier kann ausgewählt werden, welche Felder der Customizingtabelle für den Anwender
sichtbar sein sollen. Wählen Sie das Feld aus, das den Beschreibungstext zur Kodierung enthält.
Klicken Sie Fertig stellen.
Die Referenz ist nun erstellt. Allgemeine Informationen zum Thema
Referenzen finden Sie
hier.
5.3. Erweiterung des Kundenstammblattes um Ansprechpartner
Das Kundenstammblatt wird jetzt um eine zusätzliche Ansichtstabelle erweitert.
Hier kann nun auch die referenzierte Abteilung als Tabellenspalte eingebunden werden.
Wenn Sie die Titel der Tabellenspalten ändern möchten, klicken Sie einfach jeweils auf
Spalte bearbeiten.
Die Reihenfolge der Spalten kann mit den
Pfeilschaltflächen geändert werden. Der Zugriff auf die SAP Ansprechpartner muss jetzt
mit einem Filter auf den aktuellen Kunden (Datenfeld Debitor)
eingeschränkt werden. Klicken Sie dazu auf
Filter.
Klicken Sie hier auf
Neuen Filterausdruck hinzufügen. Das Datenfeld
Debitor soll mit dem Operator
Gleich mit dem aktuellen Wert des Feldes
Debitor aus der Datengruppe
SAP verglichen werden. Damit lädt die Tabelle die
Datensätze, bei denen in beiden Feldern die selbe Kundennummer eingetragen ist.
Bestätigen Sie alle Änderungen mit OK
und speichern Sie die Anwendung.
Um die Tabellen im Browser besser unterscheiden zu können, können Sie im
Eigenschaftendialog jeweils noch
den Tabellentitel eintragen und die Einstellung
Titel anzeigen aktivieren.
Nach dem Speichern der Anwendung wird der Titel im Browser angezeigt.
6. Kundenkorrespondenz
6.1. Erweiterung der Applikationsvorlage
Auf der Eingabeseite Neues Dokument
wird ein neues Eingabefeld
und damit auch gleich ein neues Datenfeld erstellt.
Klicken Sie Weiter.
Dieses Feld wird später für die Kundensuche verwendet. Der Titel lautet Kunde.
Der Kontrolltyp
ist Text, Datentyp ist String.
Klicken Sie Weiter durch die folgenden Dialoge
und behalten Sie alle folgenden Einstellungen bei, bis das Element fertiggestellt und
angelegt ist.
Ein weiteres Eingabefeld wird für die SAP-Kundennummer angelegt. In dieses Feld
dürfen vom Anwender keine Daten eingetragen werden. Ein Datensatz ist aber nur
dann gültig, wenn eine Kundennummer in diesem Feld vorhanden ist.
Hier wird der Titel eingetragen.
Der Kontrolltyp
ist Text, Datentyp ist String.
Klicken Sie Weiter und im nächsten Dialog
Fertig stellen.
Hier werden die Einstellungen Schreibgeschützt
und Eingabe erforderlich gesetzt.
Klicken Sie OK.
6.2. Kundensuche per Data Picker-Schaltfläche
Der Anwender soll Kunden suchen können, indem er den Namen vollständig oder
teilweise im Kunden-Feld einträgt und ihn dann aus einer Vorschlagsliste
auswählt. Das Element Schaltfläche
übernimmt diese Aufgabe mit der Aktion
Data Picker.
Damit wird nach der Auswahl des Kunden auch automatisch die Kundennummer in das Kundennummer-Feld
geschrieben.
Der Schaltflächentyp wird hier als Bild eingestellt. Mit Klick auf
Bearbeiten
kann hier ein geeignetes Bild für die Darstellung der Schaltlfäche mit
und ohne Mauskontakt ausgewählt werden.
Klicken Sie OK.
Der Verweis auf das Bild ist nun hier eingetragen. Wechseln Sie auf den
Reiter Aktionen.
Hier kann der Aktionstyp Data Picker ausgewählt werden.
Als Suchfeld wird das Kunden-Feld ausgewählt. Gesucht werden soll in der aktuellen
Applikation in der Datengruppe SAP, die die Kundendaten
enthält. Als Datenfeld wird das Feld Name ausgewählt.
Im unteren Bereich kann das Feld Kundennummer dem Feld
Debitor aus der SAP-Fremddatengruppe zugeordnet werden.
Damit wird die Kundennummer der SAP-Fremddatengruppe entnommen und in das Eingabefeld
Kundennummer auf unserer Eingabeseite kopiert.
Die Datengruppe, die für die Suche ausgewählt ist, kann mit Klick auf
Filter
eingeschränkt werden, um unerwünschte Treffer zu vermeiden (z.B. Ausschluss von zum
Löschen vorgemerkten Daten). Ein Klick auf
Erweitert öffnet einen weiteren Dialog, in dem das Aussehen
der Liste, die die Suchergebnisse zur Auswahl einblendet, eingestellt werden kann.
Hier kann im oberen Bereich, angegeben werden, welche Felder später für den Anwender
in der Suchliste sichtbar sein sollen, um eine Auswahl treffen zu können. Die Anzahl
der angezeigten Treffer kann im unteren Bereich eingeschränkt werden.
Mit der Einstellung Navigationselement anzeigen
kann der Anwender in einer größeren Trefferliste navigieren. Alle Informationen
zu den Einstellungen in diesem Dialog erreichen Sie mit der Taste F1.
Im Normalfall muss der Anwender auf die Schaltfläche des Data Pickers klicken, um die
Suchfunktion auszulösen. Die Suchfunktion kann auch automatisch ausgelöst werden, wenn eine
ausreichende Anzahl von eingegebenen Zeichen vorhanden ist. Dieses Verhalten wird über
die Einstellung Ergebnisse ab einer Eingabelänge von ... Zeichen
ausgelöst. In SAP kann diese Einstellung performancerelevant sein und ist
besser zu hoch zu wählen und ggfs. mit Filtern weiter einzuschränken.
Bestätigen Sie alle neuen Einstellungen mit Klick auf OK.
Die Abmessung der Schaltfläche kann mit dem Kontextmenü
Originalgröße setzen automatisch der Größe
des ausgewählten Bildes angepasst werden.
6.3. Aufnehmen der neuen Felder in Ansichtsseite und Suche
Im vorhergehenden Schritt wurden mit den entsprechenden Eingabefelder
die neuen Datenfelder Kunde und
Kundennummer in der Intrexx-Datengruppe
Dokumente angelegt.
Die enthaltenen Daten werden jetzt in der Ansichtsseite
Alle Dokumente eingeblendet und auch
in der Suchkonfiguration für die Suche aufgenommen.
Öffnen Sie auf der Ansichtsseite Alle Dokumente
die Eigenschaften der Ansichtstabelle mit einem Doppelklick.
Mit Klick auf
Spalte hinzufügen können die beiden Felder
in die Tabelle aufgenommen werden.
Speichern Sie die Änderungen mit Klick auf OK
und wechseln Sie dann auf die Seite Suche.
Öffnen Sie auf der Seite Suche die Eigenschaften der
Schaltfläche mit einem Doppelklick. Klicken Sie dann auf
Suchkonfigurationen bearbeiten und im Folgedialog auf
Suchkonfiguration bearbeiten. Aktivieren Sie bei den beiden
Feldern Kunde und Kundennummer
die Einstellung Suchen im unteren Bereich des Dialogs.
Bestätigen Sie alle neuen Einstellungen mit OK
und speichern Sie die Anwendung.
6.4. Test der Applikation
Auf der Seite Neues Dokument kann nun ein
Testdatensatz angelegt werden. Im Kundenfeld wird nach "Mega" eingetragen
und dann auf die Data-Picker-Schaltfläche geklickt.
Da es mehrere Suchtreffer gibt, wird eine Liste eingeblendet, aus der
der Kunde ausgewählt werden kann.
Ist der Kunde ausgewählt, so wird der korrekte Name automatisch
im Kunden- und die Kundennummer im Kundennummern-Feld eingetragen.
Mit Klick auf OK wird der neue Datensatz
gespeichert.
Auf der Seite Alle Dokumente wird der
neue Datensatz jetzt angezeigt.
Auf der Seite Suche kann nun z.B.
nach einer Kundennummer gesucht werden. Treffer werden nach dem Klick
auf Suchen unterhalb des Suchfeldes angezeigt.
Mit Klick auf den Titellink eines Treffers wird der Datensatz in der
Seite Dokument aufrufen zur Ansicht
geladen.
7. Einfache Stammblätter mit SAP Reports erstellen
Eine einfache Möglichkeit, SAP-Informationen als Stammblätter darzustellen,
bietet die Report-Integration des Connectors für SAP Business Suite.
Gehen Sie dazu genauso vor, wie in den vorhergehenden Kapiteln gezeigt
und legen Sie eine eigene Fremddatengruppe für SAP Reports an.
In den Eigenschaften der Fremddatengruppe wählen Sie wie gewohnt Ihre
SAP-Verbindung aus. Verwenden Sie hier den Datahandler
Generic Report und tragen Sie als Tabelle/Ansicht
den technischen Namen des Reports (im Codebeispiel unten z.B.
zz_demo_ixapi_report) ein.
Intrexx greift dann über den Generic-Report-Datenhandler auf SAP
zu und überträgt die Parameter und die erzeugten Textzeilen.
Das Grundgerüst der SAP-Reports enthält einfache PARAMETERS-Anweisungen, die dann
in Intrexx als Filterkriterien zur Verfügung stehen. Das folgende Beispiel
enthält als Parameter die Materialnummer, für die dann im START-OF-SELECTION-Teil
Informationen in SAP beschafft werden.
report zz_demo_ixapi_report no standard page heading line-size 256.
* ------- interface
parameters matnr type matnr.
start-of-selection.
Das vollständige Coding dieses Beispiels finden Sie
hier.
8. Mögliche Erweiterungen
8.1. Filterkriterien aus dem Benutzerkontext
In einigen Szenarien ist es sinnvoll, aus Berechtigungsgründen
zusätzliche Filterkriterien zur Einschränkung der Treffermenge
zu verwenden. Beispiele für solche Filterwerte aus dem Benutzerkontext sind
Kundennummer
Personalnummer
Kostenstelle
Verkaufsorganisation
In der Benutzerverwaltung
des Portals können
zusätzliche Attribute definiert werden. Die in den Attributen erfassten Werte werden
dann im jeweiligen Benutzerkonto zugeordnet.
In einem Kundenportal könnte damit beispielsweise die Sicht auf die eigenen Aufträge
automatisch auf die Kundennummer aus dem Benutzerkonto eingeschränkt werden
(Filterausdruck: Auftraggeber = aktueller Benutzer - Kundennummer).
8.2. Personalisierter Zugriff
Der Zugriff auf ein SAP-System erfolgt mindestens mit einem System-Benutzer,
der in den Einstellungen der SAP-Datenquelle konfiguriert wird.
Es ist aber auch möglich, mit dem SAP-Benutzer des Portalanwenders zu arbeiten.
Dazu ist der
Loginmodus
als Expert-Attribut in den
Eigenschaften der SAP-Fremddatengruppe einzutragen.
8.3. Verbesserte Suche
Die Suche über den SAP-Kundenstamm, wie sie in der
Beispiel-Applikation umgesetzt wurde, ist bislang case-sensitiv (Groß- und Kleinschreibung
werden unterschieden). Wird dies beim Suchbegriff nicht beachtet, oder ist der gesuchte
Begriff in einem anderen Feld zu finden, z.B. bei einer Suche nach der Postleitzahl statt
dem Namen des Kunden, so werden keine Treffer erzielt. Um diesen Zustand zu optimieren,
kann ein eigener Handler im SAP-Portal-Plugin implementiert werden.
Ein Mustercoding finden Sie
hier.
8.3 Anzeigen einer optimierten internen SAP-Tabelle
SAP-typische Codes wie im vorhergehenden Beispiel
per Referenz aufzulösen,
ist nicht immer auf diese Art und Weise technisch lösbar. Die Auflösung von Texten
für eine große Anzahl von Feldern kann auch zu einem Performanceproblem führen.
In einigen Fällen sind die Daten in SAP über mehrere abhängige Tabellen verteilt,
so dass es kaum möglich ist, einen Join über alle benötigten Tabellen zu bilden.
In solchen Fällen ist es durchaus möglich, die Daten in SAP als typische
interne Tabelle aufzubauen und erst dann in das Portal einzubinden.
Für den Nur-Lese-Zugriff sind dann die API-Methoden
GET_LIST und GET_DETAIL zu implementieren.
Ein Beispiel, wie interne SAP-Tabellen zur Verfügung gestellt werden können,
finden Sie
hier.
8.4. Replizieren von SAP-Daten in Intrexx-Datengruppen
SAP-Daten können alternativ zur Verwendung von Fremddatengruppen auch per
Prozess in Intrexx-Datengruppen geschrieben werden.
Dafür wird in unserer Beispiel-Applikation eine neue Intrexx-Datengruppe angelegt.
Die Daten aus der SAP-Fremddatengruppe SAP,
in die die Kundendaten aus SAP eingebunden sind, sollen per Prozess in die neue
Intrexx-Datengruppe repliziert werden. Bevor die Anwendung gespeichert wird,
muss hier noch der Datentyp des Schlüsselfeldes LID
in string geändert werden, um die SAP-Kundennummer
als Primärschlüssel in der Intrexx-Datengruppe verwenden zu können.
Wechseln Sie dazu auf den Reiter Datenfelder.
Klicken Sie hier auf
Datenfeld bearbeiten. Im nächsten Dialog wechseln
Sie auf den Reiter Expert.
Ändern Sie dort den Wert des Attributs datatype
auf string. Speichern Sie die Applikation.
Wechseln Sie in das Modul
Prozesse und legen Sie einen
Neuen Prozess
mit einem zeitgesteuerten Ereignis an.
Klicken Sie Weiter.
Der Timer
soll so eingestellt werden, dass alle Datensätze in der Intrexx-Datengruppe
zu einer festgelegten Zeit (7.00 Uhr) gelöscht werden.
Klicken Sie Weiter.
Hier wird die Intrexx-Datengruppe Kunden ausgewählt.
Klicken Sie Weiter, ohne einen Filter zu definieren,
und behalten Sie alle folgenden Einstellungen bei, bis Sie die neuen Einstellungen
mit OK bestätigen können.
Der Timer ist nun bereits im Prozess-Element
Timerereignis eingebunden.
Nun wird eine Datengruppen-Aktion
mit dem Timerereignis verbunden. Die Aktion führt das Löschen der Datensätze
aus. Klicken Sie Weiter.
Hier wird die Applikation und die Intrexx-Datengruppe Kunden
ausgewählt. Klicken Sie Weiter und behalten Sie alle
folgenden Einstellungen bei.
Legen Sie nach dem selben Prinzip einen zweiten
Globalen Timer an und stellen Sie hier
die automatische Ausführung auf 8.00 Uhr ein.
Hier wird die SAP-Fremddatengruppe SAP
ausgewählt.
Legen Sie ein neues Timerereignis an und wählen Sie hier den zweiten Timer aus.
Nun wird die Datengruppen-Aktion angelegt, die die Daten aus der
SAP-Fremddatengruppe in die Intrexx-Datengruppe überträgt. Hier wird die Option
Datensatz hinzufügen ausgewählt.
Als Zieldatengruppe wird die Intrexx-Datengruppe Kunden
ausgewählt.
Hier wird der Primärschlüssel und die restlichen Felder zugeordnet.
Nachdem der Prozess gespeichert ist, ist er auch sofort aktiviert.
Um zu vermeiden, dass er ungetestet ausgeführt wird, kann der Prozess zunächst
deaktiviert werden. Die beiden Timer können
manuell gestartet werden.
Im Modul Werkzeuge, dort in
der Aufgabenplanung,
sind unter anderen Aufgaben auch alle Timeraktionen aufgelistet. Über das jeweilige
Kontextmenü können die Timer auch von
hier aus gestartet werden.
8.5. Generisches Schreiben in eine Z-Tabelle
Es gibt oft die Anforderung, für SAP ein neues Business-Objekt umzusetzen.
Das bedeutet, dass in SAP im Kundennamensraum Z-Tabellen und eine
Benutzeroberfläche (z.B. einfache Tabellenpflege) realisiert werden.
Der hier beschriebene Weg ist eine Möglichkeit, das Datenmodell in SAP zu
implementieren und die Benutzeroberfläche komplett in Intrexx abzubilden.
Ein Mustercoding für den dazugehörigen Datahandler
(abgeleitet von Generic View Handler) finden Sie
hier.
Der Datahandler wird als GENERIC_WRITE registriert.
Voraussetzung ist eine Tabelle mit einem GUID-Schlüsselfeld
vom technischen Typ RAW(16). Dieses kann beispielsweise auf das
Datenelement ZIA_IXA_GUID oder
SYSUUID_X verweisen. Die Verwendung
einer GUID lässt sich leichter handhaben als Nummernkreise, da die
mit dem SAP-Funktionsbaustein GUID_CREATE
erzeugten Global Unique IDs (GUID) weltweit eindeutig sind.
Ab der SAPPOPI Version 2010 gehört der Datahandler
GENERIC_WRITE zum Paket. Mit dieser Version
ist auch die Beschränkung des GUID-Schlüsselfeldes aufgehoben.
Es können dann Datensätze mit einfachem Schlüssel geändert und gelöscht
werden. Das Einfügen von neuen Datensätzen bleibt ohne Anpassung des Handlers
aber unmöglich, da der Handler kein Wissen über die Logik von
neuen Schlüsseln hat.
Haben Sie eine solche Tabelle mit dem GUID-Schlüsselfeld (und dem Mandantenfeld)
angelegt, muss die Tabelle im
Mapping des SAP Portal Plugins registriert werden. Die Registrierung muss ab
SAPPOPI 2010 nicht mehr durchgeführt werden.
Danach kann die Tabelle sofort als Fremddatengruppe der Developer-API mit
vollem Zugriff in Intrexx verwendet werden.
Für die Objekte der Developer-API und den Handler Generic Write
sind alle Funktionen wie Anlegen, Ändern und Löschen verfügbar.
8.6. Anzeigen von Dokumenten im Portal
In SAP sind Dokumente (z.B. Zeichnungen, Korrepondenz, Rechnungen) auf
drei verschiedene Weisen verfügbar:
als Dokument im Archivsystem (bzw. im KPro)
als Dokument im Dateisystem oder erreichbar über einen FTP-Server
als Dokument in der SAP-Datenbank (z.B. Cluster Tabellen, BLOB Felder)
Möchte man diese Dokumente dem Portalanwender zur Verfügung stellen,
muss erst generell geklärt sein, ob der direkte Zugriff externer Anwender auf die
Dokumente aus Punkt 1 und 2 ermöglicht werden kann und darf.
Punkt 3 ist hier ausgenommen, da ein direkter Lesezugriff auf die SAP-Tabellen
hier generell nicht möglich ist. Wenn ein direkter Zugriff von aussen
technisch möglich ist, kann über eine URL gearbeitet werden. Dabei ist es egal,
ob die Daten aus dem Archivsystem kommen oder bereits im Dateisystem liegen. Wichtig
ist nur, dass ein Webserver, der die Dokumente ausliefert, vorhanden und
für den Portalanwender erreichbar ist. Die Aufgabe des SAP-Systems besteht
einzig und allein darin, die entsprechenden URLs zu erzeugen, die dann
im Portal als Schaltfläche oder Link dargestellt werden.
Ein Mustercoding zum Erzeugen der URL für Archivdokumente finden Sie
hier.
Befinden sich die Dateien auf einem Netzlaufwerk (Punkt 2), so ist das
Coding ähnlich. Hier muss dann allerdings die URL generiert werden,
die dem Netzlaufwerk aus Sicht des Portals entspricht.
Dazu kann der Datahandler GENERIC_ARCLINK verwendet werden.
Wenn technisch möglich (z.B. unter Unix), kann das Netzlaufwerk in einen
Unterpfad zum Portal eingebunden werden, z.B. als Verzeichnis docs
unter dem Portalverzeichnisexternal/htmlroot. Die Dokumente sind dann für den
Anwender unter http://<host>:<port>/<portal>/docs/*
verfügbar. Kann aus Sicht des Anwenders nicht direkt auf die Dokumente zugegriffen werden,
müssen die Dokumente auf einem für den Webserver zugänglichen Pfad bereitgestellt werden.
Technisch gesehen müssen die Dokumente dann auf dem SAP-Applikationsserver gelesen und
auf den extern zugänglichen Pfad kopiert werden. Das erfolgt am einfachsten mit dem SAP-ABAP-Befehl
OPEN DATASET … TRANSFER. Steht nur FTP für die Dateiübertragung zur Verfügung,
demonstrieren die SAP-Programme RSFTP* den Umgang mit dem FTP-Protokoll.
Über die
Remote Services ist es ebenfalls möglich, Dateien zwischen SAP-Applikationsserver und
Portal-Server über das RFC-Protokoll auszutauschen. Bei vielen Dokumenten (z.B. alle Rechnungen
zu einem Anwender) sollen natürlich nicht immer alle Dokumente repliziert werden. Hier eignet sich
die Trennung der Handler-Methoden in GET_LIST und
GET_DETAIL. Die Listenansicht würde auf Basis der Filterkriterien
eine Übersicht zu den verfügbaren Dokumenten erzeugen. Erst das Verzweigen in die Detailsicht
muss danach die Replikation zum Webserver auslösen.
Dazu muss
das Mustercoding um die API-Methode GET_DETAIL erweitert werden,
die zusätzlich zur Aufbereitung der Daten auch die Replikation initiiert.-->
Aus Sicherheitsgründen können die Dateinamen verschlüsselt werden. Hierfür eignet sich der
SAP-Funktionsbaustein GUID_CREATE. Eine Rechnung 1204387.pdf
wird dadurch zu 81C0C8484EB3A637E1000000C0A8DEE6.pdf.
Die Sicherheit wird noch erhöht, wenn diese Dateien nach einer gewissen Zeit wieder
automatisch gelöscht werden.
8.7. Ändern von SAP-Objekten
Der ändernde Zugriff auf Tabellenebene wäre zwar technisch möglich,
wird aber vom SAP-Portal-Plugin nicht unterstützt. Im
Entwicklerhandbuch zum Plugin
ist anhand eines Beispiels beschrieben, wie mit SAP-Objekten zu verfahren ist.
Prinzipiell muss das SAP-Objekt in einer Transferstruktur darstellbar sein. Dann sind alle
gewünschten Methoden (z.B. auch Modify, Delete) in der API zu implementieren. In diesen
Methoden wird die Transferstruktur bevorzugt auf verfügbare BAPI-Funktionen gemappt und
verarbeitet. Die BAPI-Funktionen beinhalten immer auch das Sperrkonzept.
8.8. Belegfluss auf Portalobjekte
Eine Abbildung von Belegflüssen in Intrexx ist ohne Probleme möglich. Sollen allerdings auch im SAP-System
Belegflüsse auf externe Objekte abgebildet werden, muss hier anders vorgegangen werden.
Prinzipiell lassen sich auch in SAPGUI-Transaktionen Seiten des Portals einbinden. Dazu wird eine
spezielle URL aufgerufen, die auf eine Detailseite zum Objekt verzweigt. Der Schlüssel des Objektes
wird in der URL verschlüsselt. Damit externe Objekte aus den SAPGUI-Transaktionen heraus (z.B. Belegfluss)
aufgerufen werden können, wird ein Business-Objekt benötigt, das eine Methode DISPLAY
implementiert und bei der Erzeugung durch den SAP-Standard eine Sicht auf das Portal erzeugt.
Der Belegfluss zwischen SAP und Nicht-SAP-Objekten wird über SAP-Standardfunktionen erzeugt.
In den SAP-Transaktionen wird meistens ein Doppelklick über die Methode DISPLAY
des Business-Objektes unterstützt.
9. Spezielle Konzepte
9.1. Expert-Attribute für SAP-Fremddatengruppen
Expert-Attribute werden in Intrexx-Applikationen verwendet, um zusätzliche
Konfigurationsmöglichkeiten zur Verfügung zu stellen, die nicht bzw. noch
nicht im Eigenschaftendialog zur
Verfügung stehen. Informationen zum Expert-Modus
finden Sie hier. Das Expert-Attribut bia-handler
gibt z.B. den zu verwendenden SAP-Datahandler an (z.B. GENERIC_VIEW).
Mit dem zusätzlichen Expert-Attribut bia-loginuser wird
z.B. gesteuert, ob der Zugriff auf das SAP-System personalisiert erfolgen soll.
Eine Auflistung von weiteren, verfügbaren Attributen und deren Verwendung finden
Sie hier.
Eingesetzt werden diese Expert-Aattribute mit Bezug zur
Datengruppe (z.B. erzwingt bia-forcefilter = <true|false>
einen oder mehrere Filterkriterien) oder zum enthaltenen Datenfeld
(z.B. mappt bia-KUNNR-numkeylen = <len>
die Daten je nach Richtung mit und ohne führende Nullen in der angegebenen Länge).
Soll sich eine Einstellung auf ein Datenfeld beziehen, muss das Expert-Attribut
in der Namenskonvention bia-<Name des Feldes>-<option>
eingegeben werden. Das Expert-Attribut heisst dann bia-<option>,
da der Datenfeldname jeweils gegeben ist.
9.1.1. Generic View: Variante nolangtab
Der am häufigsten eingesetzte Datahandler Generic View wurde so implementiert,
dass beim Zugriff auf Customizingtabellen automatisch die angebundene Texttabelle
ermittelt wird und beim Selektieren der Daten nur die Texte in der
Portalanmeldesprache übertragen werden. In den meisten Fällen war dies eine Arbeitserleichterung.
Manche Customizingtabellen enthalten allerdings interessante Zusatzinformationen, die damit nicht
mehr zur Verfügung standen. Es gab zwar einen Workaround, um diese führenden Tabellen trotzdem
zu nutzen, dieser war allerdings umständlich und musste auf dem SAP-System konfiguriert werden.
Erschwerend kommt hier hinzu, dass einige sehr wichtige Tabellen des SAP-Systems technisch wie
Customizingtabellen aussehen (z.B. Tabelle MARA). Deshalb
den Handler Generic View in der Variante nolangtab.
Mit dieser Variante wird der Zugriff auf die Texttabellen unterbunden und so der Zugriff auf Tabellen
wie z.B. MARA ohne größeren Aufwand möglich.
9.1.2. Generic F4
Mit dem Expert-Attribut mapcodefield kann bei bestimmten
SAP-Feldern die verwendeten Codierungen in sprechende Texte der SAP-F4-Hilfen
gemappt werden. Der Datahandler Generic F4 stellt
diese F4-Hilfen als einfache Code-Text-Tabelle in der Anmeldesprache des Portals
zur Verfügung. Damit können dann z.B. Listboxen von dynamischen Filtern ohne größere
Probleme gefüllt werden. Als Tabelle wird hier
<SAP DDIC Struktur oder Tabelle>-<Tabellenfeld> erwartet.
Leider ist die Ermittlung der F4-Texte nicht immer einfach. Deshalb kann dies auch
nicht für jedes Feld unterstützt werden. Über das Vererbungskonzept der SAP-Datahandler-Klasse
kann man aber besondere Fälle auch unterstützen.
9.1.3. Generic ArcLink
Dieser Handler ermöglicht den Zugriff auf Archivdokumente, die einem SAP-Objekt
zugeordnet sind. Der SAP-Datahandler würde die Archivdokumente für das angegebene
SAP-Business-Objekt und die zugehörige Objekt-ID ermitteln und diese als Tabelle
zur Verfügung stellen. In dieser Tabelle existiert ein Feld
URL, das die URL zum Archivsystem (SAP Server oder externe Lösung) enthält.
Dieses URL-Feld kann über das Expert-Attribut bia-mapurl
in eine andere (z.B. versteckte oder externe) Darstellung überführt werden.
Sinn dieses Handlers ist es auf jeden Fall, den einfachen Zugriff auf Dokumente
(z.B. Auftragsbestätigung als PDF) über den direkten Weg der URL zur
Verfügung zu stellen.
Der Handler erwartet als Tabelle das SAP-Business-Objekt (z.B. VBAK)
oder für den generischen Zugriff das Zeichen *. In jedem Fall muss die ID des SAP-Objektes
(für VBAK also die Belegnummer VBELN)
im Filter mitgegeben werden. Beim generischen Zugriff (*) wird außerdem auch das SAP-Business-Objekt
erwartet. Die Id des SAP-Objektes kann man über dynamische Filter sehr einfach mitgeben.
In den Expert-Attributen ist hier außerdem zusätzlich eingestellt, dass:
Die Objekt-ID automatisch in einen 10-stelligen numerischen Key
konvertiert wird (Option bia-OBJECT_ID-numkeylen = 10)
die Datengruppe einen Filter voraussetzt (bia-forcefilter = true)
9.1.4. Generic Text
Dieser Datahandler stellt den generischen Zugriff auf Langtexte im SAP (Tabelle STXH) zur Verfügung.
Das Textobjekt muss dabei als Tabellenname angegeben werden (z.B. BUS2032). Ein generischer Zugriff mit
dem Zeichen * ist hier möglich, wenn das Textobjekt über Filter zur Verfügung steht.
Der Datahandler liefert die Tabelle STXH, ergänzt mit zwei Feldern, die den eigentlichen Text enthalten,
zurück. Es wird automatisch ein Langtext mit dem Text ohne Formatierung (Feld TEXT_NORMAL)
und mit HTML-Formatierung (TEXT_HTML) erzeugt.
Diese Felder können dann auf einer Ansichtsseite normal eingebunden werden.
9.2. Berechtigungen auf eigene Datensätze für SAP-Fremddatengruppen
In Verbindung mit externen Daten ist es nicht einfach, festzustellen, wann die verfügbaren Datensätze
eigene Datensätze sind. Am Beispiel der SAP-Auftragskopfdaten (Tabelle VBAK)
soll diese Problematik und die Lösung demonstriert werden. Je nach Kontext des Portalanwenders
gibt es in dieser SAP-Tabelle Felder, die für die Identifizierung eigener Datensätze verwendet
werden können. Aus der Sicht eines Kunden ist das z.B. das SAP-Feld KUNNR,
das für eigene Datensätze mit der eigenen Kundennummer gefüllt sein muss.
Aus der Sicht eines internen Mitarbeiters allerdings könnte es das SAP-Feld ERNAM
sein, das den SAP-Benutzer des Erfassers des Auftrags enthält. Die zweite Herausforderung besteht darin,
die in SAP zu prüfenden Werte (z.B. Kundennummer, SAP Benutzername oder Personalnummer) zu ermitteln. Das
erforderliche Mapping zwischen dem im Portal angemeldeten Anwender und dem zu prüfenden SAP-Wert
kann auf vielfältige Weise erfolgen. Die einfachste Möglichkeit
ist die Anlage eines eigenen Attributwertes über den
Schemamanager in der
Intrexx-Benutzerverwaltung
und die Pflege solcher Werte wie der SAP-Kundennummer an dieser Stelle.
Ein solches Attribut kann z.B. als Filterwert für Ansichtstabellen verwendet. Damit
kann die Berechtigung auf SAP-Daten in Listen geregelt werden. Allerdings findet hier
noch keine Auswertung der Applikationsberechtigungen auf Datengruppen statt.
Eine direkte Navigation auf eine nicht erlaubte Detailseite kann damit nicht verhindert werden.
Hier kommt ein Konzept zum Einsatz, das Permission Filter
genannt wird. Vorstellen kann man sich die Wirkung wie einen permanenten Filter
direkt auf der Fremddatengruppe, der auch bei der Anzeige der Detailseiten
verwendet wird und damit das Laden von nicht erlaubten Seiten verhindert.
Als Beispiel wird hier eine einfache Applikation verwendet, die einen Zugriff auf die SAP-Tabelle
VBAK implementiert. Der Zugriff wird über Applikationsberechtigungen
wie oben dargestellt eingeschränkt. Eigene Datensätze werden als SAP-Datensätze,
die im Feld Auftraggeber (KUNNR) den Wert aus dem Benutzerattribut BIASAP_KUNNR besitzen,
interpretiert.
Auf der Seite Alle Einträge wird hier die SAP-Tabelle
VBAK angezeigt. Dazu werden in den
Eigenschaften der Ansichtstabelle
die Fremddatengruppe SAP-Auftragsdaten und die gewünschten Datenfelder ausgewählt.
Legen Sie dann einen Filter an,
der das Datenfeld Auftraggeber,
das die Kundennummer in SAP enthält, mit dem Wert aus dem Benutzerattribut
BIASAP_KUNNR vergleicht.
Speichern und veröffentlichen Sie die Applikation in der Menüstruktur.
Ermitteln Sie dann die GUID der Applikation
mit der Taste F4 bei markiertem
Applikationsknoten.
Navigieren Sie im Intrexx-Portalverzeichnis
in den Ordner internal\application\store. Öffnen Sie den
Ordner, der die soeben ermittelte GUID als Ordernamen trägt. Öffnen Sie dort die
Datei application.xml in einem geeignetem Editor (z.B. Notepad++).
Schließen Sie jetzt die Applikation. Ohne das Schließen der Anwendung können
die Änderungen, die im nächsten Schritt durchgeführt werden, nicht gespeichert werden.
Suchen Sie im Abschnitt viewpage nach dem gerade erzeugten Filter.
Sie finden ihn unterhalb des tablecontrol-Abschnitts.
Schneiden Sie den kompletten Bereich <filter> … </filter> aus und
behalten Sie diesen in der Zwischenablage. Suchen Sie jetzt die Fremddatengruppe
SAP Auftragsdaten in einem
datagroup-Abschnitt. Nach dem
property-Abschnitt, aber noch vor dem
datafield-Abschnitt fügen Sie den neuen Abschnitt
<permission></permission> ein. Fügen
Sie innerhalb der Permission-Sektion den kopierten Filter ein.
Speichern Sie die geänderte XML-Datei. Öffnen Sie dann die die Applikation
wieder in Intrexx. Der Filter in den Eigenschaften der Ansichtstabelle
sollte jetzt nicht mehr existieren. Blenden Sie die Datenfelder über das
Kontextmenü der Fremddatengruppe SAP Auftragsdaten
ein.
Der Permission-Filter sollte jetzt unterhalb der Datengruppe sichtbar sein.
Öffnen Sie die Eigenschaften der Applikation mit einem Doppelklick auf den
Applikationsknoten
und wechseln Sie auf den Reiter Berechtigungen.
Setzen Sie hier das Recht Datensatz lesen (eigene).
Speichern Sie die Applikation. Nach dem Sichern werden alle Zugriffe auf
die Datengruppe mit allen Detailseiten entsprechend eingeschränkt.