Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Sinnvollste Technik für Interaktion mit SAP (https://www.delphipraxis.net/184457-sinnvollste-technik-fuer-interaktion-mit-sap.html)

Bernhard Geyer 28. Mär 2015 08:59

Sinnvollste Technik für Interaktion mit SAP
 
Ein Anwendung die mittels DDE von SAP (Windows32-Exe) aufgerufen wird soll abgelöst werden.
Von SAP->Anwendung gibt es 2 Aktionen: Erster Start mit Übergabe von Startparametern und anschließende Übergabe von weiteren Parametern nach Interaktion in einer (speziell programmierten) SAP-GUI zur weiteren Steuerung der Anwendung.
Ist in der Anwendung alles erledigt werden Daten von dieser an SAP gesendet und weiterverarbeitet.

Bisher basiert die Lösung auf der Windows DDE-Schnittstelle. Im Rahmen der Ablösung dieser Altanwendung ist es auch möglich diese DDE-Schnittstelle abzulösen und durch eine heutzutage bessere Schnittstelle zu ersetzen.

Würde es nur den initialen Aufruf mit abschließender Rückgabe der Daten (in einer Datei?) gehen, würde ich einfach auf Aufrufparameter setzen. D.h. die neue Exe wird mit Parametern aufgerufen so das sie weis was sie machen soll und wohin (Dateiname) die Ergebnisse geliefert werden sollen. Wegen der zweiten Funktion (Klick auf SAP-GUI soll möglichst schnell die Aktion in der eigenen Anwendung auslösen) benötige ich hier eine schnelle IPC-Kommunikation die auch auf SAP-Seite realisiert werden kann. Bisher würde ich die Exe nochmal starten lassen. Diese sucht dann ob es eine laufende Instanz gibt und übergibt die neuen Parameter per SendMessage und WM_COPYDATA. Jedoch vermute ich das dieser Ansatz zu langsam reagiert.

Ebenfalls ist es nötig das dieser Ansatz auch für eine Javaanwendung (Compilierte Java-Exe) die an dieser Stelle ebenfalls zum Einsatz kommt funktioniert.

Also welche IPC-Schnittstelle wäre in 2015 zu bevorzugen?

Bernhard Geyer 30. Mär 2015 08:07

AW: Sinnvollste Technik für Interaktion mit SAP
 
*Push*

Sherlock 30. Mär 2015 10:25

AW: Sinnvollste Technik für Interaktion mit SAP
 
Haben die keine COM-Schnittstelle? Das dürfte immer noch der robusteste und schnellste Weg für IPC sein.

Sherlock

Bernhard Geyer 30. Mär 2015 12:17

AW: Sinnvollste Technik für Interaktion mit SAP
 
Zitat:

Zitat von Sherlock (Beitrag 1295311)
Haben die keine COM-Schnittstelle? Das dürfte immer noch der robusteste und schnellste Weg für IPC sein.

Sherlock

Die Interaktion wird von SAP aus gestartet.
Und in unsere Anwendung will ich eigentlich keine COM-Schnittstelle einbauen da diese für viele Kunden verwendet wird und nur für einen per Plugin diese Funktionalität bereitstellen will.

Lemmy 30. Mär 2015 12:24

AW: Sinnvollste Technik für Interaktion mit SAP
 
dann bau einen simplen Webservice in deine Anwendung ein, von SAP aus per JSON füttern, dann kannst Du Aktionen am laufenden Band ausführen... und wenn Du dein Webservice als Windows-Dienst bereit stellst, dann kannst Du den unabhängig von deiner Anwendung aus installieren und nutzen...

Bernhard Geyer 30. Mär 2015 14:21

AW: Sinnvollste Technik für Interaktion mit SAP
 
Zitat:

Zitat von Lemmy (Beitrag 1295333)
dann bau einen simplen Webservice in deine Anwendung ein, von SAP aus per JSON füttern, dann kannst Du Aktionen am laufenden Band ausführen...

Da müsste ich erst fragen ob das an dieser Stelle von SAP aus der Win32-SAP-GUI auch möglich wäre.

Zitat:

Zitat von Lemmy (Beitrag 1295333)
und wenn Du dein Webservice als Windows-Dienst bereit stellst, dann kannst Du den unabhängig von deiner Anwendung aus installieren und nutzen...

Das "(Klick auf SAP-GUI soll möglichst schnell die Aktion in der eigenen Anwendung auslösen) " bedeutet auch das der Anwender in der eigenen Anwendung nach diser Aktion GUI-Interaktionen durchführt deren Ergebnis wieder an SAP gesendet werden. Somit nix mit Windows-Dienst.

DSP 30. Mär 2015 14:32

AW: Sinnvollste Technik für Interaktion mit SAP
 
Moin Moin,

ich würde einfach eine CPIC Schnittstelle implementieren, auf SAP Seite einfach einen passenden Funktionsbaustein einrichten und fertig.

Dateischnitstelle ist ein Problem, via PBA/PAI können zwar Daten gelesen und geschrieben werden, nur wohin? Die Logik läuft auf einen App Server, der Kennt deinen Client nicht, gegen ein gemeinsames Verzeichnis sperren sich meist die Admins und die Seccurity ausserdem weiss man nicht mehr was zu wem gehört wenn dein Add On von mehreren verwendet werden.

Grüsse
Wolf

greenmile 30. Mär 2015 15:23

AW: Sinnvollste Technik für Interaktion mit SAP
 
SAP hat doch ein gutes SDK ...

Bernhard Geyer 30. Mär 2015 20:09

AW: Sinnvollste Technik für Interaktion mit SAP
 
Zitat:

Zitat von DSP (Beitrag 1295340)
]ich würde einfach eine CPIC Schnittstelle implementieren, auf SAP Seite einfach einen passenden Funktionsbaustein einrichten und fertig.

Hast du mehr Infos? unter CPIC findet man alles und nichts.
Und es geh hier um eine (fertige) Anwendung auf unserer Seite die um eine vom Kunden gewünschte Anbindung an SAP erweitert wird.

Zitat:

Zitat von DSP (Beitrag 1295340)
]Dateischnitstelle ist ein Problem, via PBA/PAI können zwar Daten gelesen und geschrieben werden, nur wohin? Die Logik läuft auf einen App Server, der Kennt deinen Client nicht, gegen ein gemeinsames Verzeichnis sperren sich meist die Admins und die Seccurity ausserdem weiss man nicht mehr was zu wem gehört wenn dein Add On von mehreren verwendet werden.

Dateischnittstelle wurde von den SAP-Betreuern ins Spiel gebracht. Also sollte Admins und Co. kein Problem darstellen.
Und was hat das mit dem App-Server zu tun? Es soll ja mit dem Win32-Bit SAP-Client (easySAP?) kommuniziert werden und das entsprechende Gegenstück der SAP-Implementierung dürfte damit auch auf dem Client laufen.

Bernhard Geyer 1. Apr 2015 08:10

AW: Sinnvollste Technik für Interaktion mit SAP
 
*push*

pertzschc 1. Apr 2015 10:05

AW: Sinnvollste Technik für Interaktion mit SAP
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1295691)
*push*

Hallo Bernhard,
wie können wir Dir noch weiterhelfen?

Es gibt mehrere Wege mit einem SAP System zu interagieren:
  • Aufruf von Funktionsbausteinen in dem SAP System (dazu gibt es ein RFC-SDK)
  • Aufruf von Webservices im SAP System (REST oder Webservices per HTTP(S))
  • Interaktion mit der SAPGUI auf dem Windows Rechner mittels COM (Von einer Software zu SAPGUI oder von SAPGUI zu einer Software)

Welche davon Ihr auswählen könnt, hängt davon ab, ob Ihr nur auf dem Windowsbereich programmiert oder ob Ihr auch im SAP System entwickeln könnt.

Grüße, Christoph

Bernhard Geyer 1. Apr 2015 15:47

AW: Sinnvollste Technik für Interaktion mit SAP
 
Zitat:

Zitat von pertzschc (Beitrag 1295727)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1295691)
*push*

Hallo Bernhard,
wie können wir Dir noch weiterhelfen?

Es gibt mehrere Wege mit einem SAP System zu interagieren:
  • Aufruf von Funktionsbausteinen in dem SAP System (dazu gibt es ein RFC-SDK)
  • Aufruf von Webservices im SAP System (REST oder Webservices per HTTP(S))
  • Interaktion mit der SAPGUI auf dem Windows Rechner mittels COM (Von einer Software zu SAPGUI oder von SAPGUI zu einer Software)

Welche davon Ihr auswählen könnt, hängt davon ab, ob Ihr nur auf dem Windowsbereich programmiert oder ob Ihr auch im SAP System entwickeln könnt.

Grüße, Christoph

Wir werden nicht im SAP-System programmieren. Dieser übernimmt der SAP-Dienstleister des Kunden.
RFC-API: Ist diese auf dem Rechnern vorhanden wo er auch seinen Win32 SAP-GUI installiert hat? Oder müsste diese gesondert Installiert werden?
Webservices: Dann wäre die Logik das auf dem Client ein Webservice läuft die dann von dem SAP-Server aufgerufen wird? Glaube nicht das dieser Ansatz in Zeiten von aktivieren Firewalls einen Glüclich macht ...
COM-Schnittstelle: Direkt können wir das nicht in die Hauptanwendung integrieren da die Funktion nur per Plugin unserer Anwedunng realisiert wird. Wenn dann wäre es eine Hilfsanwendung die diese COM-Schnitttstelle hat und diese kommuniziert dann mit unserer Hauptanwendung z.b. mit WM_COPYDATA-Meldungen oder andere techniken.

Bernhard Geyer 1. Apr 2015 16:01

AW: Sinnvollste Technik für Interaktion mit SAP
 
Bezüglich Webservice/Socket-Kommunikation habe ich beim SAP-Dienstleister nachgefragt ob das auch von SAP-GUI-Clientseite ansprechbar ist.
Wenn alles Lokal läuft wäre es ne Möglichkeit. Über den SAP-Server eher nicht.

pertzschc 2. Apr 2015 09:21

AW: Sinnvollste Technik für Interaktion mit SAP
 
Hallo Bernhard,

Zitat:

Zitat von Bernhard Geyer (Beitrag 1295821)
RFC-API: Ist diese auf dem Rechnern vorhanden wo er auch seinen Win32 SAP-GUI installiert hat? Oder müsste diese gesondert Installiert werden

Mit der Installation der SAPGUI auf dem Rechner ist auch die RFC Bibliothek mit installiert und damit vorhanden.
Die Architektur besteht dann darin, dass Ihr aus Eurem Programm als Client sogenannte RFC-Aufrufe in das SAP System macht (inkl. Login per User/Passwort). Auf Seite des SAP Systems nimmt diese Aufrufe ein passenden in ABAP programmierter Funktionsbaustein entgegen und verarbeitet Eure Daten oder liefert Daten aus dem SAP System an Euch aus.
Zitat:

Zitat von Bernhard Geyer (Beitrag 1295821)
Webservices: Dann wäre die Logik das auf dem Client ein Webservice läuft die dann von dem SAP-Server aufgerufen wird? Glaube nicht das dieser Ansatz in Zeiten von aktivieren Firewalls einen Glüclich macht ...

Es wäre eher anders herum. Euer Programm ruft als Client einen Webservice, den das SAP System bereitstellt. Dieser Webservice wird dann analog zum Funktionsbaustein in ABAP programmiert und verarbeitet Daten von Euch oder gibt Euch Daten aus SAP zurück. Da das SAP System prizinpiell auch selber als Webservice Client agieren kann, wäre die von Dir beschriebene Richtung auch denkbar, aber eher nicht empfohlen.
Zitat:

Zitat von Bernhard Geyer (Beitrag 1295821)
COM-Schnittstelle

Ich würde diesen Weg nicht empfehlen.

Gerne bestände auch die Möglichkeit, Euch bei dem Szenario für die Umsetzung professionell zu beraten (-> PM schicken).

Grüße,
Christoph

Bernhard Geyer 9. Apr 2015 15:00

AW: Sinnvollste Technik für Interaktion mit SAP
 
Hab jetzt neuigkeiten.

Die Rückmeldung erfolgt vom bisherigen System nicht per DDE sondern (eine Zwischenapplikation - ist mir auch neu das hier SAP nicht direkt mit der eigentlichen App kommuniziert) schreibt das Ergebnis in eine Kundenspezifische SAP-Tabelle und aktiviert die SAP-GUI. Bei Aktivierung der SAP-GUI schaut das SAP-Formular in diese Usertabelle rein und zeigt die übertragenen Daten an. Das erleichtert schon mal die ganze Sache.

Die (neue, konkretere) Frage ist also:

Welche SAP-API verwendet man am Sinnvollsten um zurück zu übertragende Daten in diese Usertabelle zu bekommen?


Wenn ich die Daten genauso abliefern könnte wie das bisherige Konstrukt aus abzulösende Anwendung (+ Hilfsanwendung welche die SAP-Tabellenschreiberei macht) würde die nötigen Anpassungen auf SAP-Seite geringer ausfallen.
Den direkten Weg kann ich nicht machen da die aktuelle Lösung als Embedded Word-Dokument aufgerufen wurde und damit der Tabellenzugriff über das Document.Container-Property erfolgt. Und das steht mir als Delphi/Java-Anwendung nicht zur verfügung

BlackbirdBerlin 9. Apr 2015 15:51

AW: Sinnvollste Technik für Interaktion mit SAP
 
Hi Bernhard,
ich kann mich Christoph nur anschließen...
Am sinnvollsten ist es, wenn dieser kleine Prozess einmal komplett überdacht und nach dem Stand aktueller Technik umgesetzt wird.
Auch, wenn an sich im SAP nichts programmiert werden soll, würde ich das nicht kategorisch ausschließen.
Wenn es wirklich nur darum geht, Daten in eine kundeneigene Tabelle zu schreiben (initiiert vom PC-Programm) bzw. Daten nach Verarbeitung in SAP wieder zurück zu geben, bieten sich Webservices an.
Viele Grüße,
Tim

p.s. evtl. kann die gesamte Logik auch in SAP abgebildet werden. Schlecht für den PC-Entwickler, aber vielleicht gut für den Prozess...

mkinzler 9. Apr 2015 15:59

AW: Sinnvollste Technik für Interaktion mit SAP
 
http://rfcconnector.com/download/
http://www.gs-soft.com/CMS/en/produc...-sap-sapx.html

pertzschc 13. Apr 2015 15:20

AW: Sinnvollste Technik für Interaktion mit SAP
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1296926)
Die (neue, konkretere) Frage ist also:
Welche SAP-API verwendet man am Sinnvollsten um zurück zu übertragende Daten in diese Usertabelle zu bekommen?

Du verwendest das SAP RFC SDK auf dem PC und auf Seiten des SAP Systems 2 Funktionsbausteine. Einen zum Schreiben der Daten PC -> SAP (und ggfs. einen zum Lesen der Daten SAP -> PC).

Grüße,
Christoph


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz