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.
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).
Das SAP® GUI ist das bislang übliche Benutzerfrontend für den Client. Es besteht aus über 150.000 Screens, Dialogboxen und Reports.
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)'.
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)'.
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).
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 |
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.
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.
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.
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".
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)'.
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)'.
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.
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 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:
Analog zum Beispiel für 'Material':
Analog für 'Projektsystem':
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:
Die Business Objekte und BAPI®s des SAP®-'Projektsystems' finden Sie auf der 'Projektsystem (PS)'-Seite unter EPS (Interface to External Project Software):
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)'.
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 Call | Funktions- gruppe | Funktionsbausteinerklärung |
---|---|---|
RFC_CALL_TRANSACTION | ATSV | Call single transaction using RFC |
RFC_WALK_THRU_TEST | CRFC | Walk thru the network (RFC-Test) |
RFC_FUNCTION_DOCU_GET | RFC1 | Dokumentation Funktionsbaustein lesen |
RFC_FUNCTION_SEARCH | RFC1 | Remote aufrufbare Funktionsbausteine suchen |
RFC_GET_FUNCTION_INTERFACE | RFC1 | RFC-Schnittstelle eines Funktionsbausteins |
RFC_GET_NAMETAB | RFC1 | Felder einer Tabelle oder Struktur |
RFC_GET_TABLE_ENTRIES | RFC1 | Tabelleneinträge lesen |
RFC_GROUP_DOCU_GET | RFC1 | Dokumentation Funktionsbausteingruppe lesen |
RFC_GROUP_SEARCH | RFC1 | Funktionsbausteingruppe suchen |
RFC_READ_TABLE | SDTX | External access to R/3® tables via RFC (nur bis 512Byte/Feld, siehe auch GET_TABLE_RFC) |
RPY_TABLE_READ | SIFD | Tabelle/Struktur lesen |
GET_TABLE_RFC | SR1T | Tabelle aus einem anderen System (mittels RFC) holen, ähnlich RFC_READ_TABLE, aber auch längere Felder |
RFC_SYSTEM_INFO | SRFC | Informationen über das System |
SWO_BUSINESS_OBJECTS_GET | SWOD | Returns all business object types, even those which do not have any BAPI® method |
SWO_QUERY_API_OBJTYPES | SWOR | Returns business object types which expose BAPI®s |
SWO_QUERY_OBJTYPE_INFO | SWOR | Volle Typinformation eines Objekttyps lesen (LOAD-Version) |
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®:
JCo® (Java Connector) ist ein Interface zwischen den BAPI®s und RFCs von SAP® R/3® und externen Java-Anwendungen.
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.
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).
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.
// ------------------------------------------------------------------------ // 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; } }
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.