Connector für SAP Business Suite - Entwicklerhandbuch Anhang

1. API Funktionen SimpleRfc


Methode Bemerkung
Funktionen für SAP-Verbindungen
boolean simpleRfcConnect(String p_instance, String p_loginmode) Verbindung zum SAP-System aufbauen
boolean simpleRfcClose() Verbindung zum SAP-System abbauen
Funktionen für BAPI/RFC Funktionen
boolean simpleRfcFunctionLoad(String p_function) BAPI/RFC-Funktion laden
boolean simpleRfcFunctionExecute(boolean p_commit) BAPI/RFC-Funktion ausführen
boolean simpleRfcFunctionClose(boolean p_commit) BAPI/RFC-Funktion beenden
Funktionen für den Zugriff auf Funktionsbausteinparameter
boolean simpleRfcSetFocusImportParameter(String p_parameter) Import-Parameter in den Fokus nehmen
boolean simpleRfcSetFocusImportStructure(String p_structure) Import-Struktur in den Fokus nehmen
boolean simpleRfcSetFocusImportTable(String p_table) Import-Tabelle in den Fokus nehmen
boolean simpleRfcSetFocusExportParameter(String p_parameter) Export-Parameter in den Fokus nehmen
boolean simpleRfcSetFocusExportStructure(String p_structure) Export-Struktur in den Fokus nehmen
boolean simpleRfcSetFocusExportTable(String p_table) Export-Tabelle in den Fokus
boolean simpleRfcSetFocusTable(String p_table) Tabelle aus Tabellenparameter in den Fokus nehmen
Funktionen für den Zugriff auf Tabellen und Strukturen
boolean simpleRfcSetFocusStructureField(String p_fieldname) Feld aus der aktuellen Struktur in den Fokus nehmen
boolean simpleRfcSetFocusTableField(String p_fieldname) Feld aus der aktuellen Tabelle(nzeile) in den Fokus nehmen
int simpleRfcTableGetCount() Anzahl der Tabellenzeilen der aktuellen Tabelle ermitteln
Vector simpleRfcTableGetEntries() Alle Tabellenzeile der aktuellen Tabelle als Menge
boolean simpleRfcTableSetLine(Integer p_index) Setze den Fokus auf eine Zeile in der aktuellen Tabelle
boolean simpleRfcTableAddLine() Eine neue Zeile der aktuellen Tabelle hinzufügen
Zugriff auf Parameter/Einzelwerte
boolean simpleRfcSetParameterValue(String p_value) Setze den Wert des aktuellen Parameters/Feldes als String
boolean simpleRfcSetParameterValue(double p_value) Setze den Wert des aktuellen Parameters/Feldes als Double
String simpleRfcGetParameterValue() Ermittle den Wert des aktuellen Parameters als String
Sonstige Funktionen
void simpleRfcErrorReset() Fehlermeldungen zurücksetzen
String simpleRfcErrorGet() Letzte Fehlermeldung als String ermitteln
String simpleRfcTrigger(String p_instance, String p_loginmode, String p_function, String p_parameter) Aufruf eines speziellen RFC-Bausteins, der den Wert von "p_parameter" im Parameter "INPUT" entgegen nimmt. Ein evtl. vorhandener Parameter "RESULT" wird im Ergebnis zurückgegeben

2. API Funktionen für SAP-SSO-Szenarien


MethodeBemerkung
Funktionen für SAP-Verbindungen
boolean SAPConnectionCheck(String p_instance, String p_loginmode, boolean p_connect) Prüfe eine existierende Verbindung zum SAP-System "p_instance" im Anmeldemodus "p_loginmode". Falls "p_connect = true" und noch nicht verbunden, wird eine Verbindung aufgebaut.
boolean SAPConnectionSystemClose(String p_instance) Eine Verbindung zum SAP-System "p_instance" schließen
boolean SAPConnectionUserClose(String p_instance)Eine SAP Verbindung zum SAP System p_instance des Anwenders schließen
boolean SAPConnectionSystemConnect(String p_instance) Eine Verbindung zum SAP-System "p_instance" aufbauen
boolean SAPConnectWithUserPassword(String p_instance, String p_user,String p_password) Eine Benutzerverbindung zum SAP-System "p_instance" mit Benutzer/Passwort aufbauen
Funktionen für Personalisierungsfunktionen
void SAPUserLoginSetToken(String p_instance, String p_user, String p_token, String p_method) Die Anmeldeinformationen via Token für ein SAP-System manuell setzen. Das Token (z.B. SSO Ticket) enthält Parameter "p_token". Abhängig von der Art des Tokens muss der Parameter "p_method" gesetzt werden (z.B. "MYSAPSSO2" für SSO-Ticket)
void SAPUserLoginSetUserPassword(String p_instance, String p_user, String p_password) Die Anmeldeinformationen Benutzer/Password für einen Benutzer der aktuellen Session manuell setzen
boolean SAPUserLoginDelete(String p_instance) Die Anmeldeinformationen für einen Anwender zurücksetzen (z.B. SSO-Ticketinformationen, für Benutzerwechsel)
String ssoPrepare(String p_instance, String p_loginmode, ServerBridgeRequest p_request, boolean p_mapurl) Das Einbinden dieser Funktion im Velocity ermöglicht das Verwenden von SAP-Oberflächen auf der verwendenden Seite. Es werden SSO-Initialisierungen durchgeführt und beispielsweise SSO-Javascript-Funktionen bereit gestellt. Der Parameter "p_request" erwartet die Übergabe des Velocity-$Request-Objektes. Durch das Flag "p_mapurl" wird das Mapping von SAP-URLs gesteuert.
public String ssoIncludeURL(String p_url, String p_width, String p_height, boolean p_mapurl) Die Verwendung dieser Funktion im Velocity bindet eine SAP-Weboberfläche als iFrame ein. Der Aufruf setzt die Funktion "ssoPrepare" auf der gleichen Seite voraus, um die notwendigen Javascript-Funktionen (z.B. SAP-Ticket setzen, URL-Mapping initialisieren). Das URL-Mapping wird über das aktive Flag "p_mapurl" aktiviert.
public String ssoIXLoginUserPasswordSession(Session p_session, String p_user, String p_password, String p_domain, String p_method) Diese Funktion ermöglicht das Login ins Intrexx-Portal über eine Intrexx-Seite (anonym). Ist das Login erfolgreich, wird eine Session-ID zurück gegeben.
public void ssoMapUrlDeleteCache() Löscht den Cache von URL-Mappings (benötigt bei administrativen Änderungen).

3. Javascript Funktionen für SAP SSO Szenarien


Methode Bemerkung
function biasap_start_transaction_url(p_instance, p_loginmode, p_transaction, p_extra, p_skip, p_url) Startet die SAPGUI für die angegebene SAP-Datenquelle als Transaktion im gegebenen Loginmodus (meist "user"). Zusätzliche Parameter (z.B. zu füllende Felder) werden in "p_extra" mitgegeben. Mit "p_skip = "true"" kann der Startscreen übersprungen werden. Das Flag "p_url" steuert, ob eine Auswertung der Portal-URL notwendig ist (z.B. abweichende SAP-Router-Strings). Dazu musste die Seite aber mit "ssoPrepare" im Velocity initialisiert worden sein.
function biasap_start_transaction(p_instance, p_loginmode, p_transaction, p_extra, p_skip) Wie function "biasap_start_transaction_url" ohne URL-Auswertung
function biasap_start_report_url(p_instance, p_loginmode, p_report, p_variant, p_url) Startet einen Report im angegebenen SAP-System mit oder ohne Variante. Das Flag "p_url" steuert das Anpassen des Pfades zum SAP-System über die Portal-URL.
function biasap_start_report(p_instance, p_loginmode, p_report, p_variant) Wie "biasap_start_report_url" ohne URL-Auswertung
function biasap_set_cookie( name, value, expires, path, domain, secure ) Setze ein Cookie (z.B. für SSO)
function biasap_get_cookie( name ) Ermittle ein Cookie
function biasap_delete_cookie( name, path, domain ) Lösche ein Cookie
function biasap_set_ticket(p_message, p_cancel_on_error) Setze das SSO Ticket für SAP-Weboberflächen. Ist die Ermittlung eines gültigen SSO-Tokens nicht möglich und eine Fehlermeldung über "p_message" verfügbar, wird diese Fehlermeldung angezeigt. Der Parameter "p_cancel_on_error" steuert, ob ein fehlerhaftes Ticket die Verarbeitung des Skripts und auch der Folgeskripte (z.B. bei Schaltflächen) abbrechen soll (Effekt: keine Anzeige der SAP Weboberfläche bei falschem Ticket).
function biasap_call_sapurl(p_button, p_url) Ruft aus seiner Schaltfläche heraus eine SAP-Weboberfläche auf und kann in Ereignissen von Schaltflächen verwendet werden (z.B. onclick). "p_button" enthält eine Referenz auf die Schaltfläche. Die URL zur SAP-Seite wurde evtl. bereits als externes Sprungziel gepflegt. Ein gefüllter Parameter "p_url" würde dieses Sprungziel überschreiben. In der URL können Platzhalter (z.B. "<sapserver>") verwendet werden, die über ein vorheriges "ssoPrepare()" aufgelöst werden können.

4. API-Funktionen für die SAP-OCI-Schnittstelle


Methode Bemerkung
boolean ociInit(Session p_session, ServerBridgeRequest p_request, String p_loginmethod) Die Methode initialisiert die SAP-OCI Funktionen des Connectors für SAP Business Suite. Diese Methode ist zur Einbindung auf einer Ansichtsseite gedacht (Velocity). Übergeben werden die aktuelle Session und der Request. Der dritte Parameter legt das zu verwendende Autorisierungsverfahren fest. Voreingestellt ist "PlainAuth", das im Portal konfiguriert sein muss. Mit den übergebenen Parametern wird eine Anmeldung am Portal durchgeführt und die empfangenen Parameter auf Gültigkeit für SAP-OCI geprüft. Das Ergebnis ist boolean. Hat es den Wert "true", so war die Anmeldung erfolgreich. Mit dem Wert "false" war die Anmeldung entweder nicht korrekt oder die übergebenen Parameter sind für SAP-OCI nicht gültig.
boolean ociCheck() Diese Funktion prüft, ob eine gültige SAP-OCI-Session aktiv ist. Verwenden Sie diese Funktion, um in der Applikation z.B. Sprungziele anzupassen, wenn die Applikation nicht nur für SAP-OCI-Szenarien verwendet wird.
String ociStatus() Diese Funktion gibt einen HTML-Text zurück, der die aktuellen OCI-Informationen enthält. Verwendet werden kann die Funktion für die schnelle Darstellung der technische OCI-Informationen.
String ociGetInfo(String p_info) Mit dieser Funktion kann ein bestimmter Wert aus den OCI-Daten ermittelt werden. Mit "$!GSAP.ociGetInfo("vendor")" kann z.B. die Lieferantennummer ausgelesen und als Vorschlagswert für Eingabefelder verwendet werden. Mögliche Werte für "p_info" sind:
  • sapuser
    Technischer Name des angemeldeten SAP Benutzers
  • login
    Anmeldename am Portal
  • domain
    Anmeldedomäne am Portal
  • customer
    Kundennummer des Einkaufenden beim Lieferanten
  • vendor
    Lieferantennummer beim Einkäufer
  • oci_version
    OCI-Version
  • opi_version
    OPI-Version
String ociCheckout(String p_instance) Diese Funktion wird für die letzte Seite benötigt, auf der der Warenkorb zusammengestellt ist und an das SAP-System gesendet werden muss. Dadurch werden automatisch bestimmte Funktionen für die SAP-OCI-Schnittstelle zur Verfügung gestellt (z.B. Javascripts, Initialisierungen). Als Parameter wird hier eine konfigurierte SAP-Datenquelle erwartet. In Systemen ohne ein angeschlossenes SAP-System ist hier "sapoci" einzutragen.

Die API-Funktion "ociCheckout()" stellt zusätzliche Javascript-Funktionen bereit:

Methode Bemerkung
sapoci_set_returnurl(p_button) Setzt die Rücksprungadresse nach dem Senden. Es wird die Übergabe einer Schaltfläche erwartet.
sapoci_addItemMain(row, quantity, unit, articleid, description) Erzeugt die wichtigsten Transferdaten für eine Warenkorbposition (der Zeile "row")
sapoci_addItemField(row, name, value) Erzeugt weitere Daten für eine Warenkorbposition. In "name" wird der technische Name der OCI-Spezifikation erwartet (z.B. "VENDORMAT")
sapoci_addLongText(row, value) Erzeugt einen Langtext zur Position
sapoci_addFormField(name, value) Erzeugt ein sonstiges Transferfeld unter Angabe des technischen Namens
sapoci_send() Senden des Datenpaketes an den Aufrufer. Ein Abfangen von Fehlern mit try...catch ist möglich

5. Verfügbare Ressourcen für den Connector für SAP Business Suite


Kategorie Technischer NameVerwendung
Velocity Skript* biasap_shortcut.vmZum Starten der SAPGUI aus dem Portal heraus
JavaScript** sap_utilsDiverse Javascripts mit Utility-Funktionen
sapsso Diverse Javascript-Funktionen zum SSO mit SAP

* wird automatisch über die SAP Adapter API Methode "install(boolean p_check, boolean p_full_log)" im Portalverzeichnis installiert
** kann über die SAP-API-Methode "getJavascriptInclude(String)" eingebunden werden.

6. Experten-Attribute für SAP-Fremddatengruppen

Die folgenden Experten-Attribute werden teilweise automatisch durch die Auswahl des Datahandlers gesetzt und können danach angepasst werden. Einige Parameter sind optional und bewirken spezielle Verhaltensweisen.

Attribute Datentyp Ebene* Verwendung
bia-timezone String DQ, DG Anpassung der Zeitzone für Zeitstempelfelder. SAP-Systeme laufen oft in der Zeitzone CET, Intrexx auf dem Server in UTC. Dadurch kommt es bei der Darstellung von Uhrzeiten zu Verschiebungen. Die Zeitzone sollte aber eher in der Konfiguration der Datenquelle vorgenommen werden (Attribut in der Datei sap.cfg).
bia-loginuser String DG Loginmodus für den SAP-Zugriff (<system>|<user>|<mixed>)
bia-handler String DG Handler für den SAP-Zugriff (z.B. "GENERIC_VIEW", "DEVELOPER_API")
bia-variant String DG Variante des SAP Handlers (z.B. "DEFAULT"). Kann für eine abweichende Ermittlung des SAP-Datenhandlers verwendet werden
bia-param1...bia-param5 String DG Möglichkeit, steuerende Parameter an den SAP Handler zu übertragen. Die Werte stehen im SAP-Datahandler in der CONTROL-Struktur zur Verfügung.
bia-abapdebug String DG Möglichkeit, das Debugging nur für die betreffende Fremddatengruppe zu aktivieren. "True" aktiviert das Debugging. Ein SAP-Debugging ist nur mögloch, wenn das Portal auf dem eigenen Rechner läuft und ein SAPGUI installiert ist.
bia-forcefilter Boolean DG Mit diesem Parameter (aktiv = "true") kann für Tabellenzugriffe gesteuert werden, dass keine Daten ermittelt werden, wenn kein Filter aktiv ist. Damit wird verhindert, dass bei ausgeblendeten Tabellen in Zusammenhang mit dynamischen Filtern ein Zugriff in das SAP-System erfolgt.
bia-trace Boolean DG Aktiviert das Trace für diese Datengruppe. Dadurch finden sich hier erweiterte Meldungen in der Logdatei.
bia-requiredbl Boolean DG Enthält eine Angabe darüber, welche Version der Businesslogik vorausgesetzt wird, um vorab Fehler zu vermeiden (Nutzung neuer Features).
bia-simplekey Boolean DG Bei SAP-Datengruppen mit komplexen Schlüssel (z.B. VBAP) wird hier vereinfacht nur eine Zählung von 1...n als Schlüssel verwendet. Ein Sprung auf eine Detailseite ist so nicht möglich. Allerdings kann diese Option den Zugriff auf die Zellen innerhalb von Frei gestalteten Ansichtstabellen vereinfachen.
bia-usecache Boolean DG Ist diese Option aktiviert, werden die Daten auf dem Server gecacht. Ändern sich die Daten im SAP-System, werden im Portal trotzdem nur die alten Daten angezeigt. Die Option eignet sich vor allem für Customizingtabellen, die als Referenzen verwendet werden (Performance). Der serverseitige Cache kann durch Trennen der Verbindung zum SAP zurückgesetzt werden.
bia-newrec_getdetail Boolean DG Diese Option ist nur relevant in den Datahandlern der Developer-API. Bei neuen Datensätzen würde die SAP-API-Methode "Get_Detail" normalerweise nicht aufgerufen werden. Dies kann aber durch diese Option erzwungen werden, um Werte aus SAP vorzubelegen.
bia-newrec_delrecid Boolean DG Diese Option ist ebenfalls nur relevant innerhalb der Developer-API. Neue Datensätze erhalten von Intrexx generell die ID -1. Durch diese Option wird dieser vorgegebene Schlüssel gelöscht. Im SAP wäre er damit mit "if iv_key eq space" abfragbar.
bia-nolangtab Boolean DG Diese Option aktiviert alternativ zur entsprechenden bia-variant, dass in SAP nicht automatisch die Texttabelle ermittelt wird. So können Problemfälle wie die Tabelle MARA mit vernünftigem Aufwand im Portal angezeigt werden.
bia-htmloutput Boolean DG Diese Option aktiviert, dass bestimmte Daten als HTML-Code übergeben werden statt als normaler Text. Dieses Option wird beispielsweise im Data Handler "Generic Report" verwendet, um einen SAP-Report in den SAP-typischen Farben zu übertragen.
bia-singleline Boolean DG Diese Option aktiviert die Übertragung von längeren Texten als Langtext statt in mehreren Zeilen. Verwendet wird diese Option im Datahandler "Generic Report". Der Report wird dann nicht mehr zeilweise übertragen und muss als frei gestaltete Tabelle dargestellt werden. Ein Stringfeld enthält mit dieser Option den gesamten Report.
bia-numkeylen Integer DG, DF Diese Option aktiviert ein automatisches Mapping bei SAP-typischen numerischen Schlüsseln. Über die mitgegebene Länge weiß die Logik des Connectors für SAP Business Suite, dass dieses Feld bei der Übertragung zu SAP automatisch um führende Nullen ergänzt werden muss (Ausnahme alphanumerische Schlüssel). Bei der Darstellung im Portal werden diese Felder ohne führende Nullen dargestellt. Wird diese Option auf Datengruppenebene eingesetzt, wird automatisch der Schlüssel als numerische SAP-ID behandelt.
bia-timefield String DF Diese Option versucht das Problem zu lösen, dass im SAP meistens keine Zeitstempel, sondern getrennte Felder für Datum und Zeit verwendet werden. Intrexx hingegen verwendet Zeitstempel und kann diese zusätzlich als "nur Datum" oder "nur Zeit" darstellen. Über diese Option wird dem Datenfeld des SAP-Systems mitgeteilt, welches SAP-Feld die zugehörige Uhrzeit enthält. Das SAP-Datumsfeld wird dadurch zum Zeitstempel und kann auch so verwendet werden (z.B. in Kalenderkontrollen). Bei der Darstellung von Uhrzeiten kommt es oft zu Verschiebungen der Uhrzeit (z.B. 2h). Das liegt daran, dass SAP-Server und Portal in unterschiedlichen Zeitzonen laufen (CET vs UTC). Deshalb kann an der Datenquelle oder über bia-timezone die SAP-Zeitzone konfiguriert werden. Dieses Verhalten sollte auch umgekehrt (schreiben von Zeitstempeln in zwei getrennte SAP-Felder) funktionieren. Das Feld für das SAP-Datum ist hier wieder führend. Das zugehörige Zeitfeld muss aber evtl. (versteckt) auf den Seiten verfügbar sein.
bia-mapcodefield Boolean DF In SAP-Systemen werden oft Kodierungen benutzt (typische Charakter 1...6 Felder; z.B. VBAK-VBTYP). Diese werden als Text – also als SAP-Code – übertragen und sind für die Anwender so nicht verwendbar. Es besteht natürlich die Möglichkeit, die entsprechenden Customizingtabellen sprachabhängig als Referenz anzubinden. Dadurch entsteht aber unter Umständen viel Aufwand. Eine einfache Möglichkeit stellt diese Option zur Verfügung: der Datahandler "Generic View" versucht hier, aus der konfigurierten Suchhilfe bzw. anderen SAP-Mechanismen, geeignete Texte zu ermitteln. Dieses Verfahren ist nicht überall möglich (z.B. komplexere Suchhilfen mit mehreren Schlüsseln).
bia-mapurl Boolean DF Mit dieser Option können URLs unter Berücksichtigung der Portal-URL gemappt werden. Dies wird z.B. zum Verstecken der realen URL auf SAP-Systemen (Aufruf von Archivdokumenten) benötigt. Ein interner Zugriff kann so von "sapsystem.internesicht.net" auf "archiv.externesicht.com" gemappt werden, sobald der Anwender den externen Zugriff auf das Intrexx-Portal verwendet.
bia-maptouppercase Boolean DF Wandelt den Wert in Großbuchstaben um. Einsatz in SAP-Matchcode-Feldern sinnvoll.
bia-maptolowercase Boolean DF Wandelt den Wert in kleine Buchstaben um.

* DQ – Datenquelle, DG – Datengruppe, DF - Datenfeld

7. Wichtige SAP-Transaktionen

Die folgende Tabelle enthält einen Überblick über die wichtigsten Transaktionen in Verbindung mit dem Intrexx-Portal. Diese Transaktionen sind unter Umständen nicht für jeden verfügbar (fehlende Berechtigungen).

Kategorie Transaktionscode Verwendung
Tabellen/Views SE16 Data Browser: Anzeigen von Tabelleninhalten
SE11 Dictionary: Anzeigen von technischen Informationen zu Dictionary-Objekten (z.B. Tabellen, Views)
SAP-Konfiguration SPRO Implementierungsleitfaden: Zentrales SAP-Customizing
SM30 Tabellenpflege von Konfigurationstabellen
SM59 RFC-Destinationen pflegen: Zugriff auf externe Systeme konfigurieren
SICF Internet Connectivity: freigegebene Services
Fehlersuche ST22 Dumpanalyse: Fehlersuche nach Abbrüchen
SM21 Systemlog: Fehlersuche bei Systemproblemen
SLG1 Anwendungslog: Protokolle bei vielen Anwendungen
SMQ1, SMQ2, SM58 Datenaustausch mit externen Systemen mit qRFC und tRFC
Benutzer und Berechtigungen SU01Benutzerpflege
SU21 Pflege der Berechtigungsobjekte: u.a. mit Funktion "SAP_ALL" generieren
PFCG Rollen und Berechtigungen
ST01 Berechtigungstrace
SM04 Angemeldete Benutzer
SMGW Angemeldete Remote Systeme
Entwicklung SE80 ABAP-Workbench: Zentrale Entwicklungstransaktion
SE38, SA38 ABAP-Reports: Entwicklung und Start
SE37 Funktionsbausteine/BAPI: Entwickeln, Testen
BAPI BAPI-Browser
SWO1 SAP-Business-Objekte

8. Weitere Informationen

API Entwicklerhandbuch