Technische Hinweise zur Anbindung per Java an SAP R/3® Systeme

+ andere TechDocs
+ SOAP
+ EAI
+ SAP AG
+


Technische Hinweise zur Kooperation externer Anwendungen mit SAP-R/3®-Systemen
mit Hilfe von SAP-BAPI®-Schnittstellen und dem SAP Java Connector® (JCo®)


Die folgenden Texte stammen nicht von der SAP AG, sondern beruhen auf persönlichen
Erfahrungen. Sie stellen keine umfassende Einführung in SAP BAPI® oder
JCo® dar, sondern fassen lediglich einige Informationen zu diesen Themen
zusammen und sollen den Einstieg erleichtern.

Verbindlich sind nur die Originaldokumentationen der SAP AG. Links
verweisen auf entsprechende Webseiten und teilweise sind Textausschnitte
daraus zitiert. Es kann keinerlei Verantwortung oder Gewähr für eventuell
falsche Darstellungen auf dieser oder verlinkter Seiten übernommen werden.


Bitte beachten Sie, dass auf dieser Website viele Begriffe verwendet werden,
die eingetragene Marken sind.
Zum Beispiel sind "SAP®", "R/3®", "BAPI®", "SAP NetWeaver®", "xApps®"
und "SAP Business Workflow®" eingetragene Markenzeichen der SAP AG.



Inhalt

  1. Einführung, Terminologie, Kommunikationsdienste
    1. Dreischichtenmodell, SAP®, SAP® GUI, Business Workflow, Business Framework, Business Component, Business-Objekt
    2. BAPI®, Rückmeldung, Transaktion, LUW, Commit Work, Datenbankkonsistenz, ACID
    3. BOR, IDoc, ALE, Kommunikationsdienste, Datenaustausch, Business Connector
    4. XML, SOAP Web Services, ESA, NetWeaver®, Exchange Infrastructure, Web Application Server, Java, xApps®
  2. Informationen zu BAPI®s und RFCs für Anwendungsentwickler
    1. Interface Repository (IfR)
    2. SAP®-Bibliothek und SAP® Help Portal
    3. BAPI® Explorer
    4. RFC (Remote Function Calls)
  3. Vorbereitungen zur Entwicklung von Java-BAPI®/RFC-Anwendungen
    1. Zugang zum 'SAP® Service Marketplace' (service.sap.com)
    2. Installation von JCo®
  4. Dokumentation, Beispiele, Tools
    1. JCo®-Tutorial, Dokumentation, Beispiel-Sourcen, BAPI®-Tools, EAI
  5. Beispielprogrammausschnitt
    1. BAPI_CUSTOMER_GETLIST
  6. Links zu weiteren Informationen
    1. SAP® allgemein
    2. SAP®-Schnittstellen, Business-Objekte und BAPI®
    3. JCo® (Java Connector)
    4. Mini-SAP® (Testversion SAP®-Basis-System)
    5. IDES (Internet-Demonstrations- und Evaluierungssystem bzw. International Demonstration and Education System)


Einführung, Terminologie, Kommunikationsdienste

SAP AG

Systeme, Anwendungen und Produkte in der Datenverarbeitung (http://www.sap-ag.de).
Hersteller der betriebswirtschaflichen Standard-Software SAP® R/3® und mySAP®
(über 70.000 Installationen in mehr als 22.000 Firmen).

SAP® GUI

Das SAP® GUI ist das bislang übliche Benutzerfrontend für den Client. Es besteht aus über 150.000 Screens, Dialogboxen und Reports.

Business Workflow

Mit dem SAP® Business Workflow® können betriebswirtschaftliche Geschäftsprozesse auf einfache Weise definiert werden, die noch nicht im R/3®-System abgebildet sind. Besonders effizient kann der SAP® Business Workflow® dort eingesetzt werden, wo Arbeitsabläufe immer wieder durchlaufen werden müssen, oder wo der Geschäftsprozess eine Vielzahl von Bearbeitern in einer genau definierten Reihenfolge benötigt.

Der SAP® Business Workflow® wird unterstützt durch die BEW (Business Engineering Workbench).

Weitere Informationen gibt es unter 'SAP® Business Workflow® (SAP®-Help)'.

BFA (Business Framework Architecture)

1996 führte die SAP AG als Basiskonzept für die R/3®-Gesamtarchitektur die Business Framework Architecture (BFA) ein.

Diese sieht eine Strukturierung der R/3®-Funktionalität in Anwendungskomponenten (Business-Komponenten) und einem Objektmodell vor und ermöglicht es Kunden und Partnern, eigene Komponenten an das R/3®-System zu koppeln.

Weitere Informationen gibt es unter 'Business Framework (SAP®-Help)'.

Business Component

Die über 70 SAP® Business-Komponenten bilden eigenständige funktionelle Einheiten und setzen sich aus Business-Objekten zusammen. Geschäftsprozesse werden entweder innerhalb einer Business-Komponente implementiert oder können sich über mehrere Komponenten erstrecken.

Beispiele für Business-Komponenten:
SAP® BASIS (Basis Technology), SAP® FI (Financials), SAP® LO (Logistics) und SAP® HR (Human Resources).

BO (Business Object)

Business-Objekte repräsentieren fachliche Entitäten (z.B. Kundenaufträge) und kapseln betriebswirtschaftliche Daten und Funktionalität und sind die Grundlage der objektorientierten Strukturierung des R/3®-Systems.

Mit Hilfe der Business-Objekte wird das SAP®-System in kleinere, disjunkte Einheiten zerlegt, wodurch die Strukturierung verbessert und die Komplexität reduziert wird. Ein einzelnes Business-Objekt ist das Abbild eines betriebswirtschaftlichen Sachverhaltes (programmiertechnisch vergleichbar mit Klassen). Er umfasst sowohl die Funktionalität (Methoden) als auch die Daten (Attribute) dieses Sachverhaltes.

Bei Business-Objekten wird unterschieden nach Objekttypen (oder Objektklassen) und Objektinstanzen. Während ein Objekttyp eine generische Beschreibungen eines Objekts darstellt, sind Objektinstanzen spezifische zur Laufzeit erzeugte (und meistens mit konkreten Daten versehene) Instanzen eines Objekttyps. Beispielsweise können die Objektinstanzen 'Mitarbeiter Xy' zu dem Objekttyp 'Employee' gehören.
Wie bei programmiertechnischen Klassen gibt es auch bei Business-Objekttypen per Vererbung abgeleitete Objekttypen und darin per Polymorphismus modifizierte Methoden. Beispielsweise ist der Objekttyp 'Employee' ein Subtyp (Subklasse), der vom übergeordneten Supertyp (Superklasse) 'Person' abgeleitet wurde.

Beispiele für Business-Komponenten und Business-Objekte:

Beispiele für
Main Business Components
Beispiele für
Business Component Areas
Beispiele für
Business Objects
SAP® BASIS
(Basis Technology)
CA (Cross Application Components) /
CATS (Time Sheet)
CATimeSheetManager
CATimeSheetRecord
EmployeeCATimeSheet
SAP® HR
(Human Resources)
PT (Personnel Time Management) EmployeeAttAbs
PTimeOverview
TimeAvailSchedule
SAP® FI
(Financials)
FI (Financial Accounting) Company (Gesellschaft)
Debtor (Debitor)
Vendor (Lieferant)
  FI (Financial Accounting) /
AR (Accounts Receivable)
Customer (Kunde)
  CO (Controlling) CostCenter (Kostenstelle)
SAP® LO
(Logistics)
LO (Logistics - General) /
Logistics Basic Data
Material (Material)
MaterialBOM (Materialstückliste)
MaterialGroup (Warengruppe)
ProductCatalog (Produktkatalog)
  SD (Sales and Distribution) /
Sales
SalesOrder (Kundenauftrag)
  MM (Materials Managem.) /
PUR (Purchasing)
PurchaseOrder (Bestellung)
PurchaseRequisition (Bestellanforderung)
  LE (Logistics Execution) /
WM (Warehouse Managem.)
WarehouseStock (Lagerbestand)
  PS (Project System) ProjectDefinition
WorkBreakdownStruct (WBS)
Network

BAPI® (Business Application Programming Interface)

Die Entwicklung der BAPI®s (ab R/3® Release 3.1) ist Bestandteil einer gemeinsamen Initiative der SAP AG mit Kunden, Partnern und Normenorganisationen. BAPI®s stellen einen Kommunikationsstandard zwischen betriebswirtschaftlichen Systemen dar.

BAPI®s realisieren das Integrationskonzept "Objektintegration" sowohl auf systemtechnischer als auch fachlicher Ebene. Sie bilden standardisierte betriebswirtschaftliche objektorientierte Programmierschnittstellen zu den Business-Objekten und ermöglichen Kommunikation zu SAP®-Komponenten. Sie orientieren sich an der fachlichen Begriffswelt und bilden somit eine semantisch hohe Schnittstelle. BAPI®s benutzen keine Bildschirmdialoge.

Die BAPI®s sollen die mehr als 45.000 vorher verwendeten unübersichtlichen und nicht standardisierten low-level SAP®-RFCs (Remote Function Calls) ersetzen. Das im Internet veröffentlichte SAP® Interface Repository enthält die Beschreibung zu mehr als 2.000 BAPI®s.

BAPI®s sind als Methoden der SAP®-Business-Objekttypen bzw. SAP®-Interfacetypen im Business Object Repository (BOR) definiert und werden als Funktionsbausteine implementiert.
BAPI®s können auch Schnittstellen beschreiben, die außerhalb des R/3®-Systems implementiert sind und vom R/3®-System in externen Systemen aufgerufen werden können. Diese BAPI®s werden als BAPI®s für den Outbound-Fall bezeichnet und werden im BOR als API-Methoden an SAP®-Interfacetypen definiert. Im Gegensatz zu BAPI®s an SAP®-Business-Objekttypen liegt diesen BAPI®s im R/3®-System keine Implementierung als Funktionsbaustein zugrunde.

Es wird unterschieden zwischen instanzunabhängigen und instanzabhängigen BAPI®s.
Instanzunabhängige BAPI®s (Klassenmethoden) verwenden keine spezifischen Objektinstanzen.
Beispiele: GetList(), Create(), CreateFromData(), Replicate().
Instanzabhängige BAPI®s (Instanzmethoden) können nur für spezifische Objektinstanzen aufgerufen werden.
Beispiele: GetDetail(), GetStatus(), ExistenceCheck(), Change(), Delete(), Cancel().

Spezielle Service-BAPI®s bieten verschiedene Hilfsfunktionen zum Beispiel zur Transaktionssteuerung.

Allgemeine Informationen zu BAPI®s gibt es in der 'Allgemeinen Einführung in die BAPI®s (SAP®-Help)' und im 'BAPI®-Benutzerhandbuch (SAP®-Help)'.
Detaillierte Informationen zu BAPI®s gibt es im BAPI® Explorer und im Interface Repository.

Rückmeldung, Transaktion, LUW, Commit Work, Datenbankkonsistenz, ACID

BAPI®s melden im 'Return'-Parameter Nachrichten über Ausnahmesituationen oder Erfolgsmeldungen an das aufrufende Programm zurück. Genauere Meldungen sind per 'BapiService.MessageGetDetail()' und 'BapiService.ApplicationLogGetDetail()' erhältlich.

Eine Transaktion, auch LUW (Logical Unit of Work) genannt, ist eine Verarbeitungseinheit, also die Gesamtheit der Schritte eines Vorgangs einschließlich der Fortschreibung auf der Datenbank (Verbuchung).
Da sich eine LUW über mehrere BAPI®s erstrecken kann, wird das 'COMMIT WORK'-Kommando ('BapiService.TransactionCommit()') zum Festschreiben der Änderungen auf der Datenbank nicht von den BAPI®s selbst aufgerufen, sondern vom aufrufenden Programm.

Jedes BAPI®, das eine Instanz eines Objekts erstellt oder die Daten eines Objekts verändert, hinterläßt einen konsistenten Datenbankzustand. Alle Datenbankänderungen werden als Transaktion vollständig oder überhaupt nicht ausgeführt. Bei SAP® gilt das ACID-Prinzip, wonach Transaktionen 'Atomar', 'Consistent', 'Isolated' und 'Durable' sein müssen.

BOR (Business Object Repository)

Das BOR (Business Object Repository) ist ein Teil des zentralen SAP® R/3® Repository innerhalb des R/3®-Systems, in dem alle SAP® Business-Objekttypen, BAPI®s, SAP®-Interfacetypen, ihre Definitionen und Methoden etc. enthalten sind.
Das BOR wird neben der Speicherung von SAP® Business-Objekttypen und ihren BAPI®s für den Archive Link, die Nachrichtensteuerung und andere generische Objektdienste verwendet.
Im BOR sind alle relevanten Informationen zu den SAP®-Business-Objekttypen, ihren Schlüsselfeldern und den BAPI®-Methoden abgelegt, die benötigt werden, um die richtigen Objekttypdefinitionen und BAPI®-Aufrufe in ein Anwendungsprogramm zu integrieren.
Die Laufzeitumgebung des BOR empfängt Anforderungen von Client-Anwendungen zur Erstellung von Laufzeitobjekten und erstellt die entsprechenden Objektinstanzen.

IDoc (Intermediate Document)

Bereits seit R/3® Release 2.2 gab es schon lange vor BFA und BAPI® das Kommunikationskonzept IDoc. Es basiert auf dem Austausch von Geschäftsdokumenten, wie sie sonst auch per Brief oder Fax übermittelt werden könnten. IDoc überträgt die Daten als elektronisch auswertbare einfache ASCII-Textdateien in einem definierten Format, wodurch Transaktionen beschleunigt, Transaktionskosten verringert und Medienbrüche vermieden werden. Zusätzlich werden Statusinformationen übermittelt.

IDoc ist nicht kompatibel zu EDI, EDIFACT und Open-EDI, aber es ist sehr ähnlich und kann leicht in diese Formate konvertiert werden. Anders als die modernen XML-Formate ist IDoc nicht selbstbeschreibend.

IDocs entstehen in der Regel entweder durch Nachrichtensteuerungs- und Nachrichtenfindungsmechanismen oder im Workflow Management.

Während BAPI®s das Integrationskonzept "Objektintegration" realisieren, entsprechen IDocs dem Integrationskonzept "datenflussorientierte Funktionsintegration".

ALE (Application Link Enabling)

Der Integrationsdienst ALE (Application Link Enabling) unterstützt Konfiguration, Betrieb und Datenreplikation von verteilten Anwendungen.
ALE ermöglicht die technische Integration von Geschäftsprozessen, die über mehrere R/3®- oder Fremdsysteme hinweg abgewickelt werden.
Grundlage dafür ist eine systemgrenzenübergreifende Verteilung der betreffenden Business-Objekte mit Hilfe des ALE-Verteilungsmodells.

ALE umfasst einen betriebswirtschaftlich kontrollierten Nachrichtenaustausch zwischen verteilten Anwendungen bei konsistenter Datenhaltung. Die Anwendungsintegration erfolgt nicht über eine zentrale Datenbank. Stattdessen greifen Anwendungen auf eine lokale Datenbank zu. Die Datenhaltung ist redundant. ALE gewährleistet Verteilung und Abgleich von Stamm-, Steuer- und Bewegungsdaten über asynchrone Kommunikation. Zum Lesen von Daten nutzt ALE synchrone Verbindungen.

Weitere Informationen gibt es unter 'Nutzung der ALE Services (SAP®-Help)'.

Kommunikationsdienste, Datenaustausch

BAPI®s werden über Kommunikationsdienste aufgerufen (z.B. RFC, CORBA und DCOM).
Kommunikationsdienste sind Kommunikationstechnologien, die das Business Framework verwendet, um auf die BAPI®s zuzugreifen.

Beispiele für Kommunikationsdienste, übergeordnete Protokolle und Austauschformate:
RFC (Remote Function Call),
CORBA (Common Object Request Broker Architecture),
DCOM (Distributed Component Object Model),
JCo® (Java Connector),
IDoc (Intermediate Document),
SAP® Business-Connector,
XML (Extensible Markup Language),
SOAP (Simple Object Access Protocol) sowie
HTTP und andere Internet-Standards.

Informationen zu verschiedenen Techniken des Datentransfers (z.B. Batch-Input) gibt es unter 'Techniken der Datenübernahme (SAP®-Help CA)' und 'Methoden zur Datenübernahme (SAP®-Help BC-DWB)'.

Business Connector

Der SAP® Business Connector ermöglicht Zugriff über XML-Datenformate (Extensible Markup Language).

Der Business Connector ist kein eigenständiger Kopplungsmechanismus. Er nutzt die bereits vorhandenen Schnittstellen RFC, BAPI® und IDoc und übersetzt die Aufrufe von und nach XML. Er ist als eigenständige Komponente außerhalb des eigentlichen R/3®-Systems realisiert.

XML bietet drei wesentliche Vorteile:
- allgemein akzeptierter Standard,
- preiswerte und allgemein verfügbare Infrastruktur und
- standardisierte Vorgehensweisen zur Beschreibung der Nachrichtenstandards durch XML-Namensräume und XML-Schemata.

XML, SOAP Web Services, ESA, NetWeaver®, Exchange Infrastructure, Web Application Server, Java, xApps®

SAP® hat mit seiner BAPI®-Schnittstelle eine vorbildliche und anerkannte Schnittstelle. Trotzdem schwenkt SAP® ab R/3® Release 4.7 auf die XML-basierenden Web-Service-Standards SOAP / WSDL / UDDI um (in Verbindung mit dem Web AS ab 6.20). Die BAPI®s bleiben erhalten, aber alle BAPI®-Funktionalität ist auch per SOAP erreichbar und zukünftige Features gibt es teilweise nur noch über SOAP Web Services. Eine WSDL-URL kann zum Beispiel so aussehen:

http://<server>:<port>/sap/bc/soap/wsdl11?services=<bapi-name>&sap-client=<client-id>

Seit 2003 gibt es die SAP®-Strategie "Enterprise Services Architecture" ("ESA"), um RTE (Real-time Enterprise) realisieren zu können. Das darin wichtigste Produkt, die Infrastrukturplattforn "SAP® NetWeaver®", implementiert SOAP Web Services über den Integration Broker "SAP® Exchange Infrastructure" ("XI") im "SAP® Web Application Server" ("Web AS"), der ab Version 6.20 auf Java EE basiert, aber außer Java auch noch ABAP unterstützt. Microsofts .NET-Technologie wird lediglich über Adapter eingebunden (Pressemeldungen dazu: Heise, ZDNet, InfoWorld, TechTarget). Außerdem enthalten sind das "Master Data Management" ("MDM") zur Stammdatenkonsolidierung und das "SAP® Enterprise Portal" ("EP") (siehe Portale).

Die Infrastrukturplattforn NetWeaver® dient als Integrations- und Ablaufumgebung und ermöglicht die Entwicklung von "xApps®", welche mit SAP®-eigenen und fremden Applikationen und Datenquellen Geschäftsprozesse über eine Webschnittstelle zugänglich machen und die Entwicklung anwendungsübergreifender Applikationen ermöglichen. NetWeaver® wird künftig in allen SAP®-Produkten enthalten sein, also in xApps®, in der Applikationssuite mySAP.com und im ERP-System.

Die Integration mit "IBM WebSphere" und "Microsoft .NET" soll das "SAP® Portal Development Kit" für die Entwicklungsumgebungen von IBM und Microsoft erleichtern, so dass zum Beispiel in Microsoft Visual Studio .NET geschriebene Applikationen in das SAP®-Portal eingebettet werden können. Die Integrationslösungen "IBM WebSphere Business Integration" und "Microsoft BizTalk" lassen sich über spezielle Konnektoren an die SAP® Exchange Infrastructure anbinden. Zum Beispiel mit Visual Studio .NET können so SAP®-Applikationen direkt über die SAP®-Web-Service-Schnittstelle angesprochen werden, ohne dass Detailwissen über die SAP® BAPI®s oder IDocs erforderlich ist.



Informationen zu BAPI®s und RFCs für Anwendungsentwickler

Interface Repository (IfR) (im Internet)

Informationen zu vielen BAPI®s und einigen RFCs waren bis Ende 2006 über das Internet im Interface Repository (http://ifr.sap.com) verfügbar. Leider ist diese Informationsquelle nicht mehr unter dieser Adresse verfügbar.
Eventuell können ähnliche Informationen bezogen werden über: https://www.sdn.sap.com/irj/sdn/esworkplace oder http://erp.esworkplace.sap.com/socoview/enterpriseservices.asp. Einige Teilinformationen erhalten Sie über die Transaktion 'WE60'.
Die folgende Beschreibung bezieht sich noch auf die frühere Webseitenstruktur unter http://ifr.sap.com (falls Sie eine neue Informationsquelle finden, die ähnlich strukturiert ist).

Um zum Beispiel die BAPI®s zum Business-Objekt 'Customer' einzusehen, wurde wie folgt vorgegangen:

  1. http://ifr.sap.com aufrufen
  2. 'Enter the Interface Repository'
  3. Umschalten von 'English' auf 'German'
  4. Tabulatorreiter 'Komponenten'
  5. [+] vor 'SAP® FI (Financials)'
  6. 'Release 46C'
  7. 'Debitorenbuchhaltung'
  8. 'Business Objekt' 'Customer'

Analog zum Beispiel für 'Material':

  1. http://ifr.sap.com, 'Enter the Interface Repository', 'German' und 'Komponenten'
  2. [+] vor 'SAP® LO (Logistics)', 'Release 46C'
  3. 'Logistik Allgemein'
  4. 'Grunddaten Logistik'
  5. 'Business Objekt' 'Material'

Analog für 'Projektsystem':

  1. http://ifr.sap.com, 'Enter the Interface Repository', 'German' und 'Komponenten'
  2. [+] vor 'SAP® LO (Logistics)', 'Release 46C'
  3. 'Projektsystem'
  4. 'Business Objekte' 'ProjectDefinition', 'WorkBreakdownStruct' und 'Network'

SAP®-Bibliothek und SAP® Help Portal (im Internet)

Viele weitere Dokumentationen und Hilfstexte finden Sie in der SAP®-Bibliothek im SAP® Help Portal.

Um zum Beispiel genaueres zum SAP®-'Projektsystem' zu erfahren, wählen Sie:

  1. http://help.sap.com aufrufen
  2. 'SAP® R/3®'
  3. 'SAP® R/3® Release 4.6C'
  4. 'German'
  5. 'SAP®-Bibliothek'
  6. 'Rechnungswesen (AC)'
  7. 'Projektsystem (PS)'

Die Business Objekte und BAPI®s des SAP®-'Projektsystems' finden Sie auf der 'Projektsystem (PS)'-Seite unter EPS (Interface to External Project Software):

  1. 'Strukturen'
  2. 'Schnittstellen des Projektsystems'
  3. 'PS-EPS-Schnittstelle zu externen Projektmanagementsystemen'
  4. 'EPS 4.0'
  5. 'Business Objekte' 'ProjectDefinition', 'WorkBreakdownStruct' und 'Network'

BAPI® Explorer (im SAP® GUI)

Der BAPI® Explorer ist über die grafische SAP®-GUI-Oberfläche erreichbar (falls das SAP® GUI installiert ist).

Er wird aufgerufen entweder über 'SAP® Menü' | 'Werkzeuge' | 'Business Framework' | 'BAPI® Explorer' oder über Eingabe der Transaktion 'BAPI'.

Weitere Informationen gibt es unter 'BAPI® Explorer (SAP®-Help)'.

RFC (Remote Function Calls)

Eine Liste der RFCs können Sie im SAP® GUI einsehen, entweder über 'SAP® Menü' | 'Werkzeuge' | 'ABAP Workbench' | 'Entwicklung' | 'SE37 - Function Builder' oder über Eingabe der Transaktion 'SE37'.

Interessante RFCs sind zum Beispiel:

Remote Function CallFunktions-
gruppe
Funktionsbausteinerklärung
RFC_CALL_TRANSACTION ATSVCall single transaction using RFC
RFC_WALK_THRU_TEST CRFCWalk thru the network (RFC-Test)
RFC_FUNCTION_DOCU_GET RFC1Dokumentation Funktionsbaustein lesen
RFC_FUNCTION_SEARCH RFC1Remote aufrufbare Funktionsbausteine suchen
RFC_GET_FUNCTION_INTERFACERFC1RFC-Schnittstelle eines Funktionsbausteins
RFC_GET_NAMETAB RFC1Felder einer Tabelle oder Struktur
RFC_GET_TABLE_ENTRIES RFC1Tabelleneinträge lesen
RFC_GROUP_DOCU_GET RFC1Dokumentation Funktionsbausteingruppe lesen
RFC_GROUP_SEARCH RFC1Funktionsbausteingruppe suchen
RFC_READ_TABLE SDTXExternal access to R/3® tables via RFC (nur bis 512Byte/Feld, siehe auch GET_TABLE_RFC)
RPY_TABLE_READ SIFDTabelle/Struktur lesen
GET_TABLE_RFC SR1TTabelle aus einem anderen System (mittels RFC) holen, ähnlich RFC_READ_TABLE, aber auch längere Felder
RFC_SYSTEM_INFO SRFCInformationen über das System
SWO_BUSINESS_OBJECTS_GET SWODReturns all business object types, even those which do not have any BAPI® method
SWO_QUERY_API_OBJTYPES SWORReturns business object types which expose BAPI®s
SWO_QUERY_OBJTYPE_INFO SWORVolle Typinformation eines Objekttyps lesen (LOAD-Version)


Vorbereitungen zur Entwicklung von Java-BAPI®/RFC-Anwendungen

Zugang zum 'SAP® Service Marketplace' (service.sap.com)

Der Zugang zum 'SAP® Service Marketplace' (http://service.sap.com) ist nur mit gültigen Zugangs-Login möglich (User ID und Password).
Wenn Sie über einen S-User-Zugang (OSS) oder SAPNet-Zugang verfügen, können Sie dessen Zugangs-Login-Daten eingeben.
Wenn Sie noch nicht registriert sind, fragen Sie entweder Ihren SAP®-Administrator nach den Zugangsdaten, oder, wenn Sie das SAP® GUI installiert haben, beantragen Sie Zugangsdaten von SAP®:

  1. Starten Sie SAP® GUI und loggen sich ein.
  2. Unter 'System' | 'Status...' | 'SAP®-Systemdaten' finden Sie Ihre 'Installationsnummer',
    die Sie sich für die folgende Registrierung merken.
  3. Rufen Sie http://service.sap.com auf.
  4. Wenn ein Dialog 'Clientauthentifizierung' erscheint, wählen Sie 'Abbrechen'.
  5. Auf der Webseite 'SAP® Service Marketplace' klicken Sie auf 'Sign In: New user? Sign up here!'.
  6. Auf der folgenden Webseite tragen Sie Ihre Daten inklusive der SAP®-Installationsnummer ein.
  7. Für die Zugangsdaten erhalten Sie eine E-Mail von SAP®.

Installation von JCo®

JCo® (Java Connector) ist ein Interface zwischen den BAPI®s und RFCs von SAP® R/3® und externen Java-Anwendungen.

  1. Installieren Sie das aktuelle Java SE JDK (mindestens J2SE 1.3, siehe auch java-install.htm).
  2. Wenn Sie JCo® Server-seitig mit JSP einsetzen wollen, installieren Sie einen JSP-fähigen Web-Server (z.B. Tomcat, siehe auch JSP).
  3. Besorgen Sie sich einen Zugang zum 'SAP® Service Marketplace (service.sap.com)', wie oben beschrieben ist.
  4. Laden Sie sich die passende Datei (für Windows z.B. jco-ntintel-1.1.04.zip oder sapjco-ntintel-2.0.5.zip) von der SAP®-Connectors-Webseite (http://service.sap.com/connectors | 'SAP® Java Connector' | 'Download').
  5. Entzippen Sie die Datei in ein beliebiges Verzeichnis.
  6. Befolgen Sie die Installationsanweisungen in der Datei docs/intro.html.
    Die im Folgenden genannten Hinweise beziehen sich auf Installationen unter Windows.
  7. Kopieren Sie die Datei SapJCo.jar (bzw. jCO.jar, je nach JCo®-Version) in ein Verzeichnis für Java-Libs (z.B. C:\Program Files\Java\jdk1.6\jre\lib\ext).
  8. Kopieren Sie die Dateien SapJCoRfc.dll und LibRfc32.dll (bzw. jRFC11.dll, jRFC12.dll und LibRfc32.dll) in Ihr Windows\System32-Verzeichnis (oder in Ihren java.library.path).
    Falls es eine der Dateien dort schon gibt, kopieren Sie die Datei nur, wenn sie eine neuere Version beinhaltet (unter Windows im Windows-Explorer auf Datei mit rechter Maustaste klicken, 'Eigenschaften' und den Tabulatorreiter 'Version' wählen).
  9. Wechseln Sie in das Unterverzeichnis demo und starten Sie ein Kommandozeilenfenster (DOS-Box) mit diesem Verzeichnis.
  10. Tragen Sie in die Datei Example1.java unter JCO.createClient() Ihre SAP®-Zugangsdaten ein (client = Mandant (z.B. 100), userid = Benutzer, password = Kennwort, language = Sprache (z.B. DE), ashost = Group/Server, sysnr = system number (z.B. 00)).
  11. Führen Sie folgende Kommandos aus (passen Sie den CLASSPATH an Ihr JCo-Verzeichnis an):
    set CLASSPATH=.;C:\Program Files\Java\jdk1.6\jre\lib\ext\jCO.jar
    javac Example1.java
    java Example1
  12. Studieren Sie in der Datei docs/intro.html die 'Documentation' und die 'Examples'.


Dokumentation, Beispiele, Tools

JCo®-Tutorial, Dokumentation und Beispiel-Sourcen

Das JCo®-Paket (z.B. jco-ntintel-1.1.04.zip oder sapjco-ntintel-2.0.5.zip, siehe oben) enthält ein Tutorial und JavaDoc-Dokumentation.

Im selben JCo®-Paket gibt es mehrere einfache komplette Java-Source-Beispieldateien, die ohne oder mit beliebiger Entwicklungsumgebung übersetzt und ausgeführt werden können (siehe oben).

Ein weiteres Sourcecode-Beispiel finden Sie unten unter Beispielprogrammausschnitt.

BAPI®-Tools

Verschiedene Tools wollen den Umgang mit BAPI®s und RFCs erleichtern, zum Beispiel Cocoon Logicsheet für SAP® BAPI®, Z Option eZIO und SAP2Java (1, 2, 3).

EAI (Enterprise Application Integration)

Für sehr große Anbindungslösungen, bei sehr vielen Benutzern oder bei häufig wechselnden Anforderungen oder Geschäftsprozessen empfehlen sich EAI-Lösungen (Enterprise Application Integration).

Informationen zu EAI finden Sie in eai.htm.



Beispielprogrammausschnitt

  // ------------------------------------------------------------------------
  // Read name and address data from customers stored in SAP(R) R/3(R) in the
  // Business Object 'Customer' in the Component 'SAP(R) FI (Financials)' 
  // ------------------------------------------------------------------------

  public class ReadCustomers extends Object
  {
    public final String[][] getCustomers( String prmUsr, String prmPwd,
                                          String prmSapSystem, String prmMandant,
                                          String prmDebitorNr, int numRowsMax )
    {
      JCO.Client  mConnection;
      IRepository mRepository;
      String[][] ssRet = null;
      int i;
      // Check parameters:
      if( null == prmUsr       || 0 >= prmUsr.length() ||
          null == prmPwd       || 0 >= prmPwd.length() ||
          null == prmSapSystem || 0 >= prmSapSystem.length() )
        return null;
      if( null == prmMandant   || 0 >= prmMandant.length() )
        prmMandant = "100";
      if( null == prmDebitorNr || 0 >= prmDebitorNr.length() )
        prmDebitorNr = "0";
      if( 0 <= (i = prmSapSystem.indexOf( '(' )) )
      {
        prmSapSystem = prmSapSystem.substring( i+1 );
        if( 0 <= (i = prmSapSystem.indexOf( ')' )) )
          prmSapSystem = prmSapSystem.substring( 0, i );
      }
      prmSapSystem = prmSapSystem.trim();
      if( 0 >= prmSapSystem.length() )
        return null;
      // prmDebitorNr must be 10 chars long and start with '0':
      final String sFillStrWithWantLen = "0000000000";
      i = prmDebitorNr.length();
      if( i < sFillStrWithWantLen.length() )
        prmDebitorNr = (sFillStrWithWantLen + prmDebitorNr).substring( i );

      // Connect to SAP(R):
      try {
        mConnection =
          JCO.createClient( prmMandant,    // SAP(R) client = Mandant
                            prmUsr,        // userid        = Benutzer
                            prmPwd,        // password      = Kennwort
                            "DE",          // language      = Sprache
                            prmSapSystem,  // host name     = Group/Server
                            "00" );        // system number
        mConnection.connect();
        mRepository = new JCO.Repository( "MyRepository", mConnection );

        // ---------------- BAPI_CUSTOMER_GETLIST ----------------
        JCO.Function function = this.createFunction( mRepository, "BAPI_CUSTOMER_GETLIST" );
        if (function == null) {                             // (createFunction(): see below)
          System.out.println( "BAPI_CUSTOMER_GETLIST" + " not found in SAP(R)." );
          return null;
        }

        // ---------------- listRecordContents BAPI_CUSTOMER_GETLIST ----------------
        function.getImportParameterList().setValue( numRowsMax, "MAXROWS" );
        JCO.Table tblRange = function.getTableParameterList().getTable( "IDRANGE" );
        tblRange.appendRow();
        tblRange.setValue( "I",          "SIGN"   );
        tblRange.setValue( "BT",         "OPTION" );
        tblRange.setValue( prmDebitorNr, "LOW"    );
        tblRange.setValue( "9999999999", "HIGH"   );
        mConnection.execute( function );
        try
        {
          JCO.Structure returnStructure = function.getExportParameterList().getStructure( "RETURN" );
          if( !(returnStructure.getString("TYPE").equals("")  ||
                returnStructure.getString("TYPE").equals("S")) )
          {
            System.out.println( returnStructure.getString( "MESSAGE" ) );
            return null;
          }
        }
        catch( Exception ex )
        {
          ex.printStackTrace();
          return null;
        }
        // ---------------- ADDRESSDATA ----------------
        JCO.Table tblAdr = function.getTableParameterList().getTable( "ADDRESSDATA" );
        if( null == tblAdr )
        {
          System.out.println( "Error: no ADDRESSDATA !" );
          return null;
        }
        ssRet = new String[tblAdr.getNumRows()+1][7];
        ssRet[0][0] = "Debitor";
        ssRet[0][1] = "Name";
        ssRet[0][2] = "Straße";
        ssRet[0][3] = "Ort";
        ssRet[0][4] = "Land";
        ssRet[0][5] = "Tel.";
        ssRet[0][6] = "Fax";
        for( i=0; i<tblAdr.getNumRows(); i++ )
        {
          tblAdr.setRow( i );
          ssRet[i+1][0] = tblAdr.getString( "CUSTOMER"   );
          ssRet[i+1][1] = tblAdr.getString( "NAME"       );
          ssRet[i+1][2] = tblAdr.getString( "STREET"     );
          ssRet[i+1][3] = tblAdr.getString( "POSTL_COD1" ) + " " + tblAdr.getString( "CITY" );
          ssRet[i+1][4] = tblAdr.getString( "COUNTRYISO" );
          ssRet[i+1][5] = tblAdr.getString( "TEL1_NUMBR" );
          ssRet[i+1][6] = tblAdr.getString( "FAX_NUMBER" );
        }
      }
      catch( Exception ex ) {
        ex.printStackTrace();
        return null;
      }
      return ssRet;
    }

    private JCO.Function createFunction( IRepository mRepository, String name )
    {
      try {
        return mRepository.getFunctionTemplate( name.toUpperCase() ).getFunction();
      } catch( Exception ex ) {/*ok*/}
      return null;
    }
  }


Links zu weiteren Informationen

SAP® allgemein

SAP®-Schnittstellen, Business-Objekte und BAPI®

JCo® (Java Connector)

Mini-SAP® (Testversion SAP®-Basis-System)

IDES (Internet-Demonstrations- und Evaluierungssystem bzw. International Demonstration and Education System)

Das IDES-System können sowohl Kunden mit R/3®-Lizenz als auch Software-Partner, die im Auftrag der SAP® Softwarelösungen entwickeln, erhalten. Zum SAP®-Partnerprogramm siehe: http://www.sap.com/partners.





Weitere Themen: andere TechDocs | Portale | EAI | SOAP | JSP | SQL
© 1998-2007 Torsten Horn, Aachen