Patrick Theobald SAP R/3® Kommunikation mit RFC und Visual aasic Grundkurs JAVA ProJektkompass von Dietmar Abts SoftwareentwIcklung von Carl Steinweg OhneCzuC++ von Peter P. Bothner und Verteilte Systeme Wolf-Michael Kähler von Günther Bengel Kompaktkurs MIkrocontroller Das neue PLII für PC, Workstation von Silvia Limbach und Malnframe von Eberhard Sturm Team Excellence effizient und verständlich Erfolgreiche Datenbankanwendung von Franz J. Linnenbaum mItSQL3 von Jörg Fritze und Jürgen Marsch Der CMs-Gulde von Jürgen Lohr und Andreas Deppe Wlreless LAN In der Praxis von Peter Klau Die Kunst der Programmierung mltC++ Exchange Server 2000 - Installieren, von Martin Aupperle konfigurieren, administrieren, optimieren Das PC-Wlssen für IT-Berufe: von Thomas Joos Hardware, Betriebssysteme, Netzwerktechnlk CII .NET mit Methode von Rainer Egewardt von Heinrich Rottmann Requlrements-Englneerlng Web-baslerte Systemintegration effizient und verständlich von Harry Marsh Sneed von Emmerich Fuchs, Karl Hermann Fuchs und Stephan S. Sneed und Christian H. Hauri IT-Projekte strukturiert realisieren RechnerarchItektur von Ralph Brugger von Paul Herrmann Vlsual Basic .NET mit Methode Datenbankentwurf von Heinrich Rottmann von Helmut Jarosch SAP Apo· In der Praxis EffIclent SApe R/3--Data Archlvlng hrsg. von Matthias Bothe und Volker Nissen von Markus Korschen SAP R/3· Kommunikation EffIzient Programmieren mit mit RFC und VI. ..a l Basic CIIund.NET von Patrick Theobald von Andreas Solymosi und Peter Solymosi WWW vleweg It .de Patrick Theobald SAP R/3® Kommunikation mit RFC und Visual Basic IDOCs, Funktionsbausteine und BAPI - Von der Iibrfc32.dll bis zum .Net-Connector aI vleweg Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über <http://dnb.ddb.de> abrufbar. Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt. SAP'", SAP R/3®, SAP R/2®, SAP-GUI®, mySAP.com®, SAP IDES®, ABAP'", ABAP / 4®, BAPI® sind eingetragene Warenzeichen der SAP Aktiengesellschaft Systeme, Anwendungen, Produkte in der Datenverarbeitung, Neurottstr. 16,0-69190 Walldort. Der Autor bedankt sich für die freundliche Genehmigung der SAP Aktien gesellschaft, die genannten Warenzeichen im Rahmen des vorliegenden Titels verwenden zu dürfen. Die SAP AG ist jedoch nicht Herausgeberin des vorliegenden Titels oder sonst dafür presserechtlich verant wortlich. Für alle Screen-Shots des vorliegenden Titels gilt der Hinweis: Copyright SAP AG. Microsoft®, Windows®, Windows NT®, EXCEL®s ind eingetragene Warenzeichen der Microsoft Corporation. Bei der Zusammenstellung der Informationen zu diesem Produkt wurde mit größter Sorgfalt gearbeitet. Trotzdem sind Fehler nicht vollständig auszuschließen. Verlag und Autor können für fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Für Hinweise und Verbesserungsvorschläge sind Verlag und Autor dankbar. 1. Auflage Dezember 2003 Alle Rechte vorbehalten © Friedr. Vieweg & Sohn Verlag/GWV Fachverlage GmbH, Wiesbaden 2003 Der Vieweg-Verlag ist ein Unternehmen von Springer Science+Business Media. www.vieweg-it.de Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Das gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Ein speicherung und Verarbeitung in elektronischen Systemen. Konzeption und Layout des Umschlags: Ulrike Weigel, www.CorporateDesignGroup.de Umschlagbild: Nina Faber de.sign, Wiesbaden ISBN 978-3-528-05878-4 ISBN 978-3-322-93963-0 (eBook) DOI 10.1007/978-3-322-93963-0 Vorwort Liebe Leser, das vorliegende Buch ist ein sorgfältig erstelltes Destillat der in tensiven Erfahrungen der Real-Time-Kommunikation zwischen SAP R/3 und externen Subsystemen, die ich in den letzten Jahren sammeln durfte. Ich habe versucht, die Materie in eine klare und verständliche Form zu packen und so die Möglichkeit zu schaf fen, ein wenig des Mythos der großen Blackbox R/3 zu entzau bern. Die wahrscheinlich teuerste Standardsoftware, die der Markt der zeit zu bieten hat, ist keine Blackbox die die Ehrfurcht verdient hätte, die zu viele (insbesondere Visual-Basic-) Programmierer Ihr entgegen bringen. Dieses Buch räumt auf mit den Vorurtei len, dass Schnittstellen in oder aus einem SAP-System unweiger lich eine Sache von hochspezialisierten (und entsprechend teuer bezahlten) Experten sein muss. Es werden Ihnen Werkzeuge und Methoden an die Hand gegeben, die RFC-Bibliotheken so ken nen und nutzen zu lernen, dass entsprechende Schnittstellen den Komplexitätsgrad einer einzulesenden ASCII-Datei kaum über steigen. An dieser Stelle Jeden zu erwähnen, der mich auf dem Weg von der ersten, leeren Seite bis zum Druck dieses Buches ganz oder teilweise begleitet hat, würde mit Sicherheit den Rahmen eines Vorwortes sprengen. Aus diesem Grund beschränke ich mich auf meinen Arbeitgeber, der Würth Industrie Service GmbH & Co. KG in Bad Mergentheim, Alex, der tapfer alle meine Launen ertragen hat und meine Eltern, die die seltene Gabe besitzen, mich zur richtigen Zeit in Ruhe zu lassen. Bitte besuchen Sie auch meine Homepage http://www.patrick-theobald.de Neben den Beispieldateien, die dort heruntergeladen werden können, stehen auch noch etliche andere Ressourcen wie eine umfangreiche Link-Liste zu ergänzenden Web-Sites zur Verfügung. 5 Per Email erreichen Sie mich unter der Adresse [email protected]. Für jegliche Art von Feedback und konstruktiver Kritik bin ich dankbar und wünsche Ihnen nun viele erkenntnisreiche Aha-Erlebnisse mit dem vorliegenden Schriftstück. Herzlichst Ihr Patrick Theobald Stuttgart im Herbst 2003 6 Inhaltsverzeichnis 1 Einführung ................................................................................................. 13 1.1 SAP R/3 - Die Architektur ......................................................................... 15 1.1 Anmeldung ................................................................................................. 16 1.2 Das GUI-Fenster ........................................................................................ 18 1.3 Funktionsbausteine und ABAP ............................................................. 20 1.3.1 SE37 - Der Function-Builder ............................................................. 21 1.3.2 ABAP - ein Rundumblick .................................................................. 28 1.5 Komponenten des RFC-SDK ..................................................................... 37 2 RFC-Dcsktop-Integration und die COM-Architektur ................................ 39 2.1 Objekthierarchie ........................................................................................ 39 2.2 Logon-Prozedere: Das Connection-Objekt.. ............................................ .40 2.2.1 Mit R/3 verbinden .............................................................................. 40 2.2.2 Connection-Objekt im Überblick ...................................................... 44 2.3 Remote-Funktionen aufrufen: Das Function-Objekt.. .............................. 46 2.3.1 Function-Objekt im Überblick ........................................................... 48 2.4 Tabellen-Handling: Das Table-Objekt ...................................................... 49 2.4.1 Tabellen exportieren .......................................................................... 49 2.4.2 Tabellen importieren ......................................................................... 50 2.4.3 Das Table-Objekt im Überblick ......................................................... 51 2.5 Strukturen und das Structure-Objekt ........................................................ 52 2.5.1 Structure-Objekt im Überblick ........................................................... 53 2.6 Praktische Beispiele ................................................................................... 53 2.6.1 Verbindungsstatus testen mit RFC_PING .......................................... 53 2.6.2 Dokumentationstext mit RFC]UNCTION_DOCU_GET .................. 54 2.6.3 Tabellen direkt lesen mit RFC_READ_TABLE .................................. 56 7 2.5.4 Outputs eines Reports Ermitteln mit Z_GET_REPORT_RESULT.. .... 62 2.6 Tracing ....................................................................................................... 66 2.6.1 Client-seitiges Tracing ........................................................................ 66 2.6.2 Server-seitiges Tracing ....................................................................... 67 2.7 OLE-Objekte und ABAP ............................................................................ 69 2.7.1 Beispielobjekt VB-Seite ...................................................................... 71 2.7.2 Beispielobjekt ABAP-Seite ................................................................. 73 3 Batch Input ................................................................................................ 75 3.1 Einführung Batch Input.. ........................................................................... 75 3.2 Synchroner Batch-Input per RFC_CALL_TRANSACTION ........................ 81 3.2.1 spezielle Bildschirmelemente ............................................................ 85 3.2.2 Mehrfachtransaktionen und GUI-Dialoge ......................................... 87 3.3 Asynchroner Batch Input und die Mappenverwaltung ........................... 93 3.4 Zusammenfassung, Ergänzungen und Einschränkungen ........................ 99 4 Business-Objekte und das BAPI-OCX ............................................... 101 4.1 Der Business Object Builder ................................................................... 102 4.1.1 Standard-Methoden von Business-Objekten ................................... 106 4.2 Das BAPI-OCX ......................................................................................... 108 4.3 Business-Objekte instanziieren ............................................................... 109 4.4 Parameter-Objekte und Methoden .......................................................... 111 4.5 Praxisbeispiel Kundenauftrag mit BAPI SalesOrder ............................... 113 4.6 Wertehilfe leicht gemacht: Das BAPI HelpValues ................................. 116 4.6 Ranges und die GetList-Methode ............................................................ 118 4.6.1 Collections über Business-Objekte ................................................. 122 4.7 Transaktionaler BAPI-Aufruf ................................................................... 123 4.8 BAPI-Control im Überblick ..................................................................... 124 8 5 Der DCOM-Connector ............................................................................. 125 5.1 Erste Schritte in der Management Console ............................................. 126 5.2 RFC-Objekte zusammenstellen und erzeugen ....................................... 129 5.3 Proxy-Komponenten in VB einbinden ................................................... 130 5.4 BAPI-Objekte zusammenstellen und erzeugen ...................................... 133 5.5 tRFC und qRFC ........................................................................................ 136 5.5.1 Transaktionaler RFC ......................................................................... 136 5.5.2 Queued RFC ..................................................................................... 137 5.6 Remote Debugging .................................................................................. 138 5.7 Proxy-Objekte im Überblick ................................................................... 139 5.8 Die andere Richtung: COM4ABAP .......................................................... 142 5.8.1 VB-Server als Klasse ......................................................................... 143 5.8.2 Type-Mapping .................................................................................. 145 5.8.3 COM4ABAP installieren ................................................................... 147 ').8.4 ABAP: Die Client-Seite ..................................................................... 149 5.9 DCOM-Connector Admin-Bibliothek ...................................................... 152 5.9.1 CCRegistry ........................................................................................ 154 5.9.2 CCMonitor ........................................................................................ 157 5.9.3 CCCatalog ......................................................................................... 158 5.9.4 SAPConDir ........................................................................................ 160 6 Der .NET -Connector ................................................................................ 163 6.1 Beispiel: ABAP-Interpreter als Client-Proxy ........................................... 164 6.1.2 Proxy-Klasse erstellen und Einbinden ............................................ 165 6.2 Die Client-Klassen ................................................................................... 172 6.2.1 Die Destination-Klassen ................................................................... 173 6.2.2 Die Connection-Klasse ..................................................................... 175 6.2.3 SAPClient als Basis der Proxy-Klassen ............................................ 177 6.2.4 qRFC-Funktionalität einbinden ........................................................ 183 9 6.2.5 Asynchrone Methoden ..................................................................... 185 6.2.6 Klassen zu Strukturen und Tabellen ............................................... 187 6.2.7 BAPI-Beispielszenario: Bestellung und Wareneingang .................. 192 6.2.8 SAPClient als Basis selbst-abgeleiteter Klassen .............................. 201 6.3 RFC-Server ................................................................................................ 207 6.3.1 SAPServer als Basis überschreiben .................................................. 207 6.3.2 Die ABAP-Seite ................................................................................. 212 6.3.3 SAPServer im Überblick ................................................................... 216 6.3.4 Mehrfache Server-Instanzen mit SAPServerHosts ........................... 218 6.3.5 SAPServerHost im Überblick ........................................................... 219 6.4 Fehlerbehandlung: Die Exception-Klassen ............................................ 220 6.4.1 Exceptions im Überblick ................................................................. 221 6.5 Idocs empfangen und versenden ........................................................... 222 6.5.1 Exkurs: Streams bändigen ............................................................... 222 6.5.2 Idocs empfangen mit SAPIdocReciever .......................................... 225 6.6.3 Idocs senden mit SAPIdocSender ................................................... 230 7 Die librfc32.dll ......................................................................................... 235 7.1 Client-Anwendungen ............................................................................... 235 7.1.1 Logon am SAP-System ..................................................................... 236 7.1.2 Exportparameter setzen ................................................................... 238 7.1.3 Tabellenhandling und Hardcore-HEAP-Walking ............................ 241 7.1.4 Tabellenfunktionen im Überblick ................................................... 244 6.1.6 Funktionen aufrufen ........................................................................ 248 7.1.7 Rückgabewerte / Import-Parameter auslesen ................................. 249 7.1.8 Logoff. ............................................................................................... 251 7.1.9 Beispiel: RFC_READ_TABLE ............................................................ 251 7.2 Server-Anwendungen .............................................................................. 255 7.2.1 Funktionen der Listen-Schleife ........................................................ 258 7.2.2 Funktionen der Rückantwortüberminlung ...................................... 260 7.2.3 Beispielserver ReadFile / Visual-Basic-Seite ................................... 262 10