Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi von Delphi 2006 aus Datensätze zu SAP R/3 senden (https://www.delphipraxis.net/78762-von-delphi-2006-aus-datensaetze-zu-sap-r-3-senden.html)

Mandi Nice 10. Okt 2006 19:32

Datenbank: SAP R/3 • Zugriff über: ???

von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Hallöchen

Ich soll von meiner Anwendung Datensätze zum SAP R/3 - System des Kunden senden
( inkl Anmeldung usw .... was halt nötig ist )
Ich bin in dem bereich Neuling und hab bisher nicht viel keine Ahnung.

Der EDV-Mensch hat mit erzählt mit dem JAVA Connector sollte es gehen.

Kann aber in Internet nicht viel finden.
Das ganze hört sich auch stark nach JAVA an.
Kann ich das in Delphi verwenden und wenn ja wie und wo kann ich den Connector runterladen.


Kann man mit ADO auf SAP zugreifen.
Wäre mir lieber. Hab damit schon mal auf eine Access-Datenbank zugegriffen.

Grundlagen und Beispielcode wäre für mich sehr wichtig.

Vielen Dank im voraus.

hmg
Mandi

mkinzler 10. Okt 2006 19:37

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
http://derentwickler.de/itr/online_a...nodeid,56.html
http://www.sap-press.de/forum/gp/themaID-5/zeige-14079
http://www.shareit.com/192748-2.html
http://www.bapi.is-here.de

Mandi Nice 10. Okt 2006 19:46

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Hallo

Vielen Dank für die rasche Antwort.

Auf diese Seite bin ich auch schon gekommen.
http://www.bapi.is-here.de
Aber die Seite gibt es nicht mehr :-(
( Kann sie auf jedenfall nicht erreichen )
Ist die Seite woanders erreichbar oder kann mit jemand die Downloads von dort zusenden.

hmg
Mandi

Bernhard Geyer 10. Okt 2006 19:48

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Auch wenn mein Vorposter schon einiges verlinkt hat:

Zitat:

Zitat von Mandi Nice
Kann man mit ADO auf SAP zugreifen.
Wäre mir lieber. Hab damit schon mal auf eine Access-Datenbank zugegriffen.

SAP ist keine Datenbank bzw. ein Datenbank-Managementsystem. Du könntest u.U. per ADO auf die zugrundeliegende Datenbank
(Oracle, MS SQL zugreifen). Aber kein halbwegs vernünftiger SAP oder DB-Admin wird dir einen Zugang einrichten wenn er nicht 100%ig sicher sein kann das du jahrelange Erfahrung mit SAP hast. Ansonsten kann er gleich selbst seine Kündigung schreiben. Dazu ist ein ERP-System für eine Firma zu wichtig um jeden mal auf die Datenbasis direkt zugriff zu gewähren.[/quote]

czapie 10. Okt 2006 20:58

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Ich denke auch wenn Du Dein ganzes Leben lang nichts anderes als SAP gemacht hast, wird es schier unmöglich sein, dass auf Datenbankebene zu erledigen. Ich mein, es SAP-System hat ganz schnell mal ein paar tausend Tabellen.

Da kommt man an einer Schnittstelle wie BAPI nicht vorbei.

Mandi Nice 11. Okt 2006 07:08

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Schönen guten Morgen.

OK eines hab ich bisher gelernt : SAP ist keine Datenbank.

Das löst aber nicht mein Problem.

Kann ich mit dem JAVA Connector was in Delphi anfangen.
Kriegt man den Download nur bei SAP ? Die verlangen einen Username und Passwort und das hab ich nicht.

Die Seite http://www.bapi.is-here.de kann ich leider nicht aufrufen.
Liegt die jetzt woanders oder kann mir jemand die Downloads senden ?

Vielen Dank

hmg
Mandi

pertzschc 11. Okt 2006 08:10

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Zitat:

Zitat von Mandi Nice
Kann ich mit dem JAVA Connector was in Delphi anfangen.

Nein kann man nicht. Java und Delphi sind nicht unbedingt kompatibel. Mit dem Java-Connector solltest Du aus Java heraus arbeiten, sprich z.B. Eclipse/NetBeans/JBuilder/etc. als IDE benutzen.

Du kannst allerdings von Delphi aus das sogenannte RFC-SDK unter Windows benutzen, d.h. die Software SAP GUI (quasi die Bedienoberfläche der SAP Anwendungen) bringt entsprechende Active-Controls mit, die Du in Delphi einbinden und benutzen kannst.

Zitat:

Zitat von Mandi Nice
Kriegt man den Download nur bei SAP ? Die verlangen einen Username und Passwort und das hab ich nicht.

Vielleicht solltest Du Deinen Kunden nach einem solchen Userlogin fragen, jeder SAP-Kunde hat entsprechende Accounts bei SAP.

Ansonsten kann ich Dir SAP-Developer-Network empfehlen, dort kannst Du Dich kostenlos registrieren und dann z.B. auf Download zugreifen.

Eventuell ist auch der SAP-.NET-Connector etwas für Dich, allerdings weiss ich nicht, ob Delphi .NET (2005/2006) mit der notwendigen .NET SDK Version zurecht kommt.

Gruß,
Christoph

bttb930 11. Okt 2006 08:12

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Also: Wenn Du keine Ahnung von SAP hast, dann ist das ganze nicht so einfach. SAP ist zu kompliziert um da "mal eben" was zu machen. Befass Dich vielleicht mal mit dem Stichwort "Batch-Input", aber keine Ahnung ob das in Deinem Fall hilft.

Nur wie gesagt: Ohne SAP-Kenntnisse glaube ich nicht, dass Du Erfolg haben wirst.

raiguen 11. Okt 2006 23:20

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Moin :-)

Meine bisherigen Erfahrungen bzgl. Datentransfer zu/vom SAP R/3 sind dahingehend, dass die SAP-Leute sich nicht unbedingt zum direkten Zugriff auf das System bewegen lassen; mit anderen Worten: 'lieber richten wir eine ASCII / CSV Schnittstelle ein als dass wir Fremdprogramme mittels BAPI etc auf das System zugreifen lassen...'
Habe also entsprechende CSV-Import/Export-Routinen geschrieben; die Struktur bzw Aufbau (welche Daten an welcher Stelle etc) wurde natürlich voher mit einem kompetenten SAP-Admin/Programmierer abgeklärt.
Alles in allem habe ich somit weniger Stress bzw Bauchschmerzen und brauch micht nicht mit irgendwelchen SAP-spezifischen Syntaxereien rumärgern. BTW laufen die Datentransfers bisher einwandfrei und zur vollen Zufriedenheit meiner Kunden.
Von daher würde ich Dir empfehlen, nach Möglichkeit auch diesen Weg zu gehen; das erspart Dir ne Menge Ärger (vom Stress mal abgesehen)...

alzaimar 12. Okt 2006 07:17

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
So machen wir das auch (Text / CSV import/export). Unsere Verantwortung endet mit dem Bereitstellen der Dateien in einem separaten Ordner. Ob und wann SAP abholt, ist uns schnurz. Wenn SAP abholt, löscht es die Dateien. Wir hängen immer hinten an, sodaß ein zwischenzeitlcher Ausfall von SAP uns überhaupt nicht interessiert (die Datei wird einfach doppelt so groß, wenn einmal nicht abgeholt wird).

Mandi Nice 14. Okt 2006 20:24

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Hallöchen

War ein paar Tage weg. Daher meld ich mich erst heute wieder.

Der Kunde hat halt gemeint ich soll es mit dem JavaConnector machen.
Habe aber unter Delphi ein Pech damit. Delphi ist halt kein JAVA.

Ich denke ich werde auch eine CSV-Export vorschlagen oder der Kunde soll sich den Datenimport selbst ( in JAVA )
programmieren und ich rufe das Importprogramm auf wenn ich Daten senden muss.

Und wenn er das nicht will, gibt es das zwei fertig OXC die ich verwenden könnte.

Auf jedenfall vielen Dank an alle.

hmg
Mandi

Bernhard Geyer 14. Okt 2006 20:38

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Zitat:

Zitat von Mandi Nice
Der Kunde hat halt gemeint ich soll es mit dem JavaConnector machen.
Habe aber unter Delphi ein Pech damit. Delphi ist halt kein JAVA.

Delphi kann mit Java sehr wohl zusammenarbeiten. Das Zauberwort heißt Java Native Interface(JNI).

Zitat:

Zitat von Mandi Nice
Ich denke ich werde auch eine CSV-Export vorschlagen oder der Kunde soll sich den Datenimport selbst ( in JAVA )
programmieren und ich rufe das Importprogramm auf wenn ich Daten senden muss.

Wenn Du das hinbekommst ist es besser für dich. Diese Schnittstelle ist mit sicherheit auch ungefährlicher für dich das man dir die Schuld für irgendwas geben könnte wenn man SAP nicht funktioniert (Bis gestern gings noch und heute haben wir Ihr Programm zum ersten mal laufen lassen. Das evtl. an 10 anderen Stellen auch noch was an SAP gedreht wurde erfährst Du nicht).

Union 14. Okt 2006 20:50

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Wir haben unsere SAP-Schnittstellen immer mit IDOC gelöst. Das bietet saubere Schnittstellendefinitionen für den Datenaustausch mit allen Systemen. Die zugrunde liegende Klasse zum Lesen und Erzeugen von IDOC-Dateien ist zum Beispiel hier enthalten (ist ein kleiner Viewer für diese Dateien). Das wird z.B. im Datenaustausch mit Varta, Bosch, Nestle u.a. eingesetzt. Ich kann Dir aber aus bisherigen Projekten eins sagen: Eine solche Schnittstelle mit mehreren Transaktionen zu programmieren, braucht ca. 20-50 MT, selbst wenn Du Dich um die reine Technik die dem zugrunde liegt nicht mehr kümmern musst. Dazu ist SAP zu flexibel, es gibt selbst innerhalb des gleichen Konzerns oft keine zwei gleichen Vorgehensweisen.

Misek 19. Okt 2006 13:01

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Wenn hier schon mal über SAP R/3 geschrieben wird, nutze ich mal die Gelegenheit mal was zu fragen.

Ich sitze gerade hier und weiss mal echt nicht weiter. Unzwar geht es um einen BAPI call den ich gerne ausführen möchte:
Dieser benötigt mehrere Felder als import. So weit noch verständlich....

Nun habe ich aber zwei Felder mit dem selben bezeichner, jedoch in unterschiedlichen Tabellen wie mache ich dem importParameter klar in welcher Tabelle sich dieses Feld befindet?



Ich gehe durch die RfcAPI mit der librfc.dll und rufe die RfcRecieveEx - Funktion auf
Vielen Dank im voraus

Heffalump 19. Okt 2006 13:35

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Wenn Du die Möglichkeit hast, schau Dir den SAP .NET Connector an. Der funktioniert zwar nur mit dem Visual Studio 2003. Aber die Unterstützung zur Einbindung von BAPI´s/RFC sind damit optimal. Ist dann natürlich .NET 1.1.

Misek 19. Okt 2006 13:56

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Würde ich gerne! Die möglichkeit ist mir jedoch leider nicht gegeben.
trotzdem Besten Dank!

pertzschc 19. Okt 2006 14:16

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Zitat:

Zitat von Misek
Nun habe ich aber zwei Felder mit dem selben bezeichner, jedoch in unterschiedlichen Tabellen wie mache ich dem importParameter klar in welcher Tabelle sich dieses Feld befindet?

Du musst die Schnittstelle des BAPI anders befüllen.

Zuerstmal die Schnittstelle instanzieren:
Delphi-Quellcode:
l_func := a_SAPFunctionsObject.Add('BAPI_REPO_XYZ_F4');
Parameter füllen, die für einzelne Werte stehen:
Delphi-Quellcode:
// werte Importieren
l_func.exports('I_OBJECT_TYPE'):='GC';
l_func.exports('I_MULTIPLE_SELECTION'):='X';
Strukturierte Parameter füllen, d.h. unter dem Namen des Struktur
sind nochmal einzelne Felder ansprechbar:
Delphi-Quellcode:
// einzelnes Feld einer Struktur füllen
l_importstructur := l_func.exports('IS_STRUKTUR_MATERIAL');
l_ImportStructur.Value[1] := _matnr;
Tabellen-Parameter füllen, d.h. unter dem Namen der Tabelle
müssen Zeilen (Rows) angelegt werden, deren einzelne Felder sind ansprechbar:

Delphi-Quellcode:
  // Struktur-Tabelle auslesen
l_IT_STRUCTURE_IDS:= l_func.tables.item('IT_STRUCTURE_IDS');
// alle Einträge löschen
l_IT_STRUCTURE_IDS.rows.removeall;
/ neue Zeile anhängen
l_eintrag:=l_IT_STRUCTURE_IDS.rows.add;
// einfügen der TestID
l_eintrag.Value['STRUCTURE_ID']:=_task.TestID;
Gruß,
Christoph

Misek 19. Okt 2006 14:57

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
was ist l_func für ein Typ? Kann es sein, dass du die BAPIS mit ActiveX ansteuerst?


Im Moment sieht es bei mir noch so aus:

Hier werden die Inputparameter gesetzt. Bitte nicht verwirren lassen... der name FExporting ist das, was an das SAP raus geht. trotzdem verwende ich den Namen "setRFCInputParam" als Funktionsaufruf.

Delphi-Quellcode:
procedure TSAPRFC.setRFCInputParam(paramName: string; paramlength: integer; pparamValue: pointer;
  paramType: integer);
// Setzt Eingabeparameter für den RFC
var
  i: integer;
begin
  i := 0;
  while (i < SAPRFC_Maxparameters) and (FExporting[i].name <> nil) do inc(i);
  if i = SAPRFC_Maxparameters then raise exception.create('Max params exeeded!');
  FExporting[i].name := pchar(paramName);
  FExporting[i].nlen := length(paramName);
  FExporting[i].atype := paramType;
  FExporting[i].leng := paramlength;
  FExporting[i].addr := pparamValue;
end;
Und nun wird das ganze abgeschickt mit folgendem Code...
Delphi-Quellcode:
function TSAPRFC.execute: string;
var
  funcres: integer;
begin
  result := '';
  funcRes := connection.FRfcCallReceiveEx(connection.fconnHandle, pchar(fRfcName),
    @FExporting, @FImporting, @FChanging, @FTables, @pException);
  if funcres <> 0 then begin
    result := pchar(pException);
    // Wenn wir keinen Klartext-Fehler bekommen, geben wir den Fehlercode aus
    if result = '' then result := 'Error ' + IntToStr(funcres);
  end;
end;

pertzschc 19. Okt 2006 15:40

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Zitat:

Zitat von Misek
was ist l_func für ein Typ? Kann es sein, dass du die BAPIS mit ActiveX ansteuerst?

ja, ich nehme das SAPFunctions.ocx. Deinen Weg bin ich noch nicht gegangen.

Delphi-Quellcode:
TSAPFunctions = class(TOleControl)
...
var
  l_func, l_IT_STRUCTURE_IDS, l_eintrag, l_resultTabelle: variant;
Gruß,
Christoph

Misek 19. Okt 2006 15:53

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Das bringt mich leider auch nicht weiter, trotzdem Danke!

Also weiterhin besteht das Problem Felder in einer Struktur mit tabellennamen von SAP genau zu identifizieren und zu setzen. Quasi den importparameter richtig zu setzen.

Roland Wind 12. Feb 2007 12:46

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Hi

Ich stehe vor dem gleichen Problem. Habe mal ein bißchen nachrecherchiert und
bin auf folgende Funktion gestoßen:

Delphi-Quellcode:
RfcInstallStructure
Will man Strukturen über RFC installieren, muß man diese vorher bekannt geben.
Für RfcInstallStructure muß daher eine Struktur vom DatenTyp RFC_TYPE_ELEMENT
angelegt werden. Sind für die Substruktur mehrere Spalten notwendig, müssen diese
mit der Funktion einzeln bekanntgegeben werden. Sieht dann in C z.b. folgendermaßen aus:

Delphi-Quellcode:
static RFC_TYPE_ELEMENT t_RFC_FIELDS[] = {
  {"TABNAME", TYPC, 30, 0},
  {"FIELDNAME", TYPC, 30, 0},
  {"POSITION", TYPINT, sizeof(RFC_INT), 0},
  {"OFFSET", TYPINT, sizeof(RFC_INT), 0},
  {"INTLENGTH", TYPINT, sizeof(RFC_INT), 0},
  {"DECIMALS", TYPINT, sizeof(RFC_INT), 0},
  {"EXID", TYPC, 1, 0}, };
Ich habe nun das Problem, dass ich, egal wie ich versuche meine Struktur anzulegen,
einen Laufzeitfehler in der MSVC der librfc32.dll bekomme.

Meine Struktur sieht folgendermaßen aus:

Delphi-Quellcode:
static RFC_TYPE_ELEMENT t_RFC_FIELDS[] = {
  {"TABNAME", TYPC, 30, 0}};
Die Delphi Conversion des Datentyps RFC_TYPE_ELEMENT sieht folgendermaßen aus:

Delphi-Quellcode:
 
  TRfcTypeElement2 = record
    Name: Pointer;
    aType: Integer;
    Leng: Integer;
    Decimals: Integer;
    Offset: Integer;
  end;
Wäre toll wenn einer das schon mal gemacht hätte und mir weiterhelfen könnte.

Misek 13. Feb 2007 08:52

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Hi, ich kann dir was zukommen lassen? Ein kleines Beispiel. Habe mittlerweile Tabellen und Strukturen beschreiben können.
Ich bin dafür das wir eine kleine Delphi Komponente schreiben ;) Es scheint ja wirklich ein echtes komplexes Problem zu sein.

kalmi01 13. Feb 2007 09:05

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Zitat:

Zitat von Misek
Ich bin dafür das wir eine kleine Delphi Komponente schreiben

sofern die über RFC+BAPI's laufen soll, würde ich mich (zumindest für einen Informnationsaustausch anschliessen.
Es gibt zwar diverse Beispiele und man kann sich für ein bestimmtes Problem alles zusammenstellen, aber so eine richtig schöne Kompo, die einem die ganze Fummelei abnimmt fehlt irgend wie.
Wo beabsichtigst Du denn aufzusetzen ?
- librf32.dll für Win32
- librf32.dll für .Net
- einen der Connectoren (z.B. Java)
- noch was anderes

Misek 13. Feb 2007 09:08

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
wenn, dann was für richtige Männer.... Also Win32 *kleinerscherzamrande*

kalmi01 13. Feb 2007 09:20

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Zitat:

Zitat von Misek
wenn, dann was für richtige Männer.... Also Win32 *kleinerscherzamrande*

Scheint mir mit Delphi die schmerzfreieste Variante zu sein, obwohl SAP anscheinend die JAVA-Schiene präferiert.

Misek 13. Feb 2007 09:30

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Es gibt ne Variante für JAVA,
also die JCO Komponente ist tatsächlich für JAVA geschrieben... es gibt auch sehr viele beispielcodes und Support dazu.
Die hätte ich auch benutzt, nur bin ich nich der JAVA Freak weil ich es noch nicht kann. Deswegen war ich gezwungen alles in Delphi zu schreiben da das anlernen wieder nur zeit kosten würde.

Wenn es ein mal in Delphi steht, dann ist das Schnittstellen - programmieren für SAP nur noch eine kleine Hürde.

Roland Wind 13. Feb 2007 09:35

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Hi Misek

Wäre toll wenn du mal deine Kompos rüberwachsen lassen könntest.
Gleiche das dann mit meinen ab und schicke dir das Ergebnis.
Vielleicht gehen wir einen ähnlichen Weg.

Misek 13. Feb 2007 09:41

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
ich habe bereits eine kleine Doku dazu angefertigt.
Ich würde sie dir per Mail zukommen lassen. Es ist keine Kompo, sondern ein Beispiel. Wie gesagt, ich wäre gern bereit an einer Kompo mitzuwirken.

Bringt mir zwar nicht viel, da ich nach meiner Ausbildung sowieso weg bin und dann nichts mehr mit SAP zu tun habe, aber so als kleine Referenz wäre das schon sehr überzeugend

Roland Wind 13. Feb 2007 09:47

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Hi Misek

Ich habe als Basis die Komponenten vom Entwickler genommen und um die noch fehlenden
Funktionen zum Hinzufügen/Löschen/Kopieren zu Tabellen erweitert. Weiters habe ich den
Code mal ein bißchen sicherer gemacht ( :wall: Exceptionhandling) und die Anzahl der
möglichen zu übergebenden Parameter auf beliebig erweitert :twisted:

Jedoch das mit den Strukturen habe ich nicht in den Griff bekommen.
Meine EMail Adresse wäre: roland.wind@engel.at

Misek 13. Feb 2007 09:54

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Das mit den Strukturen war früher bei mir auch das Problem!
Die "Schuhmann" - Klassen von Herrn Schuhmann aus der Entwickler sind auch nicht ganz fehlerfrei. Ich habe mich mit dem Autor unterhalten und konnte mir auch in dem Bereich nicht wirklich weiterhelfen. Dann habe ich so lange ausprobiert, bis ich eine zeile in der Datenbank geschrieben habe ;) da war ich superglücklich!!! Das war der schönste Tag als AZUBI für mich...

Ich Maile es dir gleich zu... es ist aber nur ein Beispiel, wie man es machen kann.

kalmi01 13. Feb 2007 10:43

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Hi Roland,
hi misek,

greift Ihr direkt per RFC auf SAP zu, oder schaltet Ihr BAPI's dazwischen ?

Misek 13. Feb 2007 10:55

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
wir greifen über RFC auf die Bausteine zu.
BAPIS werden auch darüber angesteuert... Man kann ja seine eigenen BAPIS bauen. Dann klappt fast jeder Zugriff!

hincapie 13. Feb 2007 11:16

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Hallo,
ich melde schon mal mein Interesse für eine SAP-Komponente an! :-D :zwinker:
Hab mir schon 'nen Heißen gegoogelt und nichts Brauchbares gefunden. :drunken:

Misek 13. Feb 2007 11:23

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
das selbe Problem wie bei allen anderen auch... googlen bringt bei SAP nix. Speziell bei RFC.... Da hilft nur selber bauen. Nur selbst essen macht ja bekanntlich dick :zwinker:

Meine Schulkollegen glauben mir nicht das dass eine herausforderung ist für RFC zu programmieren. Gerade in den Anfängen!

kalmi01 13. Feb 2007 11:49

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Zitat:

Hab mir schon 'nen Heißen gegoogelt und nichts Brauchbares gefunden.
auf der ersten Seite dieses Threads sind eigentlich genug Links.

ok, "bapi-is-here" existiert nicht mehr, hatte mir aber auch nicht viel geholfen.
Der Artikel im "Entwickler" war da schon erbaulicher.

Zitat:

Meine Schulkollegen glauben mir nicht das dass eine herausforderung ist für RFC zu programmieren. Gerade in den Anfängen!
Nicht nur in den Anfängen.
RFC hält immer wieder ein paar nette Überaschungen bereit, besonders bei Release-Wechseln, obwohl dies nicht der Fall sein solllte.

Misek 13. Feb 2007 12:01

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
tja,... dann bin ich wohl gezwungen ein OpenSource Projekt zu eröffnen :bounce1:
Dann lasst uns den kram bauen.

Ich hoffe, dass es in Ordnung geht, SAP seite her.

kalmi01 13. Feb 2007 12:10

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Zitat:

Dann lasst uns den kram bauen.
Bin zwar gerade mit einem Migrations-Projekt gut ausgelastet, aber was ich habe/weiss, steuere ich gern bei.

Misek 13. Feb 2007 12:23

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Ok ich werde das dann anstoßen. Als aller erstes bräuchten wir eine WebPlattform zur kommunikation und ein Projektmanagement tool. Ich kenne eins das findet ihr unter http://www.streber-pm.org/
Ist ein Tool, was im WWW läuft. Ich selber habe es noch nicht ausprobiert. Werde aber versuchen das Ding auf meinem VServer zu knallen. Ich hoffe, der Aufwand wird nicht allzugroß.

folgendes muss ich noch geklärt haben:
- Hat einer eine Express Edition des R3 - Systems?
- Wer könnte ein Server bereitstellen?
- Wer macht alles mit...?


achso @kalmi01
- ist kein Problem... Machen wir schon alles.

Roland Wind 20. Feb 2007 09:57

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Hi Michael

Habe deine Beschreibung erhalten und gleich mal ausprobiert (Vielen Dank auch).
Bei deinem Bespiel installierst du eine Struktur (RFCInstallStructure) und
hängst diese dann einer Tabelle an. Ich benötige jedoch das Anhängen an die
Import, Export und Changing Parameter. Das hat bei mir leider nicht geklappt
(SYSTEM_FAILURE nach Aufruf der Exec Methode). Hast du dafür auch ein Beispiel
gemacht ?? Außerdem verwendest du RFCInstallstructure2, das in meiner Dll gar nicht
vorkommt. Welche Version der librfc32.dll verwendest du eigentlich ??

mfg
Roli

Misek 20. Feb 2007 10:21

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
die RfcInstallStructure2 ist die aktuellere Variante. Einige Sachen in der älteren Dll werden von SAP bald nicht mehr supportet.

Das liegt daran, dass es nur ein Beispiel Code dazu war. Wahrscheinlich gibt es diese Tabelle in deinem SAP System gar nicht. Lass dir direkt nach dem Failure eine Exception anzeigen lassen.

Zum anderen Problem:
das Anhängen von Daten als Importparameter ist ein wenig einfacher. Du brauchst einfach nur eine Funktionen aus der DLL Laden (CallReceiveEx)... im code ganz unten.
Nicht verwirren lassen bei "SetRFCInputParam"... dort wird nur ein Array gefüllt, welches beim Execute hochgeladen wird.

Ich hoffe ich konnte helfen! Ich weiss wie mühselig der kram ist!

Delphi-Quellcode:
procedure EingabeEintragen();
var

   sIEingabe1    : I_EINGABE1;
   sIEingabe2    : I_EINGABE2;
   errorinfo   :
begin
   sIEingabe1 := 'Test';
   sIEingabe2 := 'Test Eingabe 2';
 
   SetRFCInputParam( 'I_EINGABE1', sizeof(sIEingabe1), @sIEingabe1,0);
   SetRFCInputParam( 'I_EINGABE2', sizeof(sIEingabe2), @sIEingabe2,0);
   
   if RFC.Execute <> rcRFC_OK then
      begin
      errorinfo := rfc.LastErrorInfo;
      end;
   
end;



procedure SetRFCInputParam(ParamName: string; Paramlength: integer; pParamValue: pointer;
                           ParamType: integer);
var
   iIdx: integer;
begin
   iIdx := 0;
   while (iIdx < SAPRFC_Maxparameters) and (FExporting[iIdx].name <> nil) do
      inc(iIdx);

   if iIdx = SAPRFC_Maxparameters then
      begin
      raise exception.create('Max params exeeded!');
      Exit;
      end;

   FExporting[iIdx].Name := PChar(ParamName);
   FExporting[iIdx].NLen := Length(ParamName);
   FExporting[iIdx].AType := ParamType;
   FExporting[iIdx].Leng := Paramlength;
   FExporting[iIdx].Addr := pParamValue;
end;


function TSAPRFC.Execute(): TRFC_RC;
begin
   result := Connection.FRfcCallReceiveEx(Connection.ConnectionHandle, PChar(FRFCName),
                                          @FExporting, @FImporting, @FChanging,
                                          @FTables, @pException);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 Uhr.
Seite 1 von 2  1 2      

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